diff options
30 files changed, 82 insertions, 74 deletions
@@ -1,5 +1,5 @@ VERSION = 2017 -PATCHLEVEL = 04 +PATCHLEVEL = 05 SUBLEVEL = 0 EXTRAVERSION = NAME = None diff --git a/arch/arm/cpu/cache-l2x0.c b/arch/arm/cpu/cache-l2x0.c index 0aa2482321..8e0fff66d5 100644 --- a/arch/arm/cpu/cache-l2x0.c +++ b/arch/arm/cpu/cache-l2x0.c @@ -139,6 +139,9 @@ void l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask) cache_id = readl(l2x0_base + L2X0_CACHE_ID); aux = readl(l2x0_base + L2X0_AUX_CTRL); + aux &= aux_mask; + aux |= aux_val; + /* Determine the number of ways */ switch (cache_id & L2X0_CACHE_ID_PART_MASK) { case L2X0_CACHE_ID_PART_L310: @@ -169,10 +172,6 @@ void l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask) if (!(readl(l2x0_base + L2X0_CTRL) & 1)) { /* l2x0 controller is disabled */ - - aux = readl(l2x0_base + L2X0_AUX_CTRL); - aux &= aux_mask; - aux |= aux_val; writel(aux, l2x0_base + L2X0_AUX_CTRL); l2x0_inv_all(); diff --git a/arch/arm/dts/socfpga.dtsi b/arch/arm/dts/socfpga.dtsi index 274c491804..b3a7f69ffe 100644 --- a/arch/arm/dts/socfpga.dtsi +++ b/arch/arm/dts/socfpga.dtsi @@ -10,22 +10,6 @@ aliases { mmc0 = &mmc; }; - - soc { - qspi: spi@ff705000 { - compatible = "cdns,qspi-nor"; - #address-cells = <1>; - #size-cells = <0>; - reg = <0xff705000 0x1000>, - <0xffa00000 0x1000>; - interrupts = <0 151 4>; - ext-decoder = <0>; /* external decoder */ - fifo-depth = <128>; - clocks = <&qspi_clk>; - clock-names = "qspi_clk"; - status = "disabled"; - }; - }; }; &osc2 { clock-frequency = <0>; diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 7621f2d6ad..80f53ce124 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -725,6 +725,7 @@ config HAB config HABV4 tristate "HABv4 support" select HAB + select IMX_OCOTP depends on ARCH_IMX6 help High Assurance Boot, as found on i.MX28/i.MX6. @@ -766,6 +767,7 @@ endif config HABV3 tristate "HABv3 support" select HAB + select IMX_IIM select ARCH_IMX_IMXIMAGE_SSL_SUPPORT depends on ARCH_IMX25 help diff --git a/arch/arm/mach-omap/am33xx_bbu_emmc.c b/arch/arm/mach-omap/am33xx_bbu_emmc.c index 3220575cd4..d3adb3744c 100644 --- a/arch/arm/mach-omap/am33xx_bbu_emmc.c +++ b/arch/arm/mach-omap/am33xx_bbu_emmc.c @@ -39,7 +39,7 @@ static int emmc_mlo_handler(struct bbu_handler *handler, struct bbu_data *data) if (ret != 0) return ret; - fd = open(handler->devicefile, O_WRONLY); + fd = open(handler->devicefile, O_RDWR); if (fd < 0) { pr_err("could not open %s: %s\n", handler->devicefile, errno_str()); diff --git a/arch/arm/mach-socfpga/xload.c b/arch/arm/mach-socfpga/xload.c index d24944bbb8..d7997a6ac4 100644 --- a/arch/arm/mach-socfpga/xload.c +++ b/arch/arm/mach-socfpga/xload.c @@ -51,7 +51,7 @@ static void socfpga_mmc_init(void) #if defined(CONFIG_SPI_CADENCE_QUADSPI) static struct cadence_qspi_platform_data qspi_pdata = { - .ext_decoder = 0, + .is_decoded_cs = 0, .fifo_depth = 128, }; diff --git a/common/Kconfig b/common/Kconfig index aac9f1aca3..62733e1dc4 100644 --- a/common/Kconfig +++ b/common/Kconfig @@ -644,6 +644,9 @@ config BOOTM_FORCE_SIGNED_IMAGES config BLSPEC depends on BLOCK depends on FLEXIBLE_BOOTARGS + depends on !SHELL_NONE + select BOOT + select BOOTM select OFTREE bool prompt "Support bootloader spec" @@ -936,6 +939,9 @@ config STATE_CRYPTO config BOOTCHOOSER bool "bootchooser infrastructure" + depends on !SHELL_NONE + select BOOT + select BOOTM select ENVIRONMENT_VARIABLES select OFTREE select PARAMETER diff --git a/common/globalvar.c b/common/globalvar.c index 32ca6a24db..1ecf5134af 100644 --- a/common/globalvar.c +++ b/common/globalvar.c @@ -99,6 +99,9 @@ void dev_param_init_from_nv(struct device_d *dev, const char *name) const char *val; int ret = 0; + if (!IS_ENABLED(CONFIG_NVVAR)) + return; + if (dev == &nv_device) return; if (dev == &global_device) @@ -395,6 +398,9 @@ static void globalvar_nv_sync(const char *name) { const char *val; + if (!IS_ENABLED(CONFIG_NVVAR)) + return; + val = dev_get_param(&nv_device, name); if (val) dev_set_param(&global_device, name, val); @@ -542,6 +548,8 @@ int nvvar_save(void) const char *env = default_environment_path_get(); int ret; #define TMPDIR "/.env.tmp" + if (!IS_ENABLED(CONFIG_NVVAR)) + return -ENOSYS; if (!nv_dirty || !env) return 0; @@ -602,7 +610,9 @@ static int nv_global_param_complete(struct device_d *dev, struct string_list *sl int nv_global_complete(struct string_list *sl, char *instr) { nv_global_param_complete(&global_device, sl, instr, 0); - nv_global_param_complete(&nv_device, sl, instr, 0); + + if (IS_ENABLED(CONFIG_NVVAR)) + nv_global_param_complete(&nv_device, sl, instr, 0); return 0; } diff --git a/common/state/backend_bucket_circular.c b/common/state/backend_bucket_circular.c index 5279ec9ce2..832f44e599 100644 --- a/common/state/backend_bucket_circular.c +++ b/common/state/backend_bucket_circular.c @@ -385,7 +385,7 @@ static int state_backend_bucket_circular_init( ret = state_mtd_peb_read(circ, buf, 0, circ->max_size); if (ret && ret != -EUCLEAN) - return ret; + goto out; for (sub_offset = circ->max_size - circ->writesize; sub_offset >= 0; sub_offset -= circ->writesize) { @@ -408,9 +408,11 @@ static int state_backend_bucket_circular_init( circ->write_area = sub_offset + circ->writesize; circ->last_written_length = written_length; + ret = 0; +out: free(buf); - return 0; + return ret; } static void state_backend_bucket_circular_free(struct diff --git a/common/state/backend_format_dtb.c b/common/state/backend_format_dtb.c index 55fa1fc597..e88cda499b 100644 --- a/common/state/backend_format_dtb.c +++ b/common/state/backend_format_dtb.c @@ -120,8 +120,6 @@ static int state_backend_format_dtb_pack(struct state_backend_format *format, of_delete_node(fdtb->root); fdtb->root = root; - free(fdt); - return 0; } diff --git a/common/state/backend_format_raw.c b/common/state/backend_format_raw.c index 232856a209..d76718cf82 100644 --- a/common/state/backend_format_raw.c +++ b/common/state/backend_format_raw.c @@ -211,6 +211,12 @@ static int backend_format_raw_pack(struct state_backend_format *format, unsigned int size_data; int ret; + if (backend_raw->algo) { + ret = backend_raw_digest_init(backend_raw); + if (ret) + return ret; + } + sv = list_last_entry(&state->variables, struct state_variable, list); size_data = sv->start + sv->size; size_full = size_data + sizeof(*header) + backend_raw->digest_length; @@ -233,10 +239,6 @@ static int backend_format_raw_pack(struct state_backend_format *format, sizeof(*header) - sizeof(uint32_t)); if (backend_raw->algo) { - ret = backend_raw_digest_init(backend_raw); - if (ret) - return ret; - /* hmac over header and data */ ret = digest_update(backend_raw->digest, buf, sizeof(*header) + size_data); if (ret) { diff --git a/common/state/backend_storage.c b/common/state/backend_storage.c index 9ed6ad79ac..8d24f7053d 100644 --- a/common/state/backend_storage.c +++ b/common/state/backend_storage.c @@ -110,12 +110,14 @@ static int bucket_refresh(struct state_backend_storage *storage, refresh: ret = bucket->write(bucket, buf, len); - if (ret) + if (ret) { dev_warn(storage->dev, "Failed to restore bucket %d@0x%08lx\n", bucket->num, bucket->offset); - else + } else { dev_info(storage->dev, "restored bucket %d@0x%08lx\n", bucket->num, bucket->offset); + bucket->needs_refresh = 0; + } return ret; } diff --git a/common/state/state.c b/common/state/state.c index 8369aedac6..6db77f2c18 100644 --- a/common/state/state.c +++ b/common/state/state.c @@ -577,6 +577,7 @@ struct state *state_new_from_node(struct device_node *node, char *path, partition_node = of_parse_phandle(node, "backend", 0); if (!partition_node) { dev_err(&state->dev, "Cannot resolve \"backend\" phandle\n"); + ret = -EINVAL; goto out_release_state; } diff --git a/drivers/hab/hab.c b/drivers/hab/hab.c index 512ff7ecf2..0d71f5bf26 100644 --- a/drivers/hab/hab.c +++ b/drivers/hab/hab.c @@ -209,9 +209,9 @@ static struct imx_hab_ops *imx_get_hab_ops(void) if (ops) return ops; - if (cpu_is_mx25() || cpu_is_mx35()) + if (IS_ENABLED(CONFIG_HABV3) && (cpu_is_mx25() || cpu_is_mx35())) tmp = &imx_hab_ops_iim; - else if (cpu_is_mx6()) + else if (IS_ENABLED(CONFIG_HABV4) && cpu_is_mx6()) tmp = &imx_hab_ops_ocotp; else return NULL; diff --git a/drivers/mtd/nand/nand_omap_gpmc.c b/drivers/mtd/nand/nand_omap_gpmc.c index a4e645201f..e18ce6358a 100644 --- a/drivers/mtd/nand/nand_omap_gpmc.c +++ b/drivers/mtd/nand/nand_omap_gpmc.c @@ -303,7 +303,8 @@ static int omap_correct_bch(struct mtd_info *mtd, uint8_t *dat, int bitflip_count; int bch_max_err; - int eccsteps = oinfo->nand.ecc.steps; + int eccsteps = (nand->ecc.mode == NAND_ECC_HW) && + (nand->ecc.size == 2048) ? 4 : 1; int eccsize = oinfo->nand.ecc.bytes; switch (oinfo->ecc_mode) { diff --git a/drivers/mtd/spi-nor/cadence-quadspi.c b/drivers/mtd/spi-nor/cadence-quadspi.c index 680f30f707..6269668187 100644 --- a/drivers/mtd/spi-nor/cadence-quadspi.c +++ b/drivers/mtd/spi-nor/cadence-quadspi.c @@ -58,7 +58,7 @@ struct cqspi_st { unsigned int irq_mask; int current_cs; unsigned int master_ref_clk_hz; - unsigned int ext_decoder; + unsigned int is_decoded_cs; unsigned int fifo_depth; struct cqspi_flash_pdata f_pdata[CQSPI_MAX_CHIPSELECT]; bool no_reconfig; @@ -903,7 +903,7 @@ static void cqspi_switch_cs(struct cqspi_st *cqspi, unsigned int cs) writel(reg, reg_base + CQSPI_REG_SIZE); /* configure the chip select */ - cqspi_chipselect(cqspi, cs, cqspi->ext_decoder); + cqspi_chipselect(cqspi, cs, cqspi->is_decoded_cs); cqspi_controller_enable(cqspi); } @@ -1020,12 +1020,9 @@ static int cqspi_parse_dt(struct cqspi_st *cqspi) struct device_node *np = cqspi->dev->device_node; struct device_d *dev = cqspi->dev; - if (of_property_read_u32(np, "ext-decoder", &cqspi->ext_decoder)) { - dev_err(dev, "couldn't determine ext-decoder\n"); - return -ENXIO; - } + cqspi->is_decoded_cs = of_property_read_bool(np, "cdns,is-decoded-cs"); - if (of_property_read_u32(np, "fifo-depth", &cqspi->fifo_depth)) { + if (of_property_read_u32(np, "cdns,fifo-depth", &cqspi->fifo_depth)) { dev_err(dev, "couldn't determine fifo-depth\n"); return -ENXIO; } @@ -1123,7 +1120,7 @@ static int cqspi_probe(struct device_d *dev) dev->priv = cqspi; if (pdata) { - cqspi->ext_decoder = pdata->ext_decoder; + cqspi->is_decoded_cs = pdata->is_decoded_cs; cqspi->fifo_depth = pdata->fifo_depth; } else { ret = cqspi_parse_dt(cqspi); @@ -1133,7 +1130,7 @@ static int cqspi_probe(struct device_d *dev) } } - cqspi->qspi_clk = clk_get(dev, "qspi_clk"); + cqspi->qspi_clk = clk_get(dev, NULL); if (IS_ERR(cqspi->qspi_clk)) { dev_err(dev, "cannot get qspi clk\n"); ret = PTR_ERR(cqspi->qspi_clk); diff --git a/drivers/of/partition.c b/drivers/of/partition.c index 25b41cb012..ac20490231 100644 --- a/drivers/of/partition.c +++ b/drivers/of/partition.c @@ -253,9 +253,11 @@ static const char *of_binding_names[] = { static int of_partition_init(void) { - dev_add_param_enum(&global_device, "of_partition_binding", NULL, NULL, - &of_partition_binding, of_binding_names, - ARRAY_SIZE(of_binding_names), NULL); + if (IS_ENABLED(CONFIG_GLOBALVAR)) + dev_add_param_enum(&global_device, "of_partition_binding", + NULL, NULL, + &of_partition_binding, of_binding_names, + ARRAY_SIZE(of_binding_names), NULL); return 0; } diff --git a/dts/Bindings/pci/hisilicon-pcie.txt b/dts/Bindings/pci/hisilicon-pcie.txt index b7fa3b9798..a339dbb154 100644 --- a/dts/Bindings/pci/hisilicon-pcie.txt +++ b/dts/Bindings/pci/hisilicon-pcie.txt @@ -44,13 +44,19 @@ Hip05 Example (note that Hip06 is the same except compatible): }; HiSilicon Hip06/Hip07 PCIe host bridge DT (almost-ECAM) description. + +Some BIOSes place the host controller in a mode where it is ECAM +compliant for all devices other than the root complex. In such cases, +the host controller should be described as below. + The properties and their meanings are identical to those described in host-generic-pci.txt except as listed below. Properties of the host controller node that differ from host-generic-pci.txt: -- compatible : Must be "hisilicon,pcie-almost-ecam" +- compatible : Must be "hisilicon,hip06-pcie-ecam", or + "hisilicon,hip07-pcie-ecam" - reg : Two entries: First the ECAM configuration space for any other bus underneath the root bus. Second, the base @@ -59,7 +65,7 @@ host-generic-pci.txt: Example: pcie0: pcie@a0090000 { - compatible = "hisilicon,pcie-almost-ecam"; + compatible = "hisilicon,hip06-pcie-ecam"; reg = <0 0xb0000000 0 0x2000000>, /* ECAM configuration space */ <0 0xa0090000 0 0x10000>; /* host bridge registers */ bus-range = <0 31>; diff --git a/dts/src/arm/am335x-baltos.dtsi b/dts/src/arm/am335x-baltos.dtsi index efb5eae290..d42b98f15e 100644 --- a/dts/src/arm/am335x-baltos.dtsi +++ b/dts/src/arm/am335x-baltos.dtsi @@ -371,6 +371,8 @@ phy1: ethernet-phy@1 { reg = <7>; + eee-broken-100tx; + eee-broken-1000t; }; }; diff --git a/dts/src/arm/am335x-evmsk.dts b/dts/src/arm/am335x-evmsk.dts index 9e43c44373..9ba4b18c0c 100644 --- a/dts/src/arm/am335x-evmsk.dts +++ b/dts/src/arm/am335x-evmsk.dts @@ -672,6 +672,7 @@ ti,non-removable; bus-width = <4>; cap-power-off-card; + keep-power-in-suspend; pinctrl-names = "default"; pinctrl-0 = <&mmc2_pins>; diff --git a/dts/src/arm/dra7.dtsi b/dts/src/arm/dra7.dtsi index 2c9e56f4aa..bbfb9d5a70 100644 --- a/dts/src/arm/dra7.dtsi +++ b/dts/src/arm/dra7.dtsi @@ -283,6 +283,7 @@ device_type = "pci"; ranges = <0x81000000 0 0 0x03000 0 0x00010000 0x82000000 0 0x20013000 0x13000 0 0xffed000>; + bus-range = <0x00 0xff>; #interrupt-cells = <1>; num-lanes = <1>; linux,pci-domain = <0>; @@ -319,6 +320,7 @@ device_type = "pci"; ranges = <0x81000000 0 0 0x03000 0 0x00010000 0x82000000 0 0x30013000 0x13000 0 0xffed000>; + bus-range = <0x00 0xff>; #interrupt-cells = <1>; num-lanes = <1>; linux,pci-domain = <1>; diff --git a/dts/src/arm/imx6qdl.dtsi b/dts/src/arm/imx6qdl.dtsi index 8e90014705..6d7bf64961 100644 --- a/dts/src/arm/imx6qdl.dtsi +++ b/dts/src/arm/imx6qdl.dtsi @@ -768,12 +768,6 @@ mask = <0x60>; status = "disabled"; }; - - snvs_lpgpr: snvs-lpgpr { - compatible = "fsl,imx6q-snvs-lpgpr"; - regmap = <&snvs>; - offset = <0x68>; - }; }; epit1: epit@020d0000 { /* EPIT1 */ diff --git a/dts/src/arm/imx6sl.dtsi b/dts/src/arm/imx6sl.dtsi index eeafba04cf..cc9572ea28 100644 --- a/dts/src/arm/imx6sl.dtsi +++ b/dts/src/arm/imx6sl.dtsi @@ -655,12 +655,6 @@ mask = <0x60>; status = "disabled"; }; - - snvs_lpgpr: snvs-lpgpr { - compatible = "fsl,imx6sl-snvs-lpgpr"; - regmap = <&snvs>; - offset = <0x68>; - }; }; epit1: epit@020d0000 { diff --git a/dts/src/arm/logicpd-torpedo-som.dtsi b/dts/src/arm/logicpd-torpedo-som.dtsi index 8f9a69ca81..efe53998c9 100644 --- a/dts/src/arm/logicpd-torpedo-som.dtsi +++ b/dts/src/arm/logicpd-torpedo-som.dtsi @@ -121,7 +121,7 @@ &i2c3 { clock-frequency = <400000>; at24@50 { - compatible = "at24,24c02"; + compatible = "atmel,24c64"; readonly; reg = <0x50>; }; diff --git a/dts/src/arm/sun8i-a33.dtsi b/dts/src/arm/sun8i-a33.dtsi index 0467fb365b..306af6cadf 100644 --- a/dts/src/arm/sun8i-a33.dtsi +++ b/dts/src/arm/sun8i-a33.dtsi @@ -66,12 +66,6 @@ opp-microvolt = <1200000>; clock-latency-ns = <244144>; /* 8 32k periods */ }; - - opp@1200000000 { - opp-hz = /bits/ 64 <1200000000>; - opp-microvolt = <1320000>; - clock-latency-ns = <244144>; /* 8 32k periods */ - }; }; cpus { @@ -81,16 +75,22 @@ operating-points-v2 = <&cpu0_opp_table>; }; + cpu@1 { + operating-points-v2 = <&cpu0_opp_table>; + }; + cpu@2 { compatible = "arm,cortex-a7"; device_type = "cpu"; reg = <2>; + operating-points-v2 = <&cpu0_opp_table>; }; cpu@3 { compatible = "arm,cortex-a7"; device_type = "cpu"; reg = <3>; + operating-points-v2 = <&cpu0_opp_table>; }; }; diff --git a/dts/src/arm64/allwinner/sun50i-a64.dtsi b/dts/src/arm64/allwinner/sun50i-a64.dtsi index 1c64ea2d23..0565779e66 100644 --- a/dts/src/arm64/allwinner/sun50i-a64.dtsi +++ b/dts/src/arm64/allwinner/sun50i-a64.dtsi @@ -179,8 +179,10 @@ usbphy: phy@01c19400 { compatible = "allwinner,sun50i-a64-usb-phy"; reg = <0x01c19400 0x14>, + <0x01c1a800 0x4>, <0x01c1b800 0x4>; reg-names = "phy_ctrl", + "pmu0", "pmu1"; clocks = <&ccu CLK_USB_PHY0>, <&ccu CLK_USB_PHY1>; diff --git a/images/Makefile.at91 b/images/Makefile.at91 index 686d5011ef..dc6c1db4b1 100644 --- a/images/Makefile.at91 +++ b/images/Makefile.at91 @@ -2,6 +2,6 @@ # barebox image generation Makefile for AT91 images # -pblx-$(MACH_AT91SAM9X5EK) += start_at91sam9x5ek +pblx-$(CONFIG_MACH_AT91SAM9X5EK) += start_at91sam9x5ek FILE_barebox-at91sam9x5ek.img = start_at91sam9x5ek.pblx -image-$(MACH_AT91SAM9X5EK) += barebox-at91sam9x5ek.img +image-$(CONFIG_MACH_AT91SAM9X5EK) += barebox-at91sam9x5ek.img diff --git a/include/param.h b/include/param.h index f9f3398cae..23abb52406 100644 --- a/include/param.h +++ b/include/param.h @@ -98,7 +98,7 @@ static inline struct param_d *get_param_by_name(struct device_d *dev, return NULL; } -static inline struct param_d *dev_add_param(struct device_d *dev, char *name, +static inline struct param_d *dev_add_param(struct device_d *dev, const char *name, int (*set)(struct device_d *dev, struct param_d *p, const char *val), const char *(*get)(struct device_d *, struct param_d *p), unsigned long flags) diff --git a/include/platform_data/cadence_qspi.h b/include/platform_data/cadence_qspi.h index 4930edce50..ad1a680c9f 100644 --- a/include/platform_data/cadence_qspi.h +++ b/include/platform_data/cadence_qspi.h @@ -2,7 +2,7 @@ #define __INCLUDE_PLATFORM_DATA_CADENCE_QSPI_H struct cadence_qspi_platform_data { - unsigned int ext_decoder; + unsigned int is_decoded_cs; unsigned int fifo_depth; }; diff --git a/net/Kconfig b/net/Kconfig index f6ef0ce89c..12b6bdb56d 100644 --- a/net/Kconfig +++ b/net/Kconfig @@ -20,6 +20,7 @@ config NET_RESOLV config NET_IFUP default y + depends on !SHELL_NONE bool config NET_DHCP |