Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
bcm53xx: replace USB patch fixing power control with the most recent …
…version Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Backport of r47336 git-svn-id: svn://svn.openwrt.org/openwrt/branches/chaos_calmer@47398 3c298f89-4303-0410-b956-a3cf2f4a3e73
- Loading branch information
Showing
5 changed files
with
100 additions
and
62 deletions.
There are no files selected for viewing
75 changes: 75 additions & 0 deletions
75
...linux/bcm53xx/patches-3.18/186-USB-bcma-switch-to-GPIO-descriptor-for-power-control.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
From 0cb136f9882e4649ad6160bb7b48955ff728888c Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> | ||
Date: Sun, 1 Nov 2015 08:17:21 +0100 | ||
Subject: [PATCH V2] USB: bcma: switch to GPIO descriptor for power control | ||
MIME-Version: 1.0 | ||
Content-Type: text/plain; charset=UTF-8 | ||
Content-Transfer-Encoding: 8bit | ||
|
||
So far we were using simple (legacy) GPIO functions & some poor logic to | ||
control power. It got many drawbacks: we were ignoring OF flags | ||
(GPIO_ACTIVE_LOW), we were not setting direction to output and we were | ||
assuming gpio_request success all the time. | ||
Fix it by switching to gpiod functions and adding appropriate checks. | ||
|
||
Signed-off-by: Rafał Miłecki <zajec5@gmail.com> | ||
--- | ||
drivers/usb/host/bcma-hcd.c | 21 ++++++++++----------- | ||
1 file changed, 10 insertions(+), 11 deletions(-) | ||
|
||
diff --git a/drivers/usb/host/bcma-hcd.c b/drivers/usb/host/bcma-hcd.c | ||
index 5398e3d..291aaa2 100644 | ||
--- a/drivers/usb/host/bcma-hcd.c | ||
+++ b/drivers/usb/host/bcma-hcd.c | ||
@@ -21,6 +21,7 @@ | ||
*/ | ||
#include <linux/bcma/bcma.h> | ||
#include <linux/delay.h> | ||
+#include <linux/gpio/consumer.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/module.h> | ||
#include <linux/slab.h> | ||
@@ -36,6 +37,7 @@ MODULE_LICENSE("GPL"); | ||
struct bcma_hcd_device { | ||
struct platform_device *ehci_dev; | ||
struct platform_device *ohci_dev; | ||
+ struct gpio_desc *gpio_desc; | ||
}; | ||
|
||
/* Wait for bitmask in a register to get set or cleared. | ||
@@ -228,19 +230,12 @@ static void bcma_hcd_init_chip_arm(struct bcma_device *dev) | ||
|
||
static void bcma_hci_platform_power_gpio(struct bcma_device *dev, bool val) | ||
{ | ||
- int gpio; | ||
+ struct bcma_hcd_device *usb_dev = bcma_get_drvdata(dev); | ||
|
||
- gpio = of_get_named_gpio(dev->dev.of_node, "vcc-gpio", 0); | ||
- if (!gpio_is_valid(gpio)) | ||
+ if (IS_ERR_OR_NULL(usb_dev->gpio_desc)) | ||
return; | ||
|
||
- if (val) { | ||
- gpio_request(gpio, "bcma-hcd-gpio"); | ||
- gpio_set_value(gpio, 1); | ||
- } else { | ||
- gpio_set_value(gpio, 0); | ||
- gpio_free(gpio); | ||
- } | ||
+ gpiod_set_value(usb_dev->gpio_desc, val); | ||
} | ||
|
||
static const struct usb_ehci_pdata ehci_pdata = { | ||
@@ -314,7 +309,11 @@ static int bcma_hcd_probe(struct bcma_device *dev) | ||
if (!usb_dev) | ||
return -ENOMEM; | ||
|
||
- bcma_hci_platform_power_gpio(dev, true); | ||
+ if (dev->dev.of_node) | ||
+ usb_dev->gpio_desc = devm_get_gpiod_from_child(&dev->dev, "vcc", | ||
+ &dev->dev.of_node->fwnode); | ||
+ if (!IS_ERR_OR_NULL(usb_dev->gpio_desc)) | ||
+ gpiod_direction_output(usb_dev->gpio_desc, 1); | ||
|
||
switch (dev->id.id) { | ||
case BCMA_CORE_NS_USB20: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
45 changes: 0 additions & 45 deletions
45
target/linux/bcm53xx/patches-3.18/813-USB-bcma-fix-setting-VCC-GPIO-value.patch
This file was deleted.
Oops, something went wrong.