mbox series

[00/18] Add USB on SAM9X60, SAMA7G5 and SAMA5D2 boards

Message ID 20221207131447.40590-1-sergiu.moga@microchip.com
Headers show
Series Add USB on SAM9X60, SAMA7G5 and SAMA5D2 boards | expand

Message

Sergiu Moga Dec. 7, 2022, 1:14 p.m. UTC
This series of patches is meant to add support for USB Mass Storage
on SAM9X60, SAMA7G5 and SAMA5D2 boards and register ohci-at91 driver into
Driver Model. In order for this to be achieved, the respective
DT nodes have been added, the USB clock has been registered into CCF
and the required defconfigs have been added to the boards' defconfig.
What is more, in order for the VBUS to stay enabled, a `child_pre_probe`
method has been added to overcome the DM core disabling it in
`usb_scan_device`: when the generic `device_probe` method is called,
the pinctrl is processed once again, undoing whatever changes have
been made in our driver's probe method.
In order to enable USB on SAMA7G5 the addition of RSTC and USB 2.0 PHY
drivers were required.

Cristian Birsan (2):
  ARM: at91: add sama7 SFR definitions
  usb: ohci-at91: Add `ohci_t` field in `ohci_at91_priv`

Sergiu Moga (16):
  ARM: dts: sam9x60ek: Add OHCI and EHCI DT nodes
  clk: at91: Add support for sam9x60 USB clock
  clk: at91: sam9x60: Register the required clocks for USB
  clk: at91: sam9x60: Add initial setup of UPLL and USBCK rates
  usb: ohci-at91: Enable OHCI functionality and register into DM
  configs: at91: sam9x60ek: Add required configs for the USB command
  dt-bindings: reset: add sama7g5 definitions
  dt-bindings: clk: at91: Define additional UTMI related clocks
  ARM: dts: at91: sama7: Add USB related DT nodes
  reset: at91: Add reset driver for basic assert/deassert operations
  phy: at91: Add support for the USB 2.0 PHY's of SAMA7
  usb: ohci-at91: Add USB PHY functionality
  configs: at91: sama7: Enable USB and RESET functionality
  ARM: dts: at91: sama5d2_icp: Add pinctrl nodes for USB related DT
    nodes
  ARM: dts: at91: sama5d27_wlsom1_ek: Add pinctrl nodes for USB DT nodes
  configs: at91: sama5d2: Enable OHCI/EHCI related configs

 arch/arm/dts/at91-sama5d27_wlsom1_ek.dts      |  25 ++
 arch/arm/dts/at91-sama5d2_icp.dts             |  22 ++
 arch/arm/dts/at91-sama7g5ek.dts               |  34 +++
 arch/arm/dts/sam9x60.dtsi                     |  18 ++
 arch/arm/dts/sam9x60ek.dts                    |  21 ++
 arch/arm/dts/sama7g5.dtsi                     |  73 ++++++
 arch/arm/mach-at91/include/mach/sama7-sfr.h   |  59 +++++
 configs/sam9x60ek_mmc_defconfig               |  10 +
 configs/sam9x60ek_nandflash_defconfig         |  10 +
 configs/sam9x60ek_qspiflash_defconfig         |  10 +
 configs/sama5d27_som1_ek_mmc1_defconfig       |   5 +
 configs/sama5d27_som1_ek_mmc_defconfig        |   5 +
 configs/sama5d27_som1_ek_qspiflash_defconfig  |   5 +
 configs/sama5d27_wlsom1_ek_mmc_defconfig      |   6 +
 .../sama5d27_wlsom1_ek_qspiflash_defconfig    |   5 +
 configs/sama5d2_icp_mmc_defconfig             |   9 +
 configs/sama5d2_icp_qspiflash_defconfig       |   9 +
 configs/sama5d2_ptc_ek_mmc_defconfig          |   5 +
 configs/sama5d2_ptc_ek_nandflash_defconfig    |   5 +
 configs/sama5d2_xplained_emmc_defconfig       |   5 +
 configs/sama5d2_xplained_mmc_defconfig        |   5 +
 configs/sama5d2_xplained_qspiflash_defconfig  |   5 +
 configs/sama5d2_xplained_spiflash_defconfig   |   5 +
 configs/sama7g5ek_mmc1_defconfig              |  13 ++
 configs/sama7g5ek_mmc_defconfig               |  13 ++
 drivers/clk/at91/Kconfig                      |   7 +
 drivers/clk/at91/Makefile                     |   1 +
 drivers/clk/at91/clk-sam9x60-usb.c            | 156 +++++++++++++
 drivers/clk/at91/pmc.h                        |  11 +
 drivers/clk/at91/sam9x60.c                    |  99 +++++++-
 drivers/phy/Kconfig                           |  10 +
 drivers/phy/Makefile                          |   1 +
 drivers/phy/phy-sama7-usb.c                   |  92 ++++++++
 drivers/phy/phy-sama7-utmi-clk.c              | 202 +++++++++++++++++
 drivers/reset/Kconfig                         |   8 +
 drivers/reset/Makefile                        |   1 +
 drivers/reset/reset-at91.c                    | 143 ++++++++++++
 drivers/sysreset/sysreset_at91.c              |  10 +-
 drivers/usb/host/ohci-at91.c                  | 214 ++++++++++++++++++
 include/dt-bindings/clk/at91.h                |   5 +
 include/dt-bindings/reset/sama7g5-reset.h     |  10 +
 41 files changed, 1342 insertions(+), 10 deletions(-)
 create mode 100644 arch/arm/mach-at91/include/mach/sama7-sfr.h
 create mode 100644 drivers/clk/at91/clk-sam9x60-usb.c
 create mode 100644 drivers/phy/phy-sama7-usb.c
 create mode 100644 drivers/phy/phy-sama7-utmi-clk.c
 create mode 100644 drivers/reset/reset-at91.c
 create mode 100644 include/dt-bindings/reset/sama7g5-reset.h

