summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilippe Langlais <philippe.langlais@linaro.org>2011-05-11 09:09:27 +0200
committerUlf Hansson <ulf.hansson@stericsson.com>2011-09-19 15:15:13 +0200
commit6d4c60e9470b03d9ae737c35e6732275a2cd5bfd (patch)
treedc3ce196c10f72767450a6d63d0dee7e5f4a82f8
parent5626e5cbf17b1030a1aba01b88bd43ff00739dc2 (diff)
mach-ux500: framebuffer: Changes to be able to compile with u5500 and u8500 both enable
Move mcde fb common part in devices-common.c Signed-off-by: Philippe Langlais <philippe.langlais@linaro.org>
-rw-r--r--arch/arm/mach-ux500/board-mop500-mcde.c67
-rw-r--r--arch/arm/mach-ux500/board-mop500-mcde.h8
-rw-r--r--arch/arm/mach-ux500/board-mop500-regulators.c12
-rw-r--r--arch/arm/mach-ux500/board-u5500-mcde.c67
-rw-r--r--arch/arm/mach-ux500/devices-common.c66
5 files changed, 74 insertions, 146 deletions
diff --git a/arch/arm/mach-ux500/board-mop500-mcde.c b/arch/arm/mach-ux500/board-mop500-mcde.c
index 3826fc5a337..bc7d596d88f 100644
--- a/arch/arm/mach-ux500/board-mop500-mcde.c
+++ b/arch/arm/mach-ux500/board-mop500-mcde.c
@@ -378,7 +378,7 @@ static struct mcde_port port2 = {
.hdmi_sdtv_switch = HDMI_SWITCH,
};
-struct mcde_display_hdmi_platform_data av8100_hdmi_pdata = {
+static struct mcde_display_hdmi_platform_data av8100_hdmi_pdata = {
.reset_gpio = 0,
.reset_delay = 1,
.regulator_id = NULL, /* TODO: "display_main" */
@@ -394,7 +394,7 @@ struct mcde_display_hdmi_platform_data av8100_hdmi_pdata = {
}
};
-struct mcde_display_device av8100_hdmi = {
+static struct mcde_display_device av8100_hdmi = {
.name = "av8100_hdmi",
.id = TERTIARY_DISPLAY_ID,
.port = &port2,
@@ -685,69 +685,6 @@ struct mcde_display_device *mcde_get_main_display(void)
}
EXPORT_SYMBOL(mcde_get_main_display);
-void hdmi_fb_onoff(struct mcde_display_device *ddev,
- bool enable, u8 cea, u8 vesa_cea_nr)
-{
- struct fb_info *fbi;
- u16 w, h;
- u16 vw, vh;
- u32 rotate = FB_ROTATE_UR;
- struct display_driver_data *driver_data = dev_get_drvdata(&ddev->dev);
-
- dev_dbg(&ddev->dev, "%s\n", __func__);
- dev_dbg(&ddev->dev, "en:%d cea:%d nr:%d\n", enable, cea, vesa_cea_nr);
-
- if (enable) {
- if (ddev->enabled) {
- dev_dbg(&ddev->dev, "Display is already enabled.\n");
- return;
- }
-
- /* Create fb */
- if (ddev->fbi == NULL) {
- /* Note: change when dynamic buffering is available */
- int buffering = 2;
-
- /* Get default values */
- mcde_dss_get_native_resolution(ddev, &w, &h);
- vw = w;
- vh = h * buffering;
-
- if (vesa_cea_nr != 0)
- ddev->ceanr_convert(ddev, cea, vesa_cea_nr,
- buffering, &w, &h, &vw, &vh);
-
- fbi = mcde_fb_create(ddev, w, h, vw, vh,
- ddev->default_pixel_format, rotate);
-
- if (IS_ERR(fbi)) {
- dev_warn(&ddev->dev,
- "Failed to create fb for display %s\n",
- ddev->name);
- goto hdmi_fb_onoff_end;
- } else {
- dev_info(&ddev->dev,
- "Framebuffer created (%s)\n",
- ddev->name);
- }
- driver_data->fbdevname = (char *)dev_name(fbi->dev);
- }
- } else {
- if (!ddev->enabled) {
- dev_dbg(&ddev->dev, "Display %s is already disabled.\n",
- ddev->name);
- return;
- }
-
- mcde_fb_destroy(ddev);
- }
-
-hdmi_fb_onoff_end:
- return;
-}
-EXPORT_SYMBOL(hdmi_fb_onoff);
-
-
module_init(init_display_devices);
#endif
diff --git a/arch/arm/mach-ux500/board-mop500-mcde.h b/arch/arm/mach-ux500/board-mop500-mcde.h
index 38094b81b34..66447c95828 100644
--- a/arch/arm/mach-ux500/board-mop500-mcde.h
+++ b/arch/arm/mach-ux500/board-mop500-mcde.h
@@ -13,12 +13,4 @@
#include <video/mcde_display.h>
-#ifdef CONFIG_DISPLAY_AB8500_TERTIARY
-extern struct mcde_display_device tvout_ab8500_display;
-#endif
-
-#ifdef CONFIG_DISPLAY_AV8100_TERTIARY
-extern struct mcde_display_device av8100_hdmi;
-#endif
-
#endif /* __BOARD_MOP500_MCDE_H */
diff --git a/arch/arm/mach-ux500/board-mop500-regulators.c b/arch/arm/mach-ux500/board-mop500-regulators.c
index e60ff538e83..343a0826d6c 100644
--- a/arch/arm/mach-ux500/board-mop500-regulators.c
+++ b/arch/arm/mach-ux500/board-mop500-regulators.c
@@ -20,12 +20,6 @@
#define REGULATOR_SUPPLY_DEBUG(_name, _dev_name)
#endif
-#define REGULATOR_SUPPLY_DEV(_name, _dev) \
-{ \
- .supply = _name, \
- .dev = _dev, \
-}
-
/*
* TPS61052 regulator
*/
@@ -78,10 +72,10 @@ static struct regulator_consumer_supply ab8500_vaux2_consumers[] = {
REGULATOR_SUPPLY("vcc-avswitch", "ab8500-codec.0"),
REGULATOR_SUPPLY("vcc-avswitch", "ab8500-acc-det.0"),
#ifdef CONFIG_DISPLAY_AB8500_TERTIARY
- REGULATOR_SUPPLY_DEV("v-ab8500-AV-switch", &tvout_ab8500_display.dev),
+ REGULATOR_SUPPLY("v-ab8500-AV-switch", "mcde_tv_ab8500.2"),
#endif
#ifdef CONFIG_DISPLAY_AV8100_TERTIARY
- REGULATOR_SUPPLY_DEV("v-av8100-AV-switch", &av8100_hdmi.dev),
+ REGULATOR_SUPPLY("v-av8100-AV-switch", "av8100_hdmi.2"),
#endif
REGULATOR_SUPPLY_DEBUG("aux2", "reg-virt-consumer.1")
};
@@ -107,7 +101,7 @@ static struct regulator_consumer_supply ab8500_vtvout_consumers[] = {
REGULATOR_SUPPLY("vddadc", "ab8500-gpadc.0"),
REGULATOR_SUPPLY("vddadc", "ab8500-charger.0"),
#ifdef CONFIG_DISPLAY_AB8500_TERTIARY
- REGULATOR_SUPPLY_DEV("vtvout", &tvout_ab8500_display.dev),
+ REGULATOR_SUPPLY("v-tvout", "mcde_tv_ab8500.2"),
#endif
REGULATOR_SUPPLY_DEBUG("tvout", "reg-virt-consumer.4")
};
diff --git a/arch/arm/mach-ux500/board-u5500-mcde.c b/arch/arm/mach-ux500/board-u5500-mcde.c
index 2568b0cf183..eba695e5ed5 100644
--- a/arch/arm/mach-ux500/board-u5500-mcde.c
+++ b/arch/arm/mach-ux500/board-u5500-mcde.c
@@ -151,7 +151,7 @@ static struct mcde_port port2 = {
.hdmi_sdtv_switch = HDMI_SWITCH,
};
-struct mcde_display_hdmi_platform_data av8100_hdmi_pdata = {
+static struct mcde_display_hdmi_platform_data av8100_hdmi_pdata = {
.reset_gpio = 0,
.reset_delay = 1,
.regulator_id = NULL,
@@ -167,7 +167,7 @@ struct mcde_display_hdmi_platform_data av8100_hdmi_pdata = {
}
};
-struct mcde_display_device av8100_hdmi = {
+static struct mcde_display_device av8100_hdmi = {
.name = "av8100_hdmi",
.id = TERTIARY_DISPLAY_ID,
.port = &port2,
@@ -392,66 +392,5 @@ int __init init_display_devices_u5500(void)
return ret;
}
-void hdmi_fb_onoff(struct mcde_display_device *ddev,
- bool enable, u8 cea, u8 vesa_cea_nr)
-{
- struct fb_info *fbi;
- u16 w, h;
- u16 vw, vh;
- u32 rotate = FB_ROTATE_UR;
- struct display_driver_data *driver_data = dev_get_drvdata(&ddev->dev);
-
- dev_dbg(&ddev->dev, "%s\n", __func__);
- dev_dbg(&ddev->dev, "en:%d cea:%d nr:%d\n", enable, cea, vesa_cea_nr);
-
- if (enable) {
- if (ddev->enabled) {
- dev_dbg(&ddev->dev, "Display is already enabled.\n");
- return;
- }
-
- /* Create fb */
- if (ddev->fbi == NULL) {
- /* Note: change when dynamic buffering is available */
- int buffering = 2;
-
- /* Get default values */
- mcde_dss_get_native_resolution(ddev, &w, &h);
- vw = w;
- vh = h * buffering;
-
- if (vesa_cea_nr != 0)
- ddev->ceanr_convert(ddev, cea, vesa_cea_nr,
- buffering, &w, &h, &vw, &vh);
-
- fbi = mcde_fb_create(ddev, w, h, vw, vh,
- ddev->default_pixel_format, rotate);
-
- if (IS_ERR(fbi)) {
- dev_warn(&ddev->dev,
- "Failed to create fb for display %s\n",
- ddev->name);
- goto hdmi_fb_onoff_end;
- } else {
- dev_info(&ddev->dev,
- "Framebuffer created (%s)\n",
- ddev->name);
- }
- driver_data->fbdevname = (char *)dev_name(fbi->dev);
- }
- } else {
- if (!ddev->enabled) {
- dev_dbg(&ddev->dev, "Display %s is already disabled.\n",
- ddev->name);
- return;
- }
- mcde_fb_destroy(ddev);
- }
-
-hdmi_fb_onoff_end:
- return;
-}
-EXPORT_SYMBOL(hdmi_fb_onoff);
-
-module_init(init_display_devices);
+module_init(init_display_devices_u5500);
#endif
diff --git a/arch/arm/mach-ux500/devices-common.c b/arch/arm/mach-ux500/devices-common.c
index b2424483645..0f0ce48774e 100644
--- a/arch/arm/mach-ux500/devices-common.c
+++ b/arch/arm/mach-ux500/devices-common.c
@@ -14,6 +14,10 @@
#include <linux/amba/bus.h>
#include <linux/pm.h>
+#include <video/mcde_display.h>
+#include <video/mcde_display-av8100.h>
+#include <video/mcde_fb.h>
+
#include <plat/gpio.h>
extern struct dev_power_domain ux500_dev_power_domain;
@@ -148,3 +152,65 @@ void dbx500_add_gpios(resource_size_t *base, int num, int irq,
dbx500_add_gpio(i, base[i], irq, pdata);
}
}
+
+void hdmi_fb_onoff(struct mcde_display_device *ddev,
+ bool enable, u8 cea, u8 vesa_cea_nr)
+{
+ struct fb_info *fbi;
+ u16 w, h;
+ u16 vw, vh;
+ u32 rotate = FB_ROTATE_UR;
+ struct display_driver_data *driver_data = dev_get_drvdata(&ddev->dev);
+
+ dev_dbg(&ddev->dev, "%s\n", __func__);
+ dev_dbg(&ddev->dev, "en:%d cea:%d nr:%d\n", enable, cea, vesa_cea_nr);
+
+ if (enable) {
+ if (ddev->enabled) {
+ dev_dbg(&ddev->dev, "Display is already enabled.\n");
+ return;
+ }
+
+ /* Create fb */
+ if (ddev->fbi == NULL) {
+ /* Note: change when dynamic buffering is available */
+ int buffering = 2;
+
+ /* Get default values */
+ mcde_dss_get_native_resolution(ddev, &w, &h);
+ vw = w;
+ vh = h * buffering;
+
+ if (vesa_cea_nr != 0)
+ ddev->ceanr_convert(ddev, cea, vesa_cea_nr,
+ buffering, &w, &h, &vw, &vh);
+
+ fbi = mcde_fb_create(ddev, w, h, vw, vh,
+ ddev->default_pixel_format, rotate);
+
+ if (IS_ERR(fbi)) {
+ dev_warn(&ddev->dev,
+ "Failed to create fb for display %s\n",
+ ddev->name);
+ goto hdmi_fb_onoff_end;
+ } else {
+ dev_info(&ddev->dev,
+ "Framebuffer created (%s)\n",
+ ddev->name);
+ }
+ driver_data->fbdevname = (char *)dev_name(fbi->dev);
+ }
+ } else {
+ if (!ddev->enabled) {
+ dev_dbg(&ddev->dev, "Display %s is already disabled.\n",
+ ddev->name);
+ return;
+ }
+ mcde_fb_destroy(ddev);
+ }
+
+hdmi_fb_onoff_end:
+ return;
+}
+EXPORT_SYMBOL(hdmi_fb_onoff);
+