diff --git a/drivers/i2c/chips/pcf50606.c b/drivers/i2c/chips/pcf50606.c
index 78ca662..86e35a4 100644
--- a/drivers/i2c/chips/pcf50606.c
+++ b/drivers/i2c/chips/pcf50606.c
@@ -1693,7 +1693,6 @@ static int pcf50606_detect(struct i2c_adapter *adapter, int address, int kind)
 
 #ifdef CONFIG_MACH_NEO1973_GTA01
 	if (machine_is_neo1973_gta01()) {
-		gta01_pm_gps_dev.dev.parent = &new_client->dev;
 		switch (system_rev) {
 		case GTA01Bv2_SYSTEM_REV:
 		case GTA01Bv3_SYSTEM_REV:
@@ -1702,6 +1701,7 @@ static int pcf50606_detect(struct i2c_adapter *adapter, int address, int kind)
 			platform_device_register(&gta01_pm_bt_dev);
 			break;
 		}
+		gta01_pm_gps_dev.dev.parent = &new_client->dev;
 		platform_device_register(&gta01_pm_gps_dev);
 	}
 #endif
diff --git a/drivers/mmc/s3cmci.c b/drivers/mmc/s3cmci.c
index 9b15310..10239c9 100644
--- a/drivers/mmc/s3cmci.c
+++ b/drivers/mmc/s3cmci.c
@@ -946,7 +946,8 @@ static void s3cmci_send_request(struct mmc_host *mmc)
 	//Fifo clear only necessary on 2440, but doesn't hurt on 2410
 	writel(0xFFFFFFFF, host->base + S3C2410_SDICMDSTAT);
 	writel(0xFFFFFFFF, host->base + S3C2410_SDIDSTA);
-	writel(0xFFFFFFFF, host->base + S3C2410_SDIFSTA);
+	if (host->is2440)
+		writel(0xFFFFFFFF, host->base + S3C2410_SDIFSTA);
 
 	if (cmd->data) {
 		int res;
diff --git a/drivers/usb/gadget/s3c2410_udc.c b/drivers/usb/gadget/s3c2410_udc.c
index 50d1bca..af27239 100644
--- a/drivers/usb/gadget/s3c2410_udc.c
+++ b/drivers/usb/gadget/s3c2410_udc.c
@@ -140,13 +140,13 @@ static ssize_t s3c2410udc_regs_show(struct device *dev, struct device_attribute
 	udc_writel(1, S3C2410_UDC_INDEX_REG);
 	ep1_i_csr1     = udc_readl(S3C2410_UDC_IN_CSR1_REG);
 	ep1_i_csr2     = udc_readl(S3C2410_UDC_IN_CSR2_REG);
-	ep1_o_csr1     = udc_readl(S3C2410_UDC_IN_CSR1_REG);
-	ep1_o_csr2     = udc_readl(S3C2410_UDC_IN_CSR2_REG);
+	ep1_o_csr1     = udc_readl(S3C2410_UDC_OUT_CSR1_REG);
+	ep1_o_csr2     = udc_readl(S3C2410_UDC_OUT_CSR2_REG);
 	udc_writel(2, S3C2410_UDC_INDEX_REG);
 	ep2_i_csr1     = udc_readl(S3C2410_UDC_IN_CSR1_REG);
 	ep2_i_csr2     = udc_readl(S3C2410_UDC_IN_CSR2_REG);
-	ep2_o_csr1     = udc_readl(S3C2410_UDC_IN_CSR1_REG);
-	ep2_o_csr2     = udc_readl(S3C2410_UDC_IN_CSR2_REG);
+	ep2_o_csr1     = udc_readl(S3C2410_UDC_OUT_CSR1_REG);
+	ep2_o_csr2     = udc_readl(S3C2410_UDC_OUT_CSR2_REG);
 
 
 	return snprintf(buf, PAGE_SIZE,        \
