All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/3] bmips: add support for bcm6318 usbh phy
@ 2018-02-04 10:19 Álvaro Fernández Rojas
  2018-02-04 10:19 ` [U-Boot] [PATCH 1/3] phy: " Álvaro Fernández Rojas
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Álvaro Fernández Rojas @ 2018-02-04 10:19 UTC (permalink / raw)
  To: u-boot

Add support for BCM6318 usbh phy.

Álvaro Fernández Rojas (3):
  phy: add support for bcm6318 usbh phy
  mips: bmips: add support for bcm6318 usb
  mips: bmips: add ar-5315 usb support

 arch/mips/dts/brcm,bcm6318.dtsi        |  30 +++++++
 arch/mips/dts/comtrend,ar-5315u.dts    |  12 +++
 configs/comtrend_ar5315u_ram_defconfig |   9 +++
 drivers/phy/Kconfig                    |   7 ++
 drivers/phy/Makefile                   |   1 +
 drivers/phy/bcm6318-usbh-phy.c         | 144 +++++++++++++++++++++++++++++++++
 include/configs/bmips_bcm6318.h        |   7 ++
 7 files changed, 210 insertions(+)
 create mode 100644 drivers/phy/bcm6318-usbh-phy.c

-- 
2.11.0

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 1/3] phy: add support for bcm6318 usbh phy
  2018-02-04 10:19 [U-Boot] [PATCH 0/3] bmips: add support for bcm6318 usbh phy Álvaro Fernández Rojas
@ 2018-02-04 10:19 ` Álvaro Fernández Rojas
  2018-02-04 18:33   ` Daniel Schwierzeck
  2018-02-04 10:19 ` [U-Boot] [PATCH 2/3] mips: bmips: add support for bcm6318 usb Álvaro Fernández Rojas
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 10+ messages in thread
From: Álvaro Fernández Rojas @ 2018-02-04 10:19 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 drivers/phy/Kconfig            |   7 ++
 drivers/phy/Makefile           |   1 +
 drivers/phy/bcm6318-usbh-phy.c | 144 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 152 insertions(+)
 create mode 100644 drivers/phy/bcm6318-usbh-phy.c

diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig
index d3fa9ded2a..4e9d09910c 100644
--- a/drivers/phy/Kconfig
+++ b/drivers/phy/Kconfig
@@ -59,6 +59,13 @@ config SPL_NOP_PHY
 	  This is useful when a driver uses the PHY framework but no real PHY
 	  hardware exists.
 
+config BCM6318_USBH_PHY
+	bool "BCM6318 USBH PHY support"
+	depends on PHY && ARCH_BMIPS
+	select POWER_DOMAIN
+	help
+	  Support for the Broadcom MIPS BCM6318 USBH PHY.
+
 config BCM6348_USBH_PHY
 	bool "BCM6348 USBH PHY support"
 	depends on PHY && ARCH_BMIPS
diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile
index d8239854a3..68087ae3b1 100644
--- a/drivers/phy/Makefile
+++ b/drivers/phy/Makefile
@@ -7,6 +7,7 @@
 
 obj-$(CONFIG_$(SPL_)PHY) += phy-uclass.o
 obj-$(CONFIG_$(SPL_)NOP_PHY) += nop-phy.o
+obj-$(CONFIG_BCM6318_USBH_PHY) += bcm6318-usbh-phy.o
 obj-$(CONFIG_BCM6348_USBH_PHY) += bcm6348-usbh-phy.o
 obj-$(CONFIG_BCM6358_USBH_PHY) += bcm6358-usbh-phy.o
 obj-$(CONFIG_BCM6368_USBH_PHY) += bcm6368-usbh-phy.o
