]> Pileus Git - ~andy/linux/commitdiff
Merge branch 'imx/pinctrl' into imx/clock
authorArnd Bergmann <arnd@arndb.de>
Mon, 14 May 2012 13:30:52 +0000 (15:30 +0200)
committerArnd Bergmann <arnd@arndb.de>
Mon, 14 May 2012 13:30:52 +0000 (15:30 +0200)
Conflicts:
drivers/mmc/host/sdhci-esdhc-imx.c
drivers/net/ethernet/freescale/fec.c
drivers/spi/spi-imx.c
drivers/tty/serial/imx.c

This resolves dependencies between the pinctrl and clock changes
in imx.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
1  2 
arch/arm/mach-imx/Kconfig
arch/arm/mach-imx/mm-imx3.c
arch/arm/mach-imx/mm-imx5.c
drivers/mmc/host/sdhci-esdhc-imx.c
drivers/net/ethernet/freescale/fec.c
drivers/spi/spi-imx.c
drivers/tty/serial/imx.c

Simple merge
Simple merge
Simple merge
index ce83d6191f4a3cc398e4dd83b9f43456fb4a90c2,d190d04636a714e87da50a3f8748b17347ca225f..6b0e3f33ede3f758614e31ac201268dd9bdc4fa1
@@@ -68,10 -69,8 +69,11 @@@ struct pltfm_imx_data 
        int flags;
        u32 scratchpad;
        enum imx_esdhc_type devtype;
+       struct pinctrl *pinctrl;
        struct esdhc_platform_data boarddata;
 +      struct clk *clk_ipg;
 +      struct clk *clk_ahb;
 +      struct clk *clk_per;
  };
  
  static struct platform_device_id imx_esdhc_devtype[] = {
@@@ -460,30 -460,21 +462,36 @@@ static int __devinit sdhci_esdhc_imx_pr
        imx_data->devtype = pdev->id_entry->driver_data;
        pltfm_host->priv = imx_data;
  
 -      clk = clk_get(mmc_dev(host->mmc), NULL);
 -      if (IS_ERR(clk)) {
 -              dev_err(mmc_dev(host->mmc), "clk err\n");
 -              err = PTR_ERR(clk);
 +      imx_data->clk_ipg = devm_clk_get(&pdev->dev, "ipg");
 +      if (IS_ERR(imx_data->clk_ipg)) {
 +              err = PTR_ERR(imx_data->clk_ipg);
                goto err_clk_get;
        }
 -      clk_prepare_enable(clk);
 -      pltfm_host->clk = clk;
 +
 +      imx_data->clk_ahb = devm_clk_get(&pdev->dev, "ahb");
 +      if (IS_ERR(imx_data->clk_ahb)) {
 +              err = PTR_ERR(imx_data->clk_ahb);
 +              goto err_clk_get;
 +      }
 +
 +      imx_data->clk_per = devm_clk_get(&pdev->dev, "per");
 +      if (IS_ERR(imx_data->clk_per)) {
 +              err = PTR_ERR(imx_data->clk_per);
 +              goto err_clk_get;
 +      }
 +
 +      pltfm_host->clk = imx_data->clk_per;
 +
 +      clk_prepare_enable(imx_data->clk_per);
 +      clk_prepare_enable(imx_data->clk_ipg);
 +      clk_prepare_enable(imx_data->clk_ahb);
  
+       imx_data->pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
+       if (IS_ERR(imx_data->pinctrl)) {
+               err = PTR_ERR(imx_data->pinctrl);
+               goto pin_err;
+       }
        host->quirks |= SDHCI_QUIRK_BROKEN_TIMEOUT_VAL;
  
        if (is_imx25_esdhc(imx_data) || is_imx35_esdhc(imx_data))
@@@ -575,9 -566,9 +583,10 @@@ no_card_detect_irq
                gpio_free(boarddata->wp_gpio);
  no_card_detect_pin:
  no_board_data:
 -      clk_disable_unprepare(pltfm_host->clk);
 -      clk_put(pltfm_host->clk);
+ pin_err:
 +      clk_disable_unprepare(imx_data->clk_per);
 +      clk_disable_unprepare(imx_data->clk_ipg);
 +      clk_disable_unprepare(imx_data->clk_ahb);
  err_clk_get:
        kfree(imx_data);
  err_imx_data:
index b2494637cb60dfded6e1a03157c75160cd248839,500c106af86e089358f7a7b12d145097c63c89ef..4d3280ae56e8aa3fe58c5add20240992cce9fc35
@@@ -1610,20 -1611,18 +1612,26 @@@ fec_probe(struct platform_device *pdev
                }
        }
  
 -      fep->clk = clk_get(&pdev->dev, NULL);
 -      if (IS_ERR(fep->clk)) {
 -              ret = PTR_ERR(fep->clk);
+       pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
+       if (IS_ERR(pinctrl)) {
+               ret = PTR_ERR(pinctrl);
+               goto failed_pin;
+       }
 +      fep->clk_ipg = devm_clk_get(&pdev->dev, "ipg");
 +      if (IS_ERR(fep->clk_ipg)) {
 +              ret = PTR_ERR(fep->clk_ipg);
                goto failed_clk;
        }
 -      clk_prepare_enable(fep->clk);
 +
 +      fep->clk_ahb = devm_clk_get(&pdev->dev, "ahb");
 +      if (IS_ERR(fep->clk_ahb)) {
 +              ret = PTR_ERR(fep->clk_ahb);
 +              goto failed_clk;
 +      }
 +
 +      clk_prepare_enable(fep->clk_ahb);
 +      clk_prepare_enable(fep->clk_ipg);
  
        ret = fec_enet_init(ndev);
        if (ret)
@@@ -1646,8 -1645,9 +1654,9 @@@ failed_register
        fec_enet_mii_remove(fep);
  failed_mii_init:
  failed_init:
 -      clk_disable_unprepare(fep->clk);
 -      clk_put(fep->clk);
 +      clk_disable_unprepare(fep->clk_ahb);
 +      clk_disable_unprepare(fep->clk_ipg);
+ failed_pin:
  failed_clk:
        for (i = 0; i < FEC_IRQ_NUM; i++) {
                irq = platform_get_irq(pdev, i);
index 4b6688630b9c3297ba4b861d7aed53993bcc6769,69c9a6601f4588287f69b30110a359bf62786070..47877d687614fbeb9867ac34b8052fe83bc68b90
@@@ -846,9 -847,16 +848,15 @@@ static int __devinit spi_imx_probe(stru
                goto out_iounmap;
        }
  
 -      spi_imx->clk = clk_get(&pdev->dev, NULL);
 -      if (IS_ERR(spi_imx->clk)) {
 -              dev_err(&pdev->dev, "unable to get clock\n");
 -              ret = PTR_ERR(spi_imx->clk);
+       pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
+       if (IS_ERR(pinctrl)) {
+               ret = PTR_ERR(pinctrl);
+               goto out_free_irq;
+       }
 +      spi_imx->clk_ipg = devm_clk_get(&pdev->dev, "ipg");
 +      if (IS_ERR(spi_imx->clk_ipg)) {
 +              ret = PTR_ERR(spi_imx->clk_ipg);
                goto out_free_irq;
        }
  
index 267ec6da5af2d06a6651d48f2094699cbb1a1d7f,ec206732f68ce715aac6d12d771d04e9c880a283..4ef747307ecbb51a8ae195191243000e16c51795
@@@ -1504,22 -1505,20 +1506,28 @@@ static int serial_imx_probe(struct plat
        sport->timer.function = imx_timeout;
        sport->timer.data     = (unsigned long)sport;
  
 -      sport->clk = clk_get(&pdev->dev, "uart");
 -      if (IS_ERR(sport->clk)) {
 -              ret = PTR_ERR(sport->clk);
+       pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
+       if (IS_ERR(pinctrl)) {
+               ret = PTR_ERR(pinctrl);
+               goto unmap;
+       }
 +      sport->clk_ipg = devm_clk_get(&pdev->dev, "ipg");
 +      if (IS_ERR(sport->clk_ipg)) {
 +              ret = PTR_ERR(sport->clk_ipg);
                goto unmap;
        }
 -      clk_prepare_enable(sport->clk);
  
 -      sport->port.uartclk = clk_get_rate(sport->clk);
 +      sport->clk_per = devm_clk_get(&pdev->dev, "per");
 +      if (IS_ERR(sport->clk_per)) {
 +              ret = PTR_ERR(sport->clk_per);
 +              goto unmap;
 +      }
 +
 +      clk_prepare_enable(sport->clk_per);
 +      clk_prepare_enable(sport->clk_ipg);
 +
 +      sport->port.uartclk = clk_get_rate(sport->clk_per);
  
        imx_ports[sport->port.line] = sport;