static int enable_lcd_vdd(void) { /* Set 1.20V to power AVDD_DSI_CSI */ /* LD0: 1.20v CNF1: 0x0d */ pmic_write_reg_77620(I2CPWR_BUS, MAX77620_CNFG1_L0_REG, 0xd0, 1); /* Enable VDD_LCD */ gpio_set(EN_VDD_LCD, 1); /* wait for 2ms */ mdelay(2); /* Enable PP1800_LCDIO to panel */ gpio_set(EN_VDD18_LCD, 1); /* wait for 1ms */ mdelay(1); /* Set panel EN and RST signals */ gpio_set(LCD_EN, 1); /* enable */ /* wait for min 10ms */ mdelay(10); gpio_set(LCD_RST_L, 1); /* clear reset */ /* wait for min 3ms */ mdelay(3); return 0; }
static void pmic_slam_defaults(unsigned bus) { int i; for (i = 0; i < ARRAY_SIZE(init_list); i++) { struct max77620_init_reg *reg = &init_list[i]; pmic_write_reg_77620(bus, reg->reg, reg->val, reg->delay); } }
void pmic_init(unsigned bus) { /* Restore PMIC POR defaults, in case kernel changed 'em */ pmic_slam_defaults(bus); /* MAX77620: Set SD0 to 1.0V - VDD_CORE */ pmic_write_reg_77620(bus, MAX77620_SD0_REG, 0x20, 1); pmic_write_reg_77620(bus, MAX77620_VDVSSD0_REG, 0x20, 1); /* MAX77620: GPIO 0,1,2,5,6,7 = GPIO, 3,4 = alt mode */ pmic_write_reg_77620(bus, MAX77620_AME_GPIO, 0x18, 1); /* MAX77620: Disable SD1 Remote Sense, Set SD1 for LPDDR4 to 1.125V */ pmic_write_reg_77620(bus, MAX77620_CNFG2SD_REG, 0x04, 1); pmic_write_reg_77620(bus, MAX77620_SD1_REG, 0x2a, 1); /* * MAX77620: Set LDO2 output to 1.8V. LDO2 is used as always-on * reference for the droop alert circuit. Match this setting with what * the kernel expects. */ pmic_write_reg_77620(bus, MAX77620_CNFG1_L2_REG, 0x14, 1); /* MAX77621: Set VOUT_REG to 1.0V - CPU VREG */ pmic_write_reg_77621(bus, MAX77621_VOUT_REG, 0xBF, 1); /* MAX77621: Set VOUT_DVC_REG to 1.0V - CPU VREG DVC */ pmic_write_reg_77621(bus, MAX77621_VOUT_DVC_REG, 0xBF, 1); /* MAX77621: Set CONTROL1 to 0x38 */ pmic_write_reg_77621(bus, MAX77621_CONTROL1_REG, 0x38, 1); /* MAX77621: Set CONTROL2 to 0xD2 */ pmic_write_reg_77621(bus, MAX77621_CONTROL2_REG, 0xD2, 1); /* MAX77620: Setup/Enable GPIO5 - EN_VDD_CPU */ pmic_write_reg_77620(bus, MAX77620_GPIO5_REG, 0x09, 1); /* Required delay of 2msec */ udelay(2000); printk(BIOS_DEBUG, "PMIC init done\n"); }