[commit] r2422 - in trunk/linux-2.6.x/arch/arm/mach-nds: . arm7

dslinux_sonny_jim at dslinux.in-berlin.de dslinux_sonny_jim at dslinux.in-berlin.de
Tue Jun 30 23:55:53 CEST 2009


Author: dslinux_sonny_jim
Date: Tue Jun 30 23:55:53 2009
New Revision: 2422

Log:
Change method of calling backlight brightness and add in DSLite detection code

Modified:
   trunk/linux-2.6.x/arch/arm/mach-nds/arm7/main.c
   trunk/linux-2.6.x/arch/arm/mach-nds/arm7/spi.h
   trunk/linux-2.6.x/arch/arm/mach-nds/fifo.c

Modified: trunk/linux-2.6.x/arch/arm/mach-nds/arm7/main.c
==============================================================================
--- trunk/linux-2.6.x/arch/arm/mach-nds/arm7/main.c	(original)
+++ trunk/linux-2.6.x/arch/arm/mach-nds/arm7/main.c	Tue Jun 30 23:55:53 2009
@@ -18,14 +18,24 @@
 
 static struct nds_firmware_block *firmware_block;
 
+int DSLiteDetect(void)
+{
+	//u32 data;
+	//data = power_read(POWER_BACKLIGHT);
+	//data &=  (1<<6);
+	if (power_read(POWER_BACKLIGHT) & (1<<6)) return 0;//DSLite
+	else
+		return 1;
+}
+	
 /* recieve outstanding FIFO commands from ARM9 */
 static void recieveFIFOCommand(void)
 {
 	u32 fifo_recv;
 	u32 data;
 	u32 seconds = 0;
-	u32 power;
 	int cmd;
+	int cmddata;
 	struct nds_tx_packet *tx_packet = NULL;
 
 	while (!(NDS_REG_IPCFIFOCNT & FIFO_EMPTY)) {
@@ -51,18 +61,50 @@
 			break;
 		case FIFO_POWER:
 			cmd = FIFO_POWER_GET_CMD(data);
+			cmddata = FIFO_POWER_GET_DATA(data);
 			switch (cmd) {
-			case FIFO_POWER_CMD_BACKLIGHT_ENABLE:
-	 				power = power_read(POWER_CONTROL);
-		        		power_write(POWER_CONTROL, power | POWER0_LOWER_BACKLIGHT | POWER0_UPPER_BACKLIGHT);
-					
-				break;
-			case FIFO_POWER_CMD_BACKLIGHT_DISABLE:
-					power = power_read(POWER_CONTROL);
-					power &= ~(POWER0_LOWER_BACKLIGHT | POWER0_UPPER_BACKLIGHT);
-					power_write(POWER_CONTROL, power);
-				
-				break;
+			case FIFO_POWER_CMD_BACKLIGHT_BRIGHTNESS:
+					if (DSLiteDetect() == 1) break;
+					switch (cmddata) {
+					case 0:
+						data = power_read(POWER_BACKLIGHT);
+						data &=  ~3;
+						power_write(POWER_BACKLIGHT, data);
+						break;
+					case 1:
+						data = power_read(POWER_BACKLIGHT);
+						data &=  ~3;
+						data |= (POWER4_BRIGHTNESS_MED);
+						power_write(POWER_BACKLIGHT, data);
+						break;
+					case 2:
+						data = power_read(POWER_BACKLIGHT);
+						data &=  ~3;
+						data |= (POWER4_BRIGHTNESS_HIGH);
+						power_write(POWER_BACKLIGHT, data);
+						break;
+					case 3:
+						
+						data = power_read(POWER_BACKLIGHT);
+						data |= (POWER4_BRIGHTNESS_MAX);
+						power_write(POWER_BACKLIGHT, data);
+						break;
+					}
+			break;
+			case FIFO_POWER_CMD_BACKLIGHT_POWER:
+					switch (cmddata) {
+					case 0:
+	 					data = power_read(POWER_CONTROL);
+		        			data &= ~(POWER0_LOWER_BACKLIGHT | POWER0_UPPER_BACKLIGHT);
+						power_write(POWER_CONTROL, data);
+						break;
+					case 1:
+						data = power_read(POWER_CONTROL);
+						data |= (POWER0_LOWER_BACKLIGHT | POWER0_UPPER_BACKLIGHT);
+						power_write(POWER_CONTROL, data);
+						break;
+					}
+			break;
 			case FIFO_POWER_CMD_SYSTEM_POWER:
 					power_write(POWER_CONTROL, POWER0_SYSTEM_POWER);
 				break;

Modified: trunk/linux-2.6.x/arch/arm/mach-nds/arm7/spi.h
==============================================================================
--- trunk/linux-2.6.x/arch/arm/mach-nds/arm7/spi.h	(original)
+++ trunk/linux-2.6.x/arch/arm/mach-nds/arm7/spi.h	Tue Jun 30 23:55:53 2009
@@ -10,11 +10,17 @@
 #define POWER0_LED_FAST		(1<<5)
 #define POWER0_SYSTEM_POWER	(1<<6)
 
+#define POWER4_BRIGHTNESS_LOW	(0)
+#define POWER4_BRIGHTNESS_MED	(1)
+#define POWER4_BRIGHTNESS_HIGH	(2)
+#define POWER4_BRIGHTNESS_MAX	(3)
+
 enum power_reg {
 	POWER_CONTROL,
 	POWER_BATTERY,
 	POWER_MIC_CONTROL,
-	POWER_MIC_GAIN
+	POWER_MIC_GAIN,
+	POWER_BACKLIGHT
 };
 
 u8 power_read(enum power_reg);

Modified: trunk/linux-2.6.x/arch/arm/mach-nds/fifo.c
==============================================================================
--- trunk/linux-2.6.x/arch/arm/mach-nds/fifo.c	(original)
+++ trunk/linux-2.6.x/arch/arm/mach-nds/fifo.c	Tue Jun 30 23:55:53 2009
@@ -67,7 +67,8 @@
 					break;
 				case FIFO_POWER:
 					cb->handler.power_handler(
-					    FIFO_POWER_GET_CMD(data));
+					    FIFO_POWER_GET_CMD(data),
+					    FIFO_POWER_GET_DATA(data));
 					break;
 				default:
 					break;


More information about the dslinux-commit mailing list