rendered paste bodyIndex: 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);