@@ -272,7 +272,7 @@ struct mx2_camera_dev {
272
272
struct device * dev ;
273
273
struct soc_camera_host soc_host ;
274
274
struct soc_camera_device * icd ;
275
- struct clk * clk_csi , * clk_emma ;
275
+ struct clk * clk_csi , * clk_emma_ahb , * clk_emma_ipg ;
276
276
277
277
unsigned int irq_csi , irq_emma ;
278
278
void __iomem * base_csi , * base_emma ;
@@ -1633,23 +1633,34 @@ static int __devinit mx27_camera_emma_init(struct mx2_camera_dev *pcdev)
1633
1633
goto exit_iounmap ;
1634
1634
}
1635
1635
1636
- pcdev -> clk_emma = clk_get (NULL , "emma" );
1637
- if (IS_ERR (pcdev -> clk_emma )) {
1638
- err = PTR_ERR (pcdev -> clk_emma );
1636
+ pcdev -> clk_emma_ipg = clk_get (pcdev -> dev , "emma-ipg " );
1637
+ if (IS_ERR (pcdev -> clk_emma_ipg )) {
1638
+ err = PTR_ERR (pcdev -> clk_emma_ipg );
1639
1639
goto exit_free_irq ;
1640
1640
}
1641
1641
1642
- clk_prepare_enable (pcdev -> clk_emma );
1642
+ clk_prepare_enable (pcdev -> clk_emma_ipg );
1643
+
1644
+ pcdev -> clk_emma_ahb = clk_get (pcdev -> dev , "emma-ahb" );
1645
+ if (IS_ERR (pcdev -> clk_emma_ahb )) {
1646
+ err = PTR_ERR (pcdev -> clk_emma_ahb );
1647
+ goto exit_clk_emma_ipg_put ;
1648
+ }
1649
+
1650
+ clk_prepare_enable (pcdev -> clk_emma_ahb );
1643
1651
1644
1652
err = mx27_camera_emma_prp_reset (pcdev );
1645
1653
if (err )
1646
- goto exit_clk_emma_put ;
1654
+ goto exit_clk_emma_ahb_put ;
1647
1655
1648
1656
return err ;
1649
1657
1650
- exit_clk_emma_put :
1651
- clk_disable_unprepare (pcdev -> clk_emma );
1652
- clk_put (pcdev -> clk_emma );
1658
+ exit_clk_emma_ahb_put :
1659
+ clk_disable_unprepare (pcdev -> clk_emma_ahb );
1660
+ clk_put (pcdev -> clk_emma_ahb );
1661
+ exit_clk_emma_ipg_put :
1662
+ clk_disable_unprepare (pcdev -> clk_emma_ipg );
1663
+ clk_put (pcdev -> clk_emma_ipg );
1653
1664
exit_free_irq :
1654
1665
free_irq (pcdev -> irq_emma , pcdev );
1655
1666
exit_iounmap :
@@ -1685,7 +1696,7 @@ static int __devinit mx2_camera_probe(struct platform_device *pdev)
1685
1696
goto exit ;
1686
1697
}
1687
1698
1688
- pcdev -> clk_csi = clk_get (& pdev -> dev , NULL );
1699
+ pcdev -> clk_csi = clk_get (& pdev -> dev , "ahb" );
1689
1700
if (IS_ERR (pcdev -> clk_csi )) {
1690
1701
dev_err (& pdev -> dev , "Could not get csi clock\n" );
1691
1702
err = PTR_ERR (pcdev -> clk_csi );
@@ -1785,8 +1796,10 @@ static int __devinit mx2_camera_probe(struct platform_device *pdev)
1785
1796
eallocctx :
1786
1797
if (cpu_is_mx27 ()) {
1787
1798
free_irq (pcdev -> irq_emma , pcdev );
1788
- clk_disable_unprepare (pcdev -> clk_emma );
1789
- clk_put (pcdev -> clk_emma );
1799
+ clk_disable_unprepare (pcdev -> clk_emma_ipg );
1800
+ clk_put (pcdev -> clk_emma_ipg );
1801
+ clk_disable_unprepare (pcdev -> clk_emma_ahb );
1802
+ clk_put (pcdev -> clk_emma_ahb );
1790
1803
iounmap (pcdev -> base_emma );
1791
1804
release_mem_region (pcdev -> res_emma -> start , resource_size (pcdev -> res_emma ));
1792
1805
}
@@ -1825,8 +1838,10 @@ static int __devexit mx2_camera_remove(struct platform_device *pdev)
1825
1838
iounmap (pcdev -> base_csi );
1826
1839
1827
1840
if (cpu_is_mx27 ()) {
1828
- clk_disable_unprepare (pcdev -> clk_emma );
1829
- clk_put (pcdev -> clk_emma );
1841
+ clk_disable_unprepare (pcdev -> clk_emma_ipg );
1842
+ clk_put (pcdev -> clk_emma_ipg );
1843
+ clk_disable_unprepare (pcdev -> clk_emma_ahb );
1844
+ clk_put (pcdev -> clk_emma_ahb );
1830
1845
iounmap (pcdev -> base_emma );
1831
1846
res = pcdev -> res_emma ;
1832
1847
release_mem_region (res -> start , resource_size (res ));
0 commit comments