|
@@ -453,3 +453,102 @@ struct s3c_sdhci_platdata s3c_hsmmc3_def_platdata = {
|
|
|
struct platform_device s3c_device_hsmmc3 = {
|
|
|
.name = "s3c-sdhci",
|
|
|
.id = 3,
|
|
|
+ .num_resources = ARRAY_SIZE(s3c_hsmmc3_resource),
|
|
|
+ .resource = s3c_hsmmc3_resource,
|
|
|
+ .dev = {
|
|
|
+ .dma_mask = &samsung_device_dma_mask,
|
|
|
+ .coherent_dma_mask = DMA_BIT_MASK(32),
|
|
|
+ .platform_data = &s3c_hsmmc3_def_platdata,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+void s3c_sdhci3_set_platdata(struct s3c_sdhci_platdata *pd)
|
|
|
+{
|
|
|
+ s3c_sdhci_set_platdata(pd, &s3c_hsmmc3_def_platdata);
|
|
|
+}
|
|
|
+#endif /* CONFIG_S3C_DEV_HSMMC3 */
|
|
|
+
|
|
|
+/* I2C */
|
|
|
+
|
|
|
+static struct resource s3c_i2c0_resource[] = {
|
|
|
+ [0] = DEFINE_RES_MEM(S3C_PA_IIC, SZ_4K),
|
|
|
+ [1] = DEFINE_RES_IRQ(IRQ_IIC),
|
|
|
+};
|
|
|
+
|
|
|
+struct platform_device s3c_device_i2c0 = {
|
|
|
+ .name = "s3c2410-i2c",
|
|
|
+ .id = 0,
|
|
|
+ .num_resources = ARRAY_SIZE(s3c_i2c0_resource),
|
|
|
+ .resource = s3c_i2c0_resource,
|
|
|
+};
|
|
|
+
|
|
|
+struct s3c2410_platform_i2c default_i2c_data __initdata = {
|
|
|
+ .flags = 0,
|
|
|
+ .slave_addr = 0x10,
|
|
|
+ .frequency = 100*1000,
|
|
|
+ .sda_delay = 100,
|
|
|
+};
|
|
|
+
|
|
|
+void __init s3c_i2c0_set_platdata(struct s3c2410_platform_i2c *pd)
|
|
|
+{
|
|
|
+ struct s3c2410_platform_i2c *npd;
|
|
|
+
|
|
|
+ if (!pd) {
|
|
|
+ pd = &default_i2c_data;
|
|
|
+ pd->bus_num = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
|
|
|
+ &s3c_device_i2c0);
|
|
|
+
|
|
|
+ if (!npd->cfg_gpio)
|
|
|
+ npd->cfg_gpio = s3c_i2c0_cfg_gpio;
|
|
|
+}
|
|
|
+
|
|
|
+#ifdef CONFIG_S3C_DEV_I2C1
|
|
|
+static struct resource s3c_i2c1_resource[] = {
|
|
|
+ [0] = DEFINE_RES_MEM(S3C_PA_IIC1, SZ_4K),
|
|
|
+ [1] = DEFINE_RES_IRQ(IRQ_IIC1),
|
|
|
+};
|
|
|
+
|
|
|
+struct platform_device s3c_device_i2c1 = {
|
|
|
+ .name = "s3c2410-i2c",
|
|
|
+ .id = 1,
|
|
|
+ .num_resources = ARRAY_SIZE(s3c_i2c1_resource),
|
|
|
+ .resource = s3c_i2c1_resource,
|
|
|
+};
|
|
|
+
|
|
|
+void __init s3c_i2c1_set_platdata(struct s3c2410_platform_i2c *pd)
|
|
|
+{
|
|
|
+ struct s3c2410_platform_i2c *npd;
|
|
|
+
|
|
|
+ if (!pd) {
|
|
|
+ pd = &default_i2c_data;
|
|
|
+ pd->bus_num = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
|
|
|
+ &s3c_device_i2c1);
|
|
|
+
|
|
|
+ if (!npd->cfg_gpio)
|
|
|
+ npd->cfg_gpio = s3c_i2c1_cfg_gpio;
|
|
|
+}
|
|
|
+#endif /* CONFIG_S3C_DEV_I2C1 */
|
|
|
+
|
|
|
+#ifdef CONFIG_S3C_DEV_I2C2
|
|
|
+static struct resource s3c_i2c2_resource[] = {
|
|
|
+ [0] = DEFINE_RES_MEM(S3C_PA_IIC2, SZ_4K),
|
|
|
+ [1] = DEFINE_RES_IRQ(IRQ_IIC2),
|
|
|
+};
|
|
|
+
|
|
|
+struct platform_device s3c_device_i2c2 = {
|
|
|
+ .name = "s3c2410-i2c",
|
|
|
+ .id = 2,
|
|
|
+ .num_resources = ARRAY_SIZE(s3c_i2c2_resource),
|
|
|
+ .resource = s3c_i2c2_resource,
|
|
|
+};
|
|
|
+
|
|
|
+void __init s3c_i2c2_set_platdata(struct s3c2410_platform_i2c *pd)
|
|
|
+{
|
|
|
+ struct s3c2410_platform_i2c *npd;
|
|
|
+
|