Comments

Eugen Hristev Dec. 7, 2022, 2:56 p.m. UTC | #1
On 12/7/22 15:14, Sergiu Moga wrote:
> This series of patches is meant to add support for USB Mass Storage
> on SAM9X60, SAMA7G5 and SAMA5D2 boards and register ohci-at91 driver into
> Driver Model. In order for this to be achieved, the respective
> DT nodes have been added, the USB clock has been registered into CCF
> and the required defconfigs have been added to the boards' defconfig.
> What is more, in order for the VBUS to stay enabled, a `child_pre_probe`
> method has been added to overcome the DM core disabling it in
> `usb_scan_device`: when the generic `device_probe` method is called,
> the pinctrl is processed once again, undoing whatever changes have
> been made in our driver's probe method.
> In order to enable USB on SAMA7G5 the addition of RSTC and USB 2.0 PHY
> drivers were required.
> 
> Cristian Birsan (2):
>    ARM: at91: add sama7 SFR definitions
>    usb: ohci-at91: Add `ohci_t` field in `ohci_at91_priv`
> 
> Sergiu Moga (16):
>    ARM: dts: sam9x60ek: Add OHCI and EHCI DT nodes
>    clk: at91: Add support for sam9x60 USB clock
>    clk: at91: sam9x60: Register the required clocks for USB
>    clk: at91: sam9x60: Add initial setup of UPLL and USBCK rates
>    usb: ohci-at91: Enable OHCI functionality and register into DM
>    configs: at91: sam9x60ek: Add required configs for the USB command
>    dt-bindings: reset: add sama7g5 definitions
>    dt-bindings: clk: at91: Define additional UTMI related clocks
>    ARM: dts: at91: sama7: Add USB related DT nodes
>    reset: at91: Add reset driver for basic assert/deassert operations
>    phy: at91: Add support for the USB 2.0 PHY's of SAMA7
>    usb: ohci-at91: Add USB PHY functionality
>    configs: at91: sama7: Enable USB and RESET functionality
>    ARM: dts: at91: sama5d2_icp: Add pinctrl nodes for USB related DT
>      nodes
>    ARM: dts: at91: sama5d27_wlsom1_ek: Add pinctrl nodes for USB DT nodes
>    configs: at91: sama5d2: Enable OHCI/EHCI related configs
> 
>   arch/arm/dts/at91-sama5d27_wlsom1_ek.dts      |  25 ++
>   arch/arm/dts/at91-sama5d2_icp.dts             |  22 ++
>   arch/arm/dts/at91-sama7g5ek.dts               |  34 +++
>   arch/arm/dts/sam9x60.dtsi                     |  18 ++
>   arch/arm/dts/sam9x60ek.dts                    |  21 ++
>   arch/arm/dts/sama7g5.dtsi                     |  73 ++++++
>   arch/arm/mach-at91/include/mach/sama7-sfr.h   |  59 +++++
>   configs/sam9x60ek_mmc_defconfig               |  10 +
>   configs/sam9x60ek_nandflash_defconfig         |  10 +
>   configs/sam9x60ek_qspiflash_defconfig         |  10 +
>   configs/sama5d27_som1_ek_mmc1_defconfig       |   5 +
>   configs/sama5d27_som1_ek_mmc_defconfig        |   5 +
>   configs/sama5d27_som1_ek_qspiflash_defconfig  |   5 +
>   configs/sama5d27_wlsom1_ek_mmc_defconfig      |   6 +
>   .../sama5d27_wlsom1_ek_qspiflash_defconfig    |   5 +
>   configs/sama5d2_icp_mmc_defconfig             |   9 +
>   configs/sama5d2_icp_qspiflash_defconfig       |   9 +
>   configs/sama5d2_ptc_ek_mmc_defconfig          |   5 +
>   configs/sama5d2_ptc_ek_nandflash_defconfig    |   5 +
>   configs/sama5d2_xplained_emmc_defconfig       |   5 +
>   configs/sama5d2_xplained_mmc_defconfig        |   5 +
>   configs/sama5d2_xplained_qspiflash_defconfig  |   5 +
>   configs/sama5d2_xplained_spiflash_defconfig   |   5 +
>   configs/sama7g5ek_mmc1_defconfig              |  13 ++
>   configs/sama7g5ek_mmc_defconfig               |  13 ++
>   drivers/clk/at91/Kconfig                      |   7 +
>   drivers/clk/at91/Makefile                     |   1 +
>   drivers/clk/at91/clk-sam9x60-usb.c            | 156 +++++++++++++
>   drivers/clk/at91/pmc.h                        |  11 +
>   drivers/clk/at91/sam9x60.c                    |  99 +++++++-
>   drivers/phy/Kconfig                           |  10 +
>   drivers/phy/Makefile                          |   1 +
>   drivers/phy/phy-sama7-usb.c                   |  92 ++++++++
>   drivers/phy/phy-sama7-utmi-clk.c              | 202 +++++++++++++++++
>   drivers/reset/Kconfig                         |   8 +
>   drivers/reset/Makefile                        |   1 +
>   drivers/reset/reset-at91.c                    | 143 ++++++++++++
>   drivers/sysreset/sysreset_at91.c              |  10 +-
>   drivers/usb/host/ohci-at91.c                  | 214 ++++++++++++++++++
>   include/dt-bindings/clk/at91.h                |   5 +
>   include/dt-bindings/reset/sama7g5-reset.h     |  10 +
>   41 files changed, 1342 insertions(+), 10 deletions(-)
>   create mode 100644 arch/arm/mach-at91/include/mach/sama7-sfr.h
>   create mode 100644 drivers/clk/at91/clk-sam9x60-usb.c
>   create mode 100644 drivers/phy/phy-sama7-usb.c
>   create mode 100644 drivers/phy/phy-sama7-utmi-clk.c
>   create mode 100644 drivers/reset/reset-at91.c
>   create mode 100644 include/dt-bindings/reset/sama7g5-reset.h
> 


Hi Sergiu,

When enabling the configs, I get plenty of errors like this in lots of 
boards:

./arch/arm/include/asm/arch/clk.h: In function ‘get_h32mxdiv’:
./arch/arm/include/asm/arch/clk.h:65:9: warning: implicit declaration of 
function ‘readl’ [-Wimplicit-function-declaration]
    65 |  return readl(&pmc->mckr) & AT91_PMC_MCKR_H32MXDIV;
       |         ^~~~~

This commit causes the problem :
configs: at91: sama5d2: Enable OHCI/EHCI related config

But I assume there is a problem with the driver since the commit only 
enables it to be built.

Can you have a look please ?

Eugen