Skip to content

Commit

Permalink
board: grouper: convert to dm PMIC
Browse files Browse the repository at this point in the history
Signed-off-by: Svyatoslav Ryhel <[email protected]>
  • Loading branch information
clamor-s committed Oct 3, 2023
1 parent 6002ff3 commit 6846c8c
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 167 deletions.
10 changes: 0 additions & 10 deletions board/asus/grouper/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,4 @@ config SYS_VENDOR
config SYS_CONFIG_NAME
default "grouper"

config GROUPER_TPS65911
bool "Enable support TI TPS65911 PMIC"
select CMD_POWEROFF
default n

config GROUPER_MAX77663
bool "Enable support MAXIM MAX77663 PMIC"
select CMD_POWEROFF
default n

endif
4 changes: 2 additions & 2 deletions board/asus/grouper/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
# Svyatoslav Ryhel <[email protected]>

ifdef CONFIG_SPL_BUILD
obj-$(CONFIG_GROUPER_MAX77663) += grouper-spl-max.o
obj-$(CONFIG_GROUPER_TPS65911) += grouper-spl-ti.o
obj-$(CONFIG_DM_PMIC_MAX77663) += grouper-spl-max.o
obj-$(CONFIG_DM_PMIC_TPS65910) += grouper-spl-ti.o
endif

obj-y += grouper.o
5 changes: 4 additions & 1 deletion board/asus/grouper/configs/grouper_E1565.config
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
CONFIG_DEFAULT_DEVICE_TREE="tegra30-asus-nexus7-grouper-E1565"
CONFIG_GROUPER_MAX77663=y
CONFIG_CMD_POWEROFF=y
CONFIG_DM_PMIC_MAX77663=y
CONFIG_DM_REGULATOR_MAX77663=y
CONFIG_SYSRESET_MAX77663=y
6 changes: 5 additions & 1 deletion board/asus/grouper/configs/grouper_PM269.config
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
CONFIG_DEFAULT_DEVICE_TREE="tegra30-asus-nexus7-grouper-PM269"
CONFIG_GROUPER_TPS65911=y
CONFIG_CMD_POWEROFF=y
CONFIG_DM_PMIC_TPS65910=y
# CONFIG_DM_REGULATOR_TPS65910 is not set
CONFIG_DM_REGULATOR_TPS65911=y
CONFIG_SYSRESET_TPS65910=y
5 changes: 4 additions & 1 deletion board/asus/grouper/configs/tilapia.config
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
CONFIG_DEFAULT_DEVICE_TREE="tegra30-asus-nexus7-tilapia-E1565"
CONFIG_GROUPER_MAX77663=y
CONFIG_SYS_PROMPT="Tegra30 (Tilapia) # "
CONFIG_CMD_POWEROFF=y
CONFIG_DM_PMIC_MAX77663=y
CONFIG_DM_REGULATOR_MAX77663=y
CONFIG_SYSRESET_MAX77663=y
153 changes: 1 addition & 152 deletions board/asus/grouper/grouper.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,104 +8,11 @@
*/

#include <common.h>
#include <dm.h>
#include <fdt_support.h>
#include <i2c.h>
#include <log.h>
#include <asm/arch/pinmux.h>
#include <asm/arch/gp_padctrl.h>
#include <asm/arch/gpio.h>
#include <asm/gpio.h>
#include <linux/delay.h>
#include "pinmux-config-grouper.h"

#define TPS65911_I2C_ADDRESS 0x2D

#define TPS65911_REG_LDO1 0x30
#define TPS65911_REG_DEVCTRL 0x3F
#define DEVCTRL_PWR_OFF_MASK BIT(7)
#define DEVCTRL_DEV_ON_MASK BIT(2)
#define DEVCTRL_DEV_OFF_MASK BIT(0)

#define MAX77663_I2C_ADDRESS 0x3C

#define MAX77663_REG_SD2 0x18
#define MAX77663_REG_LDO3 0x29
#define MAX77663_REG_ONOFF_CFG1 0x41
#define ONOFF_PWR_OFF BIT(1)