diff --git a/drivers/phy/bcm6318-usbh-phy.c b/drivers/phy/bcm6318-usbh-phy.c
new file mode 100644
index 0000000000..9f22269ced
--- /dev/null
+++ b/drivers/phy/bcm6318-usbh-phy.c
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2018 Álvaro Fernández Rojas <noltari@gmail.com>
+ *
+ * Derived from linux/arch/mips/bcm63xx/usb-common.c:
+ *	Copyright 2008 Maxime Bizon <mbizon@freebox.fr>
+ *	Copyright 2013 Florian Fainelli <florian@openwrt.org>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <clk.h>
+#include <dm.h>
+#include <generic-phy.h>
+#include <power-domain.h>
+#include <reset.h>
+#include <asm/io.h>
+#include <dm/device.h>
+
+/* USBH Setup register */
+#define USBH_SETUP_REG		0x00
+#define USBH_SETUP_IOC		BIT(4)
+
+/* USBH PLL Control register */
+#define USBH_PLL_REG		0x04
+#define USBH_PLL_SUSP_EN	BIT(27)
+#define USBH_PLL_IDDQ_PWRDN	BIT(31)
+
+/* USBH Swap Control register */
+#define USBH_SWAP_REG		0x0c
+#define USBH_SWAP_OHCI_DATA	BIT(0)
+#define USBH_SWAP_OHCI_ENDIAN	BIT(1)
+#define USBH_SWAP_EHCI_DATA	BIT(3)
+#define USBH_SWAP_EHCI_ENDIAN	BIT(4)
+
+/* USBH Sim Control register */
+#define USBH_SIM_REG		0x20
+#define USBH_SIM_LADDR		BIT(5)
+
+struct bcm6318_usbh_priv {
+	void __iomem *regs;
+};
+
+static int bcm6318_usbh_init(struct phy *phy)
+{
+	struct bcm6318_usbh_priv *priv = dev_get_priv(phy->dev);
+
+	/* enable pll control susp */
+	setbits_be32(priv->regs + USBH_PLL_REG, USBH_PLL_SUSP_EN);
+
+	/* configure to work in native cpu endian */
+	clrsetbits_be32(priv->regs + USBH_SWAP_REG,
+			USBH_SWAP_EHCI_ENDIAN | USBH_SWAP_OHCI_ENDIAN,
+			USBH_SWAP_EHCI_DATA | USBH_SWAP_OHCI_DATA);
+
+	/* setup config */
+	setbits_be32(priv->regs + USBH_SETUP_REG, USBH_SETUP_IOC);
+
+	/* disable pll control pwrdn */
+	clrbits_be32(priv->regs + USBH_PLL_REG, USBH_PLL_IDDQ_PWRDN);
+
+	/* sim control config */
+	setbits_be32(priv->regs + USBH_SIM_REG, USBH_SIM_LADDR);
+
+	return 0;
+}
+
+static struct phy_ops bcm6318_usbh_ops = {
+	.init = bcm6318_usbh_init,
+};
+
+static const struct udevice_id bcm6318_usbh_ids[] = {
+	{ .compatible = "brcm,bcm6318-usbh" },
+	{ /* sentinel */ }
+};
+
+static int bcm6318_usbh_probe(struct udevice *dev)
+{
+	struct bcm6318_usbh_priv *priv = dev_get_priv(dev);
+	struct power_domain pwr_dom;
+	struct reset_ctl rst_ctl;
+	struct clk clk;
+	fdt_addr_t addr;
+	fdt_size_t size;
+	int ret;
+
+	addr = devfdt_get_addr_size_index(dev, 0, &size);
+	if (addr == FDT_ADDR_T_NONE)
+		return -EINVAL;
+
+	priv->regs = ioremap(addr, size);
+
+	/* enable usbh clock */
+	ret = clk_get_by_name(dev, "usbh", &clk);
+	if (ret < 0)
+		return ret;
+
+	ret = clk_enable(&clk);
+	if (ret < 0)
+		return ret;
+
+	ret = clk_free(&clk);
+	if (ret < 0)
+		return ret;
+
+	/* enable power domain */
+	ret = power_domain_get(dev, &pwr_dom);
+	if (ret < 0)
+		return ret;
+
+	ret = power_domain_on(&pwr_dom);
+	if (ret < 0)
+		return ret;
+
+	ret = power_domain_free(&pwr_dom);
+	if (ret < 0)
+		return ret;
+
+	/* perform reset */
+	ret = reset_get_by_index(dev, 0, &rst_ctl);
+	if (ret < 0)
+		return ret;
+
+	ret = reset_deassert(&rst_ctl);
+	if (ret < 0)
+		return ret;
+
+	ret = reset_free(&rst_ctl);
+	if (ret < 0)
+		return ret;
+
+	mdelay(100);
+
+	return 0;
+}
+
+U_BOOT_DRIVER(bcm6318_usbh) = {
+	.name = "bcm6318-usbh",
+	.id = UCLASS_PHY,
+	.of_match = bcm6318_usbh_ids,
+	.ops = &bcm6318_usbh_ops,
+	.priv_auto_alloc_size = sizeof(struct bcm6318_usbh_priv),
+	.probe = bcm6318_usbh_probe,
+};
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 2/3] mips: bmips: add support for bcm6318 usb
  2018-02-04 10:19 [U-Boot] [PATCH 0/3] bmips: add support for bcm6318 usbh phy Álvaro Fernández Rojas
  2018-02-04 10:19 ` [U-Boot] [PATCH 1/3] phy: " Álvaro Fernández Rojas
@ 2018-02-04 10:19 ` Álvaro Fernández Rojas
  2018-02-04 10:19 ` [U-Boot] [PATCH 3/3] mips: bmips: add ar-5315 usb support Álvaro Fernández Rojas
  2018-02-04 20:11 ` [U-Boot] [PATCH v2 0/3] bmips: add support for bcm6318 usbh phy Álvaro Fernández Rojas
  3 siblings, 0 replies; 10+ messages in thread
