1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-25 20:41:16 +02:00

phy: omap_usb2: Add support for am437x

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Jean-Jacques Hiblot
2018-12-04 11:30:49 +01:00
committed by Marek Vasut
parent 0f46fb58a2
commit 512a84c444

View File

@@ -19,6 +19,11 @@
#define OMAP_DEV_PHY_PD BIT(0) #define OMAP_DEV_PHY_PD BIT(0)
#define OMAP_USB2_PHY_PD BIT(28) #define OMAP_USB2_PHY_PD BIT(28)
#define AM437X_USB2_PHY_PD BIT(0)
#define AM437X_USB2_OTG_PD BIT(1)
#define AM437X_USB2_OTGVDET_EN BIT(19)
#define AM437X_USB2_OTGSESSEND_EN BIT(20)
#define USB2PHY_DISCON_BYP_LATCH BIT(31) #define USB2PHY_DISCON_BYP_LATCH BIT(31)
#define USB2PHY_ANA_CONFIG1 (0x4c) #define USB2PHY_ANA_CONFIG1 (0x4c)
@@ -60,6 +65,15 @@ static const struct usb_phy_data dra7x_usb2_phy2_data = {
.power_off = OMAP_USB2_PHY_PD, .power_off = OMAP_USB2_PHY_PD,
}; };
static const struct usb_phy_data am437x_usb2_data = {
.label = "am437x_usb2",
.flags = 0,
.mask = AM437X_USB2_PHY_PD | AM437X_USB2_OTG_PD |
AM437X_USB2_OTGVDET_EN | AM437X_USB2_OTGSESSEND_EN,
.power_on = AM437X_USB2_OTGVDET_EN | AM437X_USB2_OTGSESSEND_EN,
.power_off = AM437X_USB2_PHY_PD | AM437X_USB2_OTG_PD,
};
static const struct udevice_id omap_usb2_id_table[] = { static const struct udevice_id omap_usb2_id_table[] = {
{ {
.compatible = "ti,omap5-usb2", .compatible = "ti,omap5-usb2",
@@ -73,6 +87,10 @@ static const struct udevice_id omap_usb2_id_table[] = {
.compatible = "ti,dra7x-usb2-phy2", .compatible = "ti,dra7x-usb2-phy2",
.data = (ulong)&dra7x_usb2_phy2_data, .data = (ulong)&dra7x_usb2_phy2_data,
}, },
{
.compatible = "ti,am437x-usb2",
.data = (ulong)&am437x_usb2_data,
},
{}, {},
}; };
@@ -170,20 +188,25 @@ int omap_usb2_phy_probe(struct udevice *dev)
} }
regmap = syscon_regmap_lookup_by_phandle(dev, "syscon-phy-power"); regmap = syscon_regmap_lookup_by_phandle(dev, "syscon-phy-power");
if (IS_ERR(regmap)) { if (!IS_ERR(regmap)) {
printf("can't get regmap (err %ld)\n", PTR_ERR(regmap)); priv->pwr_regmap = regmap;
return PTR_ERR(regmap); rc = dev_read_u32_array(dev, "syscon-phy-power", tmp, 2);
if (rc) {
printf("couldn't get power reg. offset (err %d)\n", rc);
return rc;
}
priv->pwr_reg_offset = tmp[1];
return 0;
} }
priv->pwr_regmap = regmap; regmap = syscon_regmap_lookup_by_phandle(dev, "ctrl-module");
if (!IS_ERR(regmap)) {
rc = dev_read_u32_array(dev, "syscon-phy-power", tmp, 2); priv->pwr_regmap = regmap;
if (rc) { priv->pwr_reg_offset = 0;
printf("couldn't get power reg. offset (err %d)\n", rc); return 0;
return rc;
} }
priv->pwr_reg_offset = tmp[1];
return 0; printf("can't get regmap (err %ld)\n", PTR_ERR(regmap));
return PTR_ERR(regmap);
} }
U_BOOT_DRIVER(omap_usb2_phy) = { U_BOOT_DRIVER(omap_usb2_phy) = {