]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/pcmcia/sa1111_generic.c
Merge tag 'mac80211-for-davem-2015-09-22' of git://git.kernel.org/pub/scm/linux/kerne...
[karo-tx-linux.git] / drivers / pcmcia / sa1111_generic.c
index 80b8e9d052752dc35c9180788ecf650ab7cae49b..a1531feb8460c3041ec55f629dcc26dcfca55d9b 100644 (file)
@@ -135,8 +135,13 @@ int sa1111_pcmcia_add(struct sa1111_dev *dev, struct pcmcia_low_level *ops,
        int (*add)(struct soc_pcmcia_socket *))
 {
        struct sa1111_pcmcia_socket *s;
+       struct clk *clk;
        int i, ret = 0;
 
+       clk = devm_clk_get(&dev->dev, NULL);
+       if (IS_ERR(clk))
+               return PTR_ERR(clk);
+
        ops->socket_state = sa1111_pcmcia_socket_state;
 
        for (i = 0; i < ops->nr; i++) {
@@ -145,12 +150,8 @@ int sa1111_pcmcia_add(struct sa1111_dev *dev, struct pcmcia_low_level *ops,
                        return -ENOMEM;
 
                s->soc.nr = ops->first + i;
-               s->soc.clk = clk_get(&dev->dev, NULL);
-               if (IS_ERR(s->soc.clk)) {
-                       ret = PTR_ERR(s->soc.clk);
-                       kfree(s);
-                       return ret;
-               }
+               s->soc.clk = clk;
+
                soc_pcmcia_init_one(&s->soc, ops, &dev->dev);
                s->dev = dev;
                if (s->soc.nr) {
@@ -226,7 +227,6 @@ static int pcmcia_remove(struct sa1111_dev *dev)
        for (; s; s = next) {
                next = s->next;
                soc_pcmcia_remove_one(&s->soc);
-               clk_put(s->soc.clk);
                kfree(s);
        }