From patchwork Mon Dec 19 08:46:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergiu Moga X-Patchwork-Id: 1717190 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=microchip.com header.i=@microchip.com header.a=rsa-sha256 header.s=mchp header.b=BjQkBqQ5; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NbCyC63Z1z1ydc for ; Mon, 19 Dec 2022 19:47:29 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 895B585062; Mon, 19 Dec 2022 09:47:20 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=quarantine dis=none) header.from=microchip.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=microchip.com header.i=@microchip.com header.b="BjQkBqQ5"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 53F4684D70; Mon, 19 Dec 2022 09:47:16 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_MSPIKE_H2, SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id F0427849C0 for ; Mon, 19 Dec 2022 09:47:10 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=quarantine dis=none) header.from=microchip.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=Sergiu.Moga@microchip.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1671439630; x=1702975630; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=GuBpRt8Vu+1EtUPUBYuxDkylX3ArkFCFOaM8be68s98=; b=BjQkBqQ5dPxRfXIfNvulXtIVkMeYfqgAJhTtIxxKiEHrQLm8BEI+dz83 /0lsdkOK+W8TxDqzQnYB8/5cQsybxWYfzoC3vIB8Gz0SKZEY+Rgp6H66+ QIy+R851gix518rHixtaACEgH21v1OAqY7QTGPB1w63piY8/ShXycVJZo DwknNQhIQ2Y/8D4Kqe+9LLza8OvLAyeWPjK/tVxSuGK7ivpn+DUR2wcxs SYo3hASUjuN0+dXR28jWd3iGKp/vfLp19YAUYgFDE42uF+Y09s8QFLvDa 4QBseLqzarmUHUhSxTk4wbiIApY+1iw2bB8Ws3Z7D+kq4OnSltU6WvWah g==; X-IronPort-AV: E=Sophos;i="5.96,255,1665471600"; d="scan'208";a="193587305" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa3.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 19 Dec 2022 01:46:57 -0700 Received: from chn-vm-ex03.mchp-main.com (10.10.85.151) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Mon, 19 Dec 2022 01:46:57 -0700 Received: from ROB-ULT-M68701.microchip.com (10.10.115.15) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server id 15.1.2507.16 via Frontend Transport; Mon, 19 Dec 2022 01:46:51 -0700 From: Sergiu Moga To: , , , , , , , , , , , , , , , , , , , , , , , , , CC: Subject: [PATCH v4 00/19] Add USB on SAM9X60, SAMA7G5 and SAMA5D2 boards Date: Mon, 19 Dec 2022 10:46:08 +0200 Message-ID: <20221219084626.34606-1-sergiu.moga@microchip.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean 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. v1 -> v2: - Additional patch included: [PATCH v2 04/19] clk: at91: pmc: export clock setup to pmc - Updated [PATCH v2 05/19] clk: at91: sam9x60: Add initial setup of UPLL and USBCK rates in concordance with the previously mentioned additional patch - Move ` #include ` below `#if !(CONFIG_IS_ENABLED(DM_USB))` to avoid implicit declarations warnings/errors in the OHCI driver v2 -> v3: - Also add USB pinctrl nodes and USB Mass Storage for SAM9X60 Curiosity and remove no longer necessary ifdef in sam9x60 clk driver - Remove no longer required CONFIG_SYS_USB_* configs from the defconfigs and add CONFIG_RESET_AT91 to all defconfigs v3 -> v4: - Remove unnecessary NULL assignment `sama7_phy->sfr = NULL;` in sama7 usb phy probe method Claudiu Beznea (1): clk: at91: pmc: export clock setup to pmc 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: sam9x60: 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 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 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: sam9x60ek: Add required configs for the USB command configs: at91: sama5d2: Enable OHCI/EHCI related configs configs: at91: sama7: Enable USB and RESET functionality arch/arm/dts/at91-sam9x60_curiosity.dts | 21 ++ 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/sam9x60_curiosity_mmc_defconfig | 8 + configs/sam9x60ek_mmc_defconfig | 9 + configs/sam9x60ek_nandflash_defconfig | 9 + configs/sam9x60ek_qspiflash_defconfig | 9 + configs/sama5d27_giantboard_defconfig | 4 + configs/sama5d27_som1_ek_mmc1_defconfig | 4 + configs/sama5d27_som1_ek_mmc_defconfig | 4 + configs/sama5d27_som1_ek_qspiflash_defconfig | 4 + configs/sama5d27_wlsom1_ek_mmc_defconfig | 5 + .../sama5d27_wlsom1_ek_qspiflash_defconfig | 4 + configs/sama5d2_icp_mmc_defconfig | 8 + configs/sama5d2_icp_qspiflash_defconfig | 4 + configs/sama5d2_ptc_ek_mmc_defconfig | 4 + configs/sama5d2_ptc_ek_nandflash_defconfig | 4 + configs/sama5d2_xplained_emmc_defconfig | 4 + configs/sama5d2_xplained_mmc_defconfig | 4 + configs/sama5d2_xplained_qspiflash_defconfig | 4 + configs/sama5d2_xplained_spiflash_defconfig | 4 + configs/sama7g5ek_mmc1_defconfig | 10 + configs/sama7g5ek_mmc_defconfig | 10 + drivers/clk/at91/Kconfig | 7 + drivers/clk/at91/Makefile | 1 + drivers/clk/at91/clk-sam9x60-usb.c | 156 +++++++++++++ drivers/clk/at91/pmc.c | 42 ++++ drivers/clk/at91/pmc.h | 27 +++ drivers/clk/at91/sam9x60.c | 63 +++++ drivers/clk/at91/sama7g5.c | 48 +--- drivers/phy/Kconfig | 10 + drivers/phy/Makefile | 1 + drivers/phy/phy-sama7-usb.c | 90 ++++++++ drivers/phy/phy-sama7-utmi-clk.c | 202 ++++++++++++++++ drivers/reset/Kconfig | 8 + drivers/reset/Makefile | 1 + drivers/reset/reset-at91.c | 141 ++++++++++++ drivers/sysreset/sysreset_at91.c | 10 +- drivers/usb/host/ohci-at91.c | 215 ++++++++++++++++++ include/dt-bindings/clk/at91.h | 5 + include/dt-bindings/reset/sama7g5-reset.h | 10 + 46 files changed, 1375 insertions(+), 51 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