All pastes #572046 Raw Edit

Diff

public text v1 · immutable
·published 2007-06-17 14:05 UTC
rendered paste body
Index: kernel26/arch/arm/mach-pxa/magician/magician.c===================================================================--- kernel26.orig/arch/arm/mach-pxa/magician/magician.c	2007-06-17 15:01:03.000000000 +0200+++ kernel26/arch/arm/mach-pxa/magician/magician.c	2007-06-17 16:05:33.000000000 +0200@@ -61,10 +61,7 @@ 	unsigned long flags;  	local_irq_save(flags);-	if (mode & IR_OFF)-		gpio_set_value(GPIO83_MAGICIAN_nIR_EN, 1);-	else-		gpio_set_value(GPIO83_MAGICIAN_nIR_EN, 0);+	gpio_set_value(GPIO83_MAGICIAN_nIR_EN, mode & IR_OFF); 	local_irq_restore(flags); } @@ -216,7 +213,16 @@ 	.num_resources	= ARRAY_SIZE(magician_cpld_resources), 	.resource	= magician_cpld_resources, };-EXPORT_SYMBOL(magician_cpld);++/* Compatibility wrapper */+void magician_egpio_set(int bit, int value)+{+	if (value)+		magician_egpio_enable(&magician_cpld, bit);+	else+		magician_egpio_disable(&magician_cpld, bit);+}+EXPORT_SYMBOL(magician_egpio_set);  /*  * USB Device ControllerIndex: kernel26/arch/arm/mach-pxa/magician/magician_phone.c===================================================================--- kernel26.orig/arch/arm/mach-pxa/magician/magician_phone.c	2007-06-17 15:10:35.000000000 +0200+++ kernel26/arch/arm/mach-pxa/magician/magician_phone.c	2007-06-17 15:11:24.000000000 +0200@@ -20,7 +20,6 @@ #include <asm/arch/hardware.h> #include <asm/arch/pxa-regs.h> #include <asm/arch/serial.h>-#include <asm/arch/magician_cpld.h>  #include <linux/irq.h> #include <linux/interrupt.h>@@ -32,8 +31,6 @@ MODULE_PARM_DESC(bootloader, "Start in radio bootloader mode"); #endif -extern struct platform_device magician_cpld;- int suspending; void *magician_gsm_ready; @@ -76,7 +73,7 @@ 	/* stop display to avoid interference? */ 	gpio_set_value(GPIO74_LCD_FCLK, 0); -	magician_egpio_enable (&magician_cpld, EGPIO_NR_MAGICIAN_GSM_POWER);+	magician_egpio_set (EGPIO_NR_MAGICIAN_GSM_POWER, 1);  	msleep (150); 	gpio_set_value(GPIO74_LCD_FCLK, 1);@@ -155,7 +152,7 @@  	disable_irq_wake(gpio_to_irq(GPIO10_MAGICIAN_GSM_IRQ)); -	magician_egpio_disable(&magician_cpld, EGPIO_NR_MAGICIAN_GSM_POWER);+	magician_egpio_set(EGPIO_NR_MAGICIAN_GSM_POWER, 0); }  static void magician_phone_configure (int state)Index: kernel26/arch/arm/mach-pxa/magician/magician_pm.c===================================================================--- kernel26.orig/arch/arm/mach-pxa/magician/magician_pm.c	2007-06-17 15:10:33.000000000 +0200+++ kernel26/arch/arm/mach-pxa/magician/magician_pm.c	2007-06-17 15:11:58.000000000 +0200@@ -21,9 +21,6 @@ #include <asm/arch/pxa-regs.h> #include <asm/arch/pxa-pm_ll.h> #include <asm/arch/magician.h>-#include <asm/arch/magician_cpld.h>--extern struct platform_device magician_cpld;  static int htc_bootloader = 0;	/* Is the stock HTC bootloader installed? */ static u32 save[4];@@ -147,7 +144,7 @@  		resume = 1; 		if (PEDR == 0) { /* wince clears PEDR for CPLD interrupts */-+#if 0 			int irq = magician_cpld_get_wakeup_irq(&magician_cpld);  			switch(irq) {@@ -167,13 +164,14 @@ 				// update LED state here 				resume = 0; 			}+#endif 		}  		PEDR = 0xffffffff;  		if (resume == 0) { 			printk(KERN_NOTICE "magician_pm back to sleep (cs = %d)\n",-				magician_cable_state(&magician_cpld));+				12345/*magician_cable_state(&magician_cpld)*/);  			pxa_pm_enter(state); 		}Index: kernel26/include/asm-arm/arch-pxa/magician.h===================================================================--- kernel26.orig/include/asm-arm/arch-pxa/magician.h	2007-06-17 15:02:14.000000000 +0200+++ kernel26/include/asm-arm/arch-pxa/magician.h	2007-06-17 15:44:30.000000000 +0200@@ -17,8 +17,8 @@  /* magician specific */ -#define GPIO0_MAGICIAN_KEY_POWER	0-// 9 IN							/* unknown input */+#define GPIO0_MAGICIAN_KEY_POWER		0+#define GPIO9_MAGICIAN_UNKNOWN			9	/* unknown input */ #define GPIO10_MAGICIAN_GSM_IRQ			10 #define GPIO11_MAGICIAN_GSM_OUT1		11	/* SILENCE? */ #define GPIO13_MAGICIAN_CPLD_IRQ		13@@ -97,7 +97,7 @@ // 6 IN  (reserved)	PWR_CAP_1 // 7 IN  (reserved)	PWR_CAP_2 // 8 IN  (reserved)	PWR_CAP_3-// 9 IN+#define GPIO9_MAGICIAN_UNKNOWN_MD		(9 | GPIO_IN) #define GPIO10_MAGICIAN_GSM_IRQ_MD		(10 | GPIO_IN) #define GPIO11_MAGICIAN_GSM_OUT1_MD		(11 | GPIO_OUT)	/* SILENCE? */ @@ -287,34 +287,32 @@ #define EGPIO_NR_MAGICIAN_LED_POWER		5	/* 0x200000 */ #define EGPIO_NR_MAGICIAN_GSM_RESET		6	/* 0x400000 */ #define EGPIO_NR_MAGICIAN_LCD_POWER		7	/* 0x800000 */-#define EGPIO_NR_MAGICIAN_SPK_POWER		(0+16)	/* 0x0001 */-#define EGPIO_NR_MAGICIAN_EP_POWER		(1+16)	/* 0x0002 */-#define EGPIO_NR_MAGICIAN_IN_SEL0		(2+16)	/* 0x0004 */-#define EGPIO_NR_MAGICIAN_IN_SEL1		(3+16)	/* 0x0008 */-#define EGPIO_NR_MAGICIAN_MIC_POWER		(4+16)	/* 0x0010 */-#define EGPIO_NR_MAGICIAN_CODEC_RESET		(5+16)	/* 0x0020 */-#define EGPIO_NR_MAGICIAN_CODEC_POWER		(6+16)	/* 0x0040 */-#define EGPIO_NR_MAGICIAN_BL_POWER		(7+16)	/* 0x0080 */-#define EGPIO_NR_MAGICIAN_SD_POWER		(0+32)	/* 0x0100 */-#define EGPIO_NR_MAGICIAN_CARKIT_MIC		(1+32)	/* 0x0200 */-#define EGPIO_NR_MAGICIAN_UNKNOWN_WAVEDEV_DLL	(2+32)	/* 0x0400 */-#define EGPIO_NR_MAGICIAN_FLASH_VPP		(3+32)	/* 0x0800 */-#define EGPIO_NR_MAGICIAN_BL_POWER2		(4+32)	/* 0x1000 */-#define EGPIO_NR_MAGICIAN_CHARGE_EN		(5+32)	/* 0x2000 <-- set by wince SleepSetting if cable_state == 5 */-#define EGPIO_NR_MAGICIAN_GSM_POWER		(7+32)	/* 0x8000 */--#define EGPIO_NR_MAGICIAN_CABLE_STATE_AC	(0+64)	/* 0x01 */-#define EGPIO_NR_MAGICIAN_CABLE_STATE_USB	(1+64)	/* 0x01 */--#define EGPIO_NR_MAGICIAN_BOARD_ID0		(0+80)	/* 0x01 */-#define EGPIO_NR_MAGICIAN_BOARD_ID1		(1+80)	/* 0x02 */-#define EGPIO_NR_MAGICIAN_BOARD_ID2		(2+80)	/* 0x04 */-#define EGPIO_NR_MAGICIAN_LCD_SELECT		(3+80)	/* 0x08 */-#define EGPIO_NR_MAGICIAN_nSD_READONLY		(4+80)	/* 0x10 */+#define EGPIO_NR_MAGICIAN_SPK_POWER		(0+1*8)	/* 0x0001 */+#define EGPIO_NR_MAGICIAN_EP_POWER		(1+1*8)	/* 0x0002 */+#define EGPIO_NR_MAGICIAN_IN_SEL0		(2+1*8)	/* 0x0004 */+#define EGPIO_NR_MAGICIAN_IN_SEL1		(3+1*8)	/* 0x0008 */+#define EGPIO_NR_MAGICIAN_MIC_POWER		(4+1*8)	/* 0x0010 */+#define EGPIO_NR_MAGICIAN_CODEC_RESET		(5+1*8)	/* 0x0020 */+#define EGPIO_NR_MAGICIAN_CODEC_POWER		(6+1*8)	/* 0x0040 */+#define EGPIO_NR_MAGICIAN_BL_POWER		(7+1*8)	/* 0x0080 */+#define EGPIO_NR_MAGICIAN_SD_POWER		(0+2*8)	/* 0x0100 */+#define EGPIO_NR_MAGICIAN_CARKIT_MIC		(1+2*8)	/* 0x0200 */+#define EGPIO_NR_MAGICIAN_UNKNOWN_WAVEDEV_DLL	(2+2*8)	/* 0x0400 */+#define EGPIO_NR_MAGICIAN_FLASH_VPP		(3+2*8)	/* 0x0800 */+#define EGPIO_NR_MAGICIAN_BL_POWER2		(4+2*8)	/* 0x1000 */+#define EGPIO_NR_MAGICIAN_CHARGE_EN		(5+2*8)	/* 0x2000 <-- set by wince SleepSetting if cable_state == 5 */+#define EGPIO_NR_MAGICIAN_GSM_POWER		(7+2*8)	/* 0x8000 */++#define EGPIO_NR_MAGICIAN_CABLE_STATE_AC	(0+4*8)+#define EGPIO_NR_MAGICIAN_CABLE_STATE_USB	(1+4*8)++#define EGPIO_NR_MAGICIAN_BOARD_ID0		(0+5*8)+#define EGPIO_NR_MAGICIAN_BOARD_ID1		(1+5*8)+#define EGPIO_NR_MAGICIAN_BOARD_ID2		(2+5*8)+#define EGPIO_NR_MAGICIAN_LCD_SELECT		(3+5*8)+#define EGPIO_NR_MAGICIAN_nSD_READONLY		(4+5*8)  /* Compatibility wrappers */-extern int magician_egpio_get(int bit); extern void magician_egpio_set(int bit, int value);-extern int magician_egpio_to_irq(int bit);  #endif /* _MAGICIAN_H_ */Index: kernel26/sound/soc/pxa/magician.c===================================================================--- kernel26.orig/sound/soc/pxa/magician.c	2007-06-17 15:14:03.000000000 +0200+++ kernel26/sound/soc/pxa/magician.c	2007-06-17 15:16:41.000000000 +0200@@ -29,7 +29,6 @@ #include <asm/arch/pxa-regs.h> #include <asm/arch/hardware.h> #include <asm/arch/magician.h>-#include <asm/arch/magician_cpld.h> #include <asm/mach-types.h> #include "../codecs/uda1380.h" #include "pxa2xx-pcm.h"@@ -50,7 +49,6 @@ static int magician_spk_switch = 1; static int magician_in_sel = MAGICIAN_MIC; -extern struct platform_device magician_cpld;  static void magician_ext_control(struct snd_soc_codec *codec) {@@ -301,18 +299,13 @@  	magician_in_sel = ucontrol->value.integer.value[0]; +	magician_egpio_set(EGPIO_NR_MAGICIAN_IN_SEL0, 0); 	switch (magician_in_sel) { 	case MAGICIAN_MIC:-		magician_egpio_disable(&magician_cpld,-				       EGPIO_NR_MAGICIAN_IN_SEL0);-		magician_egpio_enable(&magician_cpld,-				      EGPIO_NR_MAGICIAN_IN_SEL1);+		magician_egpio_set(EGPIO_NR_MAGICIAN_IN_SEL1, 1); 		break; 	case MAGICIAN_MIC_EXT:-		magician_egpio_disable(&magician_cpld,-				       EGPIO_NR_MAGICIAN_IN_SEL0);-		magician_egpio_disable(&magician_cpld,-				       EGPIO_NR_MAGICIAN_IN_SEL1);+		magician_egpio_set(EGPIO_NR_MAGICIAN_IN_SEL1, 0); 	}  	return 1;@@ -320,34 +313,19 @@  static int magician_spk_power(struct snd_soc_dapm_widget *w, int event) {-	if (SND_SOC_DAPM_EVENT_ON(event))-		magician_egpio_enable(&magician_cpld,-				      EGPIO_NR_MAGICIAN_SPK_POWER);-	else-		magician_egpio_disable(&magician_cpld,-				       EGPIO_NR_MAGICIAN_SPK_POWER);+	magician_egpio_set(EGPIO_NR_MAGICIAN_SPK_POWER, SND_SOC_DAPM_EVENT_ON(event)); 	return 0; }  static int magician_hp_power(struct snd_soc_dapm_widget *w, int event) {-	if (SND_SOC_DAPM_EVENT_ON(event))-		magician_egpio_enable(&magician_cpld,-				      EGPIO_NR_MAGICIAN_EP_POWER);-	else-		magician_egpio_disable(&magician_cpld,-				       EGPIO_NR_MAGICIAN_EP_POWER);+	magician_egpio_set(EGPIO_NR_MAGICIAN_EP_POWER, SND_SOC_DAPM_EVENT_ON(event)); 	return 0; }  static int magician_mic_bias(struct snd_soc_dapm_widget *w, int event) {-	if (SND_SOC_DAPM_EVENT_ON(event))-		magician_egpio_enable(&magician_cpld,-			EGPIO_NR_MAGICIAN_MIC_POWER);-	else-		magician_egpio_disable(&magician_cpld,-			EGPIO_NR_MAGICIAN_MIC_POWER);+	magician_egpio_set(EGPIO_NR_MAGICIAN_MIC_POWER, SND_SOC_DAPM_EVENT_ON(event)); 	return 0; } @@ -477,12 +455,12 @@ 	if (!machine_is_magician()) 		return -ENODEV; -	magician_egpio_enable(&magician_cpld, EGPIO_NR_MAGICIAN_CODEC_POWER);+	magician_egpio_set(EGPIO_NR_MAGICIAN_CODEC_POWER, 1);  	/* we may need to have the clock running here - pH5 */-	magician_egpio_enable(&magician_cpld, EGPIO_NR_MAGICIAN_CODEC_RESET);+	magician_egpio_set(EGPIO_NR_MAGICIAN_CODEC_RESET, 1); 	udelay(5);-	magician_egpio_disable(&magician_cpld, EGPIO_NR_MAGICIAN_CODEC_RESET);+	magician_egpio_set(EGPIO_NR_MAGICIAN_CODEC_RESET, 0);  	/* correct place? we'll need it to talk to the uda1380 */ 	request_module("i2c-pxa");@@ -509,10 +487,10 @@ { 	platform_device_unregister(magician_snd_device); -	magician_egpio_disable(&magician_cpld, EGPIO_NR_MAGICIAN_SPK_POWER);-	magician_egpio_disable(&magician_cpld, EGPIO_NR_MAGICIAN_EP_POWER);-	magician_egpio_disable(&magician_cpld, EGPIO_NR_MAGICIAN_MIC_POWER);-	magician_egpio_disable(&magician_cpld, EGPIO_NR_MAGICIAN_CODEC_POWER);+	magician_egpio_set(EGPIO_NR_MAGICIAN_SPK_POWER, 0);+	magician_egpio_set(EGPIO_NR_MAGICIAN_EP_POWER, 0);+	magician_egpio_set(EGPIO_NR_MAGICIAN_MIC_POWER, 0);+	magician_egpio_set(EGPIO_NR_MAGICIAN_CODEC_POWER, 0); }  module_init(magician_init);Index: kernel26/arch/arm/mach-pxa/magician/magician_lcd.c===================================================================--- kernel26.orig/arch/arm/mach-pxa/magician/magician_lcd.c	2007-06-17 15:54:15.000000000 +0200+++ kernel26/arch/arm/mach-pxa/magician/magician_lcd.c	2007-06-17 16:00:36.000000000 +0200@@ -23,7 +23,6 @@ #include <asm/gpio.h>  #include <asm/arch/magician.h>-#include <asm/arch/magician_cpld.h> #include <asm/mach-types.h> #include <asm/arch/pxa-regs.h> #include <asm/arch/pxafb.h>@@ -87,8 +86,6 @@ 	.pxafb_lcd_power = toppoly_lcd_power, }; -extern struct platform_device magician_cpld;- static void samsung_lcd_power(int on, struct fb_var_screeninfo *si) { 	/* FIXME: implement samsung power switching */@@ -106,14 +103,14 @@ 		pxa_gpio_mode(GPIO74_LCD_FCLK_MD); 		pxa_gpio_mode(GPIO75_LCD_LCLK_MD); // done by pxafb 		*/-		magician_egpio_enable(&magician_cpld, EGPIO2_MAGICIAN_TOPPOLY_POWER);+		magician_egpio_set(EGPIO2_MAGICIAN_TOPPOLY_POWER, 1); 		pxa_gpio_mode(GPIO104_MAGICIAN_LCD_POWER_1_MD); 		pxa_gpio_mode(GPIO104_MAGICIAN_LCD_POWER_1_MD); 		pxa_gpio_mode(GPIO104_MAGICIAN_LCD_POWER_1_MD);  		gpio_set_value(GPIO106_MAGICIAN_LCD_POWER_3, 1); 		udelay(2000);-		magician_egpio_enable(&magician_cpld, EGPIO_NR_MAGICIAN_LCD_POWER);+		magician_egpio_set(EGPIO_NR_MAGICIAN_LCD_POWER, 1); 		udelay(2000); 		/* LCCR0 = 0x04000081; // <-- already done by pxafb_enable_controller */ 		udelay(2000);@@ -129,7 +126,7 @@ 		gpio_set_value(GPIO104_MAGICIAN_LCD_POWER_1, 0); 		udelay(1000); 		gpio_set_value(GPIO106_MAGICIAN_LCD_POWER_3, 0);-		magician_egpio_disable(&magician_cpld, EGPIO_NR_MAGICIAN_LCD_POWER);+		magician_egpio_set(EGPIO_NR_MAGICIAN_LCD_POWER, 0); 	} } @@ -142,7 +139,7 @@ 	/* Check which LCD we have */ 	p = (volatile u8 *)ioremap_nocache(PXA_CS3_PHYS, 0x1000); 	if (p) {-		lcd_select = p[14] & 0x8;+		lcd_select = p[0x14] & 0x8; 		printk("magician_lcd: lcd_select = %d (%s)\n", lcd_select, 		       lcd_select ? "samsung" : "toppoly"); 		iounmap((void *)p);