Symbol: hisi_hikey_usb
drivers/misc/hisi_hikey_usb.c
100
if (!hisi_hikey_usb || !hisi_hikey_usb->dev_role_sw)
drivers/misc/hisi_hikey_usb.c
103
mutex_lock(&hisi_hikey_usb->lock);
drivers/misc/hisi_hikey_usb.c
104
switch (hisi_hikey_usb->role) {
drivers/misc/hisi_hikey_usb.c
106
usb_typec_power_ctrl(hisi_hikey_usb, TYPEC_VBUS_POWER_OFF);
drivers/misc/hisi_hikey_usb.c
107
usb_switch_ctrl(hisi_hikey_usb, USB_SWITCH_TO_HUB);
drivers/misc/hisi_hikey_usb.c
108
hub_power_ctrl(hisi_hikey_usb, HUB_VBUS_POWER_ON);
drivers/misc/hisi_hikey_usb.c
111
hub_power_ctrl(hisi_hikey_usb, HUB_VBUS_POWER_OFF);
drivers/misc/hisi_hikey_usb.c
112
usb_switch_ctrl(hisi_hikey_usb, USB_SWITCH_TO_TYPEC);
drivers/misc/hisi_hikey_usb.c
113
usb_typec_power_ctrl(hisi_hikey_usb, TYPEC_VBUS_POWER_ON);
drivers/misc/hisi_hikey_usb.c
116
hub_power_ctrl(hisi_hikey_usb, HUB_VBUS_POWER_OFF);
drivers/misc/hisi_hikey_usb.c
117
usb_typec_power_ctrl(hisi_hikey_usb, TYPEC_VBUS_POWER_OFF);
drivers/misc/hisi_hikey_usb.c
118
usb_switch_ctrl(hisi_hikey_usb, USB_SWITCH_TO_TYPEC);
drivers/misc/hisi_hikey_usb.c
123
sw = hisi_hikey_usb->dev_role_sw;
drivers/misc/hisi_hikey_usb.c
124
role = hisi_hikey_usb->role;
drivers/misc/hisi_hikey_usb.c
125
mutex_unlock(&hisi_hikey_usb->lock);
drivers/misc/hisi_hikey_usb.c
132
struct hisi_hikey_usb *hisi_hikey_usb = usb_role_switch_get_drvdata(sw);
drivers/misc/hisi_hikey_usb.c
134
if (!hisi_hikey_usb || !hisi_hikey_usb->dev_role_sw)
drivers/misc/hisi_hikey_usb.c
137
mutex_lock(&hisi_hikey_usb->lock);
drivers/misc/hisi_hikey_usb.c
138
hisi_hikey_usb->role = role;
drivers/misc/hisi_hikey_usb.c
139
mutex_unlock(&hisi_hikey_usb->lock);
drivers/misc/hisi_hikey_usb.c
141
schedule_work(&hisi_hikey_usb->work);
drivers/misc/hisi_hikey_usb.c
147
struct hisi_hikey_usb *hisi_hikey_usb)
drivers/misc/hisi_hikey_usb.c
155
hisi_hikey_usb->otg_switch = devm_gpiod_get(dev, "otg-switch",
drivers/misc/hisi_hikey_usb.c
157
if (IS_ERR(hisi_hikey_usb->otg_switch)) {
drivers/misc/hisi_hikey_usb.c
159
PTR_ERR(hisi_hikey_usb->otg_switch));
drivers/misc/hisi_hikey_usb.c
160
return PTR_ERR(hisi_hikey_usb->otg_switch);
drivers/misc/hisi_hikey_usb.c
163
hisi_hikey_usb->typec_vbus = devm_gpiod_get(dev, "typec-vbus",
drivers/misc/hisi_hikey_usb.c
165
if (IS_ERR(hisi_hikey_usb->typec_vbus)) {
drivers/misc/hisi_hikey_usb.c
167
PTR_ERR(hisi_hikey_usb->typec_vbus));
drivers/misc/hisi_hikey_usb.c
168
return PTR_ERR(hisi_hikey_usb->typec_vbus);
drivers/misc/hisi_hikey_usb.c
171
hisi_hikey_usb->reset = devm_gpiod_get_optional(dev,
drivers/misc/hisi_hikey_usb.c
174
if (IS_ERR(hisi_hikey_usb->reset)) {
drivers/misc/hisi_hikey_usb.c
176
PTR_ERR(hisi_hikey_usb->reset));
drivers/misc/hisi_hikey_usb.c
177
return PTR_ERR(hisi_hikey_usb->reset);
drivers/misc/hisi_hikey_usb.c
180
hisi_hikey_usb->dev_role_sw = usb_role_switch_get(dev);
drivers/misc/hisi_hikey_usb.c
181
if (!hisi_hikey_usb->dev_role_sw)
drivers/misc/hisi_hikey_usb.c
183
if (IS_ERR(hisi_hikey_usb->dev_role_sw)) {
drivers/misc/hisi_hikey_usb.c
185
PTR_ERR(hisi_hikey_usb->dev_role_sw));
drivers/misc/hisi_hikey_usb.c
186
return PTR_ERR(hisi_hikey_usb->dev_role_sw);
drivers/misc/hisi_hikey_usb.c
189
INIT_WORK(&hisi_hikey_usb->work, relay_set_role_switch);
drivers/misc/hisi_hikey_usb.c
193
hub_role_switch.driver_data = hisi_hikey_usb;
drivers/misc/hisi_hikey_usb.c
195
hisi_hikey_usb->hub_role_sw = usb_role_switch_register(dev,
drivers/misc/hisi_hikey_usb.c
198
if (IS_ERR(hisi_hikey_usb->hub_role_sw)) {
drivers/misc/hisi_hikey_usb.c
201
PTR_ERR(hisi_hikey_usb->hub_role_sw));
drivers/misc/hisi_hikey_usb.c
202
usb_role_switch_put(hisi_hikey_usb->dev_role_sw);
drivers/misc/hisi_hikey_usb.c
203
return PTR_ERR(hisi_hikey_usb->hub_role_sw);
drivers/misc/hisi_hikey_usb.c
212
struct hisi_hikey_usb *hisi_hikey_usb;
drivers/misc/hisi_hikey_usb.c
215
hisi_hikey_usb = devm_kzalloc(dev, sizeof(*hisi_hikey_usb), GFP_KERNEL);
drivers/misc/hisi_hikey_usb.c
216
if (!hisi_hikey_usb)
drivers/misc/hisi_hikey_usb.c
219
hisi_hikey_usb->dev = &pdev->dev;
drivers/misc/hisi_hikey_usb.c
220
mutex_init(&hisi_hikey_usb->lock);
drivers/misc/hisi_hikey_usb.c
222
hisi_hikey_usb->regulator = devm_regulator_get(dev, "hub-vdd");
drivers/misc/hisi_hikey_usb.c
223
if (IS_ERR(hisi_hikey_usb->regulator)) {
drivers/misc/hisi_hikey_usb.c
224
if (PTR_ERR(hisi_hikey_usb->regulator) == -EPROBE_DEFER) {
drivers/misc/hisi_hikey_usb.c
226
return PTR_ERR(hisi_hikey_usb->regulator);
drivers/misc/hisi_hikey_usb.c
229
PTR_ERR(hisi_hikey_usb->regulator));
drivers/misc/hisi_hikey_usb.c
230
return PTR_ERR(hisi_hikey_usb->regulator);
drivers/misc/hisi_hikey_usb.c
233
ret = hisi_hikey_usb_of_role_switch(pdev, hisi_hikey_usb);
drivers/misc/hisi_hikey_usb.c
237
platform_set_drvdata(pdev, hisi_hikey_usb);
drivers/misc/hisi_hikey_usb.c
244
struct hisi_hikey_usb *hisi_hikey_usb = platform_get_drvdata(pdev);
drivers/misc/hisi_hikey_usb.c
246
if (hisi_hikey_usb->hub_role_sw) {
drivers/misc/hisi_hikey_usb.c
247
usb_role_switch_unregister(hisi_hikey_usb->hub_role_sw);
drivers/misc/hisi_hikey_usb.c
249
if (hisi_hikey_usb->dev_role_sw)
drivers/misc/hisi_hikey_usb.c
250
usb_role_switch_put(hisi_hikey_usb->dev_role_sw);
drivers/misc/hisi_hikey_usb.c
252
hub_power_ctrl(hisi_hikey_usb, HUB_VBUS_POWER_OFF);
drivers/misc/hisi_hikey_usb.c
52
static void hub_power_ctrl(struct hisi_hikey_usb *hisi_hikey_usb, int value)
drivers/misc/hisi_hikey_usb.c
56
if (!hisi_hikey_usb->regulator)
drivers/misc/hisi_hikey_usb.c
59
status = regulator_is_enabled(hisi_hikey_usb->regulator);
drivers/misc/hisi_hikey_usb.c
64
ret = regulator_enable(hisi_hikey_usb->regulator);
drivers/misc/hisi_hikey_usb.c
66
ret = regulator_disable(hisi_hikey_usb->regulator);
drivers/misc/hisi_hikey_usb.c
69
dev_err(hisi_hikey_usb->dev,
drivers/misc/hisi_hikey_usb.c
74
static void usb_switch_ctrl(struct hisi_hikey_usb *hisi_hikey_usb,
drivers/misc/hisi_hikey_usb.c
77
if (!hisi_hikey_usb->otg_switch)
drivers/misc/hisi_hikey_usb.c
80
gpiod_set_value_cansleep(hisi_hikey_usb->otg_switch, switch_to);
drivers/misc/hisi_hikey_usb.c
83
static void usb_typec_power_ctrl(struct hisi_hikey_usb *hisi_hikey_usb,
drivers/misc/hisi_hikey_usb.c
86
if (!hisi_hikey_usb->typec_vbus)
drivers/misc/hisi_hikey_usb.c
89
gpiod_set_value_cansleep(hisi_hikey_usb->typec_vbus, value);
drivers/misc/hisi_hikey_usb.c
94
struct hisi_hikey_usb *hisi_hikey_usb = container_of(work,
drivers/misc/hisi_hikey_usb.c
95
struct hisi_hikey_usb,