summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2018-07-09 08:21:18 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2018-07-09 08:21:18 +0200
commit6af0422208def55bb4eb5a5a0235b48a7c815c8e (patch)
tree6325f157fd7ad908835593862ef8a80043b3bcce /drivers
parent1f3af633e28876c2a9649bce59747b3b23990e16 (diff)
parent36260f162defe41fe144d69756990519c4188c83 (diff)
downloadbarebox-6af0422208def55bb4eb5a5a0235b48a7c815c8e.tar.gz
barebox-6af0422208def55bb4eb5a5a0235b48a7c815c8e.tar.xz
Merge branch 'for-next/misc'
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mtd/nand/nand-bb.c2
-rw-r--r--drivers/net/designware.c8
-rw-r--r--drivers/net/designware.h1
-rw-r--r--drivers/net/designware_generic.c1
-rw-r--r--drivers/net/designware_socfpga.c1
-rw-r--r--drivers/of/of_path.c6
-rw-r--r--drivers/video/backlight-pwm.c1
-rw-r--r--drivers/video/backlight.c14
8 files changed, 28 insertions, 6 deletions
diff --git a/drivers/mtd/nand/nand-bb.c b/drivers/mtd/nand/nand-bb.c
index c1977381d4..012163ebb2 100644
--- a/drivers/mtd/nand/nand-bb.c
+++ b/drivers/mtd/nand/nand-bb.c
@@ -316,6 +316,8 @@ void mtd_del_bb(struct mtd_info *mtd)
list_del_init(&bb->list);
free(bb->name);
free(bb);
+
+ mtd->cdev_bb = NULL;
}
/**
diff --git a/drivers/net/designware.c b/drivers/net/designware.c
index 862ee2f046..49ddaa20d8 100644
--- a/drivers/net/designware.c
+++ b/drivers/net/designware.c
@@ -471,6 +471,7 @@ struct dw_eth_dev *dwc_drv_probe(struct device_d *dev)
miibus = &priv->miibus;
edev->priv = priv;
+ dev->priv = edev;
edev->parent = dev;
edev->open = dwc_ether_open;
edev->send = dwc_ether_send;
@@ -489,3 +490,10 @@ struct dw_eth_dev *dwc_drv_probe(struct device_d *dev)
return priv;
}
+
+void dwc_drv_remove(struct device_d *dev)
+{
+ struct eth_device *edev = dev->priv;
+
+ dwc_ether_halt(edev);
+}
diff --git a/drivers/net/designware.h b/drivers/net/designware.h
index 4a99fa2aa6..6236d6c2e5 100644
--- a/drivers/net/designware.h
+++ b/drivers/net/designware.h
@@ -51,6 +51,7 @@ struct dw_eth_drvdata {
};
struct dw_eth_dev *dwc_drv_probe(struct device_d *dev);
+void dwc_drv_remove(struct device_d *dev);
#define CONFIG_TX_DESCR_NUM 16
#define CONFIG_RX_DESCR_NUM 16
diff --git a/drivers/net/designware_generic.c b/drivers/net/designware_generic.c
index 29269deac9..9d125b47a6 100644
--- a/drivers/net/designware_generic.c
+++ b/drivers/net/designware_generic.c
@@ -55,6 +55,7 @@ static __maybe_unused struct of_device_id dwc_ether_compatible[] = {
static struct driver_d dwc_ether_driver = {
.name = "designware_eth",
.probe = dwc_ether_probe,
+ .remove = dwc_drv_remove,
.of_compatible = DRV_OF_COMPAT(dwc_ether_compatible),
};
device_platform_driver(dwc_ether_driver);
diff --git a/drivers/net/designware_socfpga.c b/drivers/net/designware_socfpga.c
index 154c38f9a1..cb88882d66 100644
--- a/drivers/net/designware_socfpga.c
+++ b/drivers/net/designware_socfpga.c
@@ -179,6 +179,7 @@ static __maybe_unused struct of_device_id socfpga_dwc_ether_compatible[] = {
static struct driver_d socfpga_dwc_ether_driver = {
.name = "socfpga_designware_eth",
.probe = socfpga_dwc_ether_probe,
+ .remove = dwc_drv_remove,
.of_compatible = DRV_OF_COMPAT(socfpga_dwc_ether_compatible),
};
device_platform_driver(socfpga_dwc_ether_driver);
diff --git a/drivers/of/of_path.c b/drivers/of/of_path.c
index e53041b0a1..f8bbf2cba1 100644
--- a/drivers/of/of_path.c
+++ b/drivers/of/of_path.c
@@ -20,6 +20,7 @@
#include <common.h>
#include <malloc.h>
#include <of.h>
+#include <fs.h>
#include <linux/mtd/mtd.h>
@@ -142,10 +143,7 @@ struct device_node *of_find_node_by_devpath(struct device_node *root, const char
pr_debug("%s: looking for path %s\n", __func__, path);
- if (!strncmp(path, "/dev/", 5))
- path += 5;
-
- cdev = cdev_by_name(path);
+ cdev = cdev_by_name(devpath_to_name(path));
if (!cdev) {
pr_debug("%s: cdev %s not found\n", __func__, path);
return NULL;
diff --git a/drivers/video/backlight-pwm.c b/drivers/video/backlight-pwm.c
index ec35bd1bc0..997235a74a 100644
--- a/drivers/video/backlight-pwm.c
+++ b/drivers/video/backlight-pwm.c
@@ -206,6 +206,7 @@ static int backlight_pwm_of_probe(struct device_d *dev)
pwm_backlight->period = pwm_get_period(pwm_backlight->pwm);
+ pwm_backlight->backlight.slew_time_ms = 100;
pwm_backlight->backlight.brightness_set = backlight_pwm_set;
pwm_backlight->backlight.node = dev->device_node;
diff --git a/drivers/video/backlight.c b/drivers/video/backlight.c
index 09c0e47af6..30d52fcb68 100644
--- a/drivers/video/backlight.c
+++ b/drivers/video/backlight.c
@@ -15,6 +15,15 @@ int backlight_set_brightness(struct backlight_device *bl, int brightness)
if (brightness == bl->brightness_cur)
return 0;
+ if (!bl->slew_time_ms) {
+ ret = bl->brightness_set(bl, brightness);
+ if (ret)
+ return ret;
+
+ bl->brightness_cur = bl->brightness = brightness;
+ return 0;
+ }
+
if (brightness > bl->brightness_cur)
step = 1;
else
@@ -34,10 +43,9 @@ int backlight_set_brightness(struct backlight_device *bl, int brightness)
if (i == brightness)
break;
- udelay(100000 / num_steps);
+ udelay(bl->slew_time_ms * 1000 / num_steps);
}
-
bl->brightness_cur = bl->brightness = brightness;
return ret;
@@ -72,6 +80,8 @@ int backlight_register(struct backlight_device *bl)
dev_add_param_uint32(&bl->dev, "brightness", backlight_brightness_set,
NULL, &bl->brightness, "%d", bl);
+ dev_add_param_uint32(&bl->dev, "slew_time_ms", NULL, NULL,
+ &bl->slew_time_ms, "%d", NULL);
list_add_tail(&bl->list, &backlights);