Lines Matching +full:reg +full:- +full:data
1 // SPDX-License-Identifier: GPL-2.0
3 * cdns_ti-ti.c - TI specific Glue layer for Cadence USB Controller
5 * Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com
9 #include <asm-generic/io.h>
76 static inline u32 cdns_ti_readl(struct cdns_ti *data, u32 offset) in cdns_ti_readl() argument
78 return readl(data->usbss + offset); in cdns_ti_readl()
81 static inline void cdns_ti_writel(struct cdns_ti *data, u32 offset, u32 value) in cdns_ti_writel() argument
83 writel(value, data->usbss + offset); in cdns_ti_writel()
88 struct cdns_ti *data = dev_get_platdata(dev); in cdns_ti_probe() local
93 u32 reg; in cdns_ti_probe() local
96 data->dev = dev; in cdns_ti_probe()
98 data->usbss = dev_remap_addr_index(dev, 0); in cdns_ti_probe()
99 if (!data->usbss) in cdns_ti_probe()
100 return -EINVAL; in cdns_ti_probe()
117 return -EINVAL; in cdns_ti_probe()
123 reg = cdns_ti_readl(data, USBSS_W1); in cdns_ti_probe()
124 reg &= ~USBSS_W1_PWRUP_RST; in cdns_ti_probe()
125 cdns_ti_writel(data, USBSS_W1, reg); in cdns_ti_probe()
128 reg = cdns_ti_readl(data, USBSS_STATIC_CONFIG); in cdns_ti_probe()
129 reg &= ~USBSS1_STATIC_PLL_REF_SEL_MASK; in cdns_ti_probe()
130 reg |= rate_code << USBSS1_STATIC_PLL_REF_SEL_SHIFT; in cdns_ti_probe()
132 reg &= ~USBSS1_STATIC_VBUS_SEL_MASK; in cdns_ti_probe()
133 data->vbus_divider = dev_read_bool(dev, "ti,vbus-divider"); in cdns_ti_probe()
134 if (data->vbus_divider) in cdns_ti_probe()
135 reg |= 1 << USBSS1_STATIC_VBUS_SEL_SHIFT; in cdns_ti_probe()
137 cdns_ti_writel(data, USBSS_STATIC_CONFIG, reg); in cdns_ti_probe()
138 reg = cdns_ti_readl(data, USBSS_STATIC_CONFIG); in cdns_ti_probe()
141 reg = cdns_ti_readl(data, USBSS_W1); in cdns_ti_probe()
142 data->usb2_only = dev_read_bool(dev, "ti,usb2-only"); in cdns_ti_probe()
143 if (data->usb2_only) in cdns_ti_probe()
144 reg |= USBSS_W1_USB2_ONLY; in cdns_ti_probe()
147 if (dev_read_bool(dev, "ti,modestrap-host")) in cdns_ti_probe()
149 else if (dev_read_bool(dev, "ti,modestrap-peripheral")) in cdns_ti_probe()
154 reg |= USBSS_W1_MODESTRAP_SEL; in cdns_ti_probe()
155 reg &= ~USBSS_W1_MODESTRAP_MASK; in cdns_ti_probe()
156 reg |= modestrap_mode << USBSS_W1_MODESTRAP_SHIFT; in cdns_ti_probe()
157 cdns_ti_writel(data, USBSS_W1, reg); in cdns_ti_probe()
159 /* de-assert RESET */ in cdns_ti_probe()
160 reg |= USBSS_W1_PWRUP_RST; in cdns_ti_probe()
161 cdns_ti_writel(data, USBSS_W1, reg); in cdns_ti_probe()
168 struct cdns_ti *data = dev_get_platdata(dev); in cdns_ti_remove() local
169 u32 reg; in cdns_ti_remove() local
172 reg = cdns_ti_readl(data, USBSS_W1); in cdns_ti_remove()
173 reg &= ~USBSS_W1_PWRUP_RST; in cdns_ti_remove()
174 cdns_ti_writel(data, USBSS_W1, reg); in cdns_ti_remove()
180 { .compatible = "ti,j721e-usb", },
185 .name = "cdns-ti",