@@ -303,7 +303,7 @@ static struct omap_dss_board_info sdp3430_dss_data = {
};
static struct regulator_consumer_supply sdp3430_vdda_dac_supply =
- REGULATOR_SUPPLY("vdda_dac", "omapdisplay");
+ REGULATOR_SUPPLY("vdda_dac", "dss_venc");
static struct omap_board_config_kernel sdp3430_config[] __initdata = {
};
@@ -43,7 +43,6 @@ static struct {
struct regulator *vdds_dsi_reg;
struct regulator *vdds_sdi_reg;
- struct regulator *vdda_dac_reg;
} core;
@@ -86,20 +85,6 @@ struct regulator *dss_get_vdds_sdi(void)
return reg;
}
-struct regulator *dss_get_vdda_dac(void)
-{
- struct regulator *reg;
-
- if (core.vdda_dac_reg != NULL)
- return core.vdda_dac_reg;
-
- reg = regulator_get(&core.pdev->dev, "vdda_dac");
- if (!IS_ERR(reg))
- core.vdda_dac_reg = reg;
-
- return reg;
-}
-
#if defined(CONFIG_DEBUG_FS) && defined(CONFIG_OMAP2_DSS_DEBUG_SUPPORT)
static int dss_debug_show(struct seq_file *s, void *unused)
{
@@ -199,12 +184,6 @@ static int omap_dss_probe(struct platform_device *pdev)
goto err_dpi;
}
- r = venc_init(pdev);
- if (r) {
- DSSERR("Failed to initialize venc\n");
- goto err_venc;
- }
-
if (cpu_is_omap34xx()) {
r = sdi_init(skip_init);
if (r) {
@@ -254,8 +233,6 @@ err_dsi:
if (cpu_is_omap34xx())
sdi_exit();
err_sdi:
- venc_exit();
-err_venc:
dpi_exit();
err_dpi:
@@ -269,7 +246,6 @@ static int omap_dss_remove(struct platform_device *pdev)
dss_uninitialize_debugfs();
- venc_exit();
dpi_exit();
if (cpu_is_omap34xx()) {
dsi_exit();
@@ -562,11 +538,6 @@ static void __exit omap_dss_exit(void)
core.vdds_sdi_reg = NULL;
}
- if (core.vdda_dac_reg != NULL) {
- regulator_put(core.vdda_dac_reg);
- core.vdda_dac_reg = NULL;
- }
-
platform_driver_unregister(&omap_dss_driver);
omap_dss_bus_unregister();
@@ -87,26 +87,6 @@
#define VENC_OUTPUT_TEST 0xC8
#define VENC_DAC_B__DAC_C 0xC8
-/* VENC HW IP initialisation */
-static int omap_venchw_probe(struct platform_device *pdev)
-{
- return 0;
-}
-
-static int omap_venchw_remove(struct platform_device *pdev)
-{
- return 0;
-}
-
-static struct platform_driver omap_venchw_driver = {
- .probe = omap_venchw_probe,
- .remove = omap_venchw_remove,
- .driver = {
- .name = "dss_venc",
- .owner = THIS_MODULE,
- },
-};
-
struct venc_config {
u32 f_control;
u32 vidout_ctrl;
@@ -309,6 +289,7 @@ const struct omap_video_timings omap_dss_ntsc_timings = {
EXPORT_SYMBOL(omap_dss_ntsc_timings);
static struct {
+ struct platform_device *pdev;
void __iomem *base;
struct mutex venc_lock;
u32 wss_data;
@@ -326,6 +307,37 @@ static inline u32 venc_read_reg(int idx)
return l;
}
+/* VENC HW IP initialisation */
+static int omap_venchw_probe(struct platform_device *pdev)
+{
+ int r;
+ venc.pdev = pdev;
+
+ r = venc_init(pdev);
+ if (r) {
+ DSSERR("Failed to initialize venc\n");
+ goto err_venc;
+ }
+
+err_venc:
+ return r;
+}
+
+static int omap_venchw_remove(struct platform_device *pdev)
+{
+ venc_exit();
+ return 0;
+}
+
+static struct platform_driver omap_venchw_driver = {
+ .probe = omap_venchw_probe,
+ .remove = omap_venchw_remove,
+ .driver = {
+ .name = "dss_venc",
+ .owner = THIS_MODULE,
+ },
+};
+
static void venc_write_config(const struct venc_config *config)
{
DSSDBG("write venc conf\n");
@@ -661,7 +673,19 @@ static struct omap_dss_driver venc_driver = {
};
/* driver end */
+struct regulator *dss_get_vdda_dac(void)
+{
+ struct regulator *reg;
+
+ if (venc.vdda_dac_reg != NULL)
+ return venc.vdda_dac_reg;
+
+ reg = regulator_get(&venc.pdev->dev, "vdda_dac");
+ if (!IS_ERR(reg))
+ venc.vdda_dac_reg = reg;
+ return reg;
+}
int venc_init(struct platform_device *pdev)
{
@@ -696,6 +720,11 @@ int venc_init(struct platform_device *pdev)
void venc_exit(void)
{
+ if (venc.vdda_dac_reg != NULL) {
+ regulator_put(venc.vdda_dac_reg);
+ venc.vdda_dac_reg = NULL;
+ }
+
omap_dss_unregister_driver(&venc_driver);
iounmap(venc.base);