Index: dev/lcdctl.c =================================================================== RCS file: /cvsroot/src/sys/arch/zaurus/dev/lcdctl.c,v retrieving revision 1.1 diff -u -p -r1.1 lcdctl.c --- dev/lcdctl.c 25 Jan 2012 16:51:17 -0000 1.1 +++ dev/lcdctl.c 26 Jan 2012 13:42:43 -0000 @@ -79,7 +79,6 @@ static void lcdctl_attach(device_t, devi CFATTACH_DECL_NEW(lcdctl, sizeof(struct lcdctl_softc), lcdctl_match, lcdctl_attach, NULL, NULL); -static int lcdctl_finalize(device_t); static void lcdctl_brightness_up(device_t); static void lcdctl_brightness_down(device_t); static void lcdctl_display_on(device_t); @@ -119,8 +118,10 @@ lcdctl_attach(device_t parent, device_t sc->sc_nbacklighttbl = __arraycount(lcdctl_backlight_c3000); sc->sc_backlighttbl = lcdctl_backlight_c3000; - /* schedule adjustment of LCD brightness after all devices are ready */ - config_finalize_register(self, lcdctl_finalize); + /* Start with approximately 40% of full brightness. */ + lcdctl_set_brightness(sc, 3); + + lcdctl_sc = sc; if (!pmf_event_register(self, PMFE_DISPLAY_BRIGHTNESS_UP, lcdctl_brightness_up, true)) @@ -136,19 +137,6 @@ lcdctl_attach(device_t parent, device_t aprint_error_dev(self, "couldn't register event handler\n"); } -static int -lcdctl_finalize(device_t dv) -{ - struct lcdctl_softc *sc = device_private(dv); - - /* Start with approximately 40% of full brightness. */ - lcdctl_set_brightness(sc, 3); - - lcdctl_sc = sc; - - return 0; -} - static void lcdctl_brightness_up(device_t dv) { Index: dev/scoop.c =================================================================== RCS file: /cvsroot/src/sys/arch/zaurus/dev/scoop.c,v retrieving revision 1.9 diff -u -p -r1.9 scoop.c --- dev/scoop.c 19 Jul 2011 15:11:49 -0000 1.9 +++ dev/scoop.c 26 Jan 2012 13:42:43 -0000 @@ -58,6 +58,10 @@ static int scoop_gpio_pin_read(struct sc static void scoop_gpio_pin_write(struct scoop_softc *, int, int); static void scoop_gpio_pin_ctl(struct scoop_softc *, int, int); +static struct scoop_softc *backlight_sc; +static uint8_t backlight_on_init = 1; +static uint8_t backlight_cont_init = 0; + enum scoop_card { SD_CARD, CF_CARD /* socket 0 (external) */ @@ -108,9 +112,13 @@ scoopattach(device_t parent, device_t se if (ZAURUS_ISC3000 && sc->sc_dev->dv_unit == 1) { scoop_gpio_pin_ctl(sc, SCOOP1_AKIN_PULLUP, GPIO_PIN_OUTPUT); scoop_gpio_pin_write(sc, SCOOP1_AKIN_PULLUP, GPIO_PIN_LOW); + backlight_sc = sc; + scoop_set_backlight(backlight_on_init, backlight_cont_init); } else if (ZAURUS_ISC860) { scoop_gpio_pin_ctl(sc, SCOOP0_AKIN_PULLUP, GPIO_PIN_OUTPUT); scoop_gpio_pin_write(sc, SCOOP0_AKIN_PULLUP, GPIO_PIN_LOW); + backlight_sc = sc; + scoop_set_backlight(backlight_on_init, backlight_cont_init); } } @@ -161,25 +169,19 @@ scoop_gpio_pin_ctl(struct scoop_softc *s void scoop_set_backlight(int on, int cont) { - struct scoop_softc *sc; -#if 0 - struct scoop_softc *sc0; + struct scoop_softc *sc = backlight_sc; - sc0 = device_lookup_private(&scoop_cd, 0); -#endif - - sc = device_lookup_private(&scoop_cd, 1); - if (sc != NULL) { - /* C3000 */ - scoop_gpio_pin_write(sc, SCOOP1_BACKLIGHT_CONT, !cont); - scoop_gpio_pin_write(sc, SCOOP1_BACKLIGHT_ON, on); - } -#if 0 - else if (sc0 != NULL) { - scoop_gpio_pin_write(sc0, - SCOOP0_BACKLIGHT_CONT, cont); + if (sc == NULL) { + backlight_cont_init = cont; + backlight_on_init = on; + } else { + if (ZAURUS_ISC3000) { + scoop_gpio_pin_write(sc, SCOOP1_BACKLIGHT_CONT, !cont); + scoop_gpio_pin_write(sc, SCOOP1_BACKLIGHT_ON, on); + } else if (ZAURUS_ISC860) { + scoop_gpio_pin_write(sc, SCOOP0_BACKLIGHT_CONT, cont); + } } -#endif } /*