blob: 97289627561da73d7041720766e609883c2b3b7c [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
Sebastian Andrzej Siewior53b6fc22013-07-30 17:20:06 +02002#ifndef _PHY_GENERIC_H_
3#define _PHY_GENERIC_H_
4
Felipe Balbid7078df2014-04-16 15:28:32 -05005#include <linux/usb/usb_phy_generic.h>
Robert Jarzmike9f2cefb2014-12-06 22:05:13 +01006#include <linux/gpio/consumer.h>
Robert Jarzmik7acc9972014-12-06 22:05:15 +01007#include <linux/regulator/consumer.h>
Felipe Balbiaf9f51c2013-10-24 09:45:29 -05008
Felipe Balbi4525bee2014-04-16 15:20:44 -05009struct usb_phy_generic {
Sebastian Andrzej Siewior53b6fc22013-07-30 17:20:06 +020010 struct usb_phy phy;
11 struct device *dev;
12 struct clk *clk;
13 struct regulator *vcc;
Robert Jarzmike9f2cefb2014-12-06 22:05:13 +010014 struct gpio_desc *gpiod_reset;
Robert Jarzmik7acc9972014-12-06 22:05:15 +010015 struct gpio_desc *gpiod_vbus;
16 struct regulator *vbus_draw;
17 bool vbus_draw_enabled;
18 unsigned long mA;
19 unsigned int vbus;
Sebastian Andrzej Siewior53b6fc22013-07-30 17:20:06 +020020};
21
22int usb_gen_phy_init(struct usb_phy *phy);
23void usb_gen_phy_shutdown(struct usb_phy *phy);
24
Felipe Balbi4525bee2014-04-16 15:20:44 -050025int usb_phy_gen_create_phy(struct device *dev, struct usb_phy_generic *nop,
26 struct usb_phy_generic_platform_data *pdata);
Sebastian Andrzej Siewior53b6fc22013-07-30 17:20:06 +020027
28#endif