]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/tty/serial/amba-pl011.c
Merge tag 'pinctrl-for-v3.11-1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[karo-tx-linux.git] / drivers / tty / serial / amba-pl011.c
index ad41319d1d9b028eaeba3d0dcd08db5e745c0b78..28b35ad9c6cd361818d94c0cde6ee2aa987979c0 100644 (file)
@@ -150,10 +150,6 @@ struct pl011_dmatx_data {
 struct uart_amba_port {
        struct uart_port        port;
        struct clk              *clk;
-       /* Two optional pin states - default & sleep */
-       struct pinctrl          *pinctrl;
-       struct pinctrl_state    *pins_default;
-       struct pinctrl_state    *pins_sleep;
        const struct vendor_data *vendor;
        unsigned int            dmacr;          /* dma control reg */
        unsigned int            im;             /* interrupt mask */
@@ -1479,12 +1475,7 @@ static int pl011_hwinit(struct uart_port *port)
        int retval;
 
        /* Optionaly enable pins to be muxed in and configured */
-       if (!IS_ERR(uap->pins_default)) {
-               retval = pinctrl_select_state(uap->pinctrl, uap->pins_default);
-               if (retval)
-                       dev_err(port->dev,
-                               "could not set default pins\n");
-       }
+       pinctrl_pm_select_default_state(port->dev);
 
        /*
         * Try to enable the clock producer.
@@ -1610,7 +1601,6 @@ static void pl011_shutdown(struct uart_port *port)
 {
        struct uart_amba_port *uap = (struct uart_amba_port *)port;
        unsigned int cr;
-       int retval;
 
        /*
         * disable all interrupts
@@ -1653,13 +1643,7 @@ static void pl011_shutdown(struct uart_port *port)
         */
        clk_disable_unprepare(uap->clk);
        /* Optionally let pins go into sleep states */
-       if (!IS_ERR(uap->pins_sleep)) {
-               retval = pinctrl_select_state(uap->pinctrl, uap->pins_sleep);
-               if (retval)
-                       dev_err(port->dev,
-                               "could not set pins to sleep state\n");
-       }
-
+       pinctrl_pm_select_sleep_state(port->dev);
 
        if (uap->port.dev->platform_data) {
                struct amba_pl011_data *plat;
@@ -2012,12 +1996,7 @@ static int __init pl011_console_setup(struct console *co, char *options)
                return -ENODEV;
 
        /* Allow pins to be muxed in and configured */
-       if (!IS_ERR(uap->pins_default)) {
-               ret = pinctrl_select_state(uap->pinctrl, uap->pins_default);
-               if (ret)
-                       dev_err(uap->port.dev,
-                               "could not set default pins\n");
-       }
+       pinctrl_pm_select_default_state(uap->port.dev);
 
        ret = clk_prepare(uap->clk);
        if (ret)
@@ -2131,21 +2110,6 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
                goto out;
        }
 
-       uap->pinctrl = devm_pinctrl_get(&dev->dev);
-       if (IS_ERR(uap->pinctrl)) {
-               ret = PTR_ERR(uap->pinctrl);
-               goto out;
-       }
-       uap->pins_default = pinctrl_lookup_state(uap->pinctrl,
-                                                PINCTRL_STATE_DEFAULT);
-       if (IS_ERR(uap->pins_default))
-               dev_err(&dev->dev, "could not get default pinstate\n");
-
-       uap->pins_sleep = pinctrl_lookup_state(uap->pinctrl,
-                                              PINCTRL_STATE_SLEEP);
-       if (IS_ERR(uap->pins_sleep))
-               dev_dbg(&dev->dev, "could not get sleep pinstate\n");
-
        uap->clk = devm_clk_get(&dev->dev, NULL);
        if (IS_ERR(uap->clk)) {
                ret = PTR_ERR(uap->clk);