Re: [PATCH] mmc: meson-gx: add device reset
From: Ulf Hansson
Date: Thu Apr 26 2018 - 09:54:56 EST
On 26 April 2018 at 12:38, Jerome Brunet <jbrunet@xxxxxxxxxxxx> wrote:
> Trigger the reset line of the mmc controller while probing, if available
> The reset should be optional for now, at least until all related DT node
> have the reset property
>
> Signed-off-by: Jerome Brunet <jbrunet@xxxxxxxxxxxx>
> ---
> Documentation/devicetree/bindings/mmc/amlogic,meson-gx.txt | 2 ++
Please move DT doc changes into separate patches. And make the DT
maintainers are in to field as well.
Otherwise, this looks good to me.
Kind regards
Uffe
> drivers/mmc/host/meson-gx-mmc.c | 6 ++++++
> 2 files changed, 8 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/mmc/amlogic,meson-gx.txt b/Documentation/devicetree/bindings/mmc/amlogic,meson-gx.txt
> index 5add8d7d855f..ba434375e7f2 100644
> --- a/Documentation/devicetree/bindings/mmc/amlogic,meson-gx.txt
> +++ b/Documentation/devicetree/bindings/mmc/amlogic,meson-gx.txt
> @@ -20,6 +20,7 @@ Required properties:
> "clkin1" - Other parent clock of internal mux
> The driver has an internal mux clock which switches between clkin0 and clkin1 depending on the
> clock rate requested by the MMC core.
> +- reset : phandle of the internal reset line
>
> Example:
>
> @@ -30,4 +31,5 @@ Example:
> clocks = <&clkc CLKID_SD_EMMC_A>, <&xtal>, <&clkc CLKID_FCLK_DIV2>;
> clock-names = "core", "clkin0", "clkin1";
> pinctrl-0 = <&emmc_pins>;
> + resets = <&reset RESET_SD_EMMC_A>;
> };
> diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c
> index 55bbd67177df..9d214622c8cf 100644
> --- a/drivers/mmc/host/meson-gx-mmc.c
> +++ b/drivers/mmc/host/meson-gx-mmc.c
> @@ -35,6 +35,7 @@
> #include <linux/clk.h>
> #include <linux/clk-provider.h>
> #include <linux/regulator/consumer.h>
> +#include <linux/reset.h>
> #include <linux/interrupt.h>
> #include <linux/bitfield.h>
> #include <linux/pinctrl/consumer.h>
> @@ -1212,6 +1213,11 @@ static int meson_mmc_probe(struct platform_device *pdev)
> goto free_host;
> }
>
> + ret = device_reset_optional(&pdev->dev);
> + if (ret)
> + if (ret != -EPROBE_DEFER)
> + dev_err(&pdev->dev, "device reset failed: %d\n", ret);
> +
> res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> host->regs = devm_ioremap_resource(&pdev->dev, res);
> if (IS_ERR(host->regs)) {
> --
> 2.14.3
>