diff options
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 | ||