void bl_gpio_init(void) { /* Configure PM8058 GPIO24 as a PWM driver (LPG ch0) for chain 1 of 6 LEDs */ pm8058_write_one(0x81, GPIO24_GPIO_CNTRL); /* Write, Bank0, VIN0, Mode selection enabled */ pm8058_write_one(0x98, GPIO24_GPIO_CNTRL); /* Write, Bank1, OutOn/InOff, CMOS, Don't Invert Output */ pm8058_write_one(0xAA, GPIO24_GPIO_CNTRL); /* Write, Bank2, GPIO no pull */ pm8058_write_one(0xB4, GPIO24_GPIO_CNTRL); /* Write, Bank3, high drv strength */ pm8058_write_one(0xC6, GPIO24_GPIO_CNTRL); /* Write, Bank4, Src: LPG_DRV1 (Spec. Fnc 2) */ pm8058_write_one(0xD8, GPIO24_GPIO_CNTRL); /* Write, Bank5, Interrupt polarity noninversion */ /* Configure PM8058 GPIO25 as a PWM driver (LPG ch1) for chain 2 of 5 LEDs */ pm8058_write_one(0x81, GPIO25_GPIO_CNTRL); /* Write, Bank0, VIN0, Mode selection enabled */ pm8058_write_one(0x98, GPIO25_GPIO_CNTRL); /* Write, Bank1, OutOn/InOff, CMOS, Don't Invert Output */ pm8058_write_one(0xAA, GPIO25_GPIO_CNTRL); /* Write, Bank2, GPIO no pull */ pm8058_write_one(0xB4, GPIO25_GPIO_CNTRL); /* Write, Bank3, high drv strength */ pm8058_write_one(0xC6, GPIO25_GPIO_CNTRL); /* Write, Bank4, Src: LPG_DRV2 (Spec. Fnc 2) */ pm8058_write_one(0xD8, GPIO25_GPIO_CNTRL); /* Write, Bank5, Interrupt polarity noninversion */ }
/* Backlight duty cycle init is used to configure the PMIC8058 for * PWM output and drive those pins. */ static void bl_duty_cycle_init(void) { /* Disable backlight LPG channels before configuring them and dedicated PMIC GPIOs */ pm8058_write_one(0x00, LPG_BANK_ENABLE); /* Configure PM8058 GPIO24 as a PWM driver (LPG ch0) for chain 1 of 6 LEDs */ pm8058_write_one(0x81, GPIO24_GPIO_CNTRL); /* Write, Bank0, VIN0, Mode selection enabled */ pm8058_write_one(0x98, GPIO24_GPIO_CNTRL); /* Write, Bank1, OutOn/InOff, CMOS, Don't Invert Output */ pm8058_write_one(0xAA, GPIO24_GPIO_CNTRL); /* Write, Bank2, GPIO no pull */ pm8058_write_one(0xB4, GPIO24_GPIO_CNTRL); /* Write, Bank3, high drv strength */ pm8058_write_one(0xC6, GPIO24_GPIO_CNTRL); /* Write, Bank4, Src: LPG_DRV1 (Spec. Fnc 2) */ pm8058_write_one(0xD8, GPIO24_GPIO_CNTRL); /* Write, Bank5, Interrupt polarity noninversion */ /* Configure PM8058 GPIO25 as a PWM driver (LPG ch1) for chain 2 of 5 LEDs */ pm8058_write_one(0x81, GPIO25_GPIO_CNTRL); /* Write, Bank0, VIN0, Mode selection enabled */ pm8058_write_one(0x98, GPIO25_GPIO_CNTRL); /* Write, Bank1, OutOn/InOff, CMOS, Don't Invert Output */ pm8058_write_one(0xAA, GPIO25_GPIO_CNTRL); /* Write, Bank2, GPIO no pull */ pm8058_write_one(0xB4, GPIO25_GPIO_CNTRL); /* Write, Bank3, high drv strength */ pm8058_write_one(0xC6, GPIO25_GPIO_CNTRL); /* Write, Bank4, Src: LPG_DRV2 (Spec. Fnc 2) */ pm8058_write_one(0xD8, GPIO25_GPIO_CNTRL); /* Write, Bank5, Interrupt polarity noninversion */ /* Configure PM8058 LPG channel 0 as non-LUT PWM for PM8058 GPIO24 */ pm8058_write_one(0x0, LPG_BANK_SEL); /* Select LPG ch0 slice of control regs */ pm8058_write_one(0x00, LPG_CTL_0); /* Disable PWM, PWM output, and LPG ramp generator */ pm8058_write_one(0x40, LPG_CTL_1); /* Dont Toggle, Enable user PWM value, no LUT high value idx */ pm8058_write_one(0x00, LPG_CTL_2); /* Dont Loop, no LUT low value index */ pm8058_write_one(0xDE, LPG_CTL_3); /* LS 8 bits of 9-bit PWM user value */ pm8058_write_one(0x7F, LPG_CTL_4); /* MSbit of 9-bit PWM user value, 19.2MHz, Dev 6, Expo M = 7 */ pm8058_write_one(0x01, LPG_CTL_5); /* PWM = 9bit, disable pause at high value LUT index */ pm8058_write_one(0x00, LPG_CTL_6); /* Disable pause at low value LUT index */ pm8058_write_one(0x0C, LPG_CTL_0); /* Enable PWM and PWM output, LPG ramp generator remains disabled */ /* Configure PM8058 LPG chan 1 as PWM for PM8058 GPIO25 */ pm8058_write_one(0x1, LPG_BANK_SEL); /* Select LPG ch1 slice of control regs */ pm8058_write_one(0x00, LPG_CTL_0); /* Disable PWM, PWM output, and LPG ramp generator */ pm8058_write_one(0x40, LPG_CTL_1); /* Dont Toggle, Enable user PWM value, no LUT high value idx */ pm8058_write_one(0x00, LPG_CTL_2); /* Dont Loop, no LUT low value index */ pm8058_write_one(0x00, LPG_CTL_3); /* LS 8 bits of 9-bit PWM user value */ pm8058_write_one(0x7F, LPG_CTL_4); /* MSbit of 9-bit PWM user value, 19.2MHz, Dev 6, Expo M = 7 */ pm8058_write_one(0x01, LPG_CTL_5); /* PWM = 9bit, disable pause at high value LUT index */ pm8058_write_one(0x00, LPG_CTL_6); /* Disable pause at low value LUT index */ pm8058_write_one(0x0C, LPG_CTL_0); /* Enable PWM and PWM output, LPG ramp generator remains disabled */ /* Enable both LPG channels to enable backlight driver */ pm8058_write_one(0x03, LPG_BANK_ENABLE); /* Enable LPG ch0 (GPIO24) & ch1 (GPIO25) */ }