diff options
author | Senthilvadivu Guruswamy <svadivu@ti.com> | 2011-01-24 01:22:04 -0500 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-03-11 08:46:21 -0500 |
commit | ea9da36a304eed585fc5ef89c0f1c460eca61b48 (patch) | |
tree | b1e14d36fc7c25f845677c6d3249311d0304cd09 /drivers | |
parent | a06b62f8004bd95c132fa312e8593c9a10f466ec (diff) |
OMAP2,3: DSS2: Use platform device to get baseaddr
DSS, DISPC, DSI, RFBI, VENC baseaddr can be obtained from platform_get_resource().
This API in turn picks the right silicon baseaddr from the hwmod database.
So hardcoding of base addr could be removed.
Reviewed-by: Paul Walmsley <paul@pwsan.com>
Reviewed-by: Kevin Hilman <khilman@ti.com>
Tested-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Sumit Semwal <sumit.semwal@ti.com>
Signed-off-by: Senthilvadivu Guruswamy <svadivu@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/video/omap2/dss/dispc.c | 11 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dsi.c | 11 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dss.c | 11 | ||||
-rw-r--r-- | drivers/video/omap2/dss/rfbi.c | 10 | ||||
-rw-r--r-- | drivers/video/omap2/dss/venc.c | 11 |
5 files changed, 39 insertions, 15 deletions
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c index 032e5dd19e09..96e37f8e75dc 100644 --- a/drivers/video/omap2/dss/dispc.c +++ b/drivers/video/omap2/dss/dispc.c | |||
@@ -42,8 +42,6 @@ | |||
42 | #include "dss_features.h" | 42 | #include "dss_features.h" |
43 | 43 | ||
44 | /* DISPC */ | 44 | /* DISPC */ |
45 | #define DISPC_BASE 0x48050400 | ||
46 | |||
47 | #define DISPC_SZ_REGS SZ_4K | 45 | #define DISPC_SZ_REGS SZ_4K |
48 | 46 | ||
49 | struct dispc_reg { u16 idx; }; | 47 | struct dispc_reg { u16 idx; }; |
@@ -3324,6 +3322,8 @@ int dispc_setup_plane(enum omap_plane plane, | |||
3324 | static int omap_dispchw_probe(struct platform_device *pdev) | 3322 | static int omap_dispchw_probe(struct platform_device *pdev) |
3325 | { | 3323 | { |
3326 | u32 rev; | 3324 | u32 rev; |
3325 | struct resource *dispc_mem; | ||
3326 | |||
3327 | dispc.pdev = pdev; | 3327 | dispc.pdev = pdev; |
3328 | 3328 | ||
3329 | spin_lock_init(&dispc.irq_lock); | 3329 | spin_lock_init(&dispc.irq_lock); |
@@ -3335,7 +3335,12 @@ static int omap_dispchw_probe(struct platform_device *pdev) | |||
3335 | 3335 | ||
3336 | INIT_WORK(&dispc.error_work, dispc_error_worker); | 3336 | INIT_WORK(&dispc.error_work, dispc_error_worker); |
3337 | 3337 | ||
3338 | dispc.base = ioremap(DISPC_BASE, DISPC_SZ_REGS); | 3338 | dispc_mem = platform_get_resource(dispc.pdev, IORESOURCE_MEM, 0); |
3339 | if (!dispc_mem) { | ||
3340 | DSSERR("can't get IORESOURCE_MEM DISPC\n"); | ||
3341 | return -EINVAL; | ||
3342 | } | ||
3343 | dispc.base = ioremap(dispc_mem->start, resource_size(dispc_mem)); | ||
3339 | if (!dispc.base) { | 3344 | if (!dispc.base) { |
3340 | DSSERR("can't ioremap DISPC\n"); | 3345 | DSSERR("can't ioremap DISPC\n"); |
3341 | return -ENOMEM; | 3346 | return -ENOMEM; |
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c index df246033b940..c42acae10af0 100644 --- a/drivers/video/omap2/dss/dsi.c +++ b/drivers/video/omap2/dss/dsi.c | |||
@@ -42,8 +42,6 @@ | |||
42 | /*#define VERBOSE_IRQ*/ | 42 | /*#define VERBOSE_IRQ*/ |
43 | #define DSI_CATCH_MISSING_TE | 43 | #define DSI_CATCH_MISSING_TE |
44 | 44 | ||
45 | #define DSI_BASE 0x4804FC00 | ||
46 | |||
47 | struct dsi_reg { u16 idx; }; | 45 | struct dsi_reg { u16 idx; }; |
48 | 46 | ||
49 | #define DSI_REG(idx) ((const struct dsi_reg) { idx }) | 47 | #define DSI_REG(idx) ((const struct dsi_reg) { idx }) |
@@ -3257,6 +3255,7 @@ static int dsi_init(struct platform_device *pdev) | |||
3257 | { | 3255 | { |
3258 | u32 rev; | 3256 | u32 rev; |
3259 | int r; | 3257 | int r; |
3258 | struct resource *dsi_mem; | ||
3260 | 3259 | ||
3261 | spin_lock_init(&dsi.errors_lock); | 3260 | spin_lock_init(&dsi.errors_lock); |
3262 | dsi.errors = 0; | 3261 | dsi.errors = 0; |
@@ -3283,7 +3282,13 @@ static int dsi_init(struct platform_device *pdev) | |||
3283 | dsi.te_timer.function = dsi_te_timeout; | 3282 | dsi.te_timer.function = dsi_te_timeout; |
3284 | dsi.te_timer.data = 0; | 3283 | dsi.te_timer.data = 0; |
3285 | #endif | 3284 | #endif |
3286 | dsi.base = ioremap(DSI_BASE, DSI_SZ_REGS); | 3285 | dsi_mem = platform_get_resource(dsi.pdev, IORESOURCE_MEM, 0); |
3286 | if (!dsi_mem) { | ||
3287 | DSSERR("can't get IORESOURCE_MEM DSI\n"); | ||
3288 | r = -EINVAL; | ||
3289 | goto err1; | ||
3290 | } | ||
3291 | dsi.base = ioremap(dsi_mem->start, resource_size(dsi_mem)); | ||
3287 | if (!dsi.base) { | 3292 | if (!dsi.base) { |
3288 | DSSERR("can't ioremap DSI\n"); | 3293 | DSSERR("can't ioremap DSI\n"); |
3289 | r = -ENOMEM; | 3294 | r = -ENOMEM; |
diff --git a/drivers/video/omap2/dss/dss.c b/drivers/video/omap2/dss/dss.c index 72b395d69aae..ee9ce4af58b5 100644 --- a/drivers/video/omap2/dss/dss.c +++ b/drivers/video/omap2/dss/dss.c | |||
@@ -34,8 +34,6 @@ | |||
34 | #include <plat/clock.h> | 34 | #include <plat/clock.h> |
35 | #include "dss.h" | 35 | #include "dss.h" |
36 | 36 | ||
37 | #define DSS_BASE 0x48050000 | ||
38 | |||
39 | #define DSS_SZ_REGS SZ_512 | 37 | #define DSS_SZ_REGS SZ_512 |
40 | 38 | ||
41 | struct dss_reg { | 39 | struct dss_reg { |
@@ -567,8 +565,15 @@ static int dss_init(bool skip_init) | |||
567 | { | 565 | { |
568 | int r; | 566 | int r; |
569 | u32 rev; | 567 | u32 rev; |
568 | struct resource *dss_mem; | ||
570 | 569 | ||
571 | dss.base = ioremap(DSS_BASE, DSS_SZ_REGS); | 570 | dss_mem = platform_get_resource(dss.pdev, IORESOURCE_MEM, 0); |
571 | if (!dss_mem) { | ||
572 | DSSERR("can't get IORESOURCE_MEM DSS\n"); | ||
573 | r = -EINVAL; | ||
574 | goto fail0; | ||
575 | } | ||
576 | dss.base = ioremap(dss_mem->start, resource_size(dss_mem)); | ||
572 | if (!dss.base) { | 577 | if (!dss.base) { |
573 | DSSERR("can't ioremap DSS\n"); | 578 | DSSERR("can't ioremap DSS\n"); |
574 | r = -ENOMEM; | 579 | r = -ENOMEM; |
diff --git a/drivers/video/omap2/dss/rfbi.c b/drivers/video/omap2/dss/rfbi.c index 5f186484984f..6dbb95d557f8 100644 --- a/drivers/video/omap2/dss/rfbi.c +++ b/drivers/video/omap2/dss/rfbi.c | |||
@@ -36,8 +36,6 @@ | |||
36 | #include <plat/display.h> | 36 | #include <plat/display.h> |
37 | #include "dss.h" | 37 | #include "dss.h" |
38 | 38 | ||
39 | #define RFBI_BASE 0x48050800 | ||
40 | |||
41 | struct rfbi_reg { u16 idx; }; | 39 | struct rfbi_reg { u16 idx; }; |
42 | 40 | ||
43 | #define RFBI_REG(idx) ((const struct rfbi_reg) { idx }) | 41 | #define RFBI_REG(idx) ((const struct rfbi_reg) { idx }) |
@@ -1019,6 +1017,7 @@ static int omap_rfbihw_probe(struct platform_device *pdev) | |||
1019 | { | 1017 | { |
1020 | u32 rev; | 1018 | u32 rev; |
1021 | u32 l; | 1019 | u32 l; |
1020 | struct resource *rfbi_mem; | ||
1022 | 1021 | ||
1023 | rfbi.pdev = pdev; | 1022 | rfbi.pdev = pdev; |
1024 | 1023 | ||
@@ -1028,7 +1027,12 @@ static int omap_rfbihw_probe(struct platform_device *pdev) | |||
1028 | atomic_set(&rfbi.cmd_fifo_full, 0); | 1027 | atomic_set(&rfbi.cmd_fifo_full, 0); |
1029 | atomic_set(&rfbi.cmd_pending, 0); | 1028 | atomic_set(&rfbi.cmd_pending, 0); |
1030 | 1029 | ||
1031 | rfbi.base = ioremap(RFBI_BASE, SZ_256); | 1030 | rfbi_mem = platform_get_resource(rfbi.pdev, IORESOURCE_MEM, 0); |
1031 | if (!rfbi_mem) { | ||
1032 | DSSERR("can't get IORESOURCE_MEM RFBI\n"); | ||
1033 | return -EINVAL; | ||
1034 | } | ||
1035 | rfbi.base = ioremap(rfbi_mem->start, resource_size(rfbi_mem)); | ||
1032 | if (!rfbi.base) { | 1036 | if (!rfbi.base) { |
1033 | DSSERR("can't ioremap RFBI\n"); | 1037 | DSSERR("can't ioremap RFBI\n"); |
1034 | return -ENOMEM; | 1038 | return -ENOMEM; |
diff --git a/drivers/video/omap2/dss/venc.c b/drivers/video/omap2/dss/venc.c index 4a02f8eeb0d8..ef36811f6ac8 100644 --- a/drivers/video/omap2/dss/venc.c +++ b/drivers/video/omap2/dss/venc.c | |||
@@ -39,8 +39,6 @@ | |||
39 | 39 | ||
40 | #include "dss.h" | 40 | #include "dss.h" |
41 | 41 | ||
42 | #define VENC_BASE 0x48050C00 | ||
43 | |||
44 | /* Venc registers */ | 42 | /* Venc registers */ |
45 | #define VENC_REV_ID 0x00 | 43 | #define VENC_REV_ID 0x00 |
46 | #define VENC_STATUS 0x04 | 44 | #define VENC_STATUS 0x04 |
@@ -717,13 +715,20 @@ void venc_dump_regs(struct seq_file *s) | |||
717 | static int omap_venchw_probe(struct platform_device *pdev) | 715 | static int omap_venchw_probe(struct platform_device *pdev) |
718 | { | 716 | { |
719 | u8 rev_id; | 717 | u8 rev_id; |
718 | struct resource *venc_mem; | ||
719 | |||
720 | venc.pdev = pdev; | 720 | venc.pdev = pdev; |
721 | 721 | ||
722 | mutex_init(&venc.venc_lock); | 722 | mutex_init(&venc.venc_lock); |
723 | 723 | ||
724 | venc.wss_data = 0; | 724 | venc.wss_data = 0; |
725 | 725 | ||
726 | venc.base = ioremap(VENC_BASE, SZ_1K); | 726 | venc_mem = platform_get_resource(venc.pdev, IORESOURCE_MEM, 0); |
727 | if (!venc_mem) { | ||
728 | DSSERR("can't get IORESOURCE_MEM VENC\n"); | ||
729 | return -EINVAL; | ||
730 | } | ||
731 | venc.base = ioremap(venc_mem->start, resource_size(venc_mem)); | ||
727 | if (!venc.base) { | 732 | if (!venc.base) { |
728 | DSSERR("can't ioremap VENC\n"); | 733 | DSSERR("can't ioremap VENC\n"); |
729 | return -ENOMEM; | 734 | return -ENOMEM; |