r4453 - in trunk/src/host/qemu-neo1973: . hw openmoko
andrew at docs.openmoko.org
andrew at docs.openmoko.org
Tue May 27 14:49:47 CEST 2008
Author: andrew
Date: 2008-05-27 14:49:47 +0200 (Tue, 27 May 2008)
New Revision: 4453
Modified:
trunk/src/host/qemu-neo1973/configure
trunk/src/host/qemu-neo1973/hw/ar6000.c
trunk/src/host/qemu-neo1973/openmoko/README
trunk/src/host/qemu-neo1973/openmoko/linux-gta02-pseudo.patch
Log:
Rebase gta02fake support on top of
git://git.openmoko.org/git/kernel.git#andy, update README, etc.
Modified: trunk/src/host/qemu-neo1973/configure
===================================================================
--- trunk/src/host/qemu-neo1973/configure 2008-05-27 11:19:58 UTC (rev 4452)
+++ trunk/src/host/qemu-neo1973/configure 2008-05-27 12:49:47 UTC (rev 4453)
@@ -713,9 +713,12 @@
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 21)
# include <linux/usb_ch9.h>
# include <linux/usb_gadgetfs.h>
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 23)
+# include <linux/usb/ch9.h>
+# include <linux/usb_gadgetfs.h>
#else
# include <linux/usb/ch9.h>
-# include <linux/usb_gadgetfs.h>
+# include <linux/usb/gadgetfs.h>
#endif
#include <poll.h>
#include <signal.h>
Modified: trunk/src/host/qemu-neo1973/hw/ar6000.c
===================================================================
--- trunk/src/host/qemu-neo1973/hw/ar6000.c 2008-05-27 11:19:58 UTC (rev 4452)
+++ trunk/src/host/qemu-neo1973/hw/ar6000.c 2008-05-27 12:49:47 UTC (rev 4453)
@@ -1193,7 +1193,7 @@
bmi_execute, /* Causes AR6K to execute code */
bmi_set_app_start, /* Set Target application starting address */
bmi_read_soc_register, /* Read a 32-bit Target SOC register */
- bmi_Write_soc_register, /* Write a 32-bit Target SOC register */
+ bmi_write_soc_register, /* Write a 32-bit Target SOC register */
bmi_get_target_id, /* Fetch the 4-byte Target information */
bmi_rompatch_install, /* Install a ROM Patch */
bmi_rompatch_uninstall, /* Uninstall a previously-installed ROM Patch */
Modified: trunk/src/host/qemu-neo1973/openmoko/README
===================================================================
--- trunk/src/host/qemu-neo1973/openmoko/README 2008-05-27 11:19:58 UTC (rev 4452)
+++ trunk/src/host/qemu-neo1973/openmoko/README 2008-05-27 12:49:47 UTC (rev 4453)
@@ -2,40 +2,12 @@
code but are in some way related or useful to have at hand.
The kernel patch with GTA02fake support is based on:
- * kernel 2.6.24
- * OpenMoko patchset revision 3610 from
- http://svn.openmoko.org/branches/src/target/kernel/2.6.24.x/patches/
+ * "andy" branch of the OpenMoko kernel git at around 2.6.26-rc1.
The following sequence can be used to obtain a working tree on which the
patch can be applied:
-cg-clone git://source.mvista.com/git/linux-omap-2.6.git
-tar -xvjf linux-2.6.22.5.tar.bz2
-cd linux-2.6.22.5
-cg-init
-git-add -r .
-cg-commit -C -m "Linux 2.6.22.5"
-svn co -r 3610 http://svn.openmoko.org/trunk/src/target/kernel/patches/
-quilt -a push
-cg-add -r * patches/*
-cg-rm include/sound/wavefront_fx.h
-cg-commit -m "Linux-OpenMoko"
-svn co -r 3610 http://svn.openmoko.org/developers/sameo/patches/ar6k-atheros/
-mv ar6k-atheros patches/
-wget -O patches/fix-EVIOCGRAB-semantics-2.6.22.5.patch http://www.openembedded.org/viewmtn/revision/downloadfile/105955293719b2a1414f1b03af410b8ff8dbdb1b/packages/linux/linux-openmoko/fix-EVIOCGRAB-semantics-2.6.22.5.patch
-wget -O patches/fix-gta01-flowcontrol2-2.6.22.5.patch http://www.openembedded.org/viewmtn/revision/downloadfile/105955293719b2a1414f1b03af410b8ff8dbdb1b/packages/linux/linux-openmoko/fix-gta01-flowcontrol2-2.6.22.5.patch
-cat >> patches/series
-fix-EVIOCGRAB-semantics-2.6.22.5.patch -p1
-fix-gta01-flowcontrol2-2.6.22.5.patch -p1
-ar6k-atheros/common_atheros_sdiostack.patch
-ar6k-atheros/common_atheros_sdiostack_functions.patch
-ar6k-atheros/common_atheros_sdiostack_shcd.patch
-ar6k-atheros/common_atheros_sdiostack_ar6000_wlan.patch
-ar6k-atheros/pnp_fixes_2.6.22.5.patch
-ar6k-atheros/mach-gta02_wifi.patch
-ar6k-atheros/s3c24xx_hcd_atheros.patch
-^D
-quilt -a push
-cg-add -r * patches/* patches/ar6k-atheros/*
-cg-commit -m "Linux-sameo-WLAN"
-cg-patch < ../linux-gta02-pseudo.patch
+cg-clone git://git.openmoko.org/git/kernel.git#andy
+cd kernel
+cg-switch -r fbfbc5130075e233f2fd2613e2897c3c4ed4bc7f gta02fake
+cg-patch -c -e "GTA02-psuedo support." < ../linux-gta02-pseudo.patch
Modified: trunk/src/host/qemu-neo1973/openmoko/linux-gta02-pseudo.patch
===================================================================
--- trunk/src/host/qemu-neo1973/openmoko/linux-gta02-pseudo.patch 2008-05-27 11:19:58 UTC (rev 4452)
+++ trunk/src/host/qemu-neo1973/openmoko/linux-gta02-pseudo.patch 2008-05-27 12:49:47 UTC (rev 4453)
@@ -1,8 +1,32 @@
+GTA02-psuedo support.
+
+---
+commit 9b2c7de6c48b66346a719c476b218a1b9cbe47a0
+tree b51c086e9869298a4073895d635da80c2df7ea6c
+parent fbfbc5130075e233f2fd2613e2897c3c4ed4bc7f
+author Andrzej Zaborowski <balrog at zabor.org> Tue, 27 May 2008 14:37:06 +0200
+committer Andrzej Zaborowski <balrog at zabor.org> Tue, 27 May 2008 14:37:06 +0200
+
+ arch/arm/boot/compressed/Makefile | 4
+ arch/arm/boot/compressed/head-qemu.S | 32 +
+ arch/arm/mach-s3c2410/Kconfig | 8
+ arch/arm/mach-s3c2410/Makefile | 1
+ arch/arm/mach-s3c2410/mach-gta01.c | 14 -
+ arch/arm/mach-s3c2410/mach-gta02f.c | 811 ++++++++++++++++++++++++++++++++
+ arch/arm/mach-s3c2440/mach-gta02.c | 24 -
+ arch/arm/tools/mach-types | 1
+ defconfig-2.6.22.5 | 1
+ defconfig-2.6.24 | 1
+ defconfig-gta02 | 1
+ drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c | 44 +-
+ include/asm-arm/plat-s3c24xx/pm.h | 2
+ 13 files changed, 903 insertions(+), 41 deletions(-)
+
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
-index adddc71..0da1e56 100644
+index 5fde99f..ac32d45 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
-@@ -50,6 +50,10 @@ ifeq ($(CONFIG_ARCH_AT91RM9200),y)
+@@ -48,6 +48,10 @@ ifeq ($(CONFIG_ARCH_AT91RM9200),y)
OBJS += head-at91rm9200.o
endif
@@ -52,10 +76,10 @@
+ cmp r2, #'Q' @ Compare against magic value 2
+ streq r1, [r0] @ If ok, get the machine ID
diff --git a/arch/arm/mach-s3c2410/Kconfig b/arch/arm/mach-s3c2410/Kconfig
-index dc833c0..2347376 100644
+index e42195f..843ecbd 100644
--- a/arch/arm/mach-s3c2410/Kconfig
+++ b/arch/arm/mach-s3c2410/Kconfig
-@@ -123,5 +123,13 @@ config MACH_NEO1973_GTA01
+@@ -125,5 +125,13 @@ config MACH_NEO1973_GTA01
help
Say Y here if you are using the FIC Neo1973 GSM Phone
@@ -79,10 +103,10 @@
obj-$(CONFIG_MACH_NEO1973_GTA01)+= mach-gta01.o
+obj-$(CONFIG_MACH_NEO1973_GTA02F)+= mach-gta02f.o
diff --git a/arch/arm/mach-s3c2410/mach-gta01.c b/arch/arm/mach-s3c2410/mach-gta01.c
-index 94e35a7..b929229 100644
+index b0cb544..99c36e6 100644
--- a/arch/arm/mach-s3c2410/mach-gta01.c
+++ b/arch/arm/mach-s3c2410/mach-gta01.c
-@@ -263,7 +263,7 @@ static struct resource gta01_pmu_resources[] = {
+@@ -272,7 +272,7 @@ static struct resource gta01_pmu_resources[] = {
},
};
@@ -91,46 +115,32 @@
.name = "pcf50606",
.num_resources = ARRAY_SIZE(gta01_pmu_resources),
.resource = gta01_pmu_resources,
-@@ -356,6 +356,7 @@ static struct s3c2410_platform_nand gta01_nand_info = {
- .sets = gta01_nand_sets,
- };
+@@ -505,13 +505,13 @@ static struct s3c2410_ts_mach_info gta01_ts_cfg = {
-+#if 0
- static unsigned int mmc_millivolts[] = {
- [MMC_VDD_145_150] = 1500,
- [MMC_VDD_150_155] = 1500,
-@@ -379,6 +380,7 @@ static unsigned int mmc_millivolts[] = {
- [MMC_VDD_31_32] = 3200,
- [MMC_VDD_32_33] = 3300,
- };
-+#endif
+ /* SPI */
- static void gta01_mmc_set_power(unsigned char power_mode, unsigned short vdd)
+-void gta01_jbt6k74_reset(int devidx, int level)
++static void gta01_jbt6k74_reset(int devidx, int level)
{
-@@ -472,12 +474,10 @@ static void __gta01_udc_vbus_draw(struct work_struct *work)
- }
+ /* empty place holder; gta01 does not yet use this */
+ printk(KERN_DEBUG "gta01_jbt6k74_reset\n");
}
--static int gta01_udc_vbus_draw(unsigned int ma)
-+static void gta01_udc_vbus_draw(unsigned int ma)
- {
- gta01_udc_vbus_drawer.ma = ma;
- schedule_work(>a01_udc_vbus_drawer.work);
--
-- return 0;
- }
+-const struct jbt6k74_platform_data gta01_jbt6k74_pdata = {
++static const struct jbt6k74_platform_data gta01_jbt6k74_pdata = {
+ .reset = gta01_jbt6k74_reset,
+ };
- static struct s3c2410_udc_mach_info gta01_udc_cfg = {
-@@ -552,7 +552,7 @@ static struct resource s3c_spi_lcm_resource[] = {
+@@ -568,7 +568,7 @@ static struct resource s3c_spi_lcm_resource[] = {
},
};
-struct platform_device s3c_device_spi_lcm = {
+static struct platform_device s3c_device_spi_lcm = {
- .name = "s3c24xx-spi-gpio",
+ .name = "spi_s3c24xx_gpio",
.id = 1,
.num_resources = ARRAY_SIZE(s3c_spi_lcm_resource),
-@@ -576,7 +576,7 @@ static struct resource gta01_bl_resources[] = {
+@@ -591,7 +591,7 @@ static struct resource gta01_bl_resources[] = {
},
};
@@ -139,40 +149,30 @@
.name = "gta01-bl",
.num_resources = ARRAY_SIZE(gta01_bl_resources),
.resource = gta01_bl_resources,
-@@ -592,7 +592,7 @@ static struct resource gta01_led_resources[] = {
+@@ -607,7 +607,7 @@ static struct resource gta01_led_resources[] = {
},
};
-struct platform_device gta01_led_dev = {
+static struct platform_device gta01_led_dev = {
- .name = "gta01-led",
+ .name = "neo1973-vibrator",
.num_resources = ARRAY_SIZE(gta01_led_resources),
.resource = gta01_led_resources,
-@@ -613,7 +613,7 @@ static struct resource gta01_button_resources[] = {
+@@ -628,7 +628,7 @@ static struct resource gta01_button_resources[] = {
},
};
-struct platform_device gta01_button_dev = {
+static struct platform_device gta01_button_dev = {
- .name ="gta01-button",
+ .name = "neo1973-button",
.num_resources = ARRAY_SIZE(gta01_button_resources),
.resource = gta01_button_resources,
-@@ -707,8 +707,7 @@ static void __init gta01_machine_init(void)
- s3c2410_pm_init();
-
- set_irq_type(GTA01_IRQ_MODEM, IRQT_RISING);
-- request_irq(GTA01_IRQ_MODEM, gta01_modem_irq,
-- SA_INTERRUPT, "modem", NULL);
-+ request_irq(GTA01_IRQ_MODEM, gta01_modem_irq, 0, "modem", NULL);
- enable_irq_wake(GTA01_IRQ_MODEM);
- }
-
diff --git a/arch/arm/mach-s3c2410/mach-gta02f.c b/arch/arm/mach-s3c2410/mach-gta02f.c
new file mode 100644
-index 0000000..e9c7bfe
+index 0000000..a51f8e4
--- /dev/null
+++ b/arch/arm/mach-s3c2410/mach-gta02f.c
-@@ -0,0 +1,785 @@
+@@ -0,0 +1,811 @@
+/*
+ * linux/arch/arm/mach-s3c2410/mach-gta02f.c
+ *
@@ -182,6 +182,9 @@
+ * o the WLAN chip on SDIO
+ * o the accelerometers
+ * o no SD slot
++ * o third UART
++ * o TODO: Flash size
++ * o TODO: "-version" and "-resume" devices
+ *
+ * Copyright (C) 2007 OpenMoko, Inc.
+ *
@@ -211,6 +214,7 @@
+#include <linux/workqueue.h>
+#include <linux/platform_device.h>
+#include <linux/serial_core.h>
++#include <asm/arch/ts.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/spi_bitbang.h>
+#include <linux/mmc/mmc.h>
@@ -221,6 +225,8 @@
+#include <linux/mtd/nand_ecc.h>
+#include <linux/mtd/partitions.h>
+
++#include <linux/mmc/host.h>
++
+#include <linux/pcf50606.h>
+
+#include <asm/mach/arch.h>
@@ -232,13 +238,9 @@
+#include <asm/irq.h>
+#include <asm/mach-types.h>
+
-+#include <asm/arch/regs-serial.h>
+#include <asm/arch/regs-gpio.h>
+#include <asm/arch/fb.h>
-+#include <asm/arch/udc.h>
-+#include <asm/arch/nand.h>
+#include <asm/arch/mci.h>
-+#include <asm/arch/ts.h>
+#include <asm/arch/spi.h>
+#include <asm/arch/spi-gpio.h>
+#include <asm/arch/usb-control.h>
@@ -246,10 +248,18 @@
+#include <asm/arch/gta01.h>
+#include <asm/arch/gta02.h>
+
++#include <asm/plat-s3c/regs-serial.h>
++#include <asm/plat-s3c/nand.h>
+#include <asm/plat-s3c24xx/devs.h>
+#include <asm/plat-s3c24xx/cpu.h>
+#include <asm/plat-s3c24xx/pm.h>
++#include <asm/plat-s3c24xx/udc.h>
++#include <asm/plat-s3c24xx/neo1973.h>
++#include <linux/jbt6k74.h>
+
++#include <linux/neospy.h>
++extern struct neospy_logdata neospy;
++
+static struct map_desc gta01_iodesc[] __initdata = {
+ {
+ .virtual = 0xe0000000,
@@ -262,6 +272,8 @@
+#define UCON S3C2410_UCON_DEFAULT
+#define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB
+#define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE
++/* UFCON for the gta01 sets the FIFO trigger level at 4, not 8 */
++#define UFCON_GTA01_PORT0 S3C2410_UFCON_FIFOMODE
+
+static struct s3c2410_uartcfg gta01_uartcfgs[] = {
+ [0] = {
@@ -269,7 +281,7 @@
+ .flags = 0,
+ .ucon = UCON,
+ .ulcon = ULCON,
-+ .ufcon = UFCON,
++ .ufcon = UFCON_GTA01_PORT0,
+ },
+ [1] = {
+ .hwport = 1,
@@ -460,25 +472,24 @@
+
+/* LCD driver info */
+
-+/* Configuration for 480x640 toppoly TD028TTEC1 */
-+static struct s3c2410fb_mach_info gta01_lcd_cfg __initdata = {
-+ .regs = {
-+ .lcdcon1 = S3C2410_LCDCON1_TFT16BPP |
-+ S3C2410_LCDCON1_TFT |
-+ S3C2410_LCDCON1_CLKVAL(0x01), /* HCLK/4 */
++/* Configuration for 480x640 toppoly TD028TTEC1.
++ * Do not mark this as __initdata or it will break! */
++static struct s3c2410fb_display gta01_displays[] = {
++ {
++ .type = S3C2410_LCDCON1_TFT,
++ .width = 43,
++ .height = 58,
++ .xres = 480,
++ .yres = 640,
++ .bpp = 16,
+
-+ .lcdcon2 = S3C2410_LCDCON2_VBPD(1) | /* 2 */
-+ S3C2410_LCDCON2_LINEVAL(639) |/* 640 */
-+ S3C2410_LCDCON2_VFPD(15) | /* 16 */
-+ S3C2410_LCDCON2_VSPW(1), /* 2 */
-+
-+ .lcdcon3 = S3C2410_LCDCON3_HBPD(7) | /* 8 */
-+ S3C2410_LCDCON3_HOZVAL(479) | /* 480 */
-+ S3C2410_LCDCON3_HFPD(103), /* 104 */
-+
-+ .lcdcon4 = S3C2410_LCDCON4_MVAL(0) |
-+ S3C2410_LCDCON4_HSPW(7), /* 8 */
-+
++ .pixclock = 40000, /* HCLK/4 */
++ .left_margin = 104,
++ .right_margin = 8,
++ .hsync_len = 8,
++ .upper_margin = 2,
++ .lower_margin = 16,
++ .vsync_len = 2,
+ .lcdcon5 = S3C2410_LCDCON5_FRM565 |
+ S3C2410_LCDCON5_INVVCLK |
+ S3C2410_LCDCON5_INVVLINE |
@@ -486,31 +497,60 @@
+ S3C2410_LCDCON5_PWREN |
+ S3C2410_LCDCON5_HWSWP,
+ },
++ {
++ .type = S3C2410_LCDCON1_TFT,
++ .width = 43,
++ .height = 58,
++ .xres = 480,
++ .yres = 640,
++ .bpp = 32,
+
-+ .lpcsel = ((0xCE6) & ~7) | 1<<4,
-+ .type = S3C2410_LCDCON1_TFT,
-+
-+ .width = 480,
-+ .height = 640,
-+
-+ .xres = {
-+ .min = 240,
-+ .max = 480,
-+ .defval = 480,
++ .pixclock = 40000, /* HCLK/4 */
++ .left_margin = 104,
++ .right_margin = 8,
++ .hsync_len = 8,
++ .upper_margin = 2,
++ .lower_margin = 16,
++ .vsync_len = 2,
++ .lcdcon5 = S3C2410_LCDCON5_FRM565 |
++ S3C2410_LCDCON5_INVVCLK |
++ S3C2410_LCDCON5_INVVLINE |
++ S3C2410_LCDCON5_INVVFRAME |
++ S3C2410_LCDCON5_PWREN |
++ S3C2410_LCDCON5_HWSWP,
+ },
++ {
++ .type = S3C2410_LCDCON1_TFT,
++ .width = 43,
++ .height = 58,
++ .xres = 240,
++ .yres = 320,
++ .bpp = 16,
+
-+ .yres = {
-+ .min = 320,
-+ .max = 640,
-+ .defval = 640,
++ .pixclock = 40000, /* HCLK/4 */
++ .left_margin = 104,
++ .right_margin = 8,
++ .hsync_len = 8,
++ .upper_margin = 2,
++ .lower_margin = 16,
++ .vsync_len = 2,
++ .lcdcon5 = S3C2410_LCDCON5_FRM565 |
++ S3C2410_LCDCON5_INVVCLK |
++ S3C2410_LCDCON5_INVVLINE |
++ S3C2410_LCDCON5_INVVFRAME |
++ S3C2410_LCDCON5_PWREN |
++ S3C2410_LCDCON5_HWSWP,
+ },
++};
+
-+ .bpp = {
-+ .min = 1,
-+ .max = 32,
-+ .defval = 16,
-+ },
++static struct s3c2410fb_mach_info gta01_lcd_cfg __initdata = {
++ .displays = gta01_displays,
++ .num_displays = ARRAY_SIZE(gta01_displays),
++ .default_display = 0,
++
++ .lpcsel = ((0xCE6) & ~7) | 1<<4,
+};
++
+static struct platform_device *gta01_devices[] __initdata = {
+ &s3c_device_usb,
+ &s3c_device_lcd,
@@ -527,13 +567,10 @@
+ [0] = {
+ .name = "neo1973-nand",
+ .nr_chips = 1,
++ .flags = S3C2410_NAND_BBT,
+ },
+};
+
-+/* choose a set of timings which should suit most 512Mbit
-+ * chips and beyond.
-+ */
-+
+static struct s3c2410_platform_nand gta01_nand_info = {
+ .tacls = 20,
+ .twrph0 = 60,
@@ -542,56 +579,43 @@
+ .sets = gta01_nand_sets,
+};
+
-+#if 0
-+static unsigned int mmc_millivolts[] = {
-+ [MMC_VDD_145_150] = 1500,
-+ [MMC_VDD_150_155] = 1500,
-+ [MMC_VDD_155_160] = 1600,
-+ [MMC_VDD_160_165] = 1600,
-+ [MMC_VDD_165_170] = 1700,
-+ [MMC_VDD_17_18] = 1800,
-+ [MMC_VDD_18_19] = 1900,
-+ [MMC_VDD_19_20] = 2000,
-+ [MMC_VDD_20_21] = 2100,
-+ [MMC_VDD_21_22] = 2200,
-+ [MMC_VDD_22_23] = 2300,
-+ [MMC_VDD_23_24] = 2400,
-+ [MMC_VDD_24_25] = 2500,
-+ [MMC_VDD_25_26] = 2600,
-+ [MMC_VDD_26_27] = 2700,
-+ [MMC_VDD_27_28] = 2800,
-+ [MMC_VDD_28_29] = 2900,
-+ [MMC_VDD_29_30] = 3000,
-+ [MMC_VDD_30_31] = 3100,
-+ [MMC_VDD_31_32] = 3200,
-+ [MMC_VDD_32_33] = 3300,
-+};
-+#endif
-+
+static void gta01_mmc_set_power(unsigned char power_mode, unsigned short vdd)
+{
-+ printk(KERN_DEBUG "mmc_set_power(power_mode=%u, vdd=%u\n",
++ int bit;
++ int mv = 1700; /* 1.7V for MMC_VDD_165_195 */
++
++ printk(KERN_DEBUG "mmc_set_power(power_mode=%u, vdd=%u)\n",
+ power_mode, vdd);
+
+ switch (system_rev) {
+ case GTA01v3_SYSTEM_REV:
-+ /* FIXME */
++ switch (power_mode) {
++ case MMC_POWER_OFF:
++ pcf50606_onoff_set(pcf50606_global,
++ PCF50606_REGULATOR_D2REG, 0);
++ break;
++ case MMC_POWER_ON:
++ /* translate MMC_VDD_* VDD bit to mv */
++ for (bit = 8; bit != 24; bit++)
++ if (vdd == (1 << bit))
++ mv += 100 * (bit - 4);
++ pcf50606_voltage_set(pcf50606_global,
++ PCF50606_REGULATOR_D2REG, mv);
++ pcf50606_onoff_set(pcf50606_global,
++ PCF50606_REGULATOR_D2REG, 1);
++ break;
++ }
+ break;
+ case GTA01v4_SYSTEM_REV:
-+ /* FIXME: set GTA01_GPIO_SDMMC_ON on GTA01v4 */
-+ //pcf50606_voltage_set(mmc_millivolts[vdd]);
-+ break;
+ case GTA01Bv2_SYSTEM_REV:
+ case GTA01Bv3_SYSTEM_REV:
-+ /* FIXME */
-+ break;
+ case GTA01Bv4_SYSTEM_REV:
+ switch (power_mode) {
+ case MMC_POWER_OFF:
-+ s3c2410_gpio_setpin(GTA01_GPIO_SDMMC_ON, 1);
++ neo1973_gpb_setpin(GTA01_GPIO_SDMMC_ON, 1);
+ break;
+ case MMC_POWER_ON:
-+ s3c2410_gpio_setpin(GTA01_GPIO_SDMMC_ON, 0);
++ neo1973_gpb_setpin(GTA01_GPIO_SDMMC_ON, 0);
+ break;
+ }
+ break;
@@ -601,16 +625,11 @@
+static struct s3c24xx_mci_pdata gta01_mmc_cfg = {
+ .gpio_detect = GTA01_GPIO_nSD_DETECT,
+ .set_power = >a01_mmc_set_power,
-+ .ocr_avail = MMC_VDD_32_33, /* GTA01Bv2/3/4 */
-+#if 0
-+ .ocr_avail = MMC_VDD_145_150|MMC_VDD_150_155|MMC_VDD_155_160|
-+ MMC_VDD_160_165| MMC_VDD_165_170|MMC_VDD_17_18|
-+ MMC_VDD_18_19|MMC_VDD_19_20|MMC_VDD_20_21|
++ .ocr_avail = MMC_VDD_165_195|MMC_VDD_20_21|
+ MMC_VDD_21_22|MMC_VDD_22_23|MMC_VDD_23_24|
+ MMC_VDD_24_25|MMC_VDD_25_26|MMC_VDD_26_27|
+ MMC_VDD_27_28|MMC_VDD_28_29|MMC_VDD_29_30|
+ MMC_VDD_30_31|MMC_VDD_31_32|MMC_VDD_32_33,
-+#endif
+};
+
+static struct resource gta02_sdio_resources[] = {
@@ -647,14 +666,11 @@
+
+ switch (cmd) {
+ case S3C2410_UDC_P_ENABLE:
-+ s3c2410_gpio_setpin(GTA01_GPIO_USB_PULLUP, 1);
++ neo1973_gpb_setpin(GTA01_GPIO_USB_PULLUP, 1);
+ break;
+ case S3C2410_UDC_P_DISABLE:
-+ s3c2410_gpio_setpin(GTA01_GPIO_USB_PULLUP, 0);
++ neo1973_gpb_setpin(GTA01_GPIO_USB_PULLUP, 0);
+ break;
-+ case S3C2410_UDC_P_RESET:
-+ /* FIXME! */
-+ break;
+ default:
+ break;
+ }
@@ -671,9 +687,9 @@
+
+static void __gta01_udc_vbus_draw(struct work_struct *work)
+{
-+ /* FIXME: this is a quick fix to work around boot-time
-+ * ordering problems if the s3c2410_udc is initialized
-+ * before the pcf50606 driver has defined pcf50606_global */
++ /* this is a fix to work around boot-time ordering problems if the
++ * s3c2410_udc is initialized before the pcf50606 driver has defined
++ * pcf50606_global */
+ if (!pcf50606_global)
+ return;
+
@@ -706,10 +722,20 @@
+
+/* SPI */
+
-+static struct spi_board_info gta01_spi_board_info[] __initdata = {
++static void gta01_jbt6k74_reset(int devidx, int level)
++{
++ /* empty place holder; gta01 does not yet use this */
++ printk(KERN_DEBUG "gta01_jbt6k74_reset\n");
++}
++
++static const struct jbt6k74_platform_data gta01_jbt6k74_pdata = {
++ .reset = gta01_jbt6k74_reset,
++};
++
++static struct spi_board_info gta01_spi_board_info[] = {
+ {
+ .modalias = "jbt6k74",
-+ /* platform_data */
++ .platform_data = >a01_jbt6k74_pdata,
+ /* controller_data */
+ /* irq */
+ .max_speed_hz = 10 * 1000 * 1000,
@@ -718,15 +744,7 @@
+ },
+};
+
-+
-+#ifdef SPI_HARD
-+static struct s3c2410_spi_info spi_cfg = {
-+ .pin_cs = S3C2410_GPG3,
-+ .board_size = ARRAY_SIZE(gta01_spi_board_info),
-+ .board_info = gta01_spi_board_info,
-+};
-+#else
-+static void spi_gpio_cs(struct s3c2410_spigpio_info *spi, int cs)
++static void spi_gpio_cs(struct s3c2410_spigpio_info *spi, int csidx, int cs)
+{
+ switch (cs) {
+ case BITBANG_CS_ACTIVE:
@@ -745,6 +763,7 @@
+ .board_size = ARRAY_SIZE(gta01_spi_board_info),
+ .board_info = gta01_spi_board_info,
+ .chip_select = &spi_gpio_cs,
++ .num_chipselect = 2, /*** Should be 1 or 2 for gta01? ***/
+};
+
+static struct resource s3c_spi_lcm_resource[] = {
@@ -767,7 +786,7 @@
+};
+
+static struct platform_device s3c_device_spi_lcm = {
-+ .name = "s3c24xx-spi-gpio",
++ .name = "spi_s3c24xx_gpio",
+ .id = 1,
+ .num_resources = ARRAY_SIZE(s3c_spi_lcm_resource),
+ .resource = s3c_spi_lcm_resource,
@@ -775,7 +794,6 @@
+ .platform_data = &spi_gpio_cfg,
+ },
+};
-+#endif
+
+static struct gta01bl_machinfo backlight_machinfo = {
+ .default_intensity = 1,
@@ -790,7 +808,7 @@
+ },
+};
+
-+struct platform_device gta01_bl_dev = {
++static struct platform_device gta01_bl_dev = {
+ .name = "gta01-bl",
+ .num_resources = ARRAY_SIZE(gta01_bl_resources),
+ .resource = gta01_bl_resources,
@@ -806,8 +824,8 @@
+ },
+};
+
-+struct platform_device gta01_led_dev = {
-+ .name = "gta01-led",
++static struct platform_device gta01_led_dev = {
++ .name = "neo1973-vibrator",
+ .num_resources = ARRAY_SIZE(gta01_led_resources),
+ .resource = gta01_led_resources,
+};
@@ -828,13 +846,13 @@
+};
+
+static struct platform_device gta01_button_dev = {
-+ .name ="gta01-button",
++ .name = "neo1973-button",
+ .num_resources = ARRAY_SIZE(gta01_button_resources),
+ .resource = gta01_button_resources,
+};
+
+static struct platform_device gta01_pm_gsm_dev = {
-+ .name ="gta01-pm-gsm",
++ .name = "neo1973-pm-gsm",
+};
+
+/* USB */
@@ -854,19 +872,27 @@
+ s3c24xx_init_uarts(gta01_uartcfgs, ARRAY_SIZE(gta01_uartcfgs));
+}
+
++extern int gta_gsm_interrupts;
++
+static irqreturn_t gta01_modem_irq(int irq, void *param)
+{
-+ printk(KERN_DEBUG "modem wakeup interrupt\n");
++ printk(KERN_DEBUG "GSM wakeup interrupt (IRQ %d)\n", irq);
++ gta_gsm_interrupts++;
++ nspy_add(NSPY_TYPE_SPECIAL, '*', jiffies);
+ return IRQ_HANDLED;
+}
+
+static void __init gta02f_machine_init(void)
+{
++ int rc;
++
+ if (system_rev == GTA01v4_SYSTEM_REV ||
+ system_rev == GTA01Bv2_SYSTEM_REV ||
+ system_rev == GTA01Bv3_SYSTEM_REV ||
-+ system_rev == GTA01Bv4_SYSTEM_REV)
++ system_rev == GTA01Bv4_SYSTEM_REV) {
+ gta01_udc_cfg.udc_command = gta01_udc_command;
++ gta01_mmc_cfg.ocr_avail = MMC_VDD_32_33;
++ }
+
+ s3c_device_usb.dev.platform_data = >a01_usb_info;
+ s3c_device_nand.dev.platform_data = >a01_nand_info;
@@ -904,14 +930,11 @@
+ s3c2410_gpio_cfgpin(S3C2410_GPC6, S3C2410_GPIO_OUTPUT);
+ s3c2410_gpio_setpin(S3C2410_GPC6, 1);
+
-+#ifdef SPI_HARD
-+#else
+ /* SPI chip select is gpio output */
+ s3c2410_gpio_cfgpin(S3C2410_GPG3, S3C2410_GPIO_OUTPUT);
+ s3c2410_gpio_setpin(S3C2410_GPG3, 1);
++ platform_device_register(&s3c_device_spi_lcm);
+
-+ platform_device_register(&s3c_device_spi_lcm);
-+#endif
+ platform_device_register(>a01_bl_dev);
+ platform_device_register(>a01_button_dev);
+ platform_device_register(>a01_pm_gsm_dev);
@@ -945,8 +968,11 @@
+ s3c2410_pm_init();
+
+ set_irq_type(GTA01_IRQ_MODEM, IRQT_RISING);
-+ request_irq(GTA01_IRQ_MODEM, gta01_modem_irq, 0, "modem", NULL);
++ rc = request_irq(GTA01_IRQ_MODEM, gta01_modem_irq, IRQF_DISABLED,
++ "modem", NULL);
+ enable_irq_wake(GTA01_IRQ_MODEM);
++ printk(KERN_DEBUG "Enabled GSM wakeup IRQ %d (rc=%d)\n",
++ GTA01_IRQ_MODEM, rc);
+}
+
+MACHINE_START(NEO1973_GTA02F, "GTA02")
@@ -959,10 +985,25 @@
+ .timer = &s3c24xx_timer,
+MACHINE_END
diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c
-index 1c2fb61..9add88e 100644
+index 9744ac2..0a12297 100644
--- a/arch/arm/mach-s3c2440/mach-gta02.c
+++ b/arch/arm/mach-s3c2440/mach-gta02.c
-@@ -296,7 +296,7 @@ static struct resource gta02_pmu_resources[] = {
+@@ -376,12 +376,12 @@ int gta02_get_pcb_revision(void)
+ return u;
+ }
+
+-struct platform_device gta02_version_device = {
++static struct platform_device gta02_version_device = {
+ .name = "neo1973-version",
+ .num_resources = 0,
+ };
+
+-struct platform_device gta02_resume_reason_device = {
++static struct platform_device gta02_resume_reason_device = {
+ .name = "neo1973-resume",
+ .num_resources = 0,
+ };
+@@ -631,7 +631,7 @@ static struct resource gta02_pmu_resources[] = {
},
};
@@ -971,10 +1012,78 @@
.name = "pcf50633",
.num_resources = ARRAY_SIZE(gta02_pmu_resources),
.resource = gta02_pmu_resources,
-@@ -542,7 +542,7 @@ static struct resource gta02_led_resources[] = {
+@@ -650,7 +650,7 @@ static struct resource sc32440_fiq_resources[] = {
},
};
+-struct platform_device sc32440_fiq_device = {
++static struct platform_device sc32440_fiq_device = {
+ .name = "sc32440_fiq",
+ .num_resources = 1,
+ .resource = sc32440_fiq_resources,
+@@ -666,7 +666,7 @@ static struct resource gta02_hdq_resources[] = {
+ },
+ };
+
+-struct platform_device gta02_hdq_device = {
++static struct platform_device gta02_hdq_device = {
+ .name = "gta02-hdq",
+ .num_resources = 1,
+ .resource = gta02_hdq_resources,
+@@ -675,7 +675,7 @@ struct platform_device gta02_hdq_device = {
+
+ /* BQ27000 Battery */
+
+-struct bq27000_platform_data bq27000_pdata = {
++static struct bq27000_platform_data bq27000_pdata = {
+ .name = "bat",
+ .rsense_mohms = 20,
+ .hdq_read = gta02hdq_read,
+@@ -683,7 +683,7 @@ struct bq27000_platform_data bq27000_pdata = {
+ .hdq_initialized = gta02hdq_initialized,
+ };
+
+-struct platform_device bq27000_battery_device = {
++static struct platform_device bq27000_battery_device = {
+ .name = "bq27000-battery",
+ .dev = {
+ .platform_data = &bq27000_pdata,
+@@ -747,7 +747,7 @@ static struct platform_device gta02_sdio_dev = {
+ .num_resources = ARRAY_SIZE(gta02_sdio_resources),
+ };
+
+-struct platform_device s3c24xx_pwm_device = {
++static struct platform_device s3c24xx_pwm_device = {
+ .name = "s3c24xx_pwm",
+ .num_resources = 0,
+ };
+@@ -852,19 +852,19 @@ static struct s3c2410_ts_mach_info gta02_ts_cfg = {
+
+ /* SPI: LCM control interface attached to Glamo3362 */
+
+-void gta02_jbt6k74_reset(int devidx, int level)
++static void gta02_jbt6k74_reset(int devidx, int level)
+ {
+ glamo_lcm_reset(level);
+ }
+
+ /* finally bring up deferred backlight resume now LCM is resumed itself */
+
+-void gta02_jbt6k74_resuming(int devidx)
++static void gta02_jbt6k74_resuming(int devidx)
+ {
+ pcf50633_backlight_resume(pcf50633_global);
+ }
+
+-const struct jbt6k74_platform_data jbt6k74_pdata = {
++static const struct jbt6k74_platform_data jbt6k74_pdata = {
+ .reset = gta02_jbt6k74_reset,
+ .resuming = gta02_jbt6k74_resuming,
+ };
+@@ -1156,7 +1156,7 @@ static struct resource gta02_led_resources[] = {
+ },
+ };
+
-struct platform_device gta02_led_dev = {
+static struct platform_device gta02_led_dev = {
.name = "gta02-led",
@@ -989,93 +1098,44 @@
tik27 MACH_TIK27 TIK27 1360
mx_uc7420 MACH_MX_UC7420 MX_UC7420 1361
+neo1973_gta02f MACH_NEO1973_GTA02F NEO1973_GTA02F 1555
-diff --git a/drivers/sdio/function/bluetooth/sdio_bt_os.c b/drivers/sdio/function/bluetooth/sdio_bt_os.c
-index 869f718..da9da98 100644
---- a/drivers/sdio/function/bluetooth/sdio_bt_os.c
-+++ b/drivers/sdio/function/bluetooth/sdio_bt_os.c
-@@ -55,6 +55,7 @@
- #define AUTHOR "Atheros Communications, Inc."
+diff --git a/defconfig-2.6.22.5 b/defconfig-2.6.22.5
+index e9e40fe..71196a1 100644
+--- a/defconfig-2.6.22.5
++++ b/defconfig-2.6.22.5
+@@ -180,6 +180,7 @@ CONFIG_S3C2410_PWM=y
+ # CONFIG_MACH_VR1000 is not set
+ CONFIG_MACH_QT2410=y
+ CONFIG_MACH_NEO1973_GTA01=y
++CONFIG_MACH_NEO1973_GTA02F=y
- /* debug print parameter */
-+int debuglevel;
- module_param(debuglevel, int, 0644);
- MODULE_PARM_DESC(debuglevel, "debuglevel 0-7, controls debug prints");
+ #
+ # S3C2412 Machines
+diff --git a/defconfig-2.6.24 b/defconfig-2.6.24
+index 0bcf50a..cf13b66 100644
+--- a/defconfig-2.6.24
++++ b/defconfig-2.6.24
+@@ -187,6 +187,7 @@ CONFIG_S3C2410_PWM=y
+ # CONFIG_MACH_VR1000 is not set
+ CONFIG_MACH_QT2410=y
+ CONFIG_MACH_NEO1973_GTA01=y
++CONFIG_MACH_NEO1973_GTA02F=y
-@@ -455,7 +456,7 @@ static BOOL Probe(PSDFUNCTION pFunction, PSDDEVICE pDevice) {
- break;
- }
+ #
+ # S3C2412 Machines
+diff --git a/defconfig-gta02 b/defconfig-gta02
+index 68cf1f4..17cb17b 100644
+--- a/defconfig-gta02
++++ b/defconfig-gta02
+@@ -184,6 +184,7 @@ CONFIG_S3C2410_PWM=y
+ # CONFIG_MACH_VR1000 is not set
+ CONFIG_MACH_QT2410=y
+ CONFIG_MACH_NEO1973_GTA01=y
++CONFIG_MACH_NEO1973_GTA02F=y
-- pHciDev->type = HCI_VHCI; /* we don't really have a type assigned ????*/
-+ pHciDev->type = HCI_SDIO;
- pHciDev->driver_data = pNewHci;
- pHciDev->open = bt_open;
- pHciDev->close = bt_close;
-diff --git a/drivers/sdio/function/gps/gps_os.c b/drivers/sdio/function/gps/gps_os.c
-index 1de0e54..cdec997 100644
---- a/drivers/sdio/function/gps/gps_os.c
-+++ b/drivers/sdio/function/gps/gps_os.c
-@@ -58,6 +58,7 @@
-
-
- /* debug print parameter */
-+int debuglevel;
- module_param(debuglevel, int, 0644);
- MODULE_PARM_DESC(debuglevel, "debuglevel 0-7, controls debug prints");
- int fixedbaud = 1;
-@@ -84,8 +85,8 @@ static void gps_enable_ms(struct uart_port *port);
- static void gps_break_ctl(struct uart_port *port, int break_state);
- static int gps_startup(struct uart_port *port);
- static void gps_shutdown(struct uart_port *port);
--static void gps_set_termios(struct uart_port *port, struct termios *termios,
-- struct termios *old);
-+static void gps_set_termios(struct uart_port *port, struct ktermios *termios,
-+ struct ktermios *old);
- static void gps_pm(struct uart_port *port, unsigned int state, unsigned int oldstate);
- static const char *gps_type(struct uart_port *port);
- static void gps_release_port(struct uart_port *port);
-@@ -391,8 +392,8 @@ static void gps_shutdown(struct uart_port *port)
- /*
- * gps_set_termios - set data parameters
- */
--static void gps_set_termios(struct uart_port *port, struct termios *termios,
-- struct termios *old)
-+static void gps_set_termios(struct uart_port *port, struct ktermios *termios,
-+ struct ktermios *old)
- {
- PSDGPS_DEVICE pDevice = CONTAINING_STRUCT(port, SDGPS_DEVICE, Port);
- unsigned char cval = 0;
-diff --git a/drivers/sdio/function/memory/sdio_memory_os.c b/drivers/sdio/function/memory/sdio_memory_os.c
-index 4e3eb53..e086095 100644
---- a/drivers/sdio/function/memory/sdio_memory_os.c
-+++ b/drivers/sdio/function/memory/sdio_memory_os.c
-@@ -63,6 +63,7 @@
- #define AUTHOR "Atheros Communications, Inc."
-
- /* debug print parameter */
-+int debuglevel;
- module_param(debuglevel, int, 0644);
- MODULE_PARM_DESC(debuglevel, "debuglevel 0-7, controls debug prints");
-
-@@ -567,7 +568,7 @@ static void DiskRequest(request_queue_t *pQueue)
- if (!blk_fs_request(pRequest)) {
- /* not a command we care about */
- DBG_PRINT(SDDBG_TRACE, ("SDIO Memory Function: DiskRequest - unsupported command: flags 0x%X\n",
-- (UINT)pRequest->flags));
-+ (UINT) 0));
- end_request(pRequest, 0);
- continue;
- }
-@@ -744,7 +745,7 @@ static void DiskRequestDma(request_queue_t *pQueue)
- if (!blk_fs_request(pRequest)) {
- /* not a command we care about */
- DBG_PRINT(SDDBG_TRACE, ("SDIO Memory Function: DiskRequestDma - unsupported command: flags 0x%X\n",
-- (UINT)pRequest->flags));
-+ (UINT) 0));
- end_request(pRequest, 0);
- /* reset */
- outstandingReq = 1;
+ #
+ # S3C2412 Machines
diff --git a/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c b/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c
-index a1b8953..8dc88d2 100644
+index 1292020..33577ac 100644
--- a/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c
+++ b/drivers/sdio/hcd/s3c24xx/s3c24xx_hcd.c
@@ -100,7 +100,7 @@ static void s3c24xx_dump_regs(struct s3c24xx_hcd_context * context)
@@ -1087,8 +1147,8 @@
printk("SDICON: 0x%08x\n", con);
printk("SDIPRE: 0x%08x\n", pre);
-@@ -127,15 +127,15 @@ static inline void s3c24xx_hcd_clear_imask(struct s3c24xx_hcd_context * context)
-
+@@ -124,15 +124,15 @@ static inline void s3c24xx_hcd_clear_imask(struct s3c24xx_hcd_context * context)
+ {
if (context->int_sdio) {
writel(S3C2410_SDIIMSK_SDIOIRQ | S3C2410_SDIIMSK_READWAIT,
- context->base + S3C2440_SDIIMSK);
@@ -1106,7 +1166,7 @@
}
-@@ -456,11 +456,11 @@ static void s3c24xx_hcd_pio_complete(struct s3c24xx_hcd_context * context)
+@@ -453,11 +453,11 @@ static void s3c24xx_hcd_pio_complete(struct s3c24xx_hcd_context * context)
req->DataRemaining -= fifo_count;
while (fifo_count > 0) {
if (context->data_size == 4)
@@ -1121,7 +1181,7 @@
ptr += context->data_size;
fifo_count -= context->data_size;
-@@ -524,11 +524,11 @@ static void s3c24xx_hcd_pio_complete(struct s3c24xx_hcd_context * context)
+@@ -521,11 +521,11 @@ static void s3c24xx_hcd_pio_complete(struct s3c24xx_hcd_context * context)
while (fifo_count > 0) {
if (context->data_size == 4)
@@ -1136,7 +1196,7 @@
ptr += context->data_size;
fifo_count -= context->data_size;
-@@ -691,7 +691,7 @@ static int s3c24xx_hcd_prepare_dma(struct s3c24xx_hcd_context * context)
+@@ -709,7 +709,7 @@ static int s3c24xx_hcd_prepare_dma(struct s3c24xx_hcd_context * context)
}
s3c2410_dma_devconfig(context->dma_channel, source, hwcfg,
@@ -1145,7 +1205,7 @@
s3c2410_dma_config(context->dma_channel, context->data_size,
S3C2410_DCON_CH0_SDI);
-@@ -741,9 +741,9 @@ static irqreturn_t s3c24xx_hcd_irq(int irq, void *dev_id)
+@@ -759,9 +759,9 @@ static irqreturn_t s3c24xx_hcd_irq(int irq, void *dev_id)
context->int_sdio = 0;
@@ -1154,11 +1214,11 @@
imask &= ~S3C2410_SDIIMSK_SDIOIRQ;
- writel(imask, context->base + S3C2440_SDIIMSK);
+ writel(imask, context->base + S3C2410_SDIIMSK);
- SDIO_HandleHcdEvent(&context->hcd, EVENT_HCD_SDIO_IRQ_PENDING);
+ schedule_work(&context->irq_work);
}
+ }
+@@ -895,20 +895,20 @@ SDIO_STATUS s3c24xx_hcd_config(PSDHCD hcd, PSDCONFIG config)
-@@ -875,20 +875,20 @@ SDIO_STATUS s3c24xx_hcd_config(PSDHCD hcd, PSDCONFIG config)
-
if (int_data->SlotIRQEnable &
(IRQ_DETECT_1_BIT | IRQ_DETECT_4_BIT | IRQ_DETECT_MULTI_BLK) ) {
- imsk = readl(context->base + S3C2440_SDIIMSK);
@@ -1181,8 +1241,8 @@
}
}
status = SDIO_STATUS_SUCCESS;
-@@ -898,9 +898,9 @@ SDIO_STATUS s3c24xx_hcd_config(PSDHCD hcd, PSDCONFIG config)
- spin_lock_irqsave(&context->lock,flags);
+@@ -917,9 +917,9 @@ SDIO_STATUS s3c24xx_hcd_config(PSDHCD hcd, PSDCONFIG config)
+ DBG_PRINT(SDDBG_TRACE, ("config SDIO_REARM_INT\n"));
context->int_sdio = 1;
- imsk = readl(context->base + S3C2440_SDIIMSK);
@@ -1191,9 +1251,9 @@
- writel(imsk, context->base + S3C2440_SDIIMSK);
+ writel(imsk, context->base + S3C2410_SDIIMSK);
- spin_unlock_irqrestore(&context->lock,flags);
-
-@@ -1090,7 +1090,7 @@ SDIO_STATUS s3c24xx_hcd_request(PSDHCD hcd)
+ status = SDIO_STATUS_SUCCESS;
+ break;
+@@ -1110,7 +1110,7 @@ SDIO_STATUS s3c24xx_hcd_request(PSDHCD hcd)
if (context->int_sdio)
imask |= S3C2410_SDIIMSK_SDIOIRQ;
context->int_mask = imask;
@@ -1202,7 +1262,25 @@
writel(req->Argument, context->base + S3C2410_SDICMDARG);
writel(cmdcon, context->base + S3C2410_SDICMDCON);
-@@ -1376,7 +1376,7 @@ static int s3c24xx_hcd_debugfs_show(struct seq_file *s, void *data)
+@@ -1388,7 +1388,7 @@ static int s3c24xx_hcd_suspend(struct platform_device * pdev, pm_message_t state
+ context->suspend_regs.datcnt = readl(context->base + S3C2410_SDIDCNT);
+ context->suspend_regs.datsta = readl(context->base + S3C2410_SDIDSTA);
+ context->suspend_regs.fsta = readl(context->base + S3C2410_SDIFSTA);
+- context->suspend_regs.imask = readl(context->base + S3C2440_SDIIMSK);
++ context->suspend_regs.imask = readl(context->base + S3C2410_SDIIMSK);
+
+ spin_unlock_irqrestore(&context->lock, flags);
+ return 0;
+@@ -1416,7 +1416,7 @@ static int s3c24xx_hcd_resume(struct platform_device * pdev)
+ writel(context->suspend_regs.datcnt, context->base + S3C2410_SDIDCNT);
+ writel(context->suspend_regs.datsta, context->base + S3C2410_SDIDSTA);
+ writel(context->suspend_regs.fsta, context->base + S3C2410_SDIFSTA);
+- writel(context->suspend_regs.imask, context->base + S3C2440_SDIIMSK);
++ writel(context->suspend_regs.imask, context->base + S3C2410_SDIIMSK);
+
+ spin_unlock_irqrestore(&context->lock, flags);
+ return 0;
+@@ -1462,7 +1462,7 @@ static int s3c24xx_hcd_debugfs_show(struct seq_file *s, void *data)
datcnt = readl(context->base + S3C2410_SDIDCNT);
datsta = readl(context->base + S3C2410_SDIDSTA);
fsta = readl(context->base + S3C2410_SDIFSTA);
More information about the commitlog
mailing list