#ifdef CONFIG_CMD_POWEROFF
#ifdef CONFIG_GROUPER_TPS65911
int do_poweroff(struct cmd_tbl *cmdtp,
int flag, int argc, char *const argv[])
{
struct udevice *dev;
uchar data_buffer[1];
int ret;

ret = i2c_get_chip_for_busnum(0, TPS65911_I2C_ADDRESS, 1, &dev);
if (ret) {
log_debug("cannot find PMIC I2C chip\n");
return 0;
}

ret = dm_i2c_read(dev, TPS65911_REG_DEVCTRL, data_buffer, 1);
if (ret)
return ret;

data_buffer[0] |= DEVCTRL_PWR_OFF_MASK;

ret = dm_i2c_write(dev, TPS65911_REG_DEVCTRL, data_buffer, 1);
if (ret)
return ret;

data_buffer[0] |= DEVCTRL_DEV_OFF_MASK;
data_buffer[0] &= ~DEVCTRL_DEV_ON_MASK;

ret = dm_i2c_write(dev, TPS65911_REG_DEVCTRL, data_buffer, 1);
if (ret)
return ret;

// wait some time and then print error
mdelay(5000);

printf("Failed to power off!!!\n");
return 1;
}
#endif /* CONFIG_GROUPER_TPS65911 */

#ifdef CONFIG_GROUPER_MAX77663
int do_poweroff(struct cmd_tbl *cmdtp,
int flag, int argc, char *const argv[])
{
struct udevice *dev;
uchar data_buffer[1];
int ret;

ret = i2c_get_chip_for_busnum(0, MAX77663_I2C_ADDRESS, 1, &dev);
if (ret) {
log_debug("cannot find PMIC I2C chip\n");
return 0;
}

ret = dm_i2c_read(dev, MAX77663_REG_ONOFF_CFG1, data_buffer, 1);
if (ret)
return ret;

data_buffer[0] |= ONOFF_PWR_OFF;

ret = dm_i2c_write(dev, MAX77663_REG_ONOFF_CFG1, data_buffer, 1);
if (ret)
return ret;

// wait some time and then print error
mdelay(5000);

printf("Failed to power off!!!\n");
return 1;
}
#endif /* CONFIG_GROUPER_MAX77663 */
#endif /* CONFIG_CMD_POWEROFF */
#include "pinmux-config-grouper.h"

/*
* Routine: pinmux_init
Expand All @@ -120,64 +27,6 @@ void pinmux_init(void)
ARRAY_SIZE(grouper_padctrl));
}

#ifdef CONFIG_MMC_SDHCI_TEGRA
static void __maybe_unused tps65911_voltage_init(void)
{
struct udevice *dev;
int ret;

ret = i2c_get_chip_for_busnum(0, TPS65911_I2C_ADDRESS, 1, &dev);
if (ret) {
log_debug("cannot find PMIC I2C chip\n");
return;
}

/* TPS659110: LDO1_REG = 3.3v, ACTIVE to SDMMC4 */
ret = dm_i2c_reg_write(dev, TPS65911_REG_LDO1, 0xC9);
if (ret)
log_debug("vcore_emmc set failed: %d\n", ret);
}

static void __maybe_unused max77663_voltage_init(void)
{
struct udevice *dev;
int ret;

ret = i2c_get_chip_for_busnum(0, MAX77663_I2C_ADDRESS, 1, &dev);
if (ret) {
log_debug("cannot find PMIC I2C chip\n");
return;
}

/* 0x60 for 1.8v, bit7:0 = voltage */
ret = dm_i2c_reg_write(dev, MAX77663_REG_SD2, 0x60);
if (ret)
log_debug("vdd_1v8_vio set failed: %d\n", ret);

/* 0xEC for 3.00v, enabled: bit7:6 = 11 = enable, bit5:0 = voltage */
ret = dm_i2c_reg_write(dev, MAX77663_REG_LDO3, 0xEC);
if (ret)
log_debug("vcore_emmc set failed: %d\n", ret);
}

/*
* Routine: pin_mux_mmc
* Description: setup the MMC muxes, power rails, etc.
*/
void pin_mux_mmc(void)
{
#ifdef CONFIG_GROUPER_MAX77663
/* Bring up eMMC power on MAX PMIC */
max77663_voltage_init();
#endif

#ifdef CONFIG_GROUPER_TPS65911
/* Bring up eMMC power on TI PMIC */
tps65911_voltage_init();
#endif
}
#endif /* MMC */

#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
int ft_board_setup(void *blob, struct bd_info *bd)
{
Expand Down

0 comments on commit 6846c8c

Please sign in to comment.