diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-22 23:43:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-22 23:43:40 -0400 |
commit | 437538267b672f9320833907f1b5acbb2605f4be (patch) | |
tree | d10173b35a5b86bc037bb2ece1b406d5575a2094 /drivers/video/omap2/dss/rfbi.c | |
parent | 9586c959bfc917695893bef0102433a7d0675691 (diff) | |
parent | 6bff98b455cf3e666fd0e3d0d908eba874de0eee (diff) |
Merge tag 'fbdev-updates-for-3.4' of git://github.com/schandinat/linux-2.6
Pull fbdev updates for 3.4 from Florian Tobias Schandinat:
- drivers for Samsung Exynos MIPI DSI and display port
- i740fb to support those old Intel chips
- large updates to OMAP, viafb and sh_mobile_lcdcfb
- some updates to s3c-fb and udlfb, few patches to others
Fix up conflicts in drivers/video/udlfb.c due to Key Sievers' fix making
it in twice.
* tag 'fbdev-updates-for-3.4' of git://github.com/schandinat/linux-2.6: (156 commits)
Revert "video:uvesafb: Fix oops that uvesafb try to execute NX-protected page"
OMAPDSS: register dss drivers in module init
video: pxafb: add clk_prepare/clk_unprepare calls
fbdev: bfin_adv7393fb: Drop needless include
fbdev: sh_mipi_dsi: add extra phyctrl for sh_mipi_dsi_info
fbdev: remove dependency of FB_SH_MOBILE_MERAM from FB_SH_MOBILE_LCDC
Revert "MAINTAINERS: add entry for exynos mipi display drivers"
fbdev: da8xx: add support for SP10Q010 display
fbdev: da8xx:: fix reporting of the display timing info
drivers/video/pvr2fb.c: ensure arguments to request_irq and free_irq are compatible
OMAPDSS: APPLY: fix clearing shadow dirty flag with manual update
fbdev: sh_mobile_meram: Implement system suspend/resume
fbdev: sh_mobile_meram: Remove unneeded sanity checks
fbdev: sh_mobile_meram: Don't perform update in register operation
arm: mach-shmobile: Constify sh_mobile_meram_cfg structures
fbdev: sh_mobile_lcdc: Don't store copy of platform data
fbdev: sh_mobile_meram: Remove unused sh_mobile_meram_icb_cfg fields
arm: mach-shmobile: Don't set MERAM ICB numbers in platform data
fbdev: sh_mobile_meram: Allocate ICBs automatically
fbdev: sh_mobile_meram: Use genalloc to manage MERAM allocation
...
Diffstat (limited to 'drivers/video/omap2/dss/rfbi.c')
-rw-r--r-- | drivers/video/omap2/dss/rfbi.c | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/drivers/video/omap2/dss/rfbi.c b/drivers/video/omap2/dss/rfbi.c index 55f398014f33..788a0ef6323a 100644 --- a/drivers/video/omap2/dss/rfbi.c +++ b/drivers/video/omap2/dss/rfbi.c | |||
@@ -922,35 +922,34 @@ static int omap_rfbihw_probe(struct platform_device *pdev) | |||
922 | rfbi_mem = platform_get_resource(rfbi.pdev, IORESOURCE_MEM, 0); | 922 | rfbi_mem = platform_get_resource(rfbi.pdev, IORESOURCE_MEM, 0); |
923 | if (!rfbi_mem) { | 923 | if (!rfbi_mem) { |
924 | DSSERR("can't get IORESOURCE_MEM RFBI\n"); | 924 | DSSERR("can't get IORESOURCE_MEM RFBI\n"); |
925 | r = -EINVAL; | 925 | return -EINVAL; |
926 | goto err_ioremap; | ||
927 | } | 926 | } |
928 | rfbi.base = ioremap(rfbi_mem->start, resource_size(rfbi_mem)); | 927 | |
928 | rfbi.base = devm_ioremap(&pdev->dev, rfbi_mem->start, | ||
929 | resource_size(rfbi_mem)); | ||
929 | if (!rfbi.base) { | 930 | if (!rfbi.base) { |
930 | DSSERR("can't ioremap RFBI\n"); | 931 | DSSERR("can't ioremap RFBI\n"); |
931 | r = -ENOMEM; | 932 | return -ENOMEM; |
932 | goto err_ioremap; | ||
933 | } | 933 | } |
934 | 934 | ||
935 | pm_runtime_enable(&pdev->dev); | ||
936 | |||
937 | r = rfbi_runtime_get(); | ||
938 | if (r) | ||
939 | goto err_get_rfbi; | ||
940 | |||
941 | msleep(10); | ||
942 | |||
943 | clk = clk_get(&pdev->dev, "ick"); | 935 | clk = clk_get(&pdev->dev, "ick"); |
944 | if (IS_ERR(clk)) { | 936 | if (IS_ERR(clk)) { |
945 | DSSERR("can't get ick\n"); | 937 | DSSERR("can't get ick\n"); |
946 | r = PTR_ERR(clk); | 938 | return PTR_ERR(clk); |
947 | goto err_get_ick; | ||
948 | } | 939 | } |
949 | 940 | ||
950 | rfbi.l4_khz = clk_get_rate(clk) / 1000; | 941 | rfbi.l4_khz = clk_get_rate(clk) / 1000; |
951 | 942 | ||
952 | clk_put(clk); | 943 | clk_put(clk); |
953 | 944 | ||
945 | pm_runtime_enable(&pdev->dev); | ||
946 | |||
947 | r = rfbi_runtime_get(); | ||
948 | if (r) | ||
949 | goto err_runtime_get; | ||
950 | |||
951 | msleep(10); | ||
952 | |||
954 | rev = rfbi_read_reg(RFBI_REVISION); | 953 | rev = rfbi_read_reg(RFBI_REVISION); |
955 | dev_dbg(&pdev->dev, "OMAP RFBI rev %d.%d\n", | 954 | dev_dbg(&pdev->dev, "OMAP RFBI rev %d.%d\n", |
956 | FLD_GET(rev, 7, 4), FLD_GET(rev, 3, 0)); | 955 | FLD_GET(rev, 7, 4), FLD_GET(rev, 3, 0)); |
@@ -959,19 +958,14 @@ static int omap_rfbihw_probe(struct platform_device *pdev) | |||
959 | 958 | ||
960 | return 0; | 959 | return 0; |
961 | 960 | ||
962 | err_get_ick: | 961 | err_runtime_get: |
963 | rfbi_runtime_put(); | ||
964 | err_get_rfbi: | ||
965 | pm_runtime_disable(&pdev->dev); | 962 | pm_runtime_disable(&pdev->dev); |
966 | iounmap(rfbi.base); | ||
967 | err_ioremap: | ||
968 | return r; | 963 | return r; |
969 | } | 964 | } |
970 | 965 | ||
971 | static int omap_rfbihw_remove(struct platform_device *pdev) | 966 | static int omap_rfbihw_remove(struct platform_device *pdev) |
972 | { | 967 | { |
973 | pm_runtime_disable(&pdev->dev); | 968 | pm_runtime_disable(&pdev->dev); |
974 | iounmap(rfbi.base); | ||
975 | return 0; | 969 | return 0; |
976 | } | 970 | } |
977 | 971 | ||