浏览代码

phy: ti: usb2: Add support for AM654 USB2 PHY

commit 29eb36ace91f111bad4044aead95321603359c36 upstream.

Add support for the USB2 PHY on the AM654 SoC.

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Roger Quadros 6 年之前
父节点
当前提交
65b3bc70e9
共有 2 个文件被更改,包括 19 次插入2 次删除
  1. 2 2
      drivers/phy/ti/Kconfig
  2. 17 0
      drivers/phy/ti/phy-omap-usb2.c

+ 2 - 2
drivers/phy/ti/Kconfig

@@ -33,11 +33,11 @@ config OMAP_CONTROL_PHY
 
 
 config OMAP_USB2
 config OMAP_USB2
 	tristate "OMAP USB2 PHY Driver"
 	tristate "OMAP USB2 PHY Driver"
-	depends on ARCH_OMAP2PLUS
+	depends on ARCH_OMAP2PLUS || ARCH_K3
 	depends on USB_SUPPORT
 	depends on USB_SUPPORT
 	select GENERIC_PHY
 	select GENERIC_PHY
 	select USB_PHY
 	select USB_PHY
-	select OMAP_CONTROL_PHY
+	select OMAP_CONTROL_PHY if ARCH_OMAP2PLUS
 	help
 	help
 	  Enable this to support the transceiver that is part of SOC. This
 	  Enable this to support the transceiver that is part of SOC. This
 	  driver takes care of all the PHY functionality apart from comparator.
 	  driver takes care of all the PHY functionality apart from comparator.

+ 17 - 0
drivers/phy/ti/phy-omap-usb2.c

@@ -36,6 +36,10 @@
 #define USB2PHY_DISCON_BYP_LATCH (1 << 31)
 #define USB2PHY_DISCON_BYP_LATCH (1 << 31)
 #define USB2PHY_ANA_CONFIG1 0x4c
 #define USB2PHY_ANA_CONFIG1 0x4c
 
 
+#define AM654_USB2_OTG_PD		BIT(8)
+#define AM654_USB2_VBUS_DET_EN		BIT(5)
+#define AM654_USB2_VBUSVALID_DET_EN	BIT(4)
+
 /**
 /**
  * omap_usb2_set_comparator - links the comparator present in the sytem with
  * omap_usb2_set_comparator - links the comparator present in the sytem with
  *	this phy
  *	this phy
@@ -245,6 +249,15 @@ static const struct usb_phy_data am437x_usb2_data = {
 	.power_off = AM437X_USB2_PHY_PD | AM437X_USB2_OTG_PD,
 	.power_off = AM437X_USB2_PHY_PD | AM437X_USB2_OTG_PD,
 };
 };
 
 
+static const struct usb_phy_data am654_usb2_data = {
+	.label = "am654_usb2",
+	.flags = OMAP_USB2_CALIBRATE_FALSE_DISCONNECT,
+	.mask = AM654_USB2_OTG_PD | AM654_USB2_VBUS_DET_EN |
+		AM654_USB2_VBUSVALID_DET_EN,
+	.power_on = AM654_USB2_VBUS_DET_EN | AM654_USB2_VBUSVALID_DET_EN,
+	.power_off = AM654_USB2_OTG_PD,
+};
+
 static const struct of_device_id omap_usb2_id_table[] = {
 static const struct of_device_id omap_usb2_id_table[] = {
 	{
 	{
 		.compatible = "ti,omap-usb2",
 		.compatible = "ti,omap-usb2",
@@ -266,6 +279,10 @@ static const struct of_device_id omap_usb2_id_table[] = {
 		.compatible = "ti,am437x-usb2",
 		.compatible = "ti,am437x-usb2",
 		.data = &am437x_usb2_data,
 		.data = &am437x_usb2_data,
 	},
 	},
+	{
+		.compatible = "ti,am654-usb2",
+		.data = &am654_usb2_data,
+	},
 	{},
 	{},
 };
 };
 MODULE_DEVICE_TABLE(of, omap_usb2_id_table);
 MODULE_DEVICE_TABLE(of, omap_usb2_id_table);