Ejemplo n.º 1
0
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 */
}
Ejemplo n.º 2
0
/* 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) */
}