From: Álvaro Fernández Rojas @ 2018-02-04 10:19 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 arch/mips/dts/brcm,bcm6318.dtsi | 30 ++++++++++++++++++++++++++++++
 include/configs/bmips_bcm6318.h |  7 +++++++
 2 files changed, 37 insertions(+)

diff --git a/arch/mips/dts/brcm,bcm6318.dtsi b/arch/mips/dts/brcm,bcm6318.dtsi
index 54964a7009..015acc9173 100644
--- a/arch/mips/dts/brcm,bcm6318.dtsi
+++ b/arch/mips/dts/brcm,bcm6318.dtsi
@@ -153,5 +153,35 @@
 			reg = <0x10004000 0x38>;
 			u-boot,dm-pre-reloc;
 		};
+
+		ehci: usb-controller at 10005000 {
+			compatible = "brcm,bcm6318-ehci", "generic-ehci";
+			reg = <0x10005000 0x100>;
+			phys = <&usbh>;
+			big-endian;
+
+			status = "disabled";
+		};
+
+		ohci: usb-controller at 10005100 {
+			compatible = "brcm,bcm6318-ohci", "generic-ohci";
+			reg = <0x10005100 0x100>;
+			phys = <&usbh>;
+			big-endian;
+
+			status = "disabled";
+		};
+
+		usbh: usb-phy at 10005200 {
+			compatible = "brcm,bcm6318-usbh";
+			reg = <0x10005200 0x30>;
+			#phy-cells = <0>;
+			clocks = <&periph_clk BCM6318_CLK_USB>;
+			clock-names = "usbh";
+			power-domains = <&periph_pwr BCM6318_PWR_USB>;
+			resets = <&periph_rst BCM6318_RST_USBH>;
+
+			status = "disabled";
+		};
 	};
 };
diff --git a/include/configs/bmips_bcm6318.h b/include/configs/bmips_bcm6318.h
index 454a7b7f7b..5541cc5cf6 100644
--- a/include/configs/bmips_bcm6318.h
+++ b/include/configs/bmips_bcm6318.h
@@ -14,6 +14,13 @@
 #define CONFIG_NR_DRAM_BANKS		1
 #define CONFIG_SYS_SDRAM_BASE		0x80000000
 
+/* USB */
+#define CONFIG_EHCI_DESC_BIG_ENDIAN
+#define CONFIG_EHCI_MMIO_BIG_ENDIAN
+#define CONFIG_SYS_OHCI_SWAP_REG_ACCESS
+#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2
+#define CONFIG_USB_OHCI_NEW
+
 /* U-Boot */
 #define CONFIG_SYS_LOAD_ADDR		CONFIG_SYS_SDRAM_BASE + 0x100000
 
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 3/3] mips: bmips: add ar-5315 usb support
  2018-02-04 10:19 [U-Boot] [PATCH 0/3] bmips: add support for bcm6318 usbh phy Álvaro Fernández Rojas
  2018-02-04 10:19 ` [U-Boot] [PATCH 1/3] phy: " Álvaro Fernández Rojas
  2018-02-04 10:19 ` [U-Boot] [PATCH 2/3] mips: bmips: add support for bcm6318 usb Álvaro Fernández Rojas
@ 2018-02-04 10:19 ` Álvaro Fernández Rojas
  2018-02-04 20:11 ` [U-Boot] [PATCH v2 0/3] bmips: add support for bcm6318 usbh phy Álvaro Fernández Rojas
  3 siblings, 0 replies; 10+ messages in thread
From: Álvaro Fernández Rojas @ 2018-02-04 10:19 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 arch/mips/dts/comtrend,ar-5315u.dts    | 12 ++++++++++++
 configs/comtrend_ar5315u_ram_defconfig |  9 +++++++++
 2 files changed, 21 insertions(+)

