summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2019-07-12 07:10:18 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2019-07-12 07:10:18 +0200
commit5ed435f33dc6a31cd93b6f38a14dd775977cf1cc (patch)
treea5679efee0260214cece15ba83938e4c6f007f11 /drivers
parent05f49fa0edb6166f80b8a37a172d6b83db2d92d1 (diff)
parentba927c778091295310fdb105e10c257a0cfc61a3 (diff)
downloadbarebox-5ed435f33dc6a31cd93b6f38a14dd775977cf1cc.tar.gz
barebox-5ed435f33dc6a31cd93b6f38a14dd775977cf1cc.tar.xz
Merge branch 'for-next/misc'
Diffstat (limited to 'drivers')
-rw-r--r--drivers/i2c/busses/i2c-gpio.c27
-rw-r--r--drivers/i2c/i2c-mux.c2
-rw-r--r--drivers/mfd/syscon.c19
-rw-r--r--drivers/mtd/spi-nor/spi-nor.c21
-rw-r--r--drivers/serial/serial_ns16550.c3
-rw-r--r--drivers/usb/gadget/f_fastboot.c2
-rw-r--r--drivers/usb/misc/usb251xb.c10
7 files changed, 65 insertions, 19 deletions
diff --git a/drivers/i2c/busses/i2c-gpio.c b/drivers/i2c/busses/i2c-gpio.c
index 708193344a..5ab43fe935 100644
--- a/drivers/i2c/busses/i2c-gpio.c
+++ b/drivers/i2c/busses/i2c-gpio.c
@@ -94,18 +94,25 @@ static int of_i2c_gpio_probe(struct device_node *np,
if (!IS_ENABLED(CONFIG_OFDEVICE))
return -ENODEV;
- if (of_gpio_count(np) < 2)
- return -ENODEV;
+ pdata->sda_pin = of_get_named_gpio_flags(np, "sda-gpios", 0, NULL);
+ pdata->scl_pin = of_get_named_gpio_flags(np, "scl-gpios", 0, NULL);
+
+ if ((!gpio_is_valid(pdata->sda_pin) || !gpio_is_valid(pdata->scl_pin))
+ && (of_gpio_count(np) >= 2)) {
+ /* Note: The gpios property is marked as deprecated */
+ ret = of_get_gpio(np, 0);
+ if (ret < 0)
+ return ret;
+ pdata->sda_pin = ret;
- ret = of_get_gpio(np, 0);
- if (ret < 0)
- return ret;
- pdata->sda_pin = ret;
+ ret = of_get_gpio(np, 1);
+ if (ret < 0)
+ return ret;
+ pdata->scl_pin = ret;
+ }
- ret = of_get_gpio(np, 1);
- if (ret < 0)
- return ret;
- pdata->scl_pin = ret;
+ if (!gpio_is_valid(pdata->sda_pin) || !gpio_is_valid(pdata->scl_pin))
+ return -ENODEV;
of_property_read_u32(np, "i2c-gpio,delay-us", &pdata->udelay);
diff --git a/drivers/i2c/i2c-mux.c b/drivers/i2c/i2c-mux.c
index f87e1fadb6..ab31da61d6 100644
--- a/drivers/i2c/i2c-mux.c
+++ b/drivers/i2c/i2c-mux.c
@@ -96,7 +96,7 @@ struct i2c_adapter *i2c_add_mux_adapter(struct i2c_adapter *parent,
/*
* Try to populate the mux adapter's device_node, expands to
- * nothing if !CONFIG_OF.
+ * nothing if !CONFIG_OFDEVICE.
*/
if (mux_dev->device_node) {
struct device_node *child;
diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c
index b1ff1b1eac..8099419378 100644
--- a/drivers/mfd/syscon.c
+++ b/drivers/mfd/syscon.c
@@ -174,6 +174,25 @@ struct regmap *syscon_regmap_lookup_by_compatible(const char *s)
return regmap;
}
+struct regmap *syscon_regmap_lookup_by_phandle(struct device_node *np,
+ const char *property)
+{
+ struct device_node *syscon_np;
+ struct regmap *regmap;
+
+ if (property)
+ syscon_np = of_parse_phandle(np, property, 0);
+ else
+ syscon_np = np;
+
+ if (!syscon_np)
+ return ERR_PTR(-ENODEV);
+
+ regmap = syscon_node_to_regmap(syscon_np);
+
+ return regmap;
+}
+
static int syscon_probe(struct device_d *dev)
{
struct syscon *syscon;
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index 43bd402f9f..b2052ce0af 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -671,6 +671,27 @@ static const struct spi_device_id spi_nor_ids[] = {
{ "640s33b", INFO(0x898913, 0, 64 * 1024, 128, 0) },
/* ISSI */
+ { "is25cd512", INFO(0x7f9d20, 0, 32 * 1024, 2, SECT_4K) },
+ { "is25lq040b", INFO(0x9d4013, 0, 64 * 1024, 8,
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
+ { "is25lp016d", INFO(0x9d6015, 0, 64 * 1024, 32,
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
+ { "is25lp080d", INFO(0x9d6014, 0, 64 * 1024, 16,
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
+ { "is25lp032", INFO(0x9d6016, 0, 64 * 1024, 64,
+ SECT_4K | SPI_NOR_DUAL_READ) },
+ { "is25lp064", INFO(0x9d6017, 0, 64 * 1024, 128,
+ SECT_4K | SPI_NOR_DUAL_READ) },
+ { "is25lp128", INFO(0x9d6018, 0, 64 * 1024, 256,
+ SECT_4K | SPI_NOR_DUAL_READ) },
+ { "is25lp256", INFO(0x9d6019, 0, 64 * 1024, 512,
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
+ { "is25wp032", INFO(0x9d7016, 0, 64 * 1024, 64,
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
+ { "is25wp064", INFO(0x9d7017, 0, 64 * 1024, 128,
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
+ { "is25wp128", INFO(0x9d7018, 0, 64 * 1024, 256,
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
{ "is25lq128", INFO(0x9d6018, 0, 64 * 1024, 256, 0) },
/* Macronix */
diff --git a/drivers/serial/serial_ns16550.c b/drivers/serial/serial_ns16550.c
index 4c84d27bdc..3edeb0dcbe 100644
--- a/drivers/serial/serial_ns16550.c
+++ b/drivers/serial/serial_ns16550.c
@@ -314,12 +314,15 @@ static int ns16550_tstc(struct console_device *cdev)
static void ns16550_probe_dt(struct device_d *dev, struct ns16550_priv *priv)
{
struct device_node *np = dev->device_node;
+ u32 offset;
u32 width = 1;
if (!IS_ENABLED(CONFIG_OFDEVICE))
return;
of_property_read_u32(np, "clock-frequency", &priv->plat.clock);
+ if (of_property_read_u32(np, "reg-offset", &offset) == 0)
+ priv->mmiobase += offset;
of_property_read_u32(np, "reg-shift", &priv->plat.shift);
of_property_read_u32(np, "reg-io-width", &width);
switch (width) {
diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c
index bdf0c807df..82a202cc21 100644
--- a/drivers/usb/gadget/f_fastboot.c
+++ b/drivers/usb/gadget/f_fastboot.c
@@ -767,7 +767,7 @@ static void __maybe_unused cb_boot(struct f_fastboot *f_fb, const char *opt)
fastboot_tx_print(f_fb, FASTBOOT_MSG_INFO, "Booting kernel..\n");
globalvar_set_match("linux.bootargs.dyn.", "");
- globalvar_set_match("bootm.", "");
+ globalvar_set_match("bootm.image", "");
data.os_file = xstrdup(FASTBOOT_TMPFILE);
diff --git a/drivers/usb/misc/usb251xb.c b/drivers/usb/misc/usb251xb.c
index 97f55efa82..10d5aa310b 100644
--- a/drivers/usb/misc/usb251xb.c
+++ b/drivers/usb/misc/usb251xb.c
@@ -339,7 +339,7 @@ static int usb251xb_get_ofdata(struct usb251xb *hub,
{
struct device_d *dev = hub->dev;
struct device_node *np = dev->device_node;
- int len, err, i;
+ int len, i;
u32 port, property_u32 = 0;
const u32 *cproperty_u32;
const char *cproperty_char;
@@ -374,10 +374,6 @@ static int usb251xb_get_ofdata(struct usb251xb *hub,
return ret;
} else if (hub->gpio_reset == -EPROBE_DEFER) {
return -EPROBE_DEFER;
- } else {
- err = hub->gpio_reset;
- dev_err(dev, "unable to request GPIO reset pin (%d)\n", err);
- return err;
}
if (of_property_read_u16_array(np, "vendor-id", &hub->vendor_id, 1))
@@ -612,13 +608,13 @@ static const struct of_device_id usb251xb_of_match[] = {
/* sentinel */
}
};
-#else /* CONFIG_OF */
+#else /* CONFIG_OFDEVICE */
static int usb251xb_get_ofdata(struct usb251xb *hub,
struct usb251xb_data *data)
{
return 0;
}
-#endif /* CONFIG_OF */
+#endif /* CONFIG_OFDEVICE */
static int usb251xb_probe(struct usb251xb *hub)
{