diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2019-07-12 07:10:18 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-07-12 07:10:18 +0200 |
commit | 5ed435f33dc6a31cd93b6f38a14dd775977cf1cc (patch) | |
tree | a5679efee0260214cece15ba83938e4c6f007f11 /drivers | |
parent | 05f49fa0edb6166f80b8a37a172d6b83db2d92d1 (diff) | |
parent | ba927c778091295310fdb105e10c257a0cfc61a3 (diff) | |
download | barebox-5ed435f33dc6a31cd93b6f38a14dd775977cf1cc.tar.gz barebox-5ed435f33dc6a31cd93b6f38a14dd775977cf1cc.tar.xz |
Merge branch 'for-next/misc'
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/i2c/busses/i2c-gpio.c | 27 | ||||
-rw-r--r-- | drivers/i2c/i2c-mux.c | 2 | ||||
-rw-r--r-- | drivers/mfd/syscon.c | 19 | ||||
-rw-r--r-- | drivers/mtd/spi-nor/spi-nor.c | 21 | ||||
-rw-r--r-- | drivers/serial/serial_ns16550.c | 3 | ||||
-rw-r--r-- | drivers/usb/gadget/f_fastboot.c | 2 | ||||
-rw-r--r-- | drivers/usb/misc/usb251xb.c | 10 |
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) { |