From 8df1a7e29abd51cc455844a9633e1cc5e057065f Mon Sep 17 00:00:00 2001 From: Dave Chapman Date: Wed, 29 Oct 2008 01:42:03 +0000 Subject: [PATCH] e200v2: implement the backlight handling (copy/paste from the c200v1/e200v1 code - this should probably be unified, along with other upcoming v2 code), plus clean up the lcd init by calling lcd_init() directly in the bootloader, instead of lcd_init_device(). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18910 a1c6a512-1295-4272-9138-f99709370657 --- bootloader/sansa_as3525.c | 19 +++-- firmware/SOURCES | 1 + firmware/export/config-e200v2.h | 4 +- .../arm/as3525/sansa-clip/lcd-ssd1303.c | 2 + .../as3525/sansa-e200v2/backlight-e200v2.c | 71 +++++++++++++++++++ .../as3525/sansa-e200v2/backlight-target.h | 21 +++--- 6 files changed, 93 insertions(+), 25 deletions(-) create mode 100644 firmware/target/arm/as3525/sansa-e200v2/backlight-e200v2.c diff --git a/bootloader/sansa_as3525.c b/bootloader/sansa_as3525.c index 2a4f7f0ccb..a88e206c3b 100644 --- a/bootloader/sansa_as3525.c +++ b/bootloader/sansa_as3525.c @@ -25,10 +25,11 @@ #include #include #include -#include "lcd.h" -#include "common.h" #include "config.h" +#include "lcd.h" +#include "backlight-target.h" #include "as3525-codec.h" +#include "common.h" int show_logo(void); void main(void) @@ -38,19 +39,15 @@ void main(void) system_init(); - lcd_init_device(); - lcd_clear_display(); - - lcd_update(); - -#ifdef HAVE_LCD_ENABLE - lcd_enable(true); -#endif + lcd_init(); show_logo(); + as3525_codec_init(); /* Required for backlight on e200v2 */ + + _backlight_on(); + /* show player id to demonstrate communication with codec part */ - as3525_codec_init(); for (i = 0; i < 8; i++) { buf[i] = as3525_codec_read(0x38 + i); } diff --git a/firmware/SOURCES b/firmware/SOURCES index 7a93d058b4..f2f8526494 100644 --- a/firmware/SOURCES +++ b/firmware/SOURCES @@ -1046,6 +1046,7 @@ target/arm/as3525/as3525-codec.c #ifndef SIMULATOR target/arm/as3525/sansa-e200v2/lcd-e200v2.c target/arm/as3525/sansa-e200v2/button-e200v2.c +target/arm/as3525/sansa-e200v2/backlight-e200v2.c target/arm/as3525/as3525-codec.c #endif /* !SIMULATOR */ #endif /* SANSA_E200V2 */ diff --git a/firmware/export/config-e200v2.h b/firmware/export/config-e200v2.h index 5b051f2a89..0dc87d4123 100644 --- a/firmware/export/config-e200v2.h +++ b/firmware/export/config-e200v2.h @@ -47,6 +47,7 @@ #define LCD_DEPTH 16 /* 65536 colours */ #define LCD_PIXELFORMAT RGB565 /* rgb565 */ +#ifndef BOOTLOADER /* define this if you have LCD enable function */ #define HAVE_LCD_ENABLE @@ -54,6 +55,7 @@ should be defined as well. */ #define HAVE_LCD_SLEEP #define HAVE_LCD_SLEEP_SETTING +#endif /* define this if you can flip your LCD */ #define HAVE_LCD_FLIP @@ -165,7 +167,7 @@ #define CONFIG_USBOTG USBOTG_AS3525 /* enable these for the experimental usb stack */ -#define HAVE_USBSTACK +//#define HAVE_USBSTACK #define USB_VENDOR_ID 0x0781 #define USB_PRODUCT_ID 0x7423 diff --git a/firmware/target/arm/as3525/sansa-clip/lcd-ssd1303.c b/firmware/target/arm/as3525/sansa-clip/lcd-ssd1303.c index 4ae13a5fcc..ed4bcc7be9 100644 --- a/firmware/target/arm/as3525/sansa-clip/lcd-ssd1303.c +++ b/firmware/target/arm/as3525/sansa-clip/lcd-ssd1303.c @@ -228,6 +228,8 @@ void lcd_init_device(void) lcd_write_data(p_bytes, LCD_FULLSCREEN /* overscan */); } + lcd_enable(true); + lcd_update(); } diff --git a/firmware/target/arm/as3525/sansa-e200v2/backlight-e200v2.c b/firmware/target/arm/as3525/sansa-e200v2/backlight-e200v2.c new file mode 100644 index 0000000000..fd2b65ad5b --- /dev/null +++ b/firmware/target/arm/as3525/sansa-e200v2/backlight-e200v2.c @@ -0,0 +1,71 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2006 by Barry Wardell + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ +#include "config.h" +#include "backlight-target.h" +#include "system.h" +#include "lcd.h" +#include "backlight.h" +#include "as3525-codec.h" +#include "as3514.h" + +static unsigned short backlight_brightness = DEFAULT_BRIGHTNESS_SETTING; + +void _backlight_set_brightness(int brightness) +{ + backlight_brightness = brightness; + + if (brightness > 0) + _backlight_on(); + else + _backlight_off(); +} + +void _backlight_on(void) +{ +#ifdef HAVE_LCD_SLEEP + backlight_lcd_sleep_countdown(false); /* stop counter */ +#endif +#ifdef HAVE_LCD_ENABLE + lcd_enable(true); /* power on lcd + visible display */ +#endif + as3525_codec_write(AS3514_DCDC15, backlight_brightness); +} + +void _backlight_off(void) +{ + as3525_codec_write(AS3514_DCDC15, 0x0); +#ifdef HAVE_LCD_ENABLE + lcd_enable(false); /* power off visible display */ +#endif +#ifdef HAVE_LCD_SLEEP + backlight_lcd_sleep_countdown(true); /* start countdown */ +#endif +} + +void _buttonlight_on(void) +{ + /* TODO */ +} + +void _buttonlight_off(void) +{ + /* TODO */ +} diff --git a/firmware/target/arm/as3525/sansa-e200v2/backlight-target.h b/firmware/target/arm/as3525/sansa-e200v2/backlight-target.h index 9533d0a6b5..db2cecc07a 100644 --- a/firmware/target/arm/as3525/sansa-e200v2/backlight-target.h +++ b/firmware/target/arm/as3525/sansa-e200v2/backlight-target.h @@ -7,7 +7,7 @@ * \/ \/ \/ \/ \/ * $Id$ * - * Copyright (C) 2008 ?? + * Copyright (C) 2006 Barry Wardell * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -21,17 +21,12 @@ #ifndef BACKLIGHT_TARGET_H #define BACKLIGHT_TARGET_H -static inline bool _backlight_init(void) -{ - return true; -} - -static inline void _backlight_on(void) -{ -} - -static inline void _backlight_off(void) -{ -} +#define _backlight_init() true +void _backlight_on(void); +void _backlight_off(void); +void _backlight_set_brightness(int brightness); +int __backlight_is_on(void); +void _buttonlight_on(void); +void _buttonlight_off(void); #endif