Lines Matching full:info
72 static void ptn5150_check_state(struct ptn5150_info *info)
78 ret = regmap_read(info->regmap, PTN5150_REG_CC_STATUS, ®_data);
80 dev_err(info->dev, "failed to read CC STATUS %d\n", ret);
88 extcon_set_state_sync(info->edev, EXTCON_USB_HOST, false);
89 gpiod_set_value_cansleep(info->vbus_gpiod, 0);
90 extcon_set_state_sync(info->edev, EXTCON_USB, true);
94 extcon_set_state_sync(info->edev, EXTCON_USB, false);
97 gpiod_set_value_cansleep(info->vbus_gpiod, 0);
99 gpiod_set_value_cansleep(info->vbus_gpiod, 1);
101 extcon_set_state_sync(info->edev, EXTCON_USB_HOST, true);
109 ret = usb_role_switch_set_role(info->role_sw, usb_role);
111 dev_err(info->dev, "failed to set %s role: %d\n",
118 struct ptn5150_info *info = container_of(work,
123 if (!info->edev)
126 mutex_lock(&info->mutex);
129 ret = regmap_read(info->regmap, PTN5150_REG_INT_STATUS, &int_status);
131 dev_err(info->dev, "failed to read INT STATUS %d\n", ret);
132 mutex_unlock(&info->mutex);
141 ptn5150_check_state(info);
143 extcon_set_state_sync(info->edev,
145 extcon_set_state_sync(info->edev,
147 gpiod_set_value_cansleep(info->vbus_gpiod, 0);
149 ret = usb_role_switch_set_role(info->role_sw,
152 dev_err(info->dev,
159 ret = regmap_read(info->regmap, PTN5150_REG_INT_REG_STATUS,
162 dev_err(info->dev,
164 mutex_unlock(&info->mutex);
168 mutex_unlock(&info->mutex);
174 struct ptn5150_info *info = data;
176 schedule_work(&info->irq_work);
181 static int ptn5150_init_dev_type(struct ptn5150_info *info)
186 ret = regmap_read(info->regmap, PTN5150_REG_DEVICE_ID, ®_data);
188 dev_err(info->dev, "failed to read DEVICE_ID %d\n", ret);
194 dev_dbg(info->dev, "Device type: version: 0x%x, vendor: 0x%x\n",
198 ret = regmap_read(info->regmap, PTN5150_REG_INT_STATUS, ®_data);
200 dev_err(info->dev,
206 ret = regmap_read(info->regmap, PTN5150_REG_INT_REG_STATUS, ®_data);
208 dev_err(info->dev,
218 struct ptn5150_info *info = data;
220 cancel_work_sync(&info->irq_work);
221 usb_role_switch_put(info->role_sw);
228 struct ptn5150_info *info;
234 info = devm_kzalloc(&i2c->dev, sizeof(*info), GFP_KERNEL);
235 if (!info)
237 i2c_set_clientdata(i2c, info);
239 info->dev = &i2c->dev;
240 info->i2c = i2c;
241 info->vbus_gpiod = devm_gpiod_get(&i2c->dev, "vbus", GPIOD_OUT_LOW);
242 if (IS_ERR(info->vbus_gpiod)) {
243 ret = PTR_ERR(info->vbus_gpiod);
246 info->vbus_gpiod = NULL;
252 mutex_init(&info->mutex);
254 INIT_WORK(&info->irq_work, ptn5150_irq_work);
256 info->regmap = devm_regmap_init_i2c(i2c, &ptn5150_regmap_config);
257 if (IS_ERR(info->regmap)) {
258 return dev_err_probe(info->dev, PTR_ERR(info->regmap),
263 info->irq = i2c->irq;
265 info->int_gpiod = devm_gpiod_get(&i2c->dev, "int", GPIOD_IN);
266 if (IS_ERR(info->int_gpiod)) {
267 return dev_err_probe(dev, PTR_ERR(info->int_gpiod),
271 info->irq = gpiod_to_irq(info->int_gpiod);
272 if (info->irq < 0) {
274 return info->irq;
278 ret = devm_request_threaded_irq(dev, info->irq, NULL,
282 i2c->name, info);
289 info->edev = devm_extcon_dev_allocate(info->dev, ptn5150_extcon_cable);
290 if (IS_ERR(info->edev)) {
291 dev_err(info->dev, "failed to allocate memory for extcon\n");
296 ret = devm_extcon_dev_register(info->dev, info->edev);
298 dev_err(info->dev, "failed to register extcon device\n");
302 extcon_set_property_capability(info->edev, EXTCON_USB,
304 extcon_set_property_capability(info->edev, EXTCON_USB_HOST,
306 extcon_set_property_capability(info->edev, EXTCON_USB_HOST,
310 ret = ptn5150_init_dev_type(info);
314 info->role_sw = usb_role_switch_get(info->dev);
315 if (IS_ERR(info->role_sw))
316 return dev_err_probe(info->dev, PTR_ERR(info->role_sw),
319 ret = devm_add_action_or_reset(dev, ptn5150_work_sync_and_put, info);
327 mutex_lock(&info->mutex);
328 ptn5150_check_state(info);
329 mutex_unlock(&info->mutex);