diff --git a/arch/mips/dts/comtrend,ar-5315u.dts b/arch/mips/dts/comtrend,ar-5315u.dts
index 4e4d69b638..af3159a03a 100644
--- a/arch/mips/dts/comtrend,ar-5315u.dts
+++ b/arch/mips/dts/comtrend,ar-5315u.dts
@@ -21,6 +21,10 @@
 	};
 };
 
+&ehci {
+	status = "okay";
+};
+
 &leds {
 	status = "okay";
 
@@ -67,6 +71,10 @@
 	};
 };
 
+&ohci {
+	status = "okay";
+};
+
 &spi {
 	status = "okay";
 
@@ -83,3 +91,7 @@
 	u-boot,dm-pre-reloc;
 	status = "okay";
 };
+
+&usbh {
+	status = "okay";
+};
diff --git a/configs/comtrend_ar5315u_ram_defconfig b/configs/comtrend_ar5315u_ram_defconfig
index c83234a98b..1c3595d2b4 100644
--- a/configs/comtrend_ar5315u_ram_defconfig
+++ b/configs/comtrend_ar5315u_ram_defconfig
@@ -28,6 +28,7 @@ CONFIG_CMD_MEMINFO=y
 # CONFIG_CMD_LOADS is not set
 CONFIG_CMD_SF=y
 CONFIG_CMD_SPI=y
+CONFIG_CMD_USB=y
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
 # CONFIG_CMD_MISC is not set
@@ -41,6 +42,8 @@ CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SPI_FLASH_MTD=y
+CONFIG_PHY=y
+CONFIG_BCM6358_USBH_PHY=y
 CONFIG_POWER_DOMAIN=y
 CONFIG_BCM6328_POWER_DOMAIN=y
 CONFIG_DM_RESET=y
@@ -50,3 +53,9 @@ CONFIG_DM_SERIAL=y
 CONFIG_BCM6345_SERIAL=y
 CONFIG_DM_SPI=y
 CONFIG_BCM63XX_HSSPI=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_GENERIC=y
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_GENERIC=y
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 1/3] phy: add support for bcm6318 usbh phy
  2018-02-04 10:19 ` [U-Boot] [PATCH 1/3] phy: " Álvaro Fernández Rojas
@ 2018-02-04 18:33   ` Daniel Schwierzeck
  0 siblings, 0 replies; 10+ messages in thread
From: Daniel Schwierzeck @ 2018-02-04 18:33 UTC (permalink / raw)
  To: u-boot



On 04.02.2018 11:19, Álvaro Fernández Rojas wrote:
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> ---
>  drivers/phy/Kconfig            |   7 ++
>  drivers/phy/Makefile           |   1 +
>  drivers/phy/bcm6318-usbh-phy.c | 144 +++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 152 insertions(+)
>  create mode 100644 drivers/phy/bcm6318-usbh-phy.c
> 

Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>

-- 
- Daniel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180204/69078684/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH v2 0/3] bmips: add support for bcm6318 usbh phy
  2018-02-04 10:19 [U-Boot] [PATCH 0/3] bmips: add support for bcm6318 usbh phy Álvaro Fernández Rojas
                   ` (2 preceding siblings ...)
  2018-02-04 10:19 ` [U-Boot] [PATCH 3/3] mips: bmips: add ar-5315 usb support Álvaro Fernández Rojas
@ 2018-02-04 20:11 ` Álvaro Fernández Rojas
  2018-02-04 20:11   ` [U-Boot] [PATCH v2 1/3] phy: " Álvaro Fernández Rojas
                     ` (3 more replies)
  3 siblings, 4 replies; 10+ messages in thread
From: Álvaro Fernández Rojas @ 2018-02-04 20:11 UTC (permalink / raw)
  To: u-boot

Add support for BCM6318 usbh phy.

v2: use correct phy driver

Álvaro Fernández Rojas (3):
  phy: add support for bcm6318 usbh phy
  mips: bmips: add support for bcm6318 usb
  mips: bmips: add ar-5315 usb support

 arch/mips/dts/brcm,bcm6318.dtsi        |  30 +++++++
 arch/mips/dts/comtrend,ar-5315u.dts    |  12 +++
 configs/comtrend_ar5315u_ram_defconfig |   9 +++
 drivers/phy/Kconfig                    |   7 ++
 drivers/phy/Makefile                   |   1 +
 drivers/phy/bcm6318-usbh-phy.c         | 144 +++++++++++++++++++++++++++++++++
 include/configs/bmips_bcm6318.h        |   7 ++
 7 files changed, 210 insertions(+)
 create mode 100644 drivers/phy/bcm6318-usbh-phy.c

-- 
2.11.0

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH v2 1/3] phy: add support for bcm6318 usbh phy
  2018-02-04 20:11 ` [U-Boot] [PATCH v2 0/3] bmips: add support for bcm6318 usbh phy Álvaro Fernández Rojas
