diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2023-03-16 15:12:58 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2023-03-16 15:12:58 +0100 |
commit | 99f4aafa139ea9f6e0eebecbddb3c9a216853e81 (patch) | |
tree | 97443484018f991c3ca98299075417476ebcc4c8 | |
parent | 9b6c8c0aa005554673b1a95f5ae8db72f60a589b (diff) | |
parent | 9c432ede2cb016b2a98902a8b3aa1f8f26f29ee4 (diff) | |
download | barebox-99f4aafa139ea9f6e0eebecbddb3c9a216853e81.tar.gz |
Merge branch 'for-next/misc' into next
-rw-r--r-- | common/blspec.c | 2 | ||||
-rw-r--r-- | common/elf.c | 7 | ||||
-rw-r--r-- | drivers/gpio/gpio-pca953x.c | 34 | ||||
-rw-r--r-- | drivers/gpio/gpiolib.c | 2 | ||||
-rw-r--r-- | drivers/net/dsa.c | 7 | ||||
-rw-r--r-- | drivers/usb/dwc2/dwc2.c | 5 | ||||
-rw-r--r-- | drivers/usb/dwc3/core.c | 44 | ||||
-rw-r--r-- | include/linux/string.h | 3 | ||||
-rw-r--r-- | lib/string.c | 48 |
9 files changed, 67 insertions, 85 deletions
diff --git a/common/blspec.c b/common/blspec.c index c9380a306f..55785fa97d 100644 --- a/common/blspec.c +++ b/common/blspec.c @@ -88,7 +88,7 @@ static int blspec_boot(struct bootentry *be, int verbose, int dryrun) bootm_data_init_defaults(&data); - data.verbose = verbose || data.verbose; + data.verbose = max(verbose, data.verbose); devicetree = blspec_entry_var_get(entry, "devicetree"); initrd = blspec_entry_var_get(entry, "initrd"); diff --git a/common/elf.c b/common/elf.c index eec62cad61..c9b3d7bb37 100644 --- a/common/elf.c +++ b/common/elf.c @@ -59,14 +59,13 @@ static int request_elf_segment(struct elf_image *elf, void *phdr) { void *dst = (void *) (phys_addr_t) elf_phdr_p_paddr(elf, phdr); int ret; - u64 p_filesz = elf_phdr_p_filesz(elf, phdr); u64 p_memsz = elf_phdr_p_memsz(elf, phdr); /* we care only about PT_LOAD segments */ if (elf_phdr_p_type(elf, phdr) != PT_LOAD) return 0; - if (!p_filesz) + if (!p_memsz) return 0; if (dst < elf->low_addr) @@ -74,9 +73,9 @@ static int request_elf_segment(struct elf_image *elf, void *phdr) if (dst + p_memsz > elf->high_addr) elf->high_addr = dst + p_memsz; - pr_debug("Requesting segment 0x%p (%llu bytes)\n", dst, p_filesz); + pr_debug("Requesting segment 0x%p (%llu bytes)\n", dst, p_memsz); - ret = elf_request_region(elf, (resource_size_t)dst, p_filesz, phdr); + ret = elf_request_region(elf, (resource_size_t)dst, p_memsz, phdr); if (ret) return ret; diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c index 2d3f8a8871..bfcfcfb56c 100644 --- a/drivers/gpio/gpio-pca953x.c +++ b/drivers/gpio/gpio-pca953x.c @@ -12,6 +12,8 @@ #include <common.h> #include <malloc.h> #include <driver.h> +#include <gpiod.h> +#include <regulator.h> #include <xfuncs.h> #include <errno.h> #include <i2c/i2c.h> @@ -416,7 +418,8 @@ static int pca953x_probe(struct device *dev) unsigned long driver_data; struct pca953x_platform_data *pdata; struct pca953x_chip *chip; - int ret; + struct regulator *reg; + int reset_gpio, ret; u32 invert = 0; chip = xzalloc(sizeof(struct pca953x_chip)); @@ -439,6 +442,20 @@ static int pca953x_probe(struct device *dev) chip->client = client; + reset_gpio = gpiod_get(dev, "reset", GPIOD_OUT_LOW); + if (!gpio_is_valid(reset_gpio) && reset_gpio != -ENOENT) + dev_warn(dev, "Failed to get 'reset' GPIO (ignored)\n"); + + reg = regulator_get(dev, "vcc"); + if (IS_ERR(reg)) { + dev_warn(dev, "Failed to get 'vcc' regulator (ignored).\n"); + reg = NULL; + } + + ret = regulator_enable(reg); + if (ret) + return dev_err_probe(dev, ret, "failed to enable register\n"); + chip->chip_type = driver_data & (PCA953X_TYPE | PCA957X_TYPE); /* initialize cached registers from their original values. @@ -472,7 +489,10 @@ static int pca953x_probe(struct device *dev) #define OF_957X(__nrgpio, __int) (void *)(__nrgpio | PCA957X_TYPE | __int) static const struct of_device_id pca953x_dt_ids[] = { + { .compatible = "nxp,pca6408", .data = OF_953X(8, PCA_INT), }, + { .compatible = "nxp,pca6416", .data = OF_953X(16, PCA_INT), }, { .compatible = "nxp,pca9505", .data = OF_953X(40, PCA_INT), }, + { .compatible = "nxp,pca9506", .data = OF_953X(40, PCA_INT), }, { .compatible = "nxp,pca9534", .data = OF_953X( 8, PCA_INT), }, { .compatible = "nxp,pca9535", .data = OF_953X(16, PCA_INT), }, { .compatible = "nxp,pca9536", .data = OF_953X( 4, 0), }, @@ -488,16 +508,28 @@ static const struct of_device_id pca953x_dt_ids[] = { { .compatible = "nxp,pca9698", .data = OF_953X(40, 0), }, { .compatible = "nxp,pcal6408", .data = OF_953X(8, PCA_LATCH_INT), }, + { .compatible = "nxp,pcal6416", .data = OF_953X(16, PCA_LATCH_INT), }, + { .compatible = "nxp,pcal6524", .data = OF_953X(24, PCA_LATCH_INT), }, + { .compatible = "nxp,pcal9535", .data = OF_953X(16, PCA_LATCH_INT), }, + { .compatible = "nxp,pcal9554b", .data = OF_953X( 8, PCA_LATCH_INT), }, + { .compatible = "nxp,pcal9555a", .data = OF_953X(16, PCA_LATCH_INT), }, { .compatible = "maxim,max7310", .data = OF_953X( 8, 0), }, { .compatible = "maxim,max7312", .data = OF_953X(16, PCA_INT), }, { .compatible = "maxim,max7313", .data = OF_953X(16, PCA_INT), }, { .compatible = "maxim,max7315", .data = OF_953X( 8, PCA_INT), }, + { .compatible = "maxim,max7318", .data = OF_953X(16, PCA_INT), }, { .compatible = "ti,pca6107", .data = OF_953X( 8, PCA_INT), }, + { .compatible = "ti,pca9536", .data = OF_953X( 4, 0), }, { .compatible = "ti,tca6408", .data = OF_953X( 8, PCA_INT), }, { .compatible = "ti,tca6416", .data = OF_953X(16, PCA_INT), }, { .compatible = "ti,tca6424", .data = OF_953X(24, PCA_INT), }, + { .compatible = "ti,tca9539", .data = OF_953X(16, PCA_INT), }, + + { .compatible = "onnn,cat9554", .data = OF_953X( 8, PCA_INT), }, + { .compatible = "onnn,pca9654", .data = OF_953X( 8, PCA_INT), }, + { .compatible = "onnn,pca9655", .data = OF_953X(16, PCA_INT), }, { .compatible = "exar,xra1202", .data = OF_953X( 8, 0), }, { } diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 2e7a39b475..7362798758 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -716,7 +716,7 @@ static int do_gpiolib(int argc, char *argv[]) printf("\nGPIOs %u-%u, chip %s:\n", gi->chip->base, gi->chip->base + gi->chip->ngpio - 1, - gi->chip->dev->name); + dev_name(gi->chip->dev)); printf(" %-3s %-3s %-9s %-20s %-20s\n", "dir", "val", "requested", "name", "label"); } diff --git a/drivers/net/dsa.c b/drivers/net/dsa.c index 793bbbb4f1..6a3b829e15 100644 --- a/drivers/net/dsa.c +++ b/drivers/net/dsa.c @@ -400,8 +400,11 @@ static int dsa_switch_parse_ports_of(struct dsa_switch *ds, } master = of_parse_phandle(port, "ethernet", 0); - if (master) - dsa_switch_register_master(ds, port, master, reg); + if (master) { + ret = dsa_switch_register_master(ds, port, master, reg); + if (ret) + return ret; + } } /* Now we can register regular switch ports */ diff --git a/drivers/usb/dwc2/dwc2.c b/drivers/usb/dwc2/dwc2.c index ef957534c9..ff4842ce62 100644 --- a/drivers/usb/dwc2/dwc2.c +++ b/drivers/usb/dwc2/dwc2.c @@ -92,11 +92,10 @@ static int dwc2_probe(struct device *dev) set_params_cb set_params; int ret; - dwc2 = xzalloc(sizeof(*dwc2)); - iores = dev_request_mem_resource(dev, 0); if (IS_ERR(iores)) return PTR_ERR(iores); + dwc2 = xzalloc(sizeof(*dwc2)); dwc2->regs = IOMEM(iores->start); dwc2->dev = dev; @@ -177,6 +176,8 @@ clk_put: release_region: release_region(iores); + free(dwc2); + return ret; } diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index bf71038133..a3388d4dd6 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -23,11 +23,6 @@ #define DWC3_DEFAULT_AUTOSUSPEND_DELAY 5000 /* ms */ -struct dwc3_match_data { - const struct clk_bulk_data *clks; - const int num_clks; -}; - /** * dwc3_get_dr_mode - Validates and sets dr_mode * @dwc: pointer to our context structure @@ -1099,29 +1094,23 @@ static void dwc3_coresoft_reset(struct dwc3 *dwc) static int dwc3_probe(struct device *dev) { - const struct dwc3_match_data *match; struct dwc3 *dwc; int ret; dwc = xzalloc(sizeof(*dwc)); dev->priv = dwc; - match = device_get_match_data(dev); - dwc->clks = xmemdup(match->clks, match->num_clks * - sizeof(struct clk_bulk_data)); dwc->dev = dev; dwc->regs = dev_get_mem_region(dwc->dev, 0) + DWC3_GLOBALS_REGS_START; dwc3_get_properties(dwc); if (dev->of_node) { - dwc->num_clks = match->num_clks; + ret = clk_bulk_get_all(dev, &dwc->clks); + if (ret < 0) + return ret; - if (of_find_property(dev->of_node, "clocks", NULL)) { - ret = clk_bulk_get(dev, dwc->num_clks, dwc->clks); - if (ret) - return ret; - } + dwc->num_clks = ret; } ret = clk_bulk_enable(dwc->num_clks, dwc->clks); @@ -1180,40 +1169,15 @@ static void dwc3_remove(struct device *dev) clk_bulk_put(dwc->num_clks, dwc->clks); } -static const struct clk_bulk_data dwc3_core_clks[] = { - { .id = "ref" }, - { .id = "bus_early" }, - { .id = "suspend" }, -}; - -static const struct dwc3_match_data dwc3_default = { - .clks = dwc3_core_clks, - .num_clks = ARRAY_SIZE(dwc3_core_clks), -}; - -static const struct clk_bulk_data dwc3_core_clks_rk3568[] = { - { .id = "ref_clk" }, - { .id = "bus_clk" }, - { .id = "suspend_clk" }, -}; - -static const struct dwc3_match_data dwc3_rk3568 = { - .clks = dwc3_core_clks_rk3568, - .num_clks = ARRAY_SIZE(dwc3_core_clks_rk3568), -}; - static const struct of_device_id of_dwc3_match[] = { { .compatible = "snps,dwc3", - .data = &dwc3_default, }, { .compatible = "synopsys,dwc3", - .data = &dwc3_default, }, { .compatible = "rockchip,rk3568-dwc3", - .data = &dwc3_rk3568, }, { }, }; diff --git a/include/linux/string.h b/include/linux/string.h index 0c79d3e5cf..cd81ab1396 100644 --- a/include/linux/string.h +++ b/include/linux/string.h @@ -58,9 +58,6 @@ extern int strcmp(const char *,const char *); #ifndef __HAVE_ARCH_STRNCMP extern int strncmp(const char *,const char *,__kernel_size_t); #endif -#ifndef __HAVE_ARCH_STRNICMP -extern int strnicmp(const char *, const char *, __kernel_size_t); -#endif #ifndef __HAVE_ARCH_STRCASECMP extern int strcasecmp(const char *s1, const char *s2); #endif diff --git a/lib/string.c b/lib/string.c index 005f4532bb..8ea68044cc 100644 --- a/lib/string.c +++ b/lib/string.c @@ -24,14 +24,28 @@ #include <linux/ctype.h> #include <malloc.h> -#ifndef __HAVE_ARCH_STRNICMP +#ifndef __HAVE_ARCH_STRCASECMP +int strcasecmp(const char *s1, const char *s2) +{ + int c1, c2; + + do { + c1 = tolower(*s1++); + c2 = tolower(*s2++); + } while (c1 == c2 && c1 != 0); + return c1 - c2; +} +EXPORT_SYMBOL(strcasecmp); +#endif + +#ifndef __HAVE_ARCH_STRNCASECMP /** - * strnicmp - Case insensitive, length-limited string comparison + * strncasecmp - Case insensitive, length-limited string comparison * @s1: One string * @s2: The other string * @len: the maximum number of characters to compare */ -int strnicmp(const char *s1, const char *s2, size_t len) +int strncasecmp(const char *s1, const char *s2, size_t len) { /* Yes, Virginia, it had better be unsigned */ unsigned char c1, c2; @@ -53,34 +67,6 @@ int strnicmp(const char *s1, const char *s2, size_t len) } while (--len); return (int)c1 - (int)c2; } -EXPORT_SYMBOL(strnicmp); -#endif - -#ifndef __HAVE_ARCH_STRCASECMP -int strcasecmp(const char *s1, const char *s2) -{ - int c1, c2; - - do { - c1 = tolower(*s1++); - c2 = tolower(*s2++); - } while (c1 == c2 && c1 != 0); - return c1 - c2; -} -EXPORT_SYMBOL(strcasecmp); -#endif - -#ifndef __HAVE_ARCH_STRNCASECMP -int strncasecmp(const char *s1, const char *s2, size_t n) -{ - int c1, c2; - - do { - c1 = tolower(*s1++); - c2 = tolower(*s2++); - } while ((--n > 0) && c1 == c2 && c1 != 0); - return c1 - c2; -} EXPORT_SYMBOL(strncasecmp); #endif |