void lcd_enable(void) { #ifdef CONFIG_USE_FDT u32 dtbaddr = getenv_ulong("dtbaddr", 16, ~0UL); if (dtbaddr == ~0UL) { puts("lcdpower: failed to get 'dtbaddr' from env!\n"); return; } unsigned int driver = FDTPROP(dtbaddr, PATHINF, "brightdrv"); unsigned int bright = FDTPROP(dtbaddr, PATHINF, "brightdef"); unsigned int pwmfrq = FDTPROP(dtbaddr, PATHINF, "brightfdim"); #else unsigned int driver = getenv_ulong("ds1_bright_drv", 16, 0UL); unsigned int bright = getenv_ulong("ds1_bright_def", 10, 50); unsigned int pwmfrq = getenv_ulong("ds1_pwmfreq", 10, ~0UL); #endif unsigned int tmp; struct gptimer *const timerhw = (struct gptimer *)DM_TIMER6_BASE; bright = bright != ~0UL ? bright : 50; switch (driver) { case 0: /* PMIC LED-Driver */ /* brightness level */ tps65217_reg_write(TPS65217_PROT_LEVEL_NONE, TPS65217_WLEDCTRL2, bright, 0xFF); /* turn on light */ tps65217_reg_write(TPS65217_PROT_LEVEL_NONE, TPS65217_WLEDCTRL1, 0x0A, 0xFF); break; case 1: /* PWM using timer6 */ if (pwmfrq != ~0UL) { timerhw->tiocp_cfg = TCFG_RESET; udelay(10); while (timerhw->tiocp_cfg & TCFG_RESET) ; tmp = ~0UL-(V_OSCK/pwmfrq); /* bottom value */ timerhw->tldr = tmp; timerhw->tcrr = tmp; tmp = tmp + ((V_OSCK/pwmfrq)/100) * bright; timerhw->tmar = tmp; timerhw->tclr = (TCLR_PT | (2 << TCLR_TRG_SHIFT) | TCLR_CE | TCLR_AR | TCLR_ST); } else { puts("invalid pwmfrq in env/dtb! skip PWM-setup.\n"); } break; default: puts("no suitable backlightdriver in env/dtb!\n"); break; } br_summaryscreen(); }
void lcd_enable(void) { br_summaryscreen(); lcdbacklight(1); }