summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2019-01-15 13:43:03 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2019-01-15 13:43:03 +0100
commit7c2517c2444fdd5c2eceee330a03ff15d12602ca (patch)
tree1770d5217d689f0513bb1534c7e4dfbf114800fc /drivers
parentcbc25b2b8488452085d3195dfc7164b00a265364 (diff)
parent0473048c4fa5410b0c4a75f667f7b317e44c15df (diff)
downloadbarebox-7c2517c2444fdd5c2eceee330a03ff15d12602ca.tar.gz
barebox-7c2517c2444fdd5c2eceee330a03ff15d12602ca.tar.xz
Merge branch 'for-next/misc'
Diffstat (limited to 'drivers')
-rw-r--r--drivers/led/core.c11
-rw-r--r--drivers/mci/mci-core.c26
-rw-r--r--drivers/mfd/rave-sp.c8
-rw-r--r--drivers/mfd/syscon.c2
-rw-r--r--drivers/net/fec_imx.c10
-rw-r--r--drivers/nvmem/ocotp.c9
-rw-r--r--drivers/serial/amba-pl011.c2
-rw-r--r--drivers/usb/gadget/dfu.c5
-rw-r--r--drivers/video/mtl017.c7
9 files changed, 36 insertions, 44 deletions
diff --git a/drivers/led/core.c b/drivers/led/core.c
index a388e6b365..431966d067 100644
--- a/drivers/led/core.c
+++ b/drivers/led/core.c
@@ -127,12 +127,13 @@ static void led_blink_func(struct poller_struct *poller)
struct led *led;
list_for_each_entry(led, &leds, list) {
+ const uint64_t now = get_time_ns();
int on;
if (!led->blink && !led->flash)
continue;
- if (led->blink_next_event > get_time_ns()) {
+ if (led->blink_next_event > now) {
continue;
}
@@ -140,7 +141,7 @@ static void led_blink_func(struct poller_struct *poller)
if (on)
on = led->max_value;
- led->blink_next_event = get_time_ns() +
+ led->blink_next_event = now +
(led->blink_states[led->blink_next_state] * MSECOND);
led->blink_next_state = (led->blink_next_state + 1) %
led->blink_nr_states;
@@ -176,7 +177,7 @@ int led_blink_pattern(struct led *led, const unsigned int *pattern,
pattern_len * sizeof(*led->blink_states));
led->blink_nr_states = pattern_len;
led->blink_next_state = 0;
- led->blink_next_event = get_time_ns();
+ led->blink_next_event = 0;
led->blink = 1;
led->flash = 0;
@@ -187,7 +188,7 @@ int led_blink(struct led *led, unsigned int on_ms, unsigned int off_ms)
{
unsigned int pattern[] = {on_ms, off_ms};
- return led_blink_pattern(led, pattern, 2);
+ return led_blink_pattern(led, ARRAY_AND_SIZE(pattern));
}
int led_flash(struct led *led, unsigned int duration_ms)
@@ -195,7 +196,7 @@ int led_flash(struct led *led, unsigned int duration_ms)
unsigned int pattern[] = {duration_ms, 0};
int ret;
- ret = led_blink_pattern(led, pattern, 2);
+ ret = led_blink_pattern(led, ARRAY_AND_SIZE(pattern));
if (ret)
return ret;
diff --git a/drivers/mci/mci-core.c b/drivers/mci/mci-core.c
index c8d1d5e164..0bd68b15b8 100644
--- a/drivers/mci/mci-core.c
+++ b/drivers/mci/mci-core.c
@@ -1628,7 +1628,12 @@ static int mci_register_partition(struct mci_part *part)
if (np) {
of_parse_partitions(&part->blk.cdev, np);
- of_partitions_register_fixup(&part->blk.cdev);
+
+ /* bootN-partitions binding barebox-specific, so don't register
+ * for fixup into kernel device tree
+ */
+ if (part->area_type != MMC_BLK_DATA_AREA_BOOT)
+ of_partitions_register_fixup(&part->blk.cdev);
}
return 0;
@@ -1650,13 +1655,11 @@ static int mci_card_probe(struct mci *mci)
return -ENODEV;
}
- if (!IS_ERR(host->supply)) {
- ret = regulator_enable(host->supply);
- if (ret) {
- dev_err(&mci->dev, "failed to enable regulator: %s\n",
- strerror(-ret));
- return ret;
- }
+ ret = regulator_enable(host->supply);
+ if (ret) {
+ dev_err(&mci->dev, "failed to enable regulator: %s\n",
+ strerror(-ret));
+ return ret;
}
/* start with a host interface reset */
@@ -1728,8 +1731,7 @@ on_error:
if (rc != 0) {
host->clock = 0; /* disable the MCI clock */
mci_set_ios(mci);
- if (!IS_ERR(host->supply))
- regulator_disable(host->supply);
+ regulator_disable(host->supply);
}
return rc;
@@ -1816,8 +1818,10 @@ int mci_register(struct mci_host *host)
mci->dev.detect = mci_detect;
host->supply = regulator_get(host->hw_dev, "vmmc");
- if (IS_ERR(host->supply))
+ if (IS_ERR(host->supply)) {
dev_err(&mci->dev, "Failed to get 'vmmc' regulator.\n");
+ host->supply = NULL;
+ }
ret = register_device(&mci->dev);
if (ret)
diff --git a/drivers/mfd/rave-sp.c b/drivers/mfd/rave-sp.c
index b7efb62617..1448c4143f 100644
--- a/drivers/mfd/rave-sp.c
+++ b/drivers/mfd/rave-sp.c
@@ -320,7 +320,6 @@ int rave_sp_exec(struct rave_sp *sp,
unsigned char *data = __data;
int command, ret = 0;
u8 ackid;
- uint64_t start = get_time_ns();
command = sp->variant->cmd.translate(data[0]);
if (command < 0)
@@ -340,12 +339,9 @@ int rave_sp_exec(struct rave_sp *sp,
* is_timeout will implicitly poll serdev via poller
* infrastructure
*/
- while (!is_timeout(start, SECOND) && !reply.received)
- ;
-
- if (!reply.received) {
+ ret = wait_on_timeout(SECOND, reply.received);
+ if (ret) {
dev_err(dev, "Command timeout\n");
- ret = -ETIMEDOUT;
sp->reply = NULL;
}
diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c
index 957d9a7267..30ed65f737 100644
--- a/drivers/mfd/syscon.c
+++ b/drivers/mfd/syscon.c
@@ -176,7 +176,7 @@ static int syscon_probe(struct device_d *dev)
syscon->base = IOMEM(res->start);
dev->priv = syscon;
- dev_dbg(dev, "map 0x%x-0x%x registered\n", res->start, res->end);
+ dev_dbg(dev, "map %pa-%pa registered\n", &res->start, &res->end);
return 0;
}
diff --git a/drivers/net/fec_imx.c b/drivers/net/fec_imx.c
index c2628cc1d6..4823b08340 100644
--- a/drivers/net/fec_imx.c
+++ b/drivers/net/fec_imx.c
@@ -51,7 +51,7 @@ static int fec_miibus_read(struct mii_bus *bus, int phyAddr, int regAddr)
* wait for the related interrupt
*/
if (readl_poll_timeout(fec->regs + FEC_IEVENT, reg,
- reg & FEC_IEVENT_MII, MSECOND)) {
+ reg & FEC_IEVENT_MII, USEC_PER_MSEC)) {
dev_err(&fec->edev.dev, "Read MDIO failed...\n");
return -1;
}
@@ -88,7 +88,7 @@ static int fec_miibus_write(struct mii_bus *bus, int phyAddr,
* wait for the MII interrupt
*/
if (readl_poll_timeout(fec->regs + FEC_IEVENT, reg,
- reg & FEC_IEVENT_MII, MSECOND)) {
+ reg & FEC_IEVENT_MII, USEC_PER_MSEC)) {
dev_err(&fec->edev.dev, "Write MDIO failed...\n");
return -1;
}
@@ -401,7 +401,7 @@ static void fec_halt(struct eth_device *dev)
/* wait for graceful stop to register */
if (readl_poll_timeout(fec->regs + FEC_IEVENT, reg,
- reg & FEC_IEVENT_GRA, SECOND))
+ reg & FEC_IEVENT_GRA, USEC_PER_SEC))
dev_err(&dev->dev, "graceful stop timeout\n");
/* Disable SmartDMA tasks */
@@ -475,7 +475,7 @@ static int fec_send(struct eth_device *dev, void *eth_data, int data_length)
fec_tx_task_enable(fec);
if (readw_poll_timeout(&fec->tbd_base[fec->tbd_index].status,
- status, !(status & FEC_TBD_READY), SECOND))
+ status, !(status & FEC_TBD_READY), USEC_PER_SEC))
dev_err(&dev->dev, "transmission timeout\n");
dma_unmap_single(fec->dev, dma, data_length, DMA_TO_DEVICE);
@@ -796,7 +796,7 @@ static int fec_probe(struct device_d *dev)
/* Reset chip. */
writel(FEC_ECNTRL_RESET, fec->regs + FEC_ECNTRL);
ret = readl_poll_timeout(fec->regs + FEC_ECNTRL, reg,
- !(reg & FEC_ECNTRL_RESET), SECOND);
+ !(reg & FEC_ECNTRL_RESET), USEC_PER_SEC);
if (ret)
goto free_gpio;
diff --git a/drivers/nvmem/ocotp.c b/drivers/nvmem/ocotp.c
index d904bd08f0..5b8b925cb4 100644
--- a/drivers/nvmem/ocotp.c
+++ b/drivers/nvmem/ocotp.c
@@ -706,11 +706,4 @@ static struct driver_d imx_ocotp_driver = {
.probe = imx_ocotp_probe,
.of_compatible = DRV_OF_COMPAT(imx_ocotp_dt_ids),
};
-
-static int imx_ocotp_init(void)
-{
- platform_driver_register(&imx_ocotp_driver);
-
- return 0;
-}
-postcore_initcall(imx_ocotp_init);
+postcore_platform_driver(imx_ocotp_driver);
diff --git a/drivers/serial/amba-pl011.c b/drivers/serial/amba-pl011.c
index 4c4067d5b5..ce40f840f7 100644
--- a/drivers/serial/amba-pl011.c
+++ b/drivers/serial/amba-pl011.c
@@ -185,7 +185,7 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
struct regulator *r;
r = regulator_get(&dev->dev, NULL);
- if (r) {
+ if (!IS_ERR(r)) {
int ret;
ret = regulator_enable(r);
diff --git a/drivers/usb/gadget/dfu.c b/drivers/usb/gadget/dfu.c
index d7bf92cdff..c2b3d481af 100644
--- a/drivers/usb/gadget/dfu.c
+++ b/drivers/usb/gadget/dfu.c
@@ -489,7 +489,6 @@ static int dfu_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
value = handle_dnload(f, ctrl);
dfu->dfu_state = DFU_STATE_dfuDNLOAD_IDLE;
return 0;
- break;
case USB_REQ_DFU_UPLOAD:
dfu->dfu_state = DFU_STATE_dfuUPLOAD_IDLE;
debug("dfu: starting upload from %s\n", dfu_file_entry->filename);
@@ -505,7 +504,6 @@ static int dfu_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
}
handle_upload(f, ctrl);
return 0;
- break;
case USB_REQ_DFU_ABORT:
dfu->dfu_status = DFU_STATUS_OK;
value = 0;
@@ -517,7 +515,6 @@ static int dfu_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
default:
dfu->dfu_state = DFU_STATE_dfuERROR;
value = -EINVAL;
- goto out;
break;
}
break;
@@ -544,7 +541,6 @@ static int dfu_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
case USB_REQ_DFU_UPLOAD:
handle_upload(f, ctrl);
return 0;
- break;
case USB_REQ_DFU_ABORT:
dfu_abort(dfu);
value = 0;
@@ -574,7 +570,6 @@ static int dfu_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
case DFU_STATE_dfuMANIFEST:
dfu->dfu_state = DFU_STATE_dfuERROR;
value = -EINVAL;
- goto out;
break;
default:
break;
diff --git a/drivers/video/mtl017.c b/drivers/video/mtl017.c
index 085ea110ba..c04875cd07 100644
--- a/drivers/video/mtl017.c
+++ b/drivers/video/mtl017.c
@@ -244,6 +244,9 @@ static int mtl017_probe(struct device_d *dev)
mtl017->client = to_i2c_client(dev);
mtl017->regulator = regulator_get(dev, "vdd");
+ if (IS_ERR(mtl017->regulator))
+ mtl017->regulator = NULL;
+
mtl017->enable_gpio = of_get_named_gpio_flags(dev->device_node,
"enable-gpios", 0, &flags);
if (gpio_is_valid(mtl017->enable_gpio)) {
@@ -265,8 +268,8 @@ static int mtl017_probe(struct device_d *dev)
return 0;
}
-static struct driver_d twl_driver = {
+static struct driver_d mtl_driver = {
.name = "mtl017",
.probe = mtl017_probe,
};
-device_i2c_driver(twl_driver);
+device_i2c_driver(mtl_driver);