RE: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension

2018-05-03 Thread Liming Sun
Thanks. Updated in v6. Removed the "Cc: sta...@kernel.org" which is a typo. 
Will do it later for stable branch. Also addressed the comment to use MACROs in 
patch 1/3.

> -Original Message-
> From: Jaehoon Chung [mailto:jh80.ch...@samsung.com]
> Sent: Wednesday, May 2, 2018 4:17 AM
> To: Liming Sun <l...@mellanox.com>; Ulf Hansson
> <ulf.hans...@linaro.org>; Rob Herring <robh...@kernel.org>; Mark
> Rutland <mark.rutl...@arm.com>; Catalin Marinas
> <catalin.mari...@arm.com>; Will Deacon <will.dea...@arm.com>
> Cc: linux-...@vger.kernel.org; devicet...@vger.kernel.org; linux-
> ker...@vger.kernel.org; sta...@kernel.org
> Subject: Re: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension
> 
> Hi,
> 
> On 05/02/2018 03:19 AM, Liming Sun wrote:
> > This commit adds extension to the dw_mmc driver for Mellanox BlueField
> > SoC. It updates the UHS_REG_EXT register to bring up the eMMC card on
> > this SoC.
> 
> Could you heck Shawn's comments? And add the minor comment.
> 
> >
> > Cc: sta...@kernel.org
> > Signed-off-by: Liming Sun <l...@mellanox.com>
> > Reviewed-by: David Woods <dwo...@mellanox.com>
> > ---
> >  drivers/mmc/host/Kconfig|  9 +
> >  drivers/mmc/host/Makefile   |  1 +
> >  drivers/mmc/host/dw_mmc-bluefield.c | 72
> +
> >  3 files changed, 82 insertions(+)
> >  create mode 100644 drivers/mmc/host/dw_mmc-bluefield.c
> >
> > diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
> > index 9589f9c..26ac6b5 100644
> > --- a/drivers/mmc/host/Kconfig
> > +++ b/drivers/mmc/host/Kconfig
> > @@ -717,6 +717,15 @@ config MMC_DW_K3
> >   Synopsys DesignWare Memory Card Interface driver. Select this
> option
> >   for platforms based on Hisilicon K3 SoC's.
> >
> > +config MMC_DW_BLUEFIELD
> > +   tristate "BlueField specific extensions for Synopsys DW Memory Card
> Interface"
> > +   depends on MMC_DW
> > +   select MMC_DW_PLTFM
> > +   help
> > + This selects support for Mellanox BlueField SoC specific extensions
> to
> > + the Synopsys DesignWare Memory Card Interface driver. Select this
> > + option for platforms based on Mellanox BlueField SoC's.
> > +
> >  config MMC_DW_PCI
> > tristate "Synopsys Designware MCI support on PCI bus"
> > depends on MMC_DW && PCI
> > diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
> > index 6aead24..267b3f1 100644
> > --- a/drivers/mmc/host/Makefile
> > +++ b/drivers/mmc/host/Makefile
> > @@ -55,6 +55,7 @@ obj-$(CONFIG_MMC_DW_K3)   += dw_mmc-
> k3.o
> >  obj-$(CONFIG_MMC_DW_PCI)   += dw_mmc-pci.o
> >  obj-$(CONFIG_MMC_DW_ROCKCHIP)  += dw_mmc-rockchip.o
> >  obj-$(CONFIG_MMC_DW_ZX)+= dw_mmc-zx.o
> > +obj-$(CONFIG_MMC_DW_BLUEFIELD) += dw_mmc-bluefield.o
> >  obj-$(CONFIG_MMC_SH_MMCIF) += sh_mmcif.o
> >  obj-$(CONFIG_MMC_JZ4740)   += jz4740_mmc.o
> >  obj-$(CONFIG_MMC_VUB300)   += vub300.o
> > diff --git a/drivers/mmc/host/dw_mmc-bluefield.c
> b/drivers/mmc/host/dw_mmc-bluefield.c
> > new file mode 100644
> > index 000..12067b1
> > --- /dev/null
> > +++ b/drivers/mmc/host/dw_mmc-bluefield.c
> > @@ -0,0 +1,72 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright (C) 2018 Mellanox Technologies.
> > + *
> > + * This program is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License as published by
> > + * the Free Software Foundation; either version 2 of the License, or
> > + * (at your option) any later version.
> > + */
> > +
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +
> > +#include "dw_mmc.h"
> > +#include "dw_mmc-pltfm.h"
> > +
> > +static void dw_mci_bluefield_set_ios(struct dw_mci *host, struct
> mmc_ios *ios)
> > +{
> > +   u32 regs;
> > +
> > +   /* Set drive=4 (bit 29:23) and sample=2 (bit 22:16) in UHS_REG_EXT.
> */
> > +   regs = mci_readl(host, UHS_REG_EXT);
> > +   regs = (regs & ~0x3F10 & ~0x7F) | (4 << 23) | (2 << 16);
> 
> I want to use the macro. Not (4 << 23)..
> 
> > +   mci_writel(host, UHS_REG_EXT, regs);
> > +}
> > +
> > +static const struct dw_mci_drv_data bluefield_drv_data = {
> > +   .set_ios  

RE: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension

2018-05-03 Thread Liming Sun
Thanks. Updated in v6. Removed the "Cc: sta...@kernel.org" which is a typo. 
Will do it later for stable branch. Also addressed the comment to use MACROs in 
patch 1/3.

> -Original Message-
> From: Jaehoon Chung [mailto:jh80.ch...@samsung.com]
> Sent: Wednesday, May 2, 2018 4:17 AM
> To: Liming Sun ; Ulf Hansson
> ; Rob Herring ; Mark
> Rutland ; Catalin Marinas
> ; Will Deacon 
> Cc: linux-...@vger.kernel.org; devicet...@vger.kernel.org; linux-
> ker...@vger.kernel.org; sta...@kernel.org
> Subject: Re: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension
> 
> Hi,
> 
> On 05/02/2018 03:19 AM, Liming Sun wrote:
> > This commit adds extension to the dw_mmc driver for Mellanox BlueField
> > SoC. It updates the UHS_REG_EXT register to bring up the eMMC card on
> > this SoC.
> 
> Could you heck Shawn's comments? And add the minor comment.
> 
> >
> > Cc: sta...@kernel.org
> > Signed-off-by: Liming Sun 
> > Reviewed-by: David Woods 
> > ---
> >  drivers/mmc/host/Kconfig|  9 +
> >  drivers/mmc/host/Makefile   |  1 +
> >  drivers/mmc/host/dw_mmc-bluefield.c | 72
> +
> >  3 files changed, 82 insertions(+)
> >  create mode 100644 drivers/mmc/host/dw_mmc-bluefield.c
> >
> > diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
> > index 9589f9c..26ac6b5 100644
> > --- a/drivers/mmc/host/Kconfig
> > +++ b/drivers/mmc/host/Kconfig
> > @@ -717,6 +717,15 @@ config MMC_DW_K3
> >   Synopsys DesignWare Memory Card Interface driver. Select this
> option
> >   for platforms based on Hisilicon K3 SoC's.
> >
> > +config MMC_DW_BLUEFIELD
> > +   tristate "BlueField specific extensions for Synopsys DW Memory Card
> Interface"
> > +   depends on MMC_DW
> > +   select MMC_DW_PLTFM
> > +   help
> > + This selects support for Mellanox BlueField SoC specific extensions
> to
> > + the Synopsys DesignWare Memory Card Interface driver. Select this
> > + option for platforms based on Mellanox BlueField SoC's.
> > +
> >  config MMC_DW_PCI
> > tristate "Synopsys Designware MCI support on PCI bus"
> > depends on MMC_DW && PCI
> > diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
> > index 6aead24..267b3f1 100644
> > --- a/drivers/mmc/host/Makefile
> > +++ b/drivers/mmc/host/Makefile
> > @@ -55,6 +55,7 @@ obj-$(CONFIG_MMC_DW_K3)   += dw_mmc-
> k3.o
> >  obj-$(CONFIG_MMC_DW_PCI)   += dw_mmc-pci.o
> >  obj-$(CONFIG_MMC_DW_ROCKCHIP)  += dw_mmc-rockchip.o
> >  obj-$(CONFIG_MMC_DW_ZX)+= dw_mmc-zx.o
> > +obj-$(CONFIG_MMC_DW_BLUEFIELD) += dw_mmc-bluefield.o
> >  obj-$(CONFIG_MMC_SH_MMCIF) += sh_mmcif.o
> >  obj-$(CONFIG_MMC_JZ4740)   += jz4740_mmc.o
> >  obj-$(CONFIG_MMC_VUB300)   += vub300.o
> > diff --git a/drivers/mmc/host/dw_mmc-bluefield.c
> b/drivers/mmc/host/dw_mmc-bluefield.c
> > new file mode 100644
> > index 000..12067b1
> > --- /dev/null
> > +++ b/drivers/mmc/host/dw_mmc-bluefield.c
> > @@ -0,0 +1,72 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright (C) 2018 Mellanox Technologies.
> > + *
> > + * This program is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License as published by
> > + * the Free Software Foundation; either version 2 of the License, or
> > + * (at your option) any later version.
> > + */
> > +
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +
> > +#include "dw_mmc.h"
> > +#include "dw_mmc-pltfm.h"
> > +
> > +static void dw_mci_bluefield_set_ios(struct dw_mci *host, struct
> mmc_ios *ios)
> > +{
> > +   u32 regs;
> > +
> > +   /* Set drive=4 (bit 29:23) and sample=2 (bit 22:16) in UHS_REG_EXT.
> */
> > +   regs = mci_readl(host, UHS_REG_EXT);
> > +   regs = (regs & ~0x3F10 & ~0x7F) | (4 << 23) | (2 << 16);
> 
> I want to use the macro. Not (4 << 23)..
> 
> > +   mci_writel(host, UHS_REG_EXT, regs);
> > +}
> > +
> > +static const struct dw_mci_drv_data bluefield_drv_data = {
> > +   .set_ios= dw_mci_bluefield_set_ios
> > +};
> > +
> > +static const struct of_device_id dw_mci_bluefield_match[] = {
> > +   { .compatible = "mellanox,bluefield-dw-mshc",
> > +   

RE: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension

2018-05-03 Thread Liming Sun


> -Original Message-
> From: linux-kernel-ow...@vger.kernel.org [mailto:linux-kernel-
> ow...@vger.kernel.org] On Behalf Of Shawn Lin
> Sent: Thursday, May 3, 2018 3:25 AM
> To: Liming Sun <l...@mellanox.com>; Mark Rutland
> <mark.rutl...@arm.com>; Jaehoon Chung <jh80.ch...@samsung.com>;
> Catalin Marinas <catalin.mari...@arm.com>; Will Deacon
> <will.dea...@arm.com>
> Cc: shawn@rock-chips.com; Ulf Hansson <ulf.hans...@linaro.org>; Rob
> Herring <robh...@kernel.org>; linux-...@vger.kernel.org;
> devicet...@vger.kernel.org; linux-kernel@vger.kernel.org
> Subject: Re: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension
> 
> 
> On 2018/5/2 20:45, Liming Sun wrote:
> > Please see response inline.
> >
> > Thanks,
> > Liming
> >
> >> -Original Message-
> >> From: Shawn Lin [mailto:shawn@rock-chips.com]
> >> Sent: Tuesday, May 1, 2018 9:02 PM
> >> To: Liming Sun <l...@mellanox.com>; Mark Rutland
> >> <mark.rutl...@arm.com>; Jaehoon Chung <jh80.ch...@samsung.com>;
> >> Catalin Marinas <catalin.mari...@arm.com>; Will Deacon
> >> <will.dea...@arm.com>
> >> Cc: Ulf Hansson <ulf.hans...@linaro.org>; Rob Herring
> >> <robh...@kernel.org>; shawn@rock-chips.com; linux-
> >> m...@vger.kernel.org; devicet...@vger.kernel.org; linux-
> >> ker...@vger.kernel.org; sta...@kernel.org
> >> Subject: Re: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver
> extension
> >>
> >> On 2018/5/2 2:19, Liming Sun wrote:
> >>> This commit adds extension to the dw_mmc driver for Mellanox
> BlueField
> >>> SoC. It updates the UHS_REG_EXT register to bring up the eMMC card
> on
> >>> this SoC.
> >>>
> >>> Cc: sta...@kernel.org
> >>
> >> Why?
> >
> > [Liming] This is recommended value from HW team. Without this setting,
> the eMMC
> > controller and cards can be found in Linux, but not stable. Writing to it 
> > could
> caused
> > CRC error.
> 
> Well, I refered to the "Cc: sta...@kernel.org" in the commit msg.

[Liming] Sorry, a typo.  I meant "sta...@vger.kernel.org". Will update it in 
v6. Thanks!

> 
> >
> >>
> >>> Signed-off-by: Liming Sun <l...@mellanox.com>
> >>> Reviewed-by: David Woods <dwo...@mellanox.com>
> >>> ---
> >>>drivers/mmc/host/Kconfig|  9 +
> >>>drivers/mmc/host/Makefile   |  1 +
> >>>drivers/mmc/host/dw_mmc-bluefield.c | 72
> >> +
> >>>3 files changed, 82 insertions(+)
> >>>create mode 100644 drivers/mmc/host/dw_mmc-bluefield.c
> >>>
> >>> diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
> >>> index 9589f9c..26ac6b5 100644
> >>> --- a/drivers/mmc/host/Kconfig
> >>> +++ b/drivers/mmc/host/Kconfig
> >>> @@ -717,6 +717,15 @@ config MMC_DW_K3
> >>> Synopsys DesignWare Memory Card Interface driver. Select this
> >> option
> >>> for platforms based on Hisilicon K3 SoC's.
> >>>
> >>> +config MMC_DW_BLUEFIELD
> >>
> >> And did you have feedback of my comment in V2?
> >> http://lists-archives.com/linux-kernel/29104830-mmc-dw_mmc-
> bluefield-
> >> add-driver-extension.html
> >>
> >>> + tristate "BlueField specific extensions for Synopsys DW Memory Card
> >> Interface"
> >>> + depends on MMC_DW
> >>> + select MMC_DW_PLTFM
> >>> + help
> >>> +   This selects support for Mellanox BlueField SoC specific extensions
> >> to
> >>> +   the Synopsys DesignWare Memory Card Interface driver. Select this
> >>> +   option for platforms based on Mellanox BlueField SoC's.
> >>> +
> >>>config MMC_DW_PCI
> >>>   tristate "Synopsys Designware MCI support on PCI bus"
> >>>   depends on MMC_DW && PCI
> >>> diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
> >>> index 6aead24..267b3f1 100644
> >>> --- a/drivers/mmc/host/Makefile
> >>> +++ b/drivers/mmc/host/Makefile
> >>> @@ -55,6 +55,7 @@ obj-$(CONFIG_MMC_DW_K3) +=
> dw_mmc-
> >> k3.o
> >>>obj-$(CONFIG_MMC_DW_PCI)   += dw_mmc-pci.o
> >>>obj-$(CONFIG_MMC_DW_ROCKCHIP)  += dw_mmc-roc

RE: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension

2018-05-03 Thread Liming Sun


> -Original Message-
> From: linux-kernel-ow...@vger.kernel.org [mailto:linux-kernel-
> ow...@vger.kernel.org] On Behalf Of Shawn Lin
> Sent: Thursday, May 3, 2018 3:25 AM
> To: Liming Sun ; Mark Rutland
> ; Jaehoon Chung ;
> Catalin Marinas ; Will Deacon
> 
> Cc: shawn@rock-chips.com; Ulf Hansson ; Rob
> Herring ; linux-...@vger.kernel.org;
> devicet...@vger.kernel.org; linux-kernel@vger.kernel.org
> Subject: Re: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension
> 
> 
> On 2018/5/2 20:45, Liming Sun wrote:
> > Please see response inline.
> >
> > Thanks,
> > Liming
> >
> >> -Original Message-
> >> From: Shawn Lin [mailto:shawn@rock-chips.com]
> >> Sent: Tuesday, May 1, 2018 9:02 PM
> >> To: Liming Sun ; Mark Rutland
> >> ; Jaehoon Chung ;
> >> Catalin Marinas ; Will Deacon
> >> 
> >> Cc: Ulf Hansson ; Rob Herring
> >> ; shawn@rock-chips.com; linux-
> >> m...@vger.kernel.org; devicet...@vger.kernel.org; linux-
> >> ker...@vger.kernel.org; sta...@kernel.org
> >> Subject: Re: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver
> extension
> >>
> >> On 2018/5/2 2:19, Liming Sun wrote:
> >>> This commit adds extension to the dw_mmc driver for Mellanox
> BlueField
> >>> SoC. It updates the UHS_REG_EXT register to bring up the eMMC card
> on
> >>> this SoC.
> >>>
> >>> Cc: sta...@kernel.org
> >>
> >> Why?
> >
> > [Liming] This is recommended value from HW team. Without this setting,
> the eMMC
> > controller and cards can be found in Linux, but not stable. Writing to it 
> > could
> caused
> > CRC error.
> 
> Well, I refered to the "Cc: sta...@kernel.org" in the commit msg.

[Liming] Sorry, a typo.  I meant "sta...@vger.kernel.org". Will update it in 
v6. Thanks!

> 
> >
> >>
> >>> Signed-off-by: Liming Sun 
> >>> Reviewed-by: David Woods 
> >>> ---
> >>>drivers/mmc/host/Kconfig|  9 +
> >>>drivers/mmc/host/Makefile   |  1 +
> >>>drivers/mmc/host/dw_mmc-bluefield.c | 72
> >> +
> >>>3 files changed, 82 insertions(+)
> >>>create mode 100644 drivers/mmc/host/dw_mmc-bluefield.c
> >>>
> >>> diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
> >>> index 9589f9c..26ac6b5 100644
> >>> --- a/drivers/mmc/host/Kconfig
> >>> +++ b/drivers/mmc/host/Kconfig
> >>> @@ -717,6 +717,15 @@ config MMC_DW_K3
> >>> Synopsys DesignWare Memory Card Interface driver. Select this
> >> option
> >>> for platforms based on Hisilicon K3 SoC's.
> >>>
> >>> +config MMC_DW_BLUEFIELD
> >>
> >> And did you have feedback of my comment in V2?
> >> http://lists-archives.com/linux-kernel/29104830-mmc-dw_mmc-
> bluefield-
> >> add-driver-extension.html
> >>
> >>> + tristate "BlueField specific extensions for Synopsys DW Memory Card
> >> Interface"
> >>> + depends on MMC_DW
> >>> + select MMC_DW_PLTFM
> >>> + help
> >>> +   This selects support for Mellanox BlueField SoC specific extensions
> >> to
> >>> +   the Synopsys DesignWare Memory Card Interface driver. Select this
> >>> +   option for platforms based on Mellanox BlueField SoC's.
> >>> +
> >>>config MMC_DW_PCI
> >>>   tristate "Synopsys Designware MCI support on PCI bus"
> >>>   depends on MMC_DW && PCI
> >>> diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
> >>> index 6aead24..267b3f1 100644
> >>> --- a/drivers/mmc/host/Makefile
> >>> +++ b/drivers/mmc/host/Makefile
> >>> @@ -55,6 +55,7 @@ obj-$(CONFIG_MMC_DW_K3) +=
> dw_mmc-
> >> k3.o
> >>>obj-$(CONFIG_MMC_DW_PCI)   += dw_mmc-pci.o
> >>>obj-$(CONFIG_MMC_DW_ROCKCHIP)  += dw_mmc-rockchip.o
> >>>obj-$(CONFIG_MMC_DW_ZX)+= dw_mmc-zx.o
> >>> +obj-$(CONFIG_MMC_DW_BLUEFIELD)   += dw_mmc-bluefield.o
> >>>obj-$(CONFIG_MMC_SH_MMCIF) += sh_mmcif.o
> >>>obj-$(CONFIG_MMC_JZ4740)   += jz4740_mmc.o
> >>>obj-$(CONFIG_MMC_VUB300)   += vub300.o
> >>> diff --git a/drivers/mmc/host/dw_mmc-bluefield.c
> >> b/driv

Re: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension

2018-05-03 Thread Shawn Lin


On 2018/5/2 20:45, Liming Sun wrote:

Please see response inline.

Thanks,
Liming


-Original Message-
From: Shawn Lin [mailto:shawn@rock-chips.com]
Sent: Tuesday, May 1, 2018 9:02 PM
To: Liming Sun <l...@mellanox.com>; Mark Rutland
<mark.rutl...@arm.com>; Jaehoon Chung <jh80.ch...@samsung.com>;
Catalin Marinas <catalin.mari...@arm.com>; Will Deacon
<will.dea...@arm.com>
Cc: Ulf Hansson <ulf.hans...@linaro.org>; Rob Herring
<robh...@kernel.org>; shawn@rock-chips.com; linux-
m...@vger.kernel.org; devicet...@vger.kernel.org; linux-
ker...@vger.kernel.org; sta...@kernel.org
Subject: Re: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension

On 2018/5/2 2:19, Liming Sun wrote:

This commit adds extension to the dw_mmc driver for Mellanox BlueField
SoC. It updates the UHS_REG_EXT register to bring up the eMMC card on
this SoC.

Cc: sta...@kernel.org


Why?


[Liming] This is recommended value from HW team. Without this setting, the eMMC
controller and cards can be found in Linux, but not stable. Writing to it could 
caused
CRC error.


Well, I refered to the "Cc: sta...@kernel.org" in the commit msg.






Signed-off-by: Liming Sun <l...@mellanox.com>
Reviewed-by: David Woods <dwo...@mellanox.com>
---
   drivers/mmc/host/Kconfig|  9 +
   drivers/mmc/host/Makefile   |  1 +
   drivers/mmc/host/dw_mmc-bluefield.c | 72

+

   3 files changed, 82 insertions(+)
   create mode 100644 drivers/mmc/host/dw_mmc-bluefield.c

diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 9589f9c..26ac6b5 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -717,6 +717,15 @@ config MMC_DW_K3
  Synopsys DesignWare Memory Card Interface driver. Select this

option

  for platforms based on Hisilicon K3 SoC's.

+config MMC_DW_BLUEFIELD


And did you have feedback of my comment in V2?
http://lists-archives.com/linux-kernel/29104830-mmc-dw_mmc-bluefield-
add-driver-extension.html


+   tristate "BlueField specific extensions for Synopsys DW Memory Card

Interface"

+   depends on MMC_DW
+   select MMC_DW_PLTFM
+   help
+ This selects support for Mellanox BlueField SoC specific extensions

to

+ the Synopsys DesignWare Memory Card Interface driver. Select this
+ option for platforms based on Mellanox BlueField SoC's.
+
   config MMC_DW_PCI
tristate "Synopsys Designware MCI support on PCI bus"
depends on MMC_DW && PCI
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
index 6aead24..267b3f1 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -55,6 +55,7 @@ obj-$(CONFIG_MMC_DW_K3)   += dw_mmc-

k3.o

   obj-$(CONFIG_MMC_DW_PCI) += dw_mmc-pci.o
   obj-$(CONFIG_MMC_DW_ROCKCHIP)+= dw_mmc-rockchip.o
   obj-$(CONFIG_MMC_DW_ZX)  += dw_mmc-zx.o
+obj-$(CONFIG_MMC_DW_BLUEFIELD) += dw_mmc-bluefield.o
   obj-$(CONFIG_MMC_SH_MMCIF)   += sh_mmcif.o
   obj-$(CONFIG_MMC_JZ4740) += jz4740_mmc.o
   obj-$(CONFIG_MMC_VUB300) += vub300.o
diff --git a/drivers/mmc/host/dw_mmc-bluefield.c

b/drivers/mmc/host/dw_mmc-bluefield.c

new file mode 100644
index 000..12067b1
--- /dev/null
+++ b/drivers/mmc/host/dw_mmc-bluefield.c
@@ -0,0 +1,72 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2018 Mellanox Technologies.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include "dw_mmc.h"
+#include "dw_mmc-pltfm.h"
+
+static void dw_mci_bluefield_set_ios(struct dw_mci *host, struct

mmc_ios *ios)

+{
+   u32 regs;
+
+   /* Set drive=4 (bit 29:23) and sample=2 (bit 22:16) in UHS_REG_EXT.

*/

+   regs = mci_readl(host, UHS_REG_EXT);
+   regs = (regs & ~0x3F10 & ~0x7F) | (4 << 23) | (2 << 16);
+   mci_writel(host, UHS_REG_EXT, regs);
+}
+
+static const struct dw_mci_drv_data bluefield_drv_data = {
+   .set_ios= dw_mci_bluefield_set_ios
+};
+
+static const struct of_device_id dw_mci_bluefield_match[] = {
+   { .compatible = "mellanox,bluefield-dw-mshc",
+   .data = _drv_data },
+   {},
+};
+MODULE_DEVICE_TABLE(of, dw_mci_bluefield_match);
+
+static int dw_mci_bluefield_probe(struct platform_device *pdev)
+{
+   const struct dw_mci_drv_data *drv_data = NULL;
+   const struct of_device_id *match;
+
+   if (pdev->dev.of_node) {
+   match = of_match_node(dw_mci_bluefield_match,
+ pdev->dev.of_

Re: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension

2018-05-03 Thread Shawn Lin


On 2018/5/2 20:45, Liming Sun wrote:

Please see response inline.

Thanks,
Liming


-Original Message-
From: Shawn Lin [mailto:shawn@rock-chips.com]
Sent: Tuesday, May 1, 2018 9:02 PM
To: Liming Sun ; Mark Rutland
; Jaehoon Chung ;
Catalin Marinas ; Will Deacon

Cc: Ulf Hansson ; Rob Herring
; shawn@rock-chips.com; linux-
m...@vger.kernel.org; devicet...@vger.kernel.org; linux-
ker...@vger.kernel.org; sta...@kernel.org
Subject: Re: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension

On 2018/5/2 2:19, Liming Sun wrote:

This commit adds extension to the dw_mmc driver for Mellanox BlueField
SoC. It updates the UHS_REG_EXT register to bring up the eMMC card on
this SoC.

Cc: sta...@kernel.org


Why?


[Liming] This is recommended value from HW team. Without this setting, the eMMC
controller and cards can be found in Linux, but not stable. Writing to it could 
caused
CRC error.


Well, I refered to the "Cc: sta...@kernel.org" in the commit msg.






Signed-off-by: Liming Sun 
Reviewed-by: David Woods 
---
   drivers/mmc/host/Kconfig|  9 +
   drivers/mmc/host/Makefile   |  1 +
   drivers/mmc/host/dw_mmc-bluefield.c | 72

+

   3 files changed, 82 insertions(+)
   create mode 100644 drivers/mmc/host/dw_mmc-bluefield.c

diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 9589f9c..26ac6b5 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -717,6 +717,15 @@ config MMC_DW_K3
  Synopsys DesignWare Memory Card Interface driver. Select this

option

  for platforms based on Hisilicon K3 SoC's.

+config MMC_DW_BLUEFIELD


And did you have feedback of my comment in V2?
http://lists-archives.com/linux-kernel/29104830-mmc-dw_mmc-bluefield-
add-driver-extension.html


+   tristate "BlueField specific extensions for Synopsys DW Memory Card

Interface"

+   depends on MMC_DW
+   select MMC_DW_PLTFM
+   help
+ This selects support for Mellanox BlueField SoC specific extensions

to

+ the Synopsys DesignWare Memory Card Interface driver. Select this
+ option for platforms based on Mellanox BlueField SoC's.
+
   config MMC_DW_PCI
tristate "Synopsys Designware MCI support on PCI bus"
depends on MMC_DW && PCI
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
index 6aead24..267b3f1 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -55,6 +55,7 @@ obj-$(CONFIG_MMC_DW_K3)   += dw_mmc-

k3.o

   obj-$(CONFIG_MMC_DW_PCI) += dw_mmc-pci.o
   obj-$(CONFIG_MMC_DW_ROCKCHIP)+= dw_mmc-rockchip.o
   obj-$(CONFIG_MMC_DW_ZX)  += dw_mmc-zx.o
+obj-$(CONFIG_MMC_DW_BLUEFIELD) += dw_mmc-bluefield.o
   obj-$(CONFIG_MMC_SH_MMCIF)   += sh_mmcif.o
   obj-$(CONFIG_MMC_JZ4740) += jz4740_mmc.o
   obj-$(CONFIG_MMC_VUB300) += vub300.o
diff --git a/drivers/mmc/host/dw_mmc-bluefield.c

b/drivers/mmc/host/dw_mmc-bluefield.c

new file mode 100644
index 000..12067b1
--- /dev/null
+++ b/drivers/mmc/host/dw_mmc-bluefield.c
@@ -0,0 +1,72 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2018 Mellanox Technologies.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include "dw_mmc.h"
+#include "dw_mmc-pltfm.h"
+
+static void dw_mci_bluefield_set_ios(struct dw_mci *host, struct

mmc_ios *ios)

+{
+   u32 regs;
+
+   /* Set drive=4 (bit 29:23) and sample=2 (bit 22:16) in UHS_REG_EXT.

*/

+   regs = mci_readl(host, UHS_REG_EXT);
+   regs = (regs & ~0x3F10 & ~0x7F) | (4 << 23) | (2 << 16);
+   mci_writel(host, UHS_REG_EXT, regs);
+}
+
+static const struct dw_mci_drv_data bluefield_drv_data = {
+   .set_ios= dw_mci_bluefield_set_ios
+};
+
+static const struct of_device_id dw_mci_bluefield_match[] = {
+   { .compatible = "mellanox,bluefield-dw-mshc",
+   .data = _drv_data },
+   {},
+};
+MODULE_DEVICE_TABLE(of, dw_mci_bluefield_match);
+
+static int dw_mci_bluefield_probe(struct platform_device *pdev)
+{
+   const struct dw_mci_drv_data *drv_data = NULL;
+   const struct of_device_id *match;
+
+   if (pdev->dev.of_node) {
+   match = of_match_node(dw_mci_bluefield_match,
+ pdev->dev.of_node);
+   drv_data = match->data;
+   }
+
+   return dw_mci_pltfm_register(pdev, drv_data);
+}
+
+static struct platform_driver dw_mci_bluefield_pltfm_driver = {
+   .probe  = dw_mci_bluefield_probe,
+   .remove = dw

RE: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension

2018-05-02 Thread Liming Sun
Please see response inline.

Thanks,
Liming

> -Original Message-
> From: Shawn Lin [mailto:shawn@rock-chips.com]
> Sent: Tuesday, May 1, 2018 9:02 PM
> To: Liming Sun <l...@mellanox.com>; Mark Rutland
> <mark.rutl...@arm.com>; Jaehoon Chung <jh80.ch...@samsung.com>;
> Catalin Marinas <catalin.mari...@arm.com>; Will Deacon
> <will.dea...@arm.com>
> Cc: Ulf Hansson <ulf.hans...@linaro.org>; Rob Herring
> <robh...@kernel.org>; shawn@rock-chips.com; linux-
> m...@vger.kernel.org; devicet...@vger.kernel.org; linux-
> ker...@vger.kernel.org; sta...@kernel.org
> Subject: Re: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension
> 
> On 2018/5/2 2:19, Liming Sun wrote:
> > This commit adds extension to the dw_mmc driver for Mellanox BlueField
> > SoC. It updates the UHS_REG_EXT register to bring up the eMMC card on
> > this SoC.
> >
> > Cc: sta...@kernel.org
> 
> Why?

[Liming] This is recommended value from HW team. Without this setting, the eMMC 
controller and cards can be found in Linux, but not stable. Writing to it could 
caused
CRC error.

> 
> > Signed-off-by: Liming Sun <l...@mellanox.com>
> > Reviewed-by: David Woods <dwo...@mellanox.com>
> > ---
> >   drivers/mmc/host/Kconfig|  9 +
> >   drivers/mmc/host/Makefile   |  1 +
> >   drivers/mmc/host/dw_mmc-bluefield.c | 72
> +
> >   3 files changed, 82 insertions(+)
> >   create mode 100644 drivers/mmc/host/dw_mmc-bluefield.c
> >
> > diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
> > index 9589f9c..26ac6b5 100644
> > --- a/drivers/mmc/host/Kconfig
> > +++ b/drivers/mmc/host/Kconfig
> > @@ -717,6 +717,15 @@ config MMC_DW_K3
> >   Synopsys DesignWare Memory Card Interface driver. Select this
> option
> >   for platforms based on Hisilicon K3 SoC's.
> >
> > +config MMC_DW_BLUEFIELD
> 
> And did you have feedback of my comment in V2?
> http://lists-archives.com/linux-kernel/29104830-mmc-dw_mmc-bluefield-
> add-driver-extension.html
> 
> > +   tristate "BlueField specific extensions for Synopsys DW Memory Card
> Interface"
> > +   depends on MMC_DW
> > +   select MMC_DW_PLTFM
> > +   help
> > + This selects support for Mellanox BlueField SoC specific extensions
> to
> > + the Synopsys DesignWare Memory Card Interface driver. Select this
> > + option for platforms based on Mellanox BlueField SoC's.
> > +
> >   config MMC_DW_PCI
> > tristate "Synopsys Designware MCI support on PCI bus"
> > depends on MMC_DW && PCI
> > diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
> > index 6aead24..267b3f1 100644
> > --- a/drivers/mmc/host/Makefile
> > +++ b/drivers/mmc/host/Makefile
> > @@ -55,6 +55,7 @@ obj-$(CONFIG_MMC_DW_K3)   += dw_mmc-
> k3.o
> >   obj-$(CONFIG_MMC_DW_PCI)  += dw_mmc-pci.o
> >   obj-$(CONFIG_MMC_DW_ROCKCHIP) += dw_mmc-rockchip.o
> >   obj-$(CONFIG_MMC_DW_ZX)   += dw_mmc-zx.o
> > +obj-$(CONFIG_MMC_DW_BLUEFIELD) += dw_mmc-bluefield.o
> >   obj-$(CONFIG_MMC_SH_MMCIF)+= sh_mmcif.o
> >   obj-$(CONFIG_MMC_JZ4740)  += jz4740_mmc.o
> >   obj-$(CONFIG_MMC_VUB300)  += vub300.o
> > diff --git a/drivers/mmc/host/dw_mmc-bluefield.c
> b/drivers/mmc/host/dw_mmc-bluefield.c
> > new file mode 100644
> > index 000..12067b1
> > --- /dev/null
> > +++ b/drivers/mmc/host/dw_mmc-bluefield.c
> > @@ -0,0 +1,72 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright (C) 2018 Mellanox Technologies.
> > + *
> > + * This program is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License as published by
> > + * the Free Software Foundation; either version 2 of the License, or
> > + * (at your option) any later version.
> > + */
> > +
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +
> > +#include "dw_mmc.h"
> > +#include "dw_mmc-pltfm.h"
> > +
> > +static void dw_mci_bluefield_set_ios(struct dw_mci *host, struct
> mmc_ios *ios)
> > +{
> > +   u32 regs;
> > +
> > +   /* Set drive=4 (bit 29:23) and sample=2 (bit 22:16) in UHS_REG_EXT.
> */
> > +   regs = mci_readl(host, UHS_REG_EXT);
> > +   regs = (regs & ~0x3F10 & ~0x7F) | (4 << 23) | (2 << 16);
> &g

RE: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension

2018-05-02 Thread Liming Sun
Please see response inline.

Thanks,
Liming

> -Original Message-
> From: Shawn Lin [mailto:shawn@rock-chips.com]
> Sent: Tuesday, May 1, 2018 9:02 PM
> To: Liming Sun ; Mark Rutland
> ; Jaehoon Chung ;
> Catalin Marinas ; Will Deacon
> 
> Cc: Ulf Hansson ; Rob Herring
> ; shawn@rock-chips.com; linux-
> m...@vger.kernel.org; devicet...@vger.kernel.org; linux-
> ker...@vger.kernel.org; sta...@kernel.org
> Subject: Re: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension
> 
> On 2018/5/2 2:19, Liming Sun wrote:
> > This commit adds extension to the dw_mmc driver for Mellanox BlueField
> > SoC. It updates the UHS_REG_EXT register to bring up the eMMC card on
> > this SoC.
> >
> > Cc: sta...@kernel.org
> 
> Why?

[Liming] This is recommended value from HW team. Without this setting, the eMMC 
controller and cards can be found in Linux, but not stable. Writing to it could 
caused
CRC error.

> 
> > Signed-off-by: Liming Sun 
> > Reviewed-by: David Woods 
> > ---
> >   drivers/mmc/host/Kconfig|  9 +
> >   drivers/mmc/host/Makefile   |  1 +
> >   drivers/mmc/host/dw_mmc-bluefield.c | 72
> +
> >   3 files changed, 82 insertions(+)
> >   create mode 100644 drivers/mmc/host/dw_mmc-bluefield.c
> >
> > diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
> > index 9589f9c..26ac6b5 100644
> > --- a/drivers/mmc/host/Kconfig
> > +++ b/drivers/mmc/host/Kconfig
> > @@ -717,6 +717,15 @@ config MMC_DW_K3
> >   Synopsys DesignWare Memory Card Interface driver. Select this
> option
> >   for platforms based on Hisilicon K3 SoC's.
> >
> > +config MMC_DW_BLUEFIELD
> 
> And did you have feedback of my comment in V2?
> http://lists-archives.com/linux-kernel/29104830-mmc-dw_mmc-bluefield-
> add-driver-extension.html
> 
> > +   tristate "BlueField specific extensions for Synopsys DW Memory Card
> Interface"
> > +   depends on MMC_DW
> > +   select MMC_DW_PLTFM
> > +   help
> > + This selects support for Mellanox BlueField SoC specific extensions
> to
> > + the Synopsys DesignWare Memory Card Interface driver. Select this
> > + option for platforms based on Mellanox BlueField SoC's.
> > +
> >   config MMC_DW_PCI
> > tristate "Synopsys Designware MCI support on PCI bus"
> > depends on MMC_DW && PCI
> > diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
> > index 6aead24..267b3f1 100644
> > --- a/drivers/mmc/host/Makefile
> > +++ b/drivers/mmc/host/Makefile
> > @@ -55,6 +55,7 @@ obj-$(CONFIG_MMC_DW_K3)   += dw_mmc-
> k3.o
> >   obj-$(CONFIG_MMC_DW_PCI)  += dw_mmc-pci.o
> >   obj-$(CONFIG_MMC_DW_ROCKCHIP) += dw_mmc-rockchip.o
> >   obj-$(CONFIG_MMC_DW_ZX)   += dw_mmc-zx.o
> > +obj-$(CONFIG_MMC_DW_BLUEFIELD) += dw_mmc-bluefield.o
> >   obj-$(CONFIG_MMC_SH_MMCIF)+= sh_mmcif.o
> >   obj-$(CONFIG_MMC_JZ4740)  += jz4740_mmc.o
> >   obj-$(CONFIG_MMC_VUB300)  += vub300.o
> > diff --git a/drivers/mmc/host/dw_mmc-bluefield.c
> b/drivers/mmc/host/dw_mmc-bluefield.c
> > new file mode 100644
> > index 000..12067b1
> > --- /dev/null
> > +++ b/drivers/mmc/host/dw_mmc-bluefield.c
> > @@ -0,0 +1,72 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright (C) 2018 Mellanox Technologies.
> > + *
> > + * This program is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License as published by
> > + * the Free Software Foundation; either version 2 of the License, or
> > + * (at your option) any later version.
> > + */
> > +
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +
> > +#include "dw_mmc.h"
> > +#include "dw_mmc-pltfm.h"
> > +
> > +static void dw_mci_bluefield_set_ios(struct dw_mci *host, struct
> mmc_ios *ios)
> > +{
> > +   u32 regs;
> > +
> > +   /* Set drive=4 (bit 29:23) and sample=2 (bit 22:16) in UHS_REG_EXT.
> */
> > +   regs = mci_readl(host, UHS_REG_EXT);
> > +   regs = (regs & ~0x3F10 & ~0x7F) | (4 << 23) | (2 << 16);
> > +   mci_writel(host, UHS_REG_EXT, regs);
> > +}
> > +
> > +static const struct dw_mci_drv_data bluefield_drv_data = {
> > +   .set_ios= dw_mci_bluefield_set_ios
> > +};
> > +
> > +static const s

Re: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension

2018-05-02 Thread Jaehoon Chung
Hi,

On 05/02/2018 03:19 AM, Liming Sun wrote:
> This commit adds extension to the dw_mmc driver for Mellanox BlueField
> SoC. It updates the UHS_REG_EXT register to bring up the eMMC card on
> this SoC.

Could you heck Shawn's comments? And add the minor comment.

> 
> Cc: sta...@kernel.org
> Signed-off-by: Liming Sun 
> Reviewed-by: David Woods 
> ---
>  drivers/mmc/host/Kconfig|  9 +
>  drivers/mmc/host/Makefile   |  1 +
>  drivers/mmc/host/dw_mmc-bluefield.c | 72 
> +
>  3 files changed, 82 insertions(+)
>  create mode 100644 drivers/mmc/host/dw_mmc-bluefield.c
> 
> diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
> index 9589f9c..26ac6b5 100644
> --- a/drivers/mmc/host/Kconfig
> +++ b/drivers/mmc/host/Kconfig
> @@ -717,6 +717,15 @@ config MMC_DW_K3
> Synopsys DesignWare Memory Card Interface driver. Select this option
> for platforms based on Hisilicon K3 SoC's.
>  
> +config MMC_DW_BLUEFIELD
> + tristate "BlueField specific extensions for Synopsys DW Memory Card 
> Interface"
> + depends on MMC_DW
> + select MMC_DW_PLTFM
> + help
> +   This selects support for Mellanox BlueField SoC specific extensions to
> +   the Synopsys DesignWare Memory Card Interface driver. Select this
> +   option for platforms based on Mellanox BlueField SoC's.
> +
>  config MMC_DW_PCI
>   tristate "Synopsys Designware MCI support on PCI bus"
>   depends on MMC_DW && PCI
> diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
> index 6aead24..267b3f1 100644
> --- a/drivers/mmc/host/Makefile
> +++ b/drivers/mmc/host/Makefile
> @@ -55,6 +55,7 @@ obj-$(CONFIG_MMC_DW_K3) += dw_mmc-k3.o
>  obj-$(CONFIG_MMC_DW_PCI) += dw_mmc-pci.o
>  obj-$(CONFIG_MMC_DW_ROCKCHIP)+= dw_mmc-rockchip.o
>  obj-$(CONFIG_MMC_DW_ZX)  += dw_mmc-zx.o
> +obj-$(CONFIG_MMC_DW_BLUEFIELD)   += dw_mmc-bluefield.o
>  obj-$(CONFIG_MMC_SH_MMCIF)   += sh_mmcif.o
>  obj-$(CONFIG_MMC_JZ4740) += jz4740_mmc.o
>  obj-$(CONFIG_MMC_VUB300) += vub300.o
> diff --git a/drivers/mmc/host/dw_mmc-bluefield.c 
> b/drivers/mmc/host/dw_mmc-bluefield.c
> new file mode 100644
> index 000..12067b1
> --- /dev/null
> +++ b/drivers/mmc/host/dw_mmc-bluefield.c
> @@ -0,0 +1,72 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (C) 2018 Mellanox Technologies.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + */
> +
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +
> +#include "dw_mmc.h"
> +#include "dw_mmc-pltfm.h"
> +
> +static void dw_mci_bluefield_set_ios(struct dw_mci *host, struct mmc_ios 
> *ios)
> +{
> + u32 regs;
> +
> + /* Set drive=4 (bit 29:23) and sample=2 (bit 22:16) in UHS_REG_EXT. */
> + regs = mci_readl(host, UHS_REG_EXT);
> + regs = (regs & ~0x3F10 & ~0x7F) | (4 << 23) | (2 << 16);

I want to use the macro. Not (4 << 23)..

> + mci_writel(host, UHS_REG_EXT, regs);
> +}
> +
> +static const struct dw_mci_drv_data bluefield_drv_data = {
> + .set_ios= dw_mci_bluefield_set_ios
> +};
> +
> +static const struct of_device_id dw_mci_bluefield_match[] = {
> + { .compatible = "mellanox,bluefield-dw-mshc",
> + .data = _drv_data },
> + {},
> +};
> +MODULE_DEVICE_TABLE(of, dw_mci_bluefield_match);
> +
> +static int dw_mci_bluefield_probe(struct platform_device *pdev)
> +{
> + const struct dw_mci_drv_data *drv_data = NULL;
> + const struct of_device_id *match;
> +
> + if (pdev->dev.of_node) {
> + match = of_match_node(dw_mci_bluefield_match,
> +   pdev->dev.of_node);
> + drv_data = match->data;
> + }
> +
> + return dw_mci_pltfm_register(pdev, drv_data);
> +}
> +
> +static struct platform_driver dw_mci_bluefield_pltfm_driver = {
> + .probe  = dw_mci_bluefield_probe,
> + .remove = dw_mci_pltfm_remove,
> + .driver = {
> + .name   = "dwmmc_bluefield",
> + .of_match_table = dw_mci_bluefield_match,
> + .pm = _mci_pltfm_pmops,
> + },
> +};
> +
> +module_platform_driver(dw_mci_bluefield_pltfm_driver);
> +
> +MODULE_DESCRIPTION("BlueField DW Multimedia Card driver");
> +MODULE_AUTHOR("Mellanox Technologies");
> +MODULE_LICENSE("GPL v2");
> 



Re: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension

2018-05-02 Thread Jaehoon Chung
Hi,

On 05/02/2018 03:19 AM, Liming Sun wrote:
> This commit adds extension to the dw_mmc driver for Mellanox BlueField
> SoC. It updates the UHS_REG_EXT register to bring up the eMMC card on
> this SoC.

Could you heck Shawn's comments? And add the minor comment.

> 
> Cc: sta...@kernel.org
> Signed-off-by: Liming Sun 
> Reviewed-by: David Woods 
> ---
>  drivers/mmc/host/Kconfig|  9 +
>  drivers/mmc/host/Makefile   |  1 +
>  drivers/mmc/host/dw_mmc-bluefield.c | 72 
> +
>  3 files changed, 82 insertions(+)
>  create mode 100644 drivers/mmc/host/dw_mmc-bluefield.c
> 
> diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
> index 9589f9c..26ac6b5 100644
> --- a/drivers/mmc/host/Kconfig
> +++ b/drivers/mmc/host/Kconfig
> @@ -717,6 +717,15 @@ config MMC_DW_K3
> Synopsys DesignWare Memory Card Interface driver. Select this option
> for platforms based on Hisilicon K3 SoC's.
>  
> +config MMC_DW_BLUEFIELD
> + tristate "BlueField specific extensions for Synopsys DW Memory Card 
> Interface"
> + depends on MMC_DW
> + select MMC_DW_PLTFM
> + help
> +   This selects support for Mellanox BlueField SoC specific extensions to
> +   the Synopsys DesignWare Memory Card Interface driver. Select this
> +   option for platforms based on Mellanox BlueField SoC's.
> +
>  config MMC_DW_PCI
>   tristate "Synopsys Designware MCI support on PCI bus"
>   depends on MMC_DW && PCI
> diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
> index 6aead24..267b3f1 100644
> --- a/drivers/mmc/host/Makefile
> +++ b/drivers/mmc/host/Makefile
> @@ -55,6 +55,7 @@ obj-$(CONFIG_MMC_DW_K3) += dw_mmc-k3.o
>  obj-$(CONFIG_MMC_DW_PCI) += dw_mmc-pci.o
>  obj-$(CONFIG_MMC_DW_ROCKCHIP)+= dw_mmc-rockchip.o
>  obj-$(CONFIG_MMC_DW_ZX)  += dw_mmc-zx.o
> +obj-$(CONFIG_MMC_DW_BLUEFIELD)   += dw_mmc-bluefield.o
>  obj-$(CONFIG_MMC_SH_MMCIF)   += sh_mmcif.o
>  obj-$(CONFIG_MMC_JZ4740) += jz4740_mmc.o
>  obj-$(CONFIG_MMC_VUB300) += vub300.o
> diff --git a/drivers/mmc/host/dw_mmc-bluefield.c 
> b/drivers/mmc/host/dw_mmc-bluefield.c
> new file mode 100644
> index 000..12067b1
> --- /dev/null
> +++ b/drivers/mmc/host/dw_mmc-bluefield.c
> @@ -0,0 +1,72 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (C) 2018 Mellanox Technologies.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + */
> +
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +
> +#include "dw_mmc.h"
> +#include "dw_mmc-pltfm.h"
> +
> +static void dw_mci_bluefield_set_ios(struct dw_mci *host, struct mmc_ios 
> *ios)
> +{
> + u32 regs;
> +
> + /* Set drive=4 (bit 29:23) and sample=2 (bit 22:16) in UHS_REG_EXT. */
> + regs = mci_readl(host, UHS_REG_EXT);
> + regs = (regs & ~0x3F10 & ~0x7F) | (4 << 23) | (2 << 16);

I want to use the macro. Not (4 << 23)..

> + mci_writel(host, UHS_REG_EXT, regs);
> +}
> +
> +static const struct dw_mci_drv_data bluefield_drv_data = {
> + .set_ios= dw_mci_bluefield_set_ios
> +};
> +
> +static const struct of_device_id dw_mci_bluefield_match[] = {
> + { .compatible = "mellanox,bluefield-dw-mshc",
> + .data = _drv_data },
> + {},
> +};
> +MODULE_DEVICE_TABLE(of, dw_mci_bluefield_match);
> +
> +static int dw_mci_bluefield_probe(struct platform_device *pdev)
> +{
> + const struct dw_mci_drv_data *drv_data = NULL;
> + const struct of_device_id *match;
> +
> + if (pdev->dev.of_node) {
> + match = of_match_node(dw_mci_bluefield_match,
> +   pdev->dev.of_node);
> + drv_data = match->data;
> + }
> +
> + return dw_mci_pltfm_register(pdev, drv_data);
> +}
> +
> +static struct platform_driver dw_mci_bluefield_pltfm_driver = {
> + .probe  = dw_mci_bluefield_probe,
> + .remove = dw_mci_pltfm_remove,
> + .driver = {
> + .name   = "dwmmc_bluefield",
> + .of_match_table = dw_mci_bluefield_match,
> + .pm = _mci_pltfm_pmops,
> + },
> +};
> +
> +module_platform_driver(dw_mci_bluefield_pltfm_driver);
> +
> +MODULE_DESCRIPTION("BlueField DW Multimedia Card driver");
> +MODULE_AUTHOR("Mellanox Technologies");
> +MODULE_LICENSE("GPL v2");
> 



Re: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension

2018-05-01 Thread Shawn Lin

On 2018/5/2 2:19, Liming Sun wrote:

This commit adds extension to the dw_mmc driver for Mellanox BlueField
SoC. It updates the UHS_REG_EXT register to bring up the eMMC card on
this SoC.

Cc: sta...@kernel.org


Why?


Signed-off-by: Liming Sun 
Reviewed-by: David Woods 
---
  drivers/mmc/host/Kconfig|  9 +
  drivers/mmc/host/Makefile   |  1 +
  drivers/mmc/host/dw_mmc-bluefield.c | 72 +
  3 files changed, 82 insertions(+)
  create mode 100644 drivers/mmc/host/dw_mmc-bluefield.c

diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 9589f9c..26ac6b5 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -717,6 +717,15 @@ config MMC_DW_K3
  Synopsys DesignWare Memory Card Interface driver. Select this option
  for platforms based on Hisilicon K3 SoC's.
  
+config MMC_DW_BLUEFIELD


And did you have feedback of my comment in V2?
http://lists-archives.com/linux-kernel/29104830-mmc-dw_mmc-bluefield-add-driver-extension.html


+   tristate "BlueField specific extensions for Synopsys DW Memory Card 
Interface"
+   depends on MMC_DW
+   select MMC_DW_PLTFM
+   help
+ This selects support for Mellanox BlueField SoC specific extensions to
+ the Synopsys DesignWare Memory Card Interface driver. Select this
+ option for platforms based on Mellanox BlueField SoC's.
+
  config MMC_DW_PCI
tristate "Synopsys Designware MCI support on PCI bus"
depends on MMC_DW && PCI
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
index 6aead24..267b3f1 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -55,6 +55,7 @@ obj-$(CONFIG_MMC_DW_K3)   += dw_mmc-k3.o
  obj-$(CONFIG_MMC_DW_PCI)  += dw_mmc-pci.o
  obj-$(CONFIG_MMC_DW_ROCKCHIP) += dw_mmc-rockchip.o
  obj-$(CONFIG_MMC_DW_ZX)   += dw_mmc-zx.o
+obj-$(CONFIG_MMC_DW_BLUEFIELD) += dw_mmc-bluefield.o
  obj-$(CONFIG_MMC_SH_MMCIF)+= sh_mmcif.o
  obj-$(CONFIG_MMC_JZ4740)  += jz4740_mmc.o
  obj-$(CONFIG_MMC_VUB300)  += vub300.o
diff --git a/drivers/mmc/host/dw_mmc-bluefield.c 
b/drivers/mmc/host/dw_mmc-bluefield.c
new file mode 100644
index 000..12067b1
--- /dev/null
+++ b/drivers/mmc/host/dw_mmc-bluefield.c
@@ -0,0 +1,72 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2018 Mellanox Technologies.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include "dw_mmc.h"
+#include "dw_mmc-pltfm.h"
+
+static void dw_mci_bluefield_set_ios(struct dw_mci *host, struct mmc_ios *ios)
+{
+   u32 regs;
+
+   /* Set drive=4 (bit 29:23) and sample=2 (bit 22:16) in UHS_REG_EXT. */
+   regs = mci_readl(host, UHS_REG_EXT);
+   regs = (regs & ~0x3F10 & ~0x7F) | (4 << 23) | (2 << 16);
+   mci_writel(host, UHS_REG_EXT, regs);
+}
+
+static const struct dw_mci_drv_data bluefield_drv_data = {
+   .set_ios= dw_mci_bluefield_set_ios
+};
+
+static const struct of_device_id dw_mci_bluefield_match[] = {
+   { .compatible = "mellanox,bluefield-dw-mshc",
+   .data = _drv_data },
+   {},
+};
+MODULE_DEVICE_TABLE(of, dw_mci_bluefield_match);
+
+static int dw_mci_bluefield_probe(struct platform_device *pdev)
+{
+   const struct dw_mci_drv_data *drv_data = NULL;
+   const struct of_device_id *match;
+
+   if (pdev->dev.of_node) {
+   match = of_match_node(dw_mci_bluefield_match,
+ pdev->dev.of_node);
+   drv_data = match->data;
+   }
+
+   return dw_mci_pltfm_register(pdev, drv_data);
+}
+
+static struct platform_driver dw_mci_bluefield_pltfm_driver = {
+   .probe  = dw_mci_bluefield_probe,
+   .remove = dw_mci_pltfm_remove,
+   .driver = {
+   .name   = "dwmmc_bluefield",
+   .of_match_table = dw_mci_bluefield_match,
+   .pm = _mci_pltfm_pmops,
+   },
+};
+
+module_platform_driver(dw_mci_bluefield_pltfm_driver);
+
+MODULE_DESCRIPTION("BlueField DW Multimedia Card driver");
+MODULE_AUTHOR("Mellanox Technologies");
+MODULE_LICENSE("GPL v2");





Re: [PATCH v5 1/3] mmc: dw_mmc-bluefield: Add driver extension

2018-05-01 Thread Shawn Lin

On 2018/5/2 2:19, Liming Sun wrote:

This commit adds extension to the dw_mmc driver for Mellanox BlueField
SoC. It updates the UHS_REG_EXT register to bring up the eMMC card on
this SoC.

Cc: sta...@kernel.org


Why?


Signed-off-by: Liming Sun 
Reviewed-by: David Woods 
---
  drivers/mmc/host/Kconfig|  9 +
  drivers/mmc/host/Makefile   |  1 +
  drivers/mmc/host/dw_mmc-bluefield.c | 72 +
  3 files changed, 82 insertions(+)
  create mode 100644 drivers/mmc/host/dw_mmc-bluefield.c

diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 9589f9c..26ac6b5 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -717,6 +717,15 @@ config MMC_DW_K3
  Synopsys DesignWare Memory Card Interface driver. Select this option
  for platforms based on Hisilicon K3 SoC's.
  
+config MMC_DW_BLUEFIELD


And did you have feedback of my comment in V2?
http://lists-archives.com/linux-kernel/29104830-mmc-dw_mmc-bluefield-add-driver-extension.html


+   tristate "BlueField specific extensions for Synopsys DW Memory Card 
Interface"
+   depends on MMC_DW
+   select MMC_DW_PLTFM
+   help
+ This selects support for Mellanox BlueField SoC specific extensions to
+ the Synopsys DesignWare Memory Card Interface driver. Select this
+ option for platforms based on Mellanox BlueField SoC's.
+
  config MMC_DW_PCI
tristate "Synopsys Designware MCI support on PCI bus"
depends on MMC_DW && PCI
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
index 6aead24..267b3f1 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -55,6 +55,7 @@ obj-$(CONFIG_MMC_DW_K3)   += dw_mmc-k3.o
  obj-$(CONFIG_MMC_DW_PCI)  += dw_mmc-pci.o
  obj-$(CONFIG_MMC_DW_ROCKCHIP) += dw_mmc-rockchip.o
  obj-$(CONFIG_MMC_DW_ZX)   += dw_mmc-zx.o
+obj-$(CONFIG_MMC_DW_BLUEFIELD) += dw_mmc-bluefield.o
  obj-$(CONFIG_MMC_SH_MMCIF)+= sh_mmcif.o
  obj-$(CONFIG_MMC_JZ4740)  += jz4740_mmc.o
  obj-$(CONFIG_MMC_VUB300)  += vub300.o
diff --git a/drivers/mmc/host/dw_mmc-bluefield.c 
b/drivers/mmc/host/dw_mmc-bluefield.c
new file mode 100644
index 000..12067b1
--- /dev/null
+++ b/drivers/mmc/host/dw_mmc-bluefield.c
@@ -0,0 +1,72 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2018 Mellanox Technologies.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include "dw_mmc.h"
+#include "dw_mmc-pltfm.h"
+
+static void dw_mci_bluefield_set_ios(struct dw_mci *host, struct mmc_ios *ios)
+{
+   u32 regs;
+
+   /* Set drive=4 (bit 29:23) and sample=2 (bit 22:16) in UHS_REG_EXT. */
+   regs = mci_readl(host, UHS_REG_EXT);
+   regs = (regs & ~0x3F10 & ~0x7F) | (4 << 23) | (2 << 16);
+   mci_writel(host, UHS_REG_EXT, regs);
+}
+
+static const struct dw_mci_drv_data bluefield_drv_data = {
+   .set_ios= dw_mci_bluefield_set_ios
+};
+
+static const struct of_device_id dw_mci_bluefield_match[] = {
+   { .compatible = "mellanox,bluefield-dw-mshc",
+   .data = _drv_data },
+   {},
+};
+MODULE_DEVICE_TABLE(of, dw_mci_bluefield_match);
+
+static int dw_mci_bluefield_probe(struct platform_device *pdev)
+{
+   const struct dw_mci_drv_data *drv_data = NULL;
+   const struct of_device_id *match;
+
+   if (pdev->dev.of_node) {
+   match = of_match_node(dw_mci_bluefield_match,
+ pdev->dev.of_node);
+   drv_data = match->data;
+   }
+
+   return dw_mci_pltfm_register(pdev, drv_data);
+}
+
+static struct platform_driver dw_mci_bluefield_pltfm_driver = {
+   .probe  = dw_mci_bluefield_probe,
+   .remove = dw_mci_pltfm_remove,
+   .driver = {
+   .name   = "dwmmc_bluefield",
+   .of_match_table = dw_mci_bluefield_match,
+   .pm = _mci_pltfm_pmops,
+   },
+};
+
+module_platform_driver(dw_mci_bluefield_pltfm_driver);
+
+MODULE_DESCRIPTION("BlueField DW Multimedia Card driver");
+MODULE_AUTHOR("Mellanox Technologies");
+MODULE_LICENSE("GPL v2");