mbox series

[v4,0/7] treewide: scsi: ufs: Add support for Renesas R-Car UFS controller

Message ID 20220420025450.289578-1-yoshihiro.shimoda.uh@renesas.com (mailing list archive)
Headers show
Series treewide: scsi: ufs: Add support for Renesas R-Car UFS controller | expand

Message

Yoshihiro Shimoda April 20, 2022, 2:54 a.m. UTC
This patch series adds support Renesas R-Car S4-8 UFS controller.
This controller has some restrictions so adds some quirks for it.
Before using this driver, we have to initialize a clock generator
on the environment board (named "Spider") by using the commands of
U-Boot like below:
 => i2c dev 0
 => i2c mw 0x6c 0x26 0x05
 => i2c olen 0x6c 2
 => i2c mw 0x6c 0x26c 0x2e

To use the UFS controller, we need the following patch too:
https://lore.kernel.org/all/20220411124932.3765571-1-yoshihiro.shimoda.uh@renesas.com/

Changes from v3:
 - Fix build warning by clang in patch [4/7].
https://lore.kernel.org/all/20220419120316.209151-1-yoshihiro.shimoda.uh@renesas.com/

Changes from v2:
 - Add Reviewed-by in patch [1/7]. (Krzysztof, thanks!)
 - Use WARN_ON() instead of BUG_ON in patch [4/7].
https://lore.kernel.org/all/20220414023115.4190736-1-yoshihiro.shimoda.uh@renesas.com/

Changes from v1:
 - Fix dt-binding doc in patch [1/7].
 - Add __maybe_unused for compile test on other platforms in patch [4/7].
 - Fix node names in patch [5/7].
https://lore.kernel.org/all/20220412073647.3808493-1-yoshihiro.shimoda.uh@renesas.com/

Yoshihiro Shimoda (7):
  dt-bindings: ufs: Document Renesas R-Car UFS host controller
  ufs: add UFSHCD_QUIRK_BROKEN_64BIT_ADDRESS
  ufs: add UFSHCD_QUIRK_HIBERN_FASTAUTO
  scsi: ufs-renesas: Add support for Renesas R-Car UFS controller
  scsi: MAINTAINERS: Add maintainer for Renesas UFS driver
  arm64: dts: renesas: r8a779f0: Add UFS node
  arm64: dts: renesas: r8a779f0: spider-cpu: Enable UFS device

 .../devicetree/bindings/ufs/renesas,ufs.yaml  |  61 +++
 MAINTAINERS                                   |   7 +
 .../boot/dts/renesas/r8a779f0-spider-cpu.dtsi |   8 +
 arch/arm64/boot/dts/renesas/r8a779f0.dtsi     |  19 +
 drivers/scsi/ufs/Kconfig                      |  12 +
 drivers/scsi/ufs/Makefile                     |   1 +
 drivers/scsi/ufs/ufs-renesas.c                | 418 ++++++++++++++++++
 drivers/scsi/ufs/ufshcd.c                     |  12 +-
 drivers/scsi/ufs/ufshcd.h                     |  12 +
 9 files changed, 547 insertions(+), 3 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/ufs/renesas,ufs.yaml
 create mode 100644 drivers/scsi/ufs/ufs-renesas.c

Comments

Geert Uytterhoeven April 25, 2022, 3:32 p.m. UTC | #1
Hi Shimoda-san,

On Wed, Apr 20, 2022 at 8:17 AM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> This patch series adds support Renesas R-Car S4-8 UFS controller.

Thanks for your series!

> This controller has some restrictions so adds some quirks for it.
> Before using this driver, we have to initialize a clock generator
> on the environment board (named "Spider") by using the commands of
> U-Boot like below:
>  => i2c dev 0
>  => i2c mw 0x6c 0x26 0x05
>  => i2c olen 0x6c 2
>  => i2c mw 0x6c 0x26c 0x2e

You mean we need a driver for the RC21212 clock generator? ;-)

Or the boot loader should program the clock generator, like is done
on other R-Car boards for e.g. the PCIe clock (BTW, RC21212 also
generates the PCIe clock on Spider)?

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Yoshihiro Shimoda April 25, 2022, 11:25 p.m. UTC | #2
Hi Geert-san,

> From: Geert Uytterhoeven, Sent: Tuesday, April 26, 2022 12:32 AM
> 
> Hi Shimoda-san,
> 
> On Wed, Apr 20, 2022 at 8:17 AM Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com> wrote:
> > This patch series adds support Renesas R-Car S4-8 UFS controller.
> 
> Thanks for your series!
> 
> > This controller has some restrictions so adds some quirks for it.
> > Before using this driver, we have to initialize a clock generator
> > on the environment board (named "Spider") by using the commands of
> > U-Boot like below:
> >  => i2c dev 0
> >  => i2c mw 0x6c 0x26 0x05
> >  => i2c olen 0x6c 2
> >  => i2c mw 0x6c 0x26c 0x2e
> 
> You mean we need a driver for the RC21212 clock generator? ;-)

You're correct.
# JFYI, the Spider has RC21012 instead of RC21212 for some reasons.

> Or the boot loader should program the clock generator, like is done
> on other R-Car boards for e.g. the PCIe clock (BTW, RC21212 also
> generates the PCIe clock on Spider)?

I think so because the clock generator specification is complex.
The RC21012 also generates the PCIe clock and Ethernet on Spider.

Best regards,
Yoshihiro Shimoda