lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 28 Jan 2019 09:58:13 -0300
From:   Paul Cercueil <paul@...pouillou.net>
To:     Ulf Hansson <ulf.hansson@...aro.org>
Cc:     Rob Herring <robh+dt@...nel.org>,
        Mark Rutland <mark.rutland@....com>,
        Ralf Baechle <ralf@...ux-mips.org>,
        Paul Burton <paul.burton@...s.com>,
        James Hogan <jhogan@...nel.org>,
        Linus Walleij <linus.walleij@...aro.org>,
        DTML <devicetree@...r.kernel.org>, linux-mips@...r.kernel.org,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        "linux-mmc@...r.kernel.org" <linux-mmc@...r.kernel.org>
Subject: Re: [PATCH 1/3] mmc: jz4740: Remove platform data and use standard
 APIs

Hi,

Le lun. 28 janv. 2019 à 9:02, Ulf Hansson <ulf.hansson@...aro.org> a 
écrit :
> On Fri, 25 Jan 2019 at 21:09, Paul Cercueil <paul@...pouillou.net> 
> wrote:
>> 
>>  Drop the custom code to get the 'cd' and 'wp' GPIOs. The driver now
>>  calls mmc_of_parse() which will init these from devicetree or
>>  device properties.
>> 
>>  Also drop the custom code to get the 'power' GPIO. The MMC core
>>  provides us with the means to power the MMC card through an external
>>  regulator.
>> 
>>  Signed-off-by: Paul Cercueil <paul@...pouillou.net>
> 
> Applied for next, thanks!
> 
> Should I also pick up the other two MIPS patches or you want to funnel
> those through the MIPS soc tree?

I'd prefer through the MIPS tree, then I can still push some other 
patches
on top of these in the 5.1 dev window.

