2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-18 18:23:53 +08:00

usb: phy-generic: Delete unused platform data

The last user of the phy generic platform data was
deleted in commit 1e041b6f31
("usb: dwc3: exynos: Remove dead code"). So get rid of
the platform data, which rids us of another consumer of
the legacy GPIO API at the same time. Make sure we
only inlcude <linux/gpio/consumer.h> which is all we use.

Alter the usb_phy_gen_create_phy() function prototype to
not pass any platform data as this is just hardcoded to
NULL at all locations calling it in the kernel.

Move the devm_gpiod_get* calls out of the if (of_node)
parenthesis, as these calls are generic and do not depend
on device tree, they are used by any hardware description.

Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Linus Walleij 2019-12-31 18:42:35 +01:00 committed by Greg Kroah-Hartman
parent 7b81376764
commit b267ddf6a5
5 changed files with 15 additions and 43 deletions

View File

@ -57,7 +57,7 @@ static int am335x_phy_probe(struct platform_device *pdev)
am_phy->dr_mode = of_usb_get_dr_mode_by_phy(pdev->dev.of_node, -1); am_phy->dr_mode = of_usb_get_dr_mode_by_phy(pdev->dev.of_node, -1);
ret = usb_phy_gen_create_phy(dev, &am_phy->usb_phy_gen, NULL); ret = usb_phy_gen_create_phy(dev, &am_phy->usb_phy_gen);
if (ret) if (ret)
return ret; return ret;

View File

@ -21,8 +21,7 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/regulator/consumer.h> #include <linux/regulator/consumer.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/of_gpio.h> #include <linux/gpio/consumer.h>
#include <linux/gpio.h>
#include <linux/delay.h> #include <linux/delay.h>
#include "phy-generic.h" #include "phy-generic.h"
@ -204,8 +203,7 @@ static int nop_set_host(struct usb_otg *otg, struct usb_bus *host)
return 0; return 0;
} }
int usb_phy_gen_create_phy(struct device *dev, struct usb_phy_generic *nop, int usb_phy_gen_create_phy(struct device *dev, struct usb_phy_generic *nop)
struct usb_phy_generic_platform_data *pdata)
{ {
enum usb_phy_type type = USB_PHY_TYPE_USB2; enum usb_phy_type type = USB_PHY_TYPE_USB2;
int err = 0; int err = 0;
@ -221,28 +219,15 @@ int usb_phy_gen_create_phy(struct device *dev, struct usb_phy_generic *nop,
needs_vcc = of_property_read_bool(node, "vcc-supply"); needs_vcc = of_property_read_bool(node, "vcc-supply");
needs_clk = of_property_read_bool(node, "clocks"); needs_clk = of_property_read_bool(node, "clocks");
nop->gpiod_reset = devm_gpiod_get_optional(dev, "reset", }
GPIOD_ASIS); nop->gpiod_reset = devm_gpiod_get_optional(dev, "reset",
err = PTR_ERR_OR_ZERO(nop->gpiod_reset); GPIOD_ASIS);
if (!err) { err = PTR_ERR_OR_ZERO(nop->gpiod_reset);
nop->gpiod_vbus = devm_gpiod_get_optional(dev, if (!err) {
"vbus-detect", nop->gpiod_vbus = devm_gpiod_get_optional(dev,
GPIOD_ASIS); "vbus-detect",
err = PTR_ERR_OR_ZERO(nop->gpiod_vbus); GPIOD_ASIS);
} err = PTR_ERR_OR_ZERO(nop->gpiod_vbus);
} else if (pdata) {
type = pdata->type;
clk_rate = pdata->clk_rate;
needs_vcc = pdata->needs_vcc;
if (gpio_is_valid(pdata->gpio_reset)) {
err = devm_gpio_request_one(dev, pdata->gpio_reset,
GPIOF_ACTIVE_LOW,
dev_name(dev));
if (!err)
nop->gpiod_reset =
gpio_to_desc(pdata->gpio_reset);
}
nop->gpiod_vbus = pdata->gpiod_vbus;
} }
if (err == -EPROBE_DEFER) if (err == -EPROBE_DEFER)
@ -308,7 +293,7 @@ static int usb_phy_generic_probe(struct platform_device *pdev)
if (!nop) if (!nop)
return -ENOMEM; return -ENOMEM;
err = usb_phy_gen_create_phy(dev, nop, dev_get_platdata(&pdev->dev)); err = usb_phy_gen_create_phy(dev, nop);
if (err) if (err)
return err; return err;
if (nop->gpiod_vbus) { if (nop->gpiod_vbus) {

View File

@ -22,7 +22,6 @@ struct usb_phy_generic {
int usb_gen_phy_init(struct usb_phy *phy); int usb_gen_phy_init(struct usb_phy *phy);
void usb_gen_phy_shutdown(struct usb_phy *phy); void usb_gen_phy_shutdown(struct usb_phy *phy);
int usb_phy_gen_create_phy(struct device *dev, struct usb_phy_generic *nop, int usb_phy_gen_create_phy(struct device *dev, struct usb_phy_generic *nop);
struct usb_phy_generic_platform_data *pdata);
#endif #endif

View File

@ -76,7 +76,7 @@ static int keystone_usbphy_probe(struct platform_device *pdev)
if (IS_ERR(k_phy->phy_ctrl)) if (IS_ERR(k_phy->phy_ctrl))
return PTR_ERR(k_phy->phy_ctrl); return PTR_ERR(k_phy->phy_ctrl);
ret = usb_phy_gen_create_phy(dev, &k_phy->usb_phy_gen, NULL); ret = usb_phy_gen_create_phy(dev, &k_phy->usb_phy_gen);
if (ret) if (ret)
return ret; return ret;

View File

@ -3,18 +3,6 @@
#define __LINUX_USB_NOP_XCEIV_H #define __LINUX_USB_NOP_XCEIV_H
#include <linux/usb/otg.h> #include <linux/usb/otg.h>
#include <linux/gpio/consumer.h>
struct usb_phy_generic_platform_data {
enum usb_phy_type type;
unsigned long clk_rate;
/* if set fails with -EPROBE_DEFER if can't get regulator */
unsigned int needs_vcc:1;
unsigned int needs_reset:1; /* deprecated */
int gpio_reset;
struct gpio_desc *gpiod_vbus;
};
#if IS_ENABLED(CONFIG_NOP_USB_XCEIV) #if IS_ENABLED(CONFIG_NOP_USB_XCEIV)
/* sometimes transceivers are accessed only through e.g. ULPI */ /* sometimes transceivers are accessed only through e.g. ULPI */