Merge tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
Pull ARM SoC platform updates from Olof Johansson: "SoC updates, mostly refactorings and cleanups of old legacy platforms. Major themes this release: - Conversion of ixp4xx to a modern platform (drivers, DT, bindings) - Moving some of the ep93xx headers around to get it closer to multiplatform enabled. - Cleanups of Davinci This also contains a few patches that were queued up as fixes before 5.1 but I didn't get sent in before release" * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (123 commits) ARM: debug-ll: add default address for digicolor ARM: u300: regulator: add MODULE_LICENSE() ARM: ep93xx: move private headers out of mach/* ARM: ep93xx: move pinctrl interfaces into include/linux/soc ARM: ep93xx: keypad: stop using mach/platform.h ARM: ep93xx: move network platform data to separate header ARM: stm32: add AMBA support for stm32 family MAINTAINERS: update arch/arm/mach-davinci ARM: rockchip: add missing of_node_put in rockchip_smp_prepare_pmu ARM: dts: Add queue manager and NPE to the IXP4xx DTSI soc: ixp4xx: qmgr: Add DT probe code soc: ixp4xx: qmgr: Add DT bindings for IXP4xx qmgr soc: ixp4xx: npe: Add DT probe code soc: ixp4xx: Add DT bindings for IXP4xx NPE soc: ixp4xx: qmgr: Pass resources soc: ixp4xx: Remove unused functions soc: ixp4xx: Uninline several functions soc: ixp4xx: npe: Pass addresses as resources ARM: ixp4xx: Turn the QMGR into a platform device ARM: ixp4xx: Turn the NPE into a platform device ...
This commit is contained in:
@@ -40,8 +40,6 @@ struct da8xx_ohci_hcd {
|
||||
struct phy *usb11_phy;
|
||||
struct regulator *vbus_reg;
|
||||
struct notifier_block nb;
|
||||
unsigned int reg_enabled;
|
||||
struct gpio_desc *vbus_gpio;
|
||||
struct gpio_desc *oc_gpio;
|
||||
};
|
||||
|
||||
@@ -92,29 +90,21 @@ static int ohci_da8xx_set_power(struct usb_hcd *hcd, int on)
|
||||
struct device *dev = hcd->self.controller;
|
||||
int ret;
|
||||
|
||||
if (da8xx_ohci->vbus_gpio) {
|
||||
gpiod_set_value_cansleep(da8xx_ohci->vbus_gpio, on);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!da8xx_ohci->vbus_reg)
|
||||
return 0;
|
||||
|
||||
if (on && !da8xx_ohci->reg_enabled) {
|
||||
if (on) {
|
||||
ret = regulator_enable(da8xx_ohci->vbus_reg);
|
||||
if (ret) {
|
||||
dev_err(dev, "Failed to enable regulator: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
da8xx_ohci->reg_enabled = 1;
|
||||
|
||||
} else if (!on && da8xx_ohci->reg_enabled) {
|
||||
} else {
|
||||
ret = regulator_disable(da8xx_ohci->vbus_reg);
|
||||
if (ret) {
|
||||
dev_err(dev, "Failed to disable regulator: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
da8xx_ohci->reg_enabled = 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -124,9 +114,6 @@ static int ohci_da8xx_get_power(struct usb_hcd *hcd)
|
||||
{
|
||||
struct da8xx_ohci_hcd *da8xx_ohci = to_da8xx_ohci(hcd);
|
||||
|
||||
if (da8xx_ohci->vbus_gpio)
|
||||
return gpiod_get_value_cansleep(da8xx_ohci->vbus_gpio);
|
||||
|
||||
if (da8xx_ohci->vbus_reg)
|
||||
return regulator_is_enabled(da8xx_ohci->vbus_reg);
|
||||
|
||||
@@ -159,9 +146,6 @@ static int ohci_da8xx_has_set_power(struct usb_hcd *hcd)
|
||||
{
|
||||
struct da8xx_ohci_hcd *da8xx_ohci = to_da8xx_ohci(hcd);
|
||||
|
||||
if (da8xx_ohci->vbus_gpio)
|
||||
return 1;
|
||||
|
||||
if (da8xx_ohci->vbus_reg)
|
||||
return 1;
|
||||
|
||||
@@ -206,12 +190,18 @@ static int ohci_da8xx_regulator_event(struct notifier_block *nb,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static irqreturn_t ohci_da8xx_oc_handler(int irq, void *data)
|
||||
static irqreturn_t ohci_da8xx_oc_thread(int irq, void *data)
|
||||
{
|
||||
struct da8xx_ohci_hcd *da8xx_ohci = data;
|
||||
struct device *dev = da8xx_ohci->hcd->self.controller;
|
||||
int ret;
|
||||
|
||||
if (gpiod_get_value(da8xx_ohci->oc_gpio))
|
||||
gpiod_set_value(da8xx_ohci->vbus_gpio, 0);
|
||||
if (gpiod_get_value_cansleep(da8xx_ohci->oc_gpio) &&
|
||||
da8xx_ohci->vbus_reg) {
|
||||
ret = regulator_disable(da8xx_ohci->vbus_reg);
|
||||
if (ret)
|
||||
dev_err(dev, "Failed to disable regulator: %d\n", ret);
|
||||
}
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
@@ -424,11 +414,6 @@ static int ohci_da8xx_probe(struct platform_device *pdev)
|
||||
}
|
||||
}
|
||||
|
||||
da8xx_ohci->vbus_gpio = devm_gpiod_get_optional(dev, "vbus",
|
||||
GPIOD_OUT_HIGH);
|
||||
if (IS_ERR(da8xx_ohci->vbus_gpio))
|
||||
goto err;
|
||||
|
||||
da8xx_ohci->oc_gpio = devm_gpiod_get_optional(dev, "oc", GPIOD_IN);
|
||||
if (IS_ERR(da8xx_ohci->oc_gpio))
|
||||
goto err;
|
||||
@@ -438,8 +423,9 @@ static int ohci_da8xx_probe(struct platform_device *pdev)
|
||||
if (oc_irq < 0)
|
||||
goto err;
|
||||
|
||||
error = devm_request_irq(dev, oc_irq, ohci_da8xx_oc_handler,
|
||||
IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
|
||||
error = devm_request_threaded_irq(dev, oc_irq, NULL,
|
||||
ohci_da8xx_oc_thread, IRQF_TRIGGER_RISING |
|
||||
IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
|
||||
"OHCI over-current indicator", da8xx_ohci);
|
||||
if (error)
|
||||
goto err;
|
||||
|
Reference in New Issue
Block a user