>>  ---
>>   drivers/mmc/host/jz4740_mmc.c | 71 
>> +++++++++----------------------------------
>>   1 file changed, 14 insertions(+), 57 deletions(-)
>> 
>>  diff --git a/drivers/mmc/host/jz4740_mmc.c 
>> b/drivers/mmc/host/jz4740_mmc.c
>>  index 33215d66afa2..e41c7230815f 100644
>>  --- a/drivers/mmc/host/jz4740_mmc.c
>>  +++ b/drivers/mmc/host/jz4740_mmc.c
>>  @@ -21,7 +21,6 @@
>>   #include <linux/dmaengine.h>
>>   #include <linux/dma-mapping.h>
>>   #include <linux/err.h>
>>  -#include <linux/gpio/consumer.h>
>>   #include <linux/interrupt.h>
>>   #include <linux/io.h>
>>   #include <linux/irq.h>
>>  @@ -36,7 +35,6 @@
>>   #include <asm/cacheflush.h>
>> 
>>   #include <asm/mach-jz4740/dma.h>
>>  -#include <asm/mach-jz4740/jz4740_mmc.h>
>> 
>>   #define JZ_REG_MMC_STRPCL      0x00
>>   #define JZ_REG_MMC_STATUS      0x04
>>  @@ -148,9 +146,7 @@ enum jz4780_cookie {
>>   struct jz4740_mmc_host {
>>          struct mmc_host *mmc;
>>          struct platform_device *pdev;
>>  -       struct jz4740_mmc_platform_data *pdata;
>>          struct clk *clk;
>>  -       struct gpio_desc *power;
>> 
>>          enum jz4740_mmc_version version;
>> 
>>  @@ -894,16 +890,16 @@ static void jz4740_mmc_set_ios(struct 
>> mmc_host *mmc, struct mmc_ios *ios)
>>          switch (ios->power_mode) {
>>          case MMC_POWER_UP:
>>                  jz4740_mmc_reset(host);
>>  -               if (host->power)
>>  -                       gpiod_set_value(host->power, 1);
>>  +               if (!IS_ERR(mmc->supply.vmmc))
>>  +                       mmc_regulator_set_ocr(mmc, 
>> mmc->supply.vmmc, ios->vdd);
>>                  host->cmdat |= JZ_MMC_CMDAT_INIT;
>>                  clk_prepare_enable(host->clk);
>>                  break;
>>          case MMC_POWER_ON:
>>                  break;
>>          default:
>>  -               if (host->power)
>>  -                       gpiod_set_value(host->power, 0);
>>  +               if (!IS_ERR(mmc->supply.vmmc))
>>  +                       mmc_regulator_set_ocr(mmc, 
>> mmc->supply.vmmc, 0);
>>                  clk_disable_unprepare(host->clk);
>>                  break;
>>          }
>>  @@ -936,38 +932,6 @@ static const struct mmc_host_ops 
>> jz4740_mmc_ops = {
>>          .enable_sdio_irq = jz4740_mmc_enable_sdio_irq,
>>   };
>> 
>>  -static int jz4740_mmc_request_gpios(struct jz4740_mmc_host *host,
>>  -                                   struct mmc_host *mmc,
>>  -                                   struct platform_device *pdev)
>>  -{
>>  -       struct jz4740_mmc_platform_data *pdata = 
>> dev_get_platdata(&pdev->dev);
>>  -       int ret = 0;
>>  -
>>  -       if (!pdata)
>>  -               return 0;
>>  -
>>  -       if (!pdata->card_detect_active_low)
>>  -               mmc->caps2 |= MMC_CAP2_CD_ACTIVE_HIGH;
>>  -       if (!pdata->read_only_active_low)
>>  -               mmc->caps2 |= MMC_CAP2_RO_ACTIVE_HIGH;
>>  -
>>  -       /*
>>  -        * Get optional card detect and write protect GPIOs,
>>  -        * only back out on probe deferral.
>>  -        */
>>  -       ret = mmc_gpiod_request_cd(mmc, "cd", 0, false, 0, NULL);
>>  -       if (ret == -EPROBE_DEFER)
>>  -               return ret;
>>  -
>>  -       ret = mmc_gpiod_request_ro(mmc, "wp", 0, false, 0, NULL);
>>  -       if (ret == -EPROBE_DEFER)
>>  -               return ret;
>>  -
>>  -       host->power = devm_gpiod_get_optional(&pdev->dev, "power",
>>  -                                             GPIOD_OUT_HIGH);
>>  -       return PTR_ERR_OR_ZERO(host->power);
>>  -}
>>  -
>>   static const struct of_device_id jz4740_mmc_of_match[] = {
>>          { .compatible = "ingenic,jz4740-mmc", .data = (void *) 
>> JZ_MMC_JZ4740 },
>>          { .compatible = "ingenic,jz4725b-mmc", .data = (void 
>> *)JZ_MMC_JZ4725B },
>>  @@ -982,9 +946,6 @@ static int jz4740_mmc_probe(struct 
>> platform_device* pdev)
>>          struct mmc_host *mmc;
>>          struct jz4740_mmc_host *host;
>>          const struct of_device_id *match;
>>  -       struct jz4740_mmc_platform_data *pdata;
>>  -
>>  -       pdata = dev_get_platdata(&pdev->dev);
>> 
>>          mmc = mmc_alloc_host(sizeof(struct jz4740_mmc_host), 
>> &pdev->dev);
>>          if (!mmc) {
>>  @@ -993,29 +954,25 @@ static int jz4740_mmc_probe(struct 
>> platform_device* pdev)
>>          }
>> 
>>          host = mmc_priv(mmc);
>>  -       host->pdata = pdata;
>> 
>>          match = of_match_device(jz4740_mmc_of_match, &pdev->dev);
>>          if (match) {
>>                  host->version = (enum 
>> jz4740_mmc_version)match->data;
>>  -               ret = mmc_of_parse(mmc);
>>  -               if (ret) {
>>  -                       if (ret != -EPROBE_DEFER)
>>  -                               dev_err(&pdev->dev,
>>  -                                       "could not parse of data: 
>> %d\n", ret);
>>  -                       goto err_free_host;
>>  -               }
>>          } else {
>>                  /* JZ4740 should be the only one using legacy probe 
>> */
>>                  host->version = JZ_MMC_JZ4740;
>>  -               mmc->caps |= MMC_CAP_SDIO_IRQ;
>>  -               if (!(pdata && pdata->data_1bit))
>>  -                       mmc->caps |= MMC_CAP_4_BIT_DATA;
>>  -               ret = jz4740_mmc_request_gpios(host, mmc, pdev);
>>  -               if (ret)
>>  -                       goto err_free_host;
>>          }
>> 
>>  +       ret = mmc_of_parse(mmc);
>>  +       if (ret) {
>>  +               if (ret != -EPROBE_DEFER)
>>  +                       dev_err(&pdev->dev,
>>  +                               "could not parse device properties: 
>> %d\n", ret);
>>  +               goto err_free_host;
>>  +       }
>>  +
>>  +       mmc_regulator_get_supply(mmc);
>>  +
>>          host->irq = platform_get_irq(pdev, 0);
>>          if (host->irq < 0) {
>>                  ret = host->irq;
>>  --
>>  2.11.0
>> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