|
@@ -753,3 +753,139 @@ void __init s5p_i2c_hdmiphy_set_platdata(struct s3c2410_platform_i2c *pd)
|
|
static struct s5p_hdmi_platform_data s5p_hdmi_def_platdata;
|
|
static struct s5p_hdmi_platform_data s5p_hdmi_def_platdata;
|
|
|
|
|
|
void __init s5p_hdmi_set_platdata(struct i2c_board_info *hdmiphy_info,
|
|
void __init s5p_hdmi_set_platdata(struct i2c_board_info *hdmiphy_info,
|
|
|
|
+ struct i2c_board_info *mhl_info, int mhl_bus)
|
|
|
|
+{
|
|
|
|
+ struct s5p_hdmi_platform_data *pd = &s5p_hdmi_def_platdata;
|
|
|
|
+
|
|
|
|
+ if (soc_is_exynos4210() ||
|
|
|
|
+ soc_is_exynos4212() || soc_is_exynos4412())
|
|
|
|
+ pd->hdmiphy_bus = 8;
|
|
|
|
+ else if (soc_is_s5pv210())
|
|
|
|
+ pd->hdmiphy_bus = 3;
|
|
|
|
+ else
|
|
|
|
+ pd->hdmiphy_bus = 0;
|
|
|
|
+
|
|
|
|
+ pd->hdmiphy_info = hdmiphy_info;
|
|
|
|
+ pd->mhl_info = mhl_info;
|
|
|
|
+ pd->mhl_bus = mhl_bus;
|
|
|
|
+
|
|
|
|
+ s3c_set_platdata(pd, sizeof(struct s5p_hdmi_platform_data),
|
|
|
|
+ &s5p_device_hdmi);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#endif /* CONFIG_S5P_DEV_I2C_HDMIPHY */
|
|
|
|
+
|
|
|
|
+/* I2S */
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_PLAT_S3C24XX
|
|
|
|
+static struct resource s3c_iis_resource[] = {
|
|
|
|
+ [0] = DEFINE_RES_MEM(S3C24XX_PA_IIS, S3C24XX_SZ_IIS),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+struct platform_device s3c_device_iis = {
|
|
|
|
+ .name = "s3c24xx-iis",
|
|
|
|
+ .id = -1,
|
|
|
|
+ .num_resources = ARRAY_SIZE(s3c_iis_resource),
|
|
|
|
+ .resource = s3c_iis_resource,
|
|
|
|
+ .dev = {
|
|
|
|
+ .dma_mask = &samsung_device_dma_mask,
|
|
|
|
+ .coherent_dma_mask = DMA_BIT_MASK(32),
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+#endif /* CONFIG_PLAT_S3C24XX */
|
|
|
|
+
|
|
|
|
+/* IDE CFCON */
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_SAMSUNG_DEV_IDE
|
|
|
|
+static struct resource s3c_cfcon_resource[] = {
|
|
|
|
+ [0] = DEFINE_RES_MEM(SAMSUNG_PA_CFCON, SZ_16K),
|
|
|
|
+ [1] = DEFINE_RES_IRQ(IRQ_CFCON),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+struct platform_device s3c_device_cfcon = {
|
|
|
|
+ .id = 0,
|
|
|
|
+ .num_resources = ARRAY_SIZE(s3c_cfcon_resource),
|
|
|
|
+ .resource = s3c_cfcon_resource,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+void __init s3c_ide_set_platdata(struct s3c_ide_platdata *pdata)
|
|
|
|
+{
|
|
|
|
+ s3c_set_platdata(pdata, sizeof(struct s3c_ide_platdata),
|
|
|
|
+ &s3c_device_cfcon);
|
|
|
|
+}
|
|
|
|
+#endif /* CONFIG_SAMSUNG_DEV_IDE */
|
|
|
|
+
|
|
|
|
+/* KEYPAD */
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_SAMSUNG_DEV_KEYPAD
|
|
|
|
+static struct resource samsung_keypad_resources[] = {
|
|
|
|
+ [0] = DEFINE_RES_MEM(SAMSUNG_PA_KEYPAD, SZ_32),
|
|
|
|
+ [1] = DEFINE_RES_IRQ(IRQ_KEYPAD),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+struct platform_device samsung_device_keypad = {
|
|
|
|
+ .name = "samsung-keypad",
|
|
|
|
+ .id = -1,
|
|
|
|
+ .num_resources = ARRAY_SIZE(samsung_keypad_resources),
|
|
|
|
+ .resource = samsung_keypad_resources,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+void __init samsung_keypad_set_platdata(struct samsung_keypad_platdata *pd)
|
|
|
|
+{
|
|
|
|
+ struct samsung_keypad_platdata *npd;
|
|
|
|
+
|
|
|
|
+ npd = s3c_set_platdata(pd, sizeof(struct samsung_keypad_platdata),
|
|
|
|
+ &samsung_device_keypad);
|
|
|
|
+
|
|
|
|
+ if (!npd->cfg_gpio)
|
|
|
|
+ npd->cfg_gpio = samsung_keypad_cfg_gpio;
|
|
|
|
+}
|
|
|
|
+#endif /* CONFIG_SAMSUNG_DEV_KEYPAD */
|
|
|
|
+
|
|
|
|
+/* LCD Controller */
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_PLAT_S3C24XX
|
|
|
|
+static struct resource s3c_lcd_resource[] = {
|
|
|
|
+ [0] = DEFINE_RES_MEM(S3C24XX_PA_LCD, S3C24XX_SZ_LCD),
|
|
|
|
+ [1] = DEFINE_RES_IRQ(IRQ_LCD),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+struct platform_device s3c_device_lcd = {
|
|
|
|
+ .name = "s3c2410-lcd",
|
|
|
|
+ .id = -1,
|
|
|
|
+ .num_resources = ARRAY_SIZE(s3c_lcd_resource),
|
|
|
|
+ .resource = s3c_lcd_resource,
|
|
|
|
+ .dev = {
|
|
|
|
+ .dma_mask = &samsung_device_dma_mask,
|
|
|
|
+ .coherent_dma_mask = DMA_BIT_MASK(32),
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+void __init s3c24xx_fb_set_platdata(struct s3c2410fb_mach_info *pd)
|
|
|
|
+{
|
|
|
|
+ struct s3c2410fb_mach_info *npd;
|
|
|
|
+
|
|
|
|
+ npd = s3c_set_platdata(pd, sizeof(*npd), &s3c_device_lcd);
|
|
|
|
+ if (npd) {
|
|
|
|
+ npd->displays = kmemdup(pd->displays,
|
|
|
|
+ sizeof(struct s3c2410fb_display) * npd->num_displays,
|
|
|
|
+ GFP_KERNEL);
|
|
|
|
+ if (!npd->displays)
|
|
|
|
+ printk(KERN_ERR "no memory for LCD display data\n");
|
|
|
|
+ } else {
|
|
|
|
+ printk(KERN_ERR "no memory for LCD platform data\n");
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+#endif /* CONFIG_PLAT_S3C24XX */
|
|
|
|
+
|
|
|
|
+/* MFC */
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_S5P_DEV_MFC
|
|
|
|
+static struct resource s5p_mfc_resource[] = {
|
|
|
|
+ [0] = DEFINE_RES_MEM(S5P_PA_MFC, SZ_64K),
|
|
|
|
+ [1] = DEFINE_RES_IRQ(IRQ_MFC),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+struct platform_device s5p_device_mfc = {
|
|
|
|
+ .name = "s5p-mfc",
|
|
|
|
+ .id = -1,
|