@ 2018-02-04 20:11   ` Álvaro Fernández Rojas
  2018-02-04 20:11   ` [U-Boot] [PATCH v2 2/3] mips: bmips: add support for bcm6318 usb Álvaro Fernández Rojas
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 10+ messages in thread
From: Álvaro Fernández Rojas @ 2018-02-04 20:11 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
---
 v2: no changes

 drivers/phy/Kconfig            |   7 ++
 drivers/phy/Makefile           |   1 +
 drivers/phy/bcm6318-usbh-phy.c | 144 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 152 insertions(+)
 create mode 100644 drivers/phy/bcm6318-usbh-phy.c

diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig
index d3fa9ded2a..4e9d09910c 100644
--- a/drivers/phy/Kconfig
+++ b/drivers/phy/Kconfig
@@ -59,6 +59,13 @@ config SPL_NOP_PHY
 	  This is useful when a driver uses the PHY framework but no real PHY
 	  hardware exists.
 
+config BCM6318_USBH_PHY
+	bool "BCM6318 USBH PHY support"
+	depends on PHY && ARCH_BMIPS
+	select POWER_DOMAIN
+	help
+	  Support for the Broadcom MIPS BCM6318 USBH PHY.
+
 config BCM6348_USBH_PHY
 	bool "BCM6348 USBH PHY support"
 	depends on PHY && ARCH_BMIPS
diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile
index d8239854a3..68087ae3b1 100644
--- a/drivers/phy/Makefile
+++ b/drivers/phy/Makefile
@@ -7,6 +7,7 @@
 
 obj-$(CONFIG_$(SPL_)PHY) += phy-uclass.o
 obj-$(CONFIG_$(SPL_)NOP_PHY) += nop-phy.o
+obj-$(CONFIG_BCM6318_USBH_PHY) += bcm6318-usbh-phy.o
 obj-$(CONFIG_BCM6348_USBH_PHY) += bcm6348-usbh-phy.o
 obj-$(CONFIG_BCM6358_USBH_PHY) += bcm6358-usbh-phy.o
 obj-$(CONFIG_BCM6368_USBH_PHY) += bcm6368-usbh-phy.o
diff --git a/drivers/phy/bcm6318-usbh-phy.c b/drivers/phy/bcm6318-usbh-phy.c
new file mode 100644
index 0000000000..9f22269ced
--- /dev/null
+++ b/drivers/phy/bcm6318-usbh-phy.c
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2018 Álvaro Fernández Rojas <noltari@gmail.com>
+ *
+ * Derived from linux/arch/mips/bcm63xx/usb-common.c:
+ *	Copyright 2008 Maxime Bizon <mbizon@freebox.fr>
+ *	Copyright 2013 Florian Fainelli <florian@openwrt.org>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <clk.h>
+#include <dm.h>
+#include <generic-phy.h>
+#include <power-domain.h>
+#include <reset.h>
+#include <asm/io.h>
+#include <dm/device.h>
+
+/* USBH Setup register */
+#define USBH_SETUP_REG		0x00
+#define USBH_SETUP_IOC		BIT(4)
+
+/* USBH PLL Control register */
+#define USBH_PLL_REG		0x04
+#define USBH_PLL_SUSP_EN	BIT(27)
+#define USBH_PLL_IDDQ_PWRDN	BIT(31)
+
+/* USBH Swap Control register */
+#define USBH_SWAP_REG		0x0c
+#define USBH_SWAP_OHCI_DATA	BIT(0)
+#define USBH_SWAP_OHCI_ENDIAN	BIT(1)
+#define USBH_SWAP_EHCI_DATA	BIT(3)
+#define USBH_SWAP_EHCI_ENDIAN	BIT(4)
+
+/* USBH Sim Control register */
+#define USBH_SIM_REG		0x20
+#define USBH_SIM_LADDR		BIT(5)
+
+struct bcm6318_usbh_priv {
+	void __iomem *regs;
+};
+
+static int bcm6318_usbh_init(struct phy *phy)
+{
+	struct bcm6318_usbh_priv *priv = dev_get_priv(phy->dev);
+
+	/* enable pll control susp */
+	setbits_be32(priv->regs + USBH_PLL_REG, USBH_PLL_SUSP_EN);
+
+	/* configure to work in native cpu endian */
+	clrsetbits_be32(priv->regs + USBH_SWAP_REG,
+			USBH_SWAP_EHCI_ENDIAN | USBH_SWAP_OHCI_ENDIAN,
+			USBH_SWAP_EHCI_DATA | USBH_SWAP_OHCI_DATA);
+
+	/* setup config */
+	setbits_be32(priv->regs + USBH_SETUP_REG, USBH_SETUP_IOC);
+
+	/* disable pll control pwrdn */
+	clrbits_be32(priv->regs + USBH_PLL_REG, USBH_PLL_IDDQ_PWRDN);
+
+	/* sim control config */
+	setbits_be32(priv->regs + USBH_SIM_REG, USBH_SIM_LADDR);
+
+	return 0;
+}
+
+static struct phy_ops bcm6318_usbh_ops = {
+	.init = bcm6318_usbh_init,
+};
+
+static const struct udevice_id bcm6318_usbh_ids[] = {
+	{ .compatible = "brcm,bcm6318-usbh" },
+	{ /* sentinel */ }
+};
+
+static int bcm6318_usbh_probe(struct udevice *dev)
+{
+	struct bcm6318_usbh_priv *priv = dev_get_priv(dev);
+	struct power_domain pwr_dom;
+	struct reset_ctl rst_ctl;
+	struct clk clk;
+	fdt_addr_t addr;
+	fdt_size_t size;
+	int ret;
+
+	addr = devfdt_get_addr_size_index(dev, 0, &size);
+	if (addr == FDT_ADDR_T_NONE)
+		return -EINVAL;
+
+	priv->regs = ioremap(addr, size);
+
+	/* enable usbh clock */
+	ret = clk_get_by_name(dev, "usbh", &clk);
+	if (ret < 0)
+		return ret;
+
+	ret = clk_enable(&clk);
+	if (ret < 0)
+		return ret;
+
+	ret = clk_free(&clk);
+	if (ret < 0)
+		return ret;
+
+	/* enable power domain */
+	ret = power_domain_get(dev, &pwr_dom);
+	if (ret < 0)
+		return ret;
+
+	ret = power_domain_on(&pwr_dom);
+	if (ret < 0)
+		return ret;
+
+	ret = power_domain_free(&pwr_dom);
+	if (ret < 0)
+		return ret;
+
+	/* perform reset */
+	ret = reset_get_by_index(dev, 0, &rst_ctl);
+	if (ret < 0)
+		return ret;
+
+	ret = reset_deassert(&rst_ctl);
+	if (ret < 0)
+		return ret;
+
+	ret = reset_free(&rst_ctl);
+	if (ret < 0)
+		return ret;
+
+	mdelay(100);
+
+	return 0;
+}
+
+U_BOOT_DRIVER(bcm6318_usbh) = {
+	.name = "bcm6318-usbh",
+	.id = UCLASS_PHY,
+	.of_match = bcm6318_usbh_ids,
+	.ops = &bcm6318_usbh_ops,
+	.priv_auto_alloc_size = sizeof(struct bcm6318_usbh_priv),
+	.probe = bcm6318_usbh_probe,
+};
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH v2 2/3] mips: bmips: add support for bcm6318 usb
  2018-02-04 20:11 ` [U-Boot] [PATCH v2 0/3] bmips: add support for bcm6318 usbh phy Álvaro Fernández Rojas
  2018-02-04 20:11   ` [U-Boot] [PATCH v2 1/3] phy: " Álvaro Fernández Rojas
@ 2018-02-04 20:11   ` Álvaro Fernández Rojas
  2018-02-04 20:11   ` [U-Boot] [PATCH v2 3/3] mips: bmips: add ar-5315 usb support Álvaro Fernández Rojas
  2018-03-19  1:13   ` [U-Boot] [PATCH v2 0/3] bmips: add support for bcm6318 usbh phy Daniel Schwierzeck
  3 siblings, 0 replies; 10+ messages in thread
From: Álvaro Fernández Rojas @ 2018-02-04 20:11 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 v2: no changes

 arch/mips/dts/brcm,bcm6318.dtsi | 30 ++++++++++++++++++++++++++++++
 include/configs/bmips_bcm6318.h |  7 +++++++
 2 files changed, 37 insertions(+)

diff --git a/arch/mips/dts/brcm,bcm6318.dtsi b/arch/mips/dts/brcm,bcm6318.dtsi
index 54964a7009..015acc9173 100644
--- a/arch/mips/dts/brcm,bcm6318.dtsi
+++ b/arch/mips/dts/brcm,bcm6318.dtsi
@@ -153,5 +153,35 @@
 			reg = <0x10004000 0x38>;
 			u-boot,dm-pre-reloc;
 		};
+
+		ehci: usb-controller at 10005000 {
+			compatible = "brcm,bcm6318-ehci", "generic-ehci";
+			reg = <0x10005000 0x100>;
+			phys = <&usbh>;
+			big-endian;
+
+			status = "disabled";
+		};
+
+		ohci: usb-controller at 10005100 {
+			compatible = "brcm,bcm6318-ohci", "generic-ohci";
+			reg = <0x10005100 0x100>;
+			phys = <&usbh>;
+			big-endian;
+
+			status = "disabled";
+		};
+
+		usbh: usb-phy at 10005200 {
+			compatible = "brcm,bcm6318-usbh";
+			reg = <0x10005200 0x30>;
+			#phy-cells = <0>;
+			clocks = <&periph_clk BCM6318_CLK_USB>;
+			clock-names = "usbh";
+			power-domains = <&periph_pwr BCM6318_PWR_USB>;
+			resets = <&periph_rst BCM6318_RST_USBH>;
+
+			status = "disabled";
+		};
 	};
 };
diff --git a/include/configs/bmips_bcm6318.h b/include/configs/bmips_bcm6318.h
index 454a7b7f7b..5541cc5cf6 100644
--- a/include/configs/bmips_bcm6318.h
+++ b/include/configs/bmips_bcm6318.h
@@ -14,6 +14,13 @@
 #define CONFIG_NR_DRAM_BANKS		1
 #define CONFIG_SYS_SDRAM_BASE		0x80000000
 
+/* USB */
+#define CONFIG_EHCI_DESC_BIG_ENDIAN
+#define CONFIG_EHCI_MMIO_BIG_ENDIAN
+#define CONFIG_SYS_OHCI_SWAP_REG_ACCESS
+#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2
+#define CONFIG_USB_OHCI_NEW
+
 /* U-Boot */
 #define CONFIG_SYS_LOAD_ADDR		CONFIG_SYS_SDRAM_BASE + 0x100000
 
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH v2 3/3] mips: bmips: add ar-5315 usb support
  2018-02-04 20:11 ` [U-Boot] [PATCH v2 0/3] bmips: add support for bcm6318 usbh phy Álvaro Fernández Rojas
  2018-02-04 20:11   ` [U-Boot] [PATCH v2 1/3] phy: " Álvaro Fernández Rojas
  2018-02-04 20:11   ` [U-Boot] [PATCH v2 2/3] mips: bmips: add support for bcm6318 usb Álvaro Fernández Rojas
@ 2018-02-04 20:11   ` Álvaro Fernández Rojas
  2018-03-19  1:13   ` [U-Boot] [PATCH v2 0/3] bmips: add support for bcm6318 usbh phy Daniel Schwierzeck
  3 siblings, 0 replies; 10+ messages in thread
From: Álvaro Fernández Rojas @ 2018-02-04 20:11 UTC (permalink / raw)
  To: u-boot

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 v2: use correct phy driver

 arch/mips/dts/comtrend,ar-5315u.dts    | 12 ++++++++++++
 configs/comtrend_ar5315u_ram_defconfig |  9 +++++++++
 2 files changed, 21 insertions(+)

diff --git a/arch/mips/dts/comtrend,ar-5315u.dts b/arch/mips/dts/comtrend,ar-5315u.dts
index 4e4d69b638..af3159a03a 100644
--- a/arch/mips/dts/comtrend,ar-5315u.dts
+++ b/arch/mips/dts/comtrend,ar-5315u.dts
@@ -21,6 +21,10 @@
 	};
 };
 
+&ehci {
+	status = "okay";
+};
+
 &leds {
 	status = "okay";
 
@@ -67,6 +71,10 @@
 	};
 };
 
+&ohci {
+	status = "okay";
+};
+
 &spi {
 	status = "okay";
 
@@ -83,3 +91,7 @@
 	u-boot,dm-pre-reloc;
 	status = "okay";
 };
+
+&usbh {
+	status = "okay";
+};
diff --git a/configs/comtrend_ar5315u_ram_defconfig b/configs/comtrend_ar5315u_ram_defconfig
index c83234a98b..586074c08e 100644
--- a/configs/comtrend_ar5315u_ram_defconfig
+++ b/configs/comtrend_ar5315u_ram_defconfig
@@ -28,6 +28,7 @@ CONFIG_CMD_MEMINFO=y
 # CONFIG_CMD_LOADS is not set
 CONFIG_CMD_SF=y
 CONFIG_CMD_SPI=y
+CONFIG_CMD_USB=y
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
 # CONFIG_CMD_MISC is not set
@@ -41,6 +42,8 @@ CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_SPI_FLASH_MTD=y
+CONFIG_PHY=y
+CONFIG_BCM6318_USBH_PHY=y
 CONFIG_POWER_DOMAIN=y
 CONFIG_BCM6328_POWER_DOMAIN=y
 CONFIG_DM_RESET=y
@@ -50,3 +53,9 @@ CONFIG_DM_SERIAL=y
 CONFIG_BCM6345_SERIAL=y
 CONFIG_DM_SPI=y
 CONFIG_BCM63XX_HSSPI=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_GENERIC=y
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_GENERIC=y
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH v2 0/3] bmips: add support for bcm6318 usbh phy
  2018-02-04 20:11 ` [U-Boot] [PATCH v2 0/3] bmips: add support for bcm6318 usbh phy Álvaro Fernández Rojas
                     ` (2 preceding siblings ...)
  2018-02-04 20:11   ` [U-Boot] [PATCH v2 3/3] mips: bmips: add ar-5315 usb support Álvaro Fernández Rojas
@ 2018-03-19  1:13   ` Daniel Schwierzeck
  3 siblings, 0 replies; 10+ messages in thread
From: Daniel Schwierzeck @ 2018-03-19  1:13 UTC (permalink / raw)
  To: u-boot



On 04.02.2018 21:11, Álvaro Fernández Rojas wrote:
> Add support for BCM6318 usbh phy.
> 
> v2: use correct phy driver
> 
> Álvaro Fernández Rojas (3):
>   phy: add support for bcm6318 usbh phy
>   mips: bmips: add support for bcm6318 usb
>   mips: bmips: add ar-5315 usb support
> 
>  arch/mips/dts/brcm,bcm6318.dtsi        |  30 +++++++
>  arch/mips/dts/comtrend,ar-5315u.dts    |  12 +++
>  configs/comtrend_ar5315u_ram_defconfig |   9 +++
>  drivers/phy/Kconfig                    |   7 ++
>  drivers/phy/Makefile                   |   1 +
>  drivers/phy/bcm6318-usbh-phy.c         | 144 +++++++++++++++++++++++++++++++++
>  include/configs/bmips_bcm6318.h        |   7 ++
>  7 files changed, 210 insertions(+)
>  create mode 100644 drivers/phy/bcm6318-usbh-phy.c
> 

applied to u-boot-mips, thanks.

-- 
- Daniel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180319/2dad9f03/attachment.sig>

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2018-03-19  1:13 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-04 10:19 [U-Boot] [PATCH 0/3] bmips: add support for bcm6318 usbh phy Álvaro Fernández Rojas
2018-02-04 10:19 ` [U-Boot] [PATCH 1/3] phy: " Álvaro Fernández Rojas
2018-02-04 18:33   ` Daniel Schwierzeck
2018-02-04 10:19 ` [U-Boot] [PATCH 2/3] mips: bmips: add support for bcm6318 usb Álvaro Fernández Rojas
2018-02-04 10:19 ` [U-Boot] [PATCH 3/3] mips: bmips: add ar-5315 usb support Álvaro Fernández Rojas
2018-02-04 20:11 ` [U-Boot] [PATCH v2 0/3] bmips: add support for bcm6318 usbh phy Álvaro Fernández Rojas
2018-02-04 20:11   ` [U-Boot] [PATCH v2 1/3] phy: " Álvaro Fernández Rojas
2018-02-04 20:11   ` [U-Boot] [PATCH v2 2/3] mips: bmips: add support for bcm6318 usb Álvaro Fernández Rojas
2018-02-04 20:11   ` [U-Boot] [PATCH v2 3/3] mips: bmips: add ar-5315 usb support Álvaro Fernández Rojas
2018-03-19  1:13   ` [U-Boot] [PATCH v2 0/3] bmips: add support for bcm6318 usbh phy Daniel Schwierzeck

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.