Merge branch 'imx/pinctrl' into imx/dt
authorArnd Bergmann <arnd@arndb.de>
Mon, 14 May 2012 13:23:13 +0000 (15:23 +0200)
committerArnd Bergmann <arnd@arndb.de>
Mon, 14 May 2012 13:23:13 +0000 (15:23 +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 some simply but annoying conflicts.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
1  2 
arch/arm/mach-imx/Kconfig
arch/arm/mach-imx/imx53-dt.c
arch/arm/mach-imx/mach-imx6q.c
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
index 095c5c5de7bc02082a8e881e28fcdbcc0c723dbf,3df360a52c17da001048bf121bde520037c897be..b47e98b7d539fc9bce4cd4f0060004f086d528c4
@@@ -79,43 -76,17 +80,49 @@@ static int ksz9021rn_phy_fixup(struct p
        return 0;
  }
  
 +static void __init imx6q_sabrelite_cko1_setup(void)
 +{
 +      struct clk *cko1_sel, *ahb, *cko1;
 +      unsigned long rate;
 +
 +      cko1_sel = clk_get_sys(NULL, "cko1_sel");
 +      ahb = clk_get_sys(NULL, "ahb");
 +      cko1 = clk_get_sys(NULL, "cko1");
 +      if (IS_ERR(cko1_sel) || IS_ERR(ahb) || IS_ERR(cko1)) {
 +              pr_err("cko1 setup failed!\n");
 +              goto put_clk;
 +      }
 +      clk_set_parent(cko1_sel, ahb);
 +      rate = clk_round_rate(cko1, 16000000);
 +      clk_set_rate(cko1, rate);
 +      clk_register_clkdev(cko1, NULL, "0-000a");
 +put_clk:
 +      if (!IS_ERR(cko1_sel))
 +              clk_put(cko1_sel);
 +      if (!IS_ERR(ahb))
 +              clk_put(ahb);
 +      if (!IS_ERR(cko1))
 +              clk_put(cko1);
 +}
 +
 +static void __init imx6q_sabrelite_init(void)
 +{
 +      if (IS_ENABLED(CONFIG_PHYLIB))
 +              phy_register_fixup_for_uid(PHY_ID_KSZ9021, MICREL_PHY_ID_MASK,
 +                              ksz9021rn_phy_fixup);
 +      imx6q_sabrelite_cko1_setup();
 +}
 +
  static void __init imx6q_init_machine(void)
  {
+       /*
+        * This should be removed when all imx6q boards have pinctrl
+        * states for devices defined in device tree.
+        */
+       pinctrl_provide_dummies();
        if (of_machine_is_compatible("fsl,imx6q-sabrelite"))
 -              phy_register_fixup_for_uid(PHY_ID_KSZ9021, MICREL_PHY_ID_MASK,
 -                                         ksz9021rn_phy_fixup);
 +              imx6q_sabrelite_init();
  
        of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
  
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;
  
This page took 0.034271 seconds and 5 git commands to generate.