From 494688df849923c1b0651c7ffc5fc6d6835364f1 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 2 Apr 2018 18:38:27 +0100 Subject: Improvements for the Raspberry Pi 3+, Fixes and minor improvements to Raspberry Pi 2/3 --- bcm2837-enable-pmu.patch | 31 ++ bcm2837-gpio-expander.patch | 707 ++++++++++++++++++++++++++++ bcm2837-lan78xx-fixes.patch | 108 +++++ bcm2837-rpi-initial-support-for-the-3.patch | 200 ++++---- bcm283x-clk-audio-fixes.patch | 98 ++++ bcm283x-gpio-expander.patch | 638 ------------------------- kernel.spec | 24 +- 7 files changed, 1057 insertions(+), 749 deletions(-) create mode 100644 bcm2837-enable-pmu.patch create mode 100644 bcm2837-gpio-expander.patch create mode 100644 bcm2837-lan78xx-fixes.patch create mode 100644 bcm283x-clk-audio-fixes.patch delete mode 100644 bcm283x-gpio-expander.patch diff --git a/bcm2837-enable-pmu.patch b/bcm2837-enable-pmu.patch new file mode 100644 index 000000000..378dd64c1 --- /dev/null +++ b/bcm2837-enable-pmu.patch @@ -0,0 +1,31 @@ +From 69e52712002cb6768b894cde9620fb426fd8728d Mon Sep 17 00:00:00 2001 +From: Stefan Wahren +Date: Fri, 16 Mar 2018 21:49:37 +0100 +Subject: [PATCH] ARM: dts: bcm2837: Enable PMU on Raspberry Pi 3 + +This enables the PMU (performance monitoring unit) on Raspberry Pi 3. +In order to make it work on ARM and ARM64, we need to specify two +compatible strings. + +Signed-off-by: Stefan Wahren +--- + arch/arm/boot/dts/bcm2837.dtsi | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/arch/arm/boot/dts/bcm2837.dtsi b/arch/arm/boot/dts/bcm2837.dtsi +index 7704bb029605..1f5e5c782835 100644 +--- a/arch/arm/boot/dts/bcm2837.dtsi ++++ b/arch/arm/boot/dts/bcm2837.dtsi +@@ -17,6 +17,12 @@ + }; + }; + ++ arm-pmu { ++ compatible = "arm,cortex-a53-pmu", "arm,cortex-a7-pmu"; ++ interrupt-parent = <&local_intc>; ++ interrupts = <9 IRQ_TYPE_LEVEL_HIGH>; ++ }; ++ + timer { + compatible = "arm,armv7-timer"; + interrupt-parent = <&local_intc>; diff --git a/bcm2837-gpio-expander.patch b/bcm2837-gpio-expander.patch new file mode 100644 index 000000000..f5b8370b4 --- /dev/null +++ b/bcm2837-gpio-expander.patch @@ -0,0 +1,707 @@ +From patchwork Tue Feb 20 12:19:31 2018 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [v5,1/5] ARM: bcm2835: sync firmware properties with downstream +From: Baruch Siach +X-Patchwork-Id: 10229963 +Message-Id: +To: Linus Walleij , + Dave Stevenson , + Eric Anholt , Stefan Wahren +Cc: devicetree@vger.kernel.org, Baruch Siach , + linux-gpio@vger.kernel.org, Michael Zoran , + Rob Herring , linux-rpi-kernel@lists.infradead.org, + Frank Rowand , linux-arm-kernel@lists.infradead.org +Date: Tue, 20 Feb 2018 14:19:31 +0200 + +Add latest firmware property tags from the latest Raspberry Pi downstream +kernel. This is needed for the GPIO tags, so we can control the GPIO +multiplexor lines. + +Acked-by: Stefan Wahren +Signed-off-by: Baruch Siach +--- +v4: No change + +v3: Add Stefan's ack + +v2: No change +--- + include/soc/bcm2835/raspberrypi-firmware.h | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm2835/raspberrypi-firmware.h +index cb979ad90401..50df5b28d2c9 100644 +--- a/include/soc/bcm2835/raspberrypi-firmware.h ++++ b/include/soc/bcm2835/raspberrypi-firmware.h +@@ -63,6 +63,7 @@ enum rpi_firmware_property_tag { + RPI_FIRMWARE_GET_MIN_VOLTAGE = 0x00030008, + RPI_FIRMWARE_GET_TURBO = 0x00030009, + RPI_FIRMWARE_GET_MAX_TEMPERATURE = 0x0003000a, ++ RPI_FIRMWARE_GET_STC = 0x0003000b, + RPI_FIRMWARE_ALLOCATE_MEMORY = 0x0003000c, + RPI_FIRMWARE_LOCK_MEMORY = 0x0003000d, + RPI_FIRMWARE_UNLOCK_MEMORY = 0x0003000e, +@@ -72,12 +73,22 @@ enum rpi_firmware_property_tag { + RPI_FIRMWARE_SET_ENABLE_QPU = 0x00030012, + RPI_FIRMWARE_GET_DISPMANX_RESOURCE_MEM_HANDLE = 0x00030014, + RPI_FIRMWARE_GET_EDID_BLOCK = 0x00030020, ++ RPI_FIRMWARE_GET_CUSTOMER_OTP = 0x00030021, + RPI_FIRMWARE_GET_DOMAIN_STATE = 0x00030030, + RPI_FIRMWARE_SET_CLOCK_STATE = 0x00038001, + RPI_FIRMWARE_SET_CLOCK_RATE = 0x00038002, + RPI_FIRMWARE_SET_VOLTAGE = 0x00038003, + RPI_FIRMWARE_SET_TURBO = 0x00038009, ++ RPI_FIRMWARE_SET_CUSTOMER_OTP = 0x00038021, + RPI_FIRMWARE_SET_DOMAIN_STATE = 0x00038030, ++ RPI_FIRMWARE_GET_GPIO_STATE = 0x00030041, ++ RPI_FIRMWARE_SET_GPIO_STATE = 0x00038041, ++ RPI_FIRMWARE_SET_SDHOST_CLOCK = 0x00038042, ++ RPI_FIRMWARE_GET_GPIO_CONFIG = 0x00030043, ++ RPI_FIRMWARE_SET_GPIO_CONFIG = 0x00038043, ++ RPI_FIRMWARE_GET_PERIPH_REG = 0x00030045, ++ RPI_FIRMWARE_SET_PERIPH_REG = 0x00038045, ++ + + /* Dispmanx TAGS */ + RPI_FIRMWARE_FRAMEBUFFER_ALLOCATE = 0x00040001, +@@ -91,6 +102,8 @@ enum rpi_firmware_property_tag { + RPI_FIRMWARE_FRAMEBUFFER_GET_VIRTUAL_OFFSET = 0x00040009, + RPI_FIRMWARE_FRAMEBUFFER_GET_OVERSCAN = 0x0004000a, + RPI_FIRMWARE_FRAMEBUFFER_GET_PALETTE = 0x0004000b, ++ RPI_FIRMWARE_FRAMEBUFFER_GET_TOUCHBUF = 0x0004000f, ++ RPI_FIRMWARE_FRAMEBUFFER_GET_GPIOVIRTBUF = 0x00040010, + RPI_FIRMWARE_FRAMEBUFFER_RELEASE = 0x00048001, + RPI_FIRMWARE_FRAMEBUFFER_TEST_PHYSICAL_WIDTH_HEIGHT = 0x00044003, + RPI_FIRMWARE_FRAMEBUFFER_TEST_VIRTUAL_WIDTH_HEIGHT = 0x00044004, +@@ -100,6 +113,7 @@ enum rpi_firmware_property_tag { + RPI_FIRMWARE_FRAMEBUFFER_TEST_VIRTUAL_OFFSET = 0x00044009, + RPI_FIRMWARE_FRAMEBUFFER_TEST_OVERSCAN = 0x0004400a, + RPI_FIRMWARE_FRAMEBUFFER_TEST_PALETTE = 0x0004400b, ++ RPI_FIRMWARE_FRAMEBUFFER_TEST_VSYNC = 0x0004400e, + RPI_FIRMWARE_FRAMEBUFFER_SET_PHYSICAL_WIDTH_HEIGHT = 0x00048003, + RPI_FIRMWARE_FRAMEBUFFER_SET_VIRTUAL_WIDTH_HEIGHT = 0x00048004, + RPI_FIRMWARE_FRAMEBUFFER_SET_DEPTH = 0x00048005, +@@ -108,6 +122,10 @@ enum rpi_firmware_property_tag { + RPI_FIRMWARE_FRAMEBUFFER_SET_VIRTUAL_OFFSET = 0x00048009, + RPI_FIRMWARE_FRAMEBUFFER_SET_OVERSCAN = 0x0004800a, + RPI_FIRMWARE_FRAMEBUFFER_SET_PALETTE = 0x0004800b, ++ RPI_FIRMWARE_FRAMEBUFFER_SET_TOUCHBUF = 0x0004801f, ++ RPI_FIRMWARE_FRAMEBUFFER_SET_GPIOVIRTBUF = 0x00048020, ++ RPI_FIRMWARE_FRAMEBUFFER_SET_VSYNC = 0x0004800e, ++ RPI_FIRMWARE_FRAMEBUFFER_SET_BACKLIGHT = 0x0004800f, + + RPI_FIRMWARE_VCHIQ_INIT = 0x00048010, + +From patchwork Tue Feb 20 12:19:32 2018 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [v5,2/5] dt-bindings: gpio: add raspberry pi GPIO expander binding +From: Baruch Siach +X-Patchwork-Id: 10229965 +Message-Id: +To: Linus Walleij , + Dave Stevenson , + Eric Anholt , Stefan Wahren +Cc: devicetree@vger.kernel.org, Baruch Siach , + linux-gpio@vger.kernel.org, Michael Zoran , + Rob Herring , linux-rpi-kernel@lists.infradead.org, + Frank Rowand , linux-arm-kernel@lists.infradead.org +Date: Tue, 20 Feb 2018 14:19:32 +0200 + +The Raspberry Pi 3 GPIO expander is controlled by the VC4 firmware over +I2C. The firmware mailbox interface allows the ARM core to control the +GPIO lines. + +Signed-off-by: Baruch Siach +Reviewed-by: Rob Herring +--- +v5: + * Remove the 'firmware' property + * Note that the gpio node is a child of the firmware node + +v4: + * Move the example gpio node under the firmware node + * Rename gpio node name to plain 'gpio' + +v3: + * Rename node name. + +v2: + * Rename compatible string to raspberrypi,firmware-gpio +--- + .../bindings/gpio/raspberrypi,firmware-gpio.txt | 30 ++++++++++++++++++++++ + 1 file changed, 30 insertions(+) + create mode 100644 Documentation/devicetree/bindings/gpio/raspberrypi,firmware-gpio.txt + +diff --git a/Documentation/devicetree/bindings/gpio/raspberrypi,firmware-gpio.txt b/Documentation/devicetree/bindings/gpio/raspberrypi,firmware-gpio.txt +new file mode 100644 +index 000000000000..ce97265e23ba +--- /dev/null ++++ b/Documentation/devicetree/bindings/gpio/raspberrypi,firmware-gpio.txt +@@ -0,0 +1,30 @@ ++Raspberry Pi GPIO expander ++ ++The Raspberry Pi 3 GPIO expander is controlled by the VC4 firmware. The ++firmware exposes a mailbox interface that allows the ARM core to control the ++GPIO lines on the expander. ++ ++The Raspberry Pi GPIO expander node must be a child node of the Raspberry Pi ++firmware node. ++ ++Required properties: ++ ++- compatible : Should be "raspberrypi,firmware-gpio" ++- gpio-controller : Marks the device node as a gpio controller ++- #gpio-cells : Should be two. The first cell is the pin number, and ++ the second cell is used to specify the gpio polarity: ++ 0 = active high ++ 1 = active low ++ ++Example: ++ ++firmware: firmware-rpi { ++ compatible = "raspberrypi,bcm2835-firmware"; ++ mboxes = <&mailbox>; ++ ++ expgpio: gpio { ++ compatible = "raspberrypi,firmware-gpio"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ }; ++}; +From patchwork Tue Feb 20 12:19:33 2018 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [v5, + 3/5] gpio: raspberrypi-exp: Driver for RPi3 GPIO expander via mailbox + service +From: Baruch Siach +X-Patchwork-Id: 10229967 +Message-Id: <8c34f287ee72b340fa9d693aa0e304b25541c74c.1519128054.git.baruch@tkos.co.il> +To: Linus Walleij , + Dave Stevenson , + Eric Anholt , Stefan Wahren +Cc: devicetree@vger.kernel.org, Baruch Siach , + linux-gpio@vger.kernel.org, Michael Zoran , + Rob Herring , linux-rpi-kernel@lists.infradead.org, + Frank Rowand , linux-arm-kernel@lists.infradead.org +Date: Tue, 20 Feb 2018 14:19:33 +0200 + +From: Dave Stevenson + +Pi3 and Compute Module 3 have a GPIO expander that the +VPU communicates with. +There is a mailbox service that now allows control of this +expander, so add a kernel driver that can make use of it. + +Reviewed-by: Stefan Wahren +Signed-off-by: Dave Stevenson +Signed-off-by: Baruch Siach +--- +v5: + * Use the parent node to find the firmware + +v4: + * Don't set the .owner driver field + * Add Stefan's review tag + +v3: + * Tweak Kconfig driver prompt + * Make GPIO_RASPBERRYPI_EXP tristate + * Make COMPILE_TEST independent of RASPBERRYPI_FIRMWARE + * Remove redundant DMA header + * Use less code lines for dev_err() + * Check rpi_exp_gpio_get_polarity() return value + * Remove redundant platform_set_drvdata() call + +v2: + * Rename driver to gpio-raspberrypi-exp + * Populate the gpiochip parent device pointer + * Use macro for the mailbox base GPIO number + * Drop linux/gpio.h and GPIOF_DIR_* + * Check and print firmware error value + * Use devm_gpiochip_add_data(); drop .remove + * A few more minor tweaks +--- + drivers/gpio/Kconfig | 9 ++ + drivers/gpio/Makefile | 1 + + drivers/gpio/gpio-raspberrypi-exp.c | 252 ++++++++++++++++++++++++++++++++++++ + 3 files changed, 262 insertions(+) + create mode 100644 drivers/gpio/gpio-raspberrypi-exp.c + +diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig +index 8dbb2280538d..fd0562a37f68 100644 +--- a/drivers/gpio/Kconfig ++++ b/drivers/gpio/Kconfig +@@ -122,6 +122,15 @@ config GPIO_ATH79 + Select this option to enable GPIO driver for + Atheros AR71XX/AR724X/AR913X SoC devices. + ++config GPIO_RASPBERRYPI_EXP ++ tristate "Raspberry Pi 3 GPIO Expander" ++ default RASPBERRYPI_FIRMWARE ++ depends on OF_GPIO ++ depends on (ARCH_BCM2835 && RASPBERRYPI_FIRMWARE) || COMPILE_TEST ++ help ++ Turn on GPIO support for the expander on Raspberry Pi 3 boards, using ++ the firmware mailbox to communicate with VideoCore on BCM283x chips. ++ + config GPIO_BCM_KONA + bool "Broadcom Kona GPIO" + depends on OF_GPIO && (ARCH_BCM_MOBILE || COMPILE_TEST) +diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile +index cccb0d40846c..76dc0a02bd56 100644 +--- a/drivers/gpio/Makefile ++++ b/drivers/gpio/Makefile +@@ -32,6 +32,7 @@ obj-$(CONFIG_GPIO_AMDPT) += gpio-amdpt.o + obj-$(CONFIG_GPIO_ARIZONA) += gpio-arizona.o + obj-$(CONFIG_GPIO_ATH79) += gpio-ath79.o + obj-$(CONFIG_GPIO_ASPEED) += gpio-aspeed.o ++obj-$(CONFIG_GPIO_RASPBERRYPI_EXP) += gpio-raspberrypi-exp.o + obj-$(CONFIG_GPIO_BCM_KONA) += gpio-bcm-kona.o + obj-$(CONFIG_GPIO_BD9571MWV) += gpio-bd9571mwv.o + obj-$(CONFIG_GPIO_BRCMSTB) += gpio-brcmstb.o +diff --git a/drivers/gpio/gpio-raspberrypi-exp.c b/drivers/gpio/gpio-raspberrypi-exp.c +new file mode 100644 +index 000000000000..d6d36d537e37 +--- /dev/null ++++ b/drivers/gpio/gpio-raspberrypi-exp.c +@@ -0,0 +1,252 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * Raspberry Pi 3 expander GPIO driver ++ * ++ * Uses the firmware mailbox service to communicate with the ++ * GPIO expander on the VPU. ++ * ++ * Copyright (C) 2017 Raspberry Pi Trading Ltd. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#define MODULE_NAME "raspberrypi-exp-gpio" ++#define NUM_GPIO 8 ++ ++#define RPI_EXP_GPIO_BASE 128 ++ ++#define RPI_EXP_GPIO_DIR_IN 0 ++#define RPI_EXP_GPIO_DIR_OUT 1 ++ ++struct rpi_exp_gpio { ++ struct gpio_chip gc; ++ struct rpi_firmware *fw; ++}; ++ ++/* VC4 firmware mailbox interface data structures */ ++ ++struct gpio_set_config { ++ u32 gpio; ++ u32 direction; ++ u32 polarity; ++ u32 term_en; ++ u32 term_pull_up; ++ u32 state; ++}; ++ ++struct gpio_get_config { ++ u32 gpio; ++ u32 direction; ++ u32 polarity; ++ u32 term_en; ++ u32 term_pull_up; ++}; ++ ++struct gpio_get_set_state { ++ u32 gpio; ++ u32 state; ++}; ++ ++static int rpi_exp_gpio_get_polarity(struct gpio_chip *gc, unsigned int off) ++{ ++ struct rpi_exp_gpio *gpio; ++ struct gpio_get_config get; ++ int ret; ++ ++ gpio = gpiochip_get_data(gc); ++ ++ get.gpio = off + RPI_EXP_GPIO_BASE; /* GPIO to update */ ++ ++ ret = rpi_firmware_property(gpio->fw, RPI_FIRMWARE_GET_GPIO_CONFIG, ++ &get, sizeof(get)); ++ if (ret || get.gpio != 0) { ++ dev_err(gc->parent, "Failed to get GPIO %u config (%d %x)\n", ++ off, ret, get.gpio); ++ return ret ? ret : -EIO; ++ } ++ return get.polarity; ++} ++ ++static int rpi_exp_gpio_dir_in(struct gpio_chip *gc, unsigned int off) ++{ ++ struct rpi_exp_gpio *gpio; ++ struct gpio_set_config set_in; ++ int ret; ++ ++ gpio = gpiochip_get_data(gc); ++ ++ set_in.gpio = off + RPI_EXP_GPIO_BASE; /* GPIO to update */ ++ set_in.direction = RPI_EXP_GPIO_DIR_IN; ++ set_in.term_en = 0; /* termination disabled */ ++ set_in.term_pull_up = 0; /* n/a as termination disabled */ ++ set_in.state = 0; /* n/a as configured as an input */ ++ ++ ret = rpi_exp_gpio_get_polarity(gc, off); ++ if (ret < 0) ++ return ret; ++ set_in.polarity = ret; /* Retain existing setting */ ++ ++ ret = rpi_firmware_property(gpio->fw, RPI_FIRMWARE_SET_GPIO_CONFIG, ++ &set_in, sizeof(set_in)); ++ if (ret || set_in.gpio != 0) { ++ dev_err(gc->parent, "Failed to set GPIO %u to input (%d %x)\n", ++ off, ret, set_in.gpio); ++ return ret ? ret : -EIO; ++ } ++ return 0; ++} ++ ++static int rpi_exp_gpio_dir_out(struct gpio_chip *gc, unsigned int off, int val) ++{ ++ struct rpi_exp_gpio *gpio; ++ struct gpio_set_config set_out; ++ int ret; ++ ++ gpio = gpiochip_get_data(gc); ++ ++ set_out.gpio = off + RPI_EXP_GPIO_BASE; /* GPIO to update */ ++ set_out.direction = RPI_EXP_GPIO_DIR_OUT; ++ set_out.term_en = 0; /* n/a as an output */ ++ set_out.term_pull_up = 0; /* n/a as termination disabled */ ++ set_out.state = val; /* Output state */ ++ ++ ret = rpi_exp_gpio_get_polarity(gc, off); ++ if (ret < 0) ++ return ret; ++ set_out.polarity = ret; /* Retain existing setting */ ++ ++ ret = rpi_firmware_property(gpio->fw, RPI_FIRMWARE_SET_GPIO_CONFIG, ++ &set_out, sizeof(set_out)); ++ if (ret || set_out.gpio != 0) { ++ dev_err(gc->parent, "Failed to set GPIO %u to output (%d %x)\n", ++ off, ret, set_out.gpio); ++ return ret ? ret : -EIO; ++ } ++ return 0; ++} ++ ++static int rpi_exp_gpio_get_direction(struct gpio_chip *gc, unsigned int off) ++{ ++ struct rpi_exp_gpio *gpio; ++ struct gpio_get_config get; ++ int ret; ++ ++ gpio = gpiochip_get_data(gc); ++ ++ get.gpio = off + RPI_EXP_GPIO_BASE; /* GPIO to update */ ++ ++ ret = rpi_firmware_property(gpio->fw, RPI_FIRMWARE_GET_GPIO_CONFIG, ++ &get, sizeof(get)); ++ if (ret || get.gpio != 0) { ++ dev_err(gc->parent, ++ "Failed to get GPIO %u config (%d %x)\n", off, ret, ++ get.gpio); ++ return ret ? ret : -EIO; ++ } ++ return !get.direction; ++} ++ ++static int rpi_exp_gpio_get(struct gpio_chip *gc, unsigned int off) ++{ ++ struct rpi_exp_gpio *gpio; ++ struct gpio_get_set_state get; ++ int ret; ++ ++ gpio = gpiochip_get_data(gc); ++ ++ get.gpio = off + RPI_EXP_GPIO_BASE; /* GPIO to update */ ++ get.state = 0; /* storage for returned value */ ++ ++ ret = rpi_firmware_property(gpio->fw, RPI_FIRMWARE_GET_GPIO_STATE, ++ &get, sizeof(get)); ++ if (ret || get.gpio != 0) { ++ dev_err(gc->parent, ++ "Failed to get GPIO %u state (%d %x)\n", off, ret, ++ get.gpio); ++ return ret ? ret : -EIO; ++ } ++ return !!get.state; ++} ++ ++static void rpi_exp_gpio_set(struct gpio_chip *gc, unsigned int off, int val) ++{ ++ struct rpi_exp_gpio *gpio; ++ struct gpio_get_set_state set; ++ int ret; ++ ++ gpio = gpiochip_get_data(gc); ++ ++ set.gpio = off + RPI_EXP_GPIO_BASE; /* GPIO to update */ ++ set.state = val; /* Output state */ ++ ++ ret = rpi_firmware_property(gpio->fw, RPI_FIRMWARE_SET_GPIO_STATE, ++ &set, sizeof(set)); ++ if (ret || set.gpio != 0) ++ dev_err(gc->parent, ++ "Failed to set GPIO %u state (%d %x)\n", off, ret, ++ set.gpio); ++} ++ ++static int rpi_exp_gpio_probe(struct platform_device *pdev) ++{ ++ struct device *dev = &pdev->dev; ++ struct device_node *np = dev->of_node; ++ struct device_node *fw_node; ++ struct rpi_firmware *fw; ++ struct rpi_exp_gpio *rpi_gpio; ++ ++ fw_node = of_get_parent(np); ++ if (!fw_node) { ++ dev_err(dev, "Missing firmware node\n"); ++ return -ENOENT; ++ } ++ ++ fw = rpi_firmware_get(fw_node); ++ if (!fw) ++ return -EPROBE_DEFER; ++ ++ rpi_gpio = devm_kzalloc(dev, sizeof(*rpi_gpio), GFP_KERNEL); ++ if (!rpi_gpio) ++ return -ENOMEM; ++ ++ rpi_gpio->fw = fw; ++ rpi_gpio->gc.parent = dev; ++ rpi_gpio->gc.label = MODULE_NAME; ++ rpi_gpio->gc.owner = THIS_MODULE; ++ rpi_gpio->gc.of_node = np; ++ rpi_gpio->gc.base = -1; ++ rpi_gpio->gc.ngpio = NUM_GPIO; ++ ++ rpi_gpio->gc.direction_input = rpi_exp_gpio_dir_in; ++ rpi_gpio->gc.direction_output = rpi_exp_gpio_dir_out; ++ rpi_gpio->gc.get_direction = rpi_exp_gpio_get_direction; ++ rpi_gpio->gc.get = rpi_exp_gpio_get; ++ rpi_gpio->gc.set = rpi_exp_gpio_set; ++ rpi_gpio->gc.can_sleep = true; ++ ++ return devm_gpiochip_add_data(dev, &rpi_gpio->gc, rpi_gpio); ++} ++ ++static const struct of_device_id rpi_exp_gpio_ids[] = { ++ { .compatible = "raspberrypi,firmware-gpio" }, ++ { } ++}; ++MODULE_DEVICE_TABLE(of, rpi_exp_gpio_ids); ++ ++static struct platform_driver rpi_exp_gpio_driver = { ++ .driver = { ++ .name = MODULE_NAME, ++ .of_match_table = of_match_ptr(rpi_exp_gpio_ids), ++ }, ++ .probe = rpi_exp_gpio_probe, ++}; ++module_platform_driver(rpi_exp_gpio_driver); ++ ++MODULE_LICENSE("GPL"); ++MODULE_AUTHOR("Dave Stevenson "); ++MODULE_DESCRIPTION("Raspberry Pi 3 expander GPIO driver"); ++MODULE_ALIAS("platform:rpi-exp-gpio"); +From patchwork Tue Feb 20 12:19:34 2018 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [v5,4/5] ARM: dts: bcm2835: make the firmware node into a bus +From: Baruch Siach +X-Patchwork-Id: 10229961 +Message-Id: <43f9082a6835df6d7bcd3e16d79db687c52826d2.1519128054.git.baruch@tkos.co.il> +To: Linus Walleij , + Dave Stevenson , + Eric Anholt , Stefan Wahren +Cc: devicetree@vger.kernel.org, Baruch Siach , + linux-gpio@vger.kernel.org, Michael Zoran , + Rob Herring , linux-rpi-kernel@lists.infradead.org, + Frank Rowand , linux-arm-kernel@lists.infradead.org +Date: Tue, 20 Feb 2018 14:19:34 +0200 + +This allows adding devices for which the firmware exposes control interface +via the mailbox. An example of such device is the GPIO expander. + +Signed-off-by: Baruch Siach +Reviewed-by: Linus Walleij +--- +v4: New patch in this series +--- + arch/arm/boot/dts/bcm2835-rpi.dtsi | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi +index e36c392a2b8f..0198bd46ef7c 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi.dtsi ++++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi +@@ -18,7 +18,9 @@ + + soc { + firmware: firmware { +- compatible = "raspberrypi,bcm2835-firmware"; ++ compatible = "raspberrypi,bcm2835-firmware", "simple-bus"; ++ #address-cells = <0>; ++ #size-cells = <0>; + mboxes = <&mailbox>; + }; + +From patchwork Tue Feb 20 12:19:35 2018 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [v5,5/5] ARM: dts: bcm2837-rpi-3-b: add GPIO expander +From: Baruch Siach +X-Patchwork-Id: 10229995 +Message-Id: +To: Linus Walleij , + Dave Stevenson , + Eric Anholt , Stefan Wahren +Cc: devicetree@vger.kernel.org, Baruch Siach , + linux-gpio@vger.kernel.org, Michael Zoran , + Rob Herring , linux-rpi-kernel@lists.infradead.org, + Frank Rowand , linux-arm-kernel@lists.infradead.org +Date: Tue, 20 Feb 2018 14:19:35 +0200 + +Add a description of the RPi3 GPIO expander that the VC4 firmware controls. + +Acked-by: Stefan Wahren +Signed-off-by: Baruch Siach +Reviewed-by: Linus Walleij +--- +v5: + * Drop the 'firmware' property + +v4: + * Move the gpio node under the firmware node + * Rename the gpio node to plain 'gpio' + * Add Stefan's ack + +v3: + * List GPIO names one per line. + +v2: + * Move GPIO expander node out of the soc container + * Rename compatible string + * Add gpio-line-names property +--- + arch/arm/boot/dts/bcm2837-rpi-3-b.dts | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts +index 3e4ed7c5b0b3..0b31d995a066 100644 +--- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts ++++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts +@@ -25,6 +25,23 @@ + }; + }; + ++&firmware { ++ expgpio: gpio { ++ compatible = "raspberrypi,firmware-gpio"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ gpio-line-names = "BT_ON", ++ "WL_ON", ++ "STATUS_LED", ++ "LAN_RUN", ++ "HPD_N", ++ "CAM_GPIO0", ++ "CAM_GPIO1", ++ "PWR_LOW_N"; ++ status = "okay"; ++ }; ++}; ++ + /* uart0 communicates with the BT module */ + &uart0 { + pinctrl-names = "default"; +From 257f497bb3e58f88500971145761ed55428618eb Mon Sep 17 00:00:00 2001 +From: Stefan Wahren +Date: Wed, 7 Mar 2018 15:56:20 +0100 +Subject: [PATCH] ARM: dts: bcm2837: Add missing GPIOs of Expander + +Signed-off-by: Stefan Wahren +--- + arch/arm/boot/dts/bcm2837-rpi-3-b.dts | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts +index 0b31d995a066..3e87ed05918e 100644 +--- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts ++++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts +@@ -20,9 +20,14 @@ + + leds { + act { +- gpios = <&gpio 47 GPIO_ACTIVE_HIGH>; ++ gpios = <&expgpio 2 GPIO_ACTIVE_HIGH>; + }; + }; ++ ++ wifi_pwrseq: wifi-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ reset-gpios = <&expgpio 1 GPIO_ACTIVE_HIGH>; ++ }; + }; + + &firmware { +@@ -42,6 +47,10 @@ + }; + }; + ++&hdmi { ++ hpd-gpios = <&expgpio 4 GPIO_ACTIVE_LOW>; ++}; ++ + /* uart0 communicates with the BT module */ + &uart0 { + pinctrl-names = "default"; +@@ -51,6 +60,7 @@ + bluetooth { + compatible = "brcm,bcm43438-bt"; + max-speed = <2000000>; ++ shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>; + }; + }; + +@@ -63,11 +73,19 @@ + + /* SDHCI is used to control the SDIO for wireless */ + &sdhci { ++ #address-cells = <1>; ++ #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&emmc_gpio34>; + status = "okay"; + bus-width = <4>; + non-removable; ++ mmc-pwrseq = <&wifi_pwrseq>; ++ ++ brcmf: wifi@1 { ++ reg = <1>; ++ compatible = "brcm,bcm4329-fmac"; ++ }; + }; + + /* SDHOST is used to drive the SD card */ diff --git a/bcm2837-lan78xx-fixes.patch b/bcm2837-lan78xx-fixes.patch new file mode 100644 index 000000000..f877ac15b --- /dev/null +++ b/bcm2837-lan78xx-fixes.patch @@ -0,0 +1,108 @@ +From 6ed88d188a8240ba44da6578eab7d17e036d0e61 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 17 Oct 2017 15:04:29 +0100 +Subject: [PATCH] lan78xx: Enable LEDs if no valid EEPROM or OTP + +For applications of the LAN78xx that don't have valid programmed +EEPROMs or OTPs, enabling both LEDs by default seems reasonable. + +Signed-off-by: Phil Elwell +--- + drivers/net/usb/lan78xx.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c +index a21039852f8d..cd20ce4ed87d 100644 +--- a/drivers/net/usb/lan78xx.c ++++ b/drivers/net/usb/lan78xx.c +@@ -2414,6 +2414,12 @@ static int lan78xx_reset(struct lan78xx_net *dev) + + ret = lan78xx_read_reg(dev, HW_CFG, &buf); + buf |= HW_CFG_MEF_; ++ ++ /* If no valid EEPROM and no valid OTP, enable the LEDs by default */ ++ if (lan78xx_read_eeprom(dev, 0, 0, NULL) && ++ lan78xx_read_otp(dev, 0, 0, NULL)) ++ buf |= HW_CFG_LED0_EN_ | HW_CFG_LED1_EN_; ++ + ret = lan78xx_write_reg(dev, HW_CFG, buf); + + ret = lan78xx_read_reg(dev, USB_CFG0, &buf); +From f8a798bb45ae15cbec980c8e921eb377fd1a3df6 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 28 Nov 2017 12:02:37 +0000 +Subject: [PATCH] lan78xx: Correctly indicate invalid OTP + +lan78xx_read_otp tries to return -EINVAL in the event of invalid OTP +content, but the value gets overwritten before it is returned and the +read goes ahead anyway. Make the read conditional as it should be +and preserve the error code. + +Signed-off-by: Phil Elwell +--- + drivers/net/usb/lan78xx.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c +index cd20ce4ed87d..b270935f3f8d 100644 +--- a/drivers/net/usb/lan78xx.c ++++ b/drivers/net/usb/lan78xx.c +@@ -929,7 +929,8 @@ static int lan78xx_read_otp(struct lan78xx_net *dev, u32 offset, + offset += 0x100; + else + ret = -EINVAL; +- ret = lan78xx_read_raw_otp(dev, offset, length, data); ++ if (!ret) ++ ret = lan78xx_read_raw_otp(dev, offset, length, data); + } + + return ret; +From 4a4710f3847cd087e150f83382dffd92e09d9914 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Sat, 17 Mar 2018 00:10:02 +0100 +Subject: [PATCH] lan78xx: Read MAC address from DT if present + +There is a standard mechanism for locating and using a MAC address from +the Device Tree. Use this facility in the lan78xx driver to support +applications without programmed EEPROM or OTP. + +Signed-off-by: Phil Elwell +--- + drivers/net/usb/lan78xx.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c +index 60a604cc7647..a21039852f8d 100644 +--- a/drivers/net/usb/lan78xx.c ++++ b/drivers/net/usb/lan78xx.c +@@ -36,6 +36,7 @@ + #include + #include + #include ++#include + #include + #include "lan78xx.h" + +@@ -1639,6 +1640,14 @@ static void lan78xx_init_mac_address(struct lan78xx_net *dev) + u32 addr_lo, addr_hi; + int ret; + u8 addr[6]; ++ const u8 *mac_addr; ++ ++ /* maybe the boot loader passed the MAC address in devicetree */ ++ mac_addr = of_get_mac_address(dev->udev->dev.of_node); ++ if (mac_addr) { ++ ether_addr_copy(addr, mac_addr); ++ goto set_mac_addr; ++ } + + ret = lan78xx_read_reg(dev, RX_ADDRL, &addr_lo); + ret = lan78xx_read_reg(dev, RX_ADDRH, &addr_hi); +@@ -1667,6 +1676,7 @@ static void lan78xx_init_mac_address(struct lan78xx_net *dev) + "MAC address set to random addr"); + } + ++set_mac_addr: + addr_lo = addr[0] | (addr[1] << 8) | + (addr[2] << 16) | (addr[3] << 24); + addr_hi = addr[4] | (addr[5] << 8); diff --git a/bcm2837-rpi-initial-support-for-the-3.patch b/bcm2837-rpi-initial-support-for-the-3.patch index 90ba8b645..c9bedfebc 100644 --- a/bcm2837-rpi-initial-support-for-the-3.patch +++ b/bcm2837-rpi-initial-support-for-the-3.patch @@ -1,22 +1,60 @@ -From 383c32f69af61774ff3414f98c9bc29f28dca8fa Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Mon, 19 Mar 2018 09:26:57 +0000 -Subject: [PATCH] rpi: initial support for the 3+ +From defa4876ece55751c691d17ffc928d9bfe049585 Mon Sep 17 00:00:00 2001 +From: Stefan Wahren +Date: Fri, 16 Mar 2018 22:56:59 +0100 +Subject: [PATCH] arm64: dts: broadcom: Add reference to Raspberry Pi 3 B+ -Signed-off-by: Peter Robinson +This adds a reference to the dts file of the Raspberry Pi 3 B+ + +Signed-off-by: Stefan Wahren +--- + arch/arm64/boot/dts/broadcom/Makefile | 3 ++- + arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts | 2 ++ + 2 files changed, 4 insertions(+), 1 deletion(-) + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts + +diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile +index 2a2591ef1fee..1193a9e34bbb 100644 +--- a/arch/arm64/boot/dts/broadcom/Makefile ++++ b/arch/arm64/boot/dts/broadcom/Makefile +@@ -1,5 +1,6 @@ + # SPDX-License-Identifier: GPL-2.0 +-dtb-$(CONFIG_ARCH_BCM2835) += bcm2837-rpi-3-b.dtb ++dtb-$(CONFIG_ARCH_BCM2835) += bcm2837-rpi-3-b.dtb \ ++ bcm2837-rpi-3-b-plus.dtb + + subdir-y += northstar2 + subdir-y += stingray +diff --git a/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts +new file mode 100644 +index 000000000000..46ad2023cccf +--- /dev/null ++++ b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts +@@ -0,0 +1,2 @@ ++// SPDX-License-Identifier: GPL-2.0 ++#include "arm/bcm2837-rpi-3-b-plus.dts" + +From c7c06c54087dfadd065abcba0b7f614f7a88d549 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Fri, 16 Mar 2018 22:42:28 +0100 +Subject: [PATCH] ARM: dts: bcm2837: Add Raspberry Pi 3 B+ + +The Raspberry Pi 3 B+ has the following major differences compared +to the model 3 B: +* Microchip LAN7515 (Gigabit Ethernet) +* Cypress CYW43455 (802.11ac and BT 4.2) + +Signed-off-by: Phil Elwell +Signed-off-by: Stefan Wahren --- - arch/arm/boot/dts/Makefile | 1 + - arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts | 62 ++++++++++++++++++++++ - arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi | 36 +++++++++++++ - arch/arm64/boot/dts/broadcom/Makefile | 4 +- - .../boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts | 2 + - 5 files changed, 104 insertions(+), 1 deletion(-) + arch/arm/boot/dts/Makefile | 1 + + arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts | 102 +++++++++++++++++++++++++++++ + arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi | 27 ++++++++ + 3 files changed, 130 insertions(+) create mode 100644 arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts create mode 100644 arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi - create mode 100644 arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index ade7a38543dc..05b49935d84b 100644 +index 3b471e6787ff..dee85f848de9 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -75,6 +75,7 @@ dtb-$(CONFIG_ARCH_BCM2835) += \ @@ -29,10 +67,10 @@ index ade7a38543dc..05b49935d84b 100644 dtb-$(CONFIG_ARCH_BCM_5301X) += \ diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts new file mode 100644 -index 000000000000..63ff6bc56e36 +index 000000000000..fb9f6f7e965c --- /dev/null +++ b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts -@@ -0,0 +1,62 @@ +@@ -0,0 +1,102 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; +#include "bcm2837.dtsi" @@ -55,9 +93,40 @@ index 000000000000..63ff6bc56e36 + + leds { + act { -+ gpios = <&gpio 47 GPIO_ACTIVE_HIGH>; ++ gpios = <&gpio 29 0>; ++ }; ++ ++ pwr { ++ label = "PWR"; ++ gpios = <&expgpio 2 GPIO_ACTIVE_LOW>; + }; + }; ++ ++ wifi_pwrseq: wifi-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ reset-gpios = <&expgpio 1 GPIO_ACTIVE_HIGH>; ++ }; ++}; ++ ++&firmware { ++ expgpio: gpio { ++ compatible = "raspberrypi,firmware-gpio"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ gpio-line-names = "BT_ON", ++ "WL_ON", ++ "STATUS_LED", ++ "LAN_RUN", ++ "", ++ "CAM_GPIO0", ++ "CAM_GPIO1", ++ ""; ++ status = "okay"; ++ }; ++}; ++ ++&hdmi { ++ hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>; +}; + +/* uart0 communicates with the BT module */ @@ -69,6 +138,7 @@ index 000000000000..63ff6bc56e36 + bluetooth { + compatible = "brcm,bcm43438-bt"; + max-speed = <2000000>; ++ shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>; + }; +}; + @@ -81,11 +151,19 @@ index 000000000000..63ff6bc56e36 + +/* SDHCI is used to control the SDIO for wireless */ +&sdhci { ++ #address-cells = <1>; ++ #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&emmc_gpio34>; + status = "okay"; + bus-width = <4>; + non-removable; ++ mmc-pwrseq = <&wifi_pwrseq>; ++ ++ brcmf: wifi@1 { ++ reg = <1>; ++ compatible = "brcm,bcm4329-fmac"; ++ }; +}; + +/* SDHOST is used to drive the SD card */ @@ -97,10 +175,11 @@ index 000000000000..63ff6bc56e36 +}; diff --git a/arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi b/arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi new file mode 100644 -index 000000000000..1b1075d4aa5c +index 000000000000..169203c5ce8b --- /dev/null +++ b/arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi -@@ -0,0 +1,36 @@ +@@ -0,0 +1,27 @@ ++// SPDX-License-Identifier: GPL-2.0 +/ { + aliases { + ethernet0 = ðernet; @@ -123,93 +202,8 @@ index 000000000000..1b1075d4aa5c + ethernet: usbether@1 { + compatible = "usb424,7800"; + reg = <1>; -+ microchip,eee-enabled; -+ microchip,tx-lpi-timer = <600>; /* non-aggressive*/ + }; + }; + }; +}; -+ -+ -+/ { -+ __overrides__ { -+ eee = <ðernet>,"microchip,eee-enabled?"; -+ tx_lpi_timer = <ðernet>,"microchip,tx-lpi-timer:0"; -+ }; -+}; -diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile -index 2a2591ef1fee..6b5b70542dad 100644 ---- a/arch/arm64/boot/dts/broadcom/Makefile -+++ b/arch/arm64/boot/dts/broadcom/Makefile -@@ -1,5 +1,7 @@ - # SPDX-License-Identifier: GPL-2.0 --dtb-$(CONFIG_ARCH_BCM2835) += bcm2837-rpi-3-b.dtb -+dtb-$(CONFIG_ARCH_BCM2835) += \ -+ bcm2837-rpi-3-b.dtb \ -+ bcm2837-rpi-3-b-plus.dtb - - subdir-y += northstar2 - subdir-y += stingray -diff --git a/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts -new file mode 100644 -index 000000000000..46ad2023cccf ---- /dev/null -+++ b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b-plus.dts -@@ -0,0 +1,2 @@ -+// SPDX-License-Identifier: GPL-2.0 -+#include "arm/bcm2837-rpi-3-b-plus.dts" --- -2.16.2 -From patchwork Tue Feb 20 12:19:35 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [v5,5/5] ARM: dts: bcm2837-rpi-3-b: add GPIO expander -From: Baruch Siach -X-Patchwork-Id: 10229995 -Message-Id: -To: Linus Walleij , - Dave Stevenson , - Eric Anholt , Stefan Wahren -Cc: devicetree@vger.kernel.org, Baruch Siach , - linux-gpio@vger.kernel.org, Michael Zoran , - Rob Herring , linux-rpi-kernel@lists.infradead.org, - Frank Rowand , linux-arm-kernel@lists.infradead.org -Date: Tue, 20 Feb 2018 14:19:35 +0200 - -Add a description of the RPi3 GPIO expander that the VC4 firmware controls. - -Signed-off-by: Peter Robinson ---- - arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) - -diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts -index 3e4ed7c5b0b3..0b31d995a066 100644 ---- a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts -+++ b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts -@@ -25,6 +25,23 @@ - }; - }; - -+&firmware { -+ expgpio: gpio { -+ compatible = "raspberrypi,firmware-gpio"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ gpio-line-names = "BT_ON", -+ "WL_ON", -+ "STATUS_LED", -+ "LAN_RUN", -+ "HPD_N", -+ "CAM_GPIO0", -+ "CAM_GPIO1", -+ "PWR_LOW_N"; -+ status = "okay"; -+ }; -+}; -+ - /* uart0 communicates with the BT module */ - &uart0 { - pinctrl-names = "default"; diff --git a/bcm283x-clk-audio-fixes.patch b/bcm283x-clk-audio-fixes.patch new file mode 100644 index 000000000..51c9fa791 --- /dev/null +++ b/bcm283x-clk-audio-fixes.patch @@ -0,0 +1,98 @@ +From aa964d59aab2cb04bc011ffd370822ac79f82a0b Mon Sep 17 00:00:00 2001 +From: Boris Brezillon +Date: Wed, 7 Mar 2018 15:39:17 +0100 +Subject: [PATCH] clk: bcm2835: De-assert/assert PLL reset signal when + appropriate + +In order to enable a PLL, not only the PLL has to be powered up and +locked, but you also have to de-assert the reset signal. The last part +was missing. Add it so PLLs that were not enabled by the FW/bootloader +can be enabled from Linux. + +Fixes: 41691b8862e2 ("clk: bcm2835: Add support for programming the audio domain clocks") +Cc: +Signed-off-by: Boris Brezillon +--- + drivers/clk/bcm/clk-bcm2835.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c +index a07f6451694a..6c5d4a8e426c 100644 +--- a/drivers/clk/bcm/clk-bcm2835.c ++++ b/drivers/clk/bcm/clk-bcm2835.c +@@ -602,6 +602,9 @@ static void bcm2835_pll_off(struct clk_hw *hw) + const struct bcm2835_pll_data *data = pll->data; + + spin_lock(&cprman->regs_lock); ++ cprman_write(cprman, data->a2w_ctrl_reg, ++ cprman_read(cprman, data->a2w_ctrl_reg) & ++ ~A2W_PLL_CTRL_PRST_DISABLE); + cprman_write(cprman, data->cm_ctrl_reg, + cprman_read(cprman, data->cm_ctrl_reg) | + CM_PLL_ANARST); +@@ -640,6 +643,10 @@ static int bcm2835_pll_on(struct clk_hw *hw) + cpu_relax(); + } + ++ cprman_write(cprman, data->a2w_ctrl_reg, ++ cprman_read(cprman, data->a2w_ctrl_reg) | ++ A2W_PLL_CTRL_PRST_DISABLE); ++ + return 0; + } + +From 1b6867ee05d84cc6ec23b5ec0b78684187d3190a Mon Sep 17 00:00:00 2001 +From: Boris Brezillon +Date: Wed, 7 Mar 2018 15:41:14 +0100 +Subject: [PATCH] clk: bcm2835: Make sure the PLL is gated before changing its + rate + +All bcm2835 PLLs should be gated before their rate can be changed. +Setting CLK_SET_RATE_GATE will let the core enforce that, but this is +not enough to make the code work in all situations. Indeed, the +CLK_SET_RATE_GATE flag prevents a user from changing the rate while +the clock is enabled, but this check only guarantees there's no Linux +users. In our case, the clock might have been enabled by the +bootloader/FW, and, because we have CLK_IGNORE_UNUSED set, Linux never +disables the PLL. So we have to make sure the PLL is actually disabled +before changing the rate. + +Fixes: 41691b8862e2 ("clk: bcm2835: Add support for programming the audio domain clocks") +Cc: +Signed-off-by: Boris Brezillon +--- + drivers/clk/bcm/clk-bcm2835.c | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c +index 6c5d4a8e426c..051ce769c109 100644 +--- a/drivers/clk/bcm/clk-bcm2835.c ++++ b/drivers/clk/bcm/clk-bcm2835.c +@@ -678,6 +678,18 @@ static int bcm2835_pll_set_rate(struct clk_hw *hw, + u32 ana[4]; + int i; + ++ /* ++ * Normally, the CLK_SET_RATE_GATE flag prevents a user from changing ++ * the rate while the clock is enabled, but this check only makes sure ++ * there's no Linux users. ++ * In our case, the clock might have been enabled by the bootloader/FW, ++ * and, since CLK_IGNORE_UNUSED flag is set, Linux never disables it. ++ * So we have to make sure the clk is actually disabled before changing ++ * the rate. ++ */ ++ if (bcm2835_pll_is_on(hw)) ++ bcm2835_pll_off(hw); ++ + if (rate > data->max_fb_rate) { + use_fb_prediv = true; + rate /= 2; +@@ -1318,7 +1330,7 @@ static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman, + init.num_parents = 1; + init.name = data->name; + init.ops = &bcm2835_pll_clk_ops; +- init.flags = CLK_IGNORE_UNUSED; ++ init.flags = CLK_IGNORE_UNUSED | CLK_SET_RATE_GATE; + + pll = kzalloc(sizeof(*pll), GFP_KERNEL); + if (!pll) diff --git a/bcm283x-gpio-expander.patch b/bcm283x-gpio-expander.patch deleted file mode 100644 index 55b7ec4d7..000000000 --- a/bcm283x-gpio-expander.patch +++ /dev/null @@ -1,638 +0,0 @@ -From patchwork Tue Feb 20 12:19:31 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [v5,1/5] ARM: bcm2835: sync firmware properties with downstream -From: Baruch Siach -X-Patchwork-Id: 10229963 -Message-Id: -To: Linus Walleij , - Dave Stevenson , - Eric Anholt , Stefan Wahren -Cc: devicetree@vger.kernel.org, Baruch Siach , - linux-gpio@vger.kernel.org, Michael Zoran , - Rob Herring , linux-rpi-kernel@lists.infradead.org, - Frank Rowand , linux-arm-kernel@lists.infradead.org -Date: Tue, 20 Feb 2018 14:19:31 +0200 - -Add latest firmware property tags from the latest Raspberry Pi downstream -kernel. This is needed for the GPIO tags, so we can control the GPIO -multiplexor lines. - -Acked-by: Stefan Wahren -Signed-off-by: Baruch Siach ---- -v4: No change - -v3: Add Stefan's ack - -v2: No change ---- - include/soc/bcm2835/raspberrypi-firmware.h | 18 ++++++++++++++++++ - 1 file changed, 18 insertions(+) - -diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm2835/raspberrypi-firmware.h -index cb979ad90401..50df5b28d2c9 100644 ---- a/include/soc/bcm2835/raspberrypi-firmware.h -+++ b/include/soc/bcm2835/raspberrypi-firmware.h -@@ -63,6 +63,7 @@ enum rpi_firmware_property_tag { - RPI_FIRMWARE_GET_MIN_VOLTAGE = 0x00030008, - RPI_FIRMWARE_GET_TURBO = 0x00030009, - RPI_FIRMWARE_GET_MAX_TEMPERATURE = 0x0003000a, -+ RPI_FIRMWARE_GET_STC = 0x0003000b, - RPI_FIRMWARE_ALLOCATE_MEMORY = 0x0003000c, - RPI_FIRMWARE_LOCK_MEMORY = 0x0003000d, - RPI_FIRMWARE_UNLOCK_MEMORY = 0x0003000e, -@@ -72,12 +73,22 @@ enum rpi_firmware_property_tag { - RPI_FIRMWARE_SET_ENABLE_QPU = 0x00030012, - RPI_FIRMWARE_GET_DISPMANX_RESOURCE_MEM_HANDLE = 0x00030014, - RPI_FIRMWARE_GET_EDID_BLOCK = 0x00030020, -+ RPI_FIRMWARE_GET_CUSTOMER_OTP = 0x00030021, - RPI_FIRMWARE_GET_DOMAIN_STATE = 0x00030030, - RPI_FIRMWARE_SET_CLOCK_STATE = 0x00038001, - RPI_FIRMWARE_SET_CLOCK_RATE = 0x00038002, - RPI_FIRMWARE_SET_VOLTAGE = 0x00038003, - RPI_FIRMWARE_SET_TURBO = 0x00038009, -+ RPI_FIRMWARE_SET_CUSTOMER_OTP = 0x00038021, - RPI_FIRMWARE_SET_DOMAIN_STATE = 0x00038030, -+ RPI_FIRMWARE_GET_GPIO_STATE = 0x00030041, -+ RPI_FIRMWARE_SET_GPIO_STATE = 0x00038041, -+ RPI_FIRMWARE_SET_SDHOST_CLOCK = 0x00038042, -+ RPI_FIRMWARE_GET_GPIO_CONFIG = 0x00030043, -+ RPI_FIRMWARE_SET_GPIO_CONFIG = 0x00038043, -+ RPI_FIRMWARE_GET_PERIPH_REG = 0x00030045, -+ RPI_FIRMWARE_SET_PERIPH_REG = 0x00038045, -+ - - /* Dispmanx TAGS */ - RPI_FIRMWARE_FRAMEBUFFER_ALLOCATE = 0x00040001, -@@ -91,6 +102,8 @@ enum rpi_firmware_property_tag { - RPI_FIRMWARE_FRAMEBUFFER_GET_VIRTUAL_OFFSET = 0x00040009, - RPI_FIRMWARE_FRAMEBUFFER_GET_OVERSCAN = 0x0004000a, - RPI_FIRMWARE_FRAMEBUFFER_GET_PALETTE = 0x0004000b, -+ RPI_FIRMWARE_FRAMEBUFFER_GET_TOUCHBUF = 0x0004000f, -+ RPI_FIRMWARE_FRAMEBUFFER_GET_GPIOVIRTBUF = 0x00040010, - RPI_FIRMWARE_FRAMEBUFFER_RELEASE = 0x00048001, - RPI_FIRMWARE_FRAMEBUFFER_TEST_PHYSICAL_WIDTH_HEIGHT = 0x00044003, - RPI_FIRMWARE_FRAMEBUFFER_TEST_VIRTUAL_WIDTH_HEIGHT = 0x00044004, -@@ -100,6 +113,7 @@ enum rpi_firmware_property_tag { - RPI_FIRMWARE_FRAMEBUFFER_TEST_VIRTUAL_OFFSET = 0x00044009, - RPI_FIRMWARE_FRAMEBUFFER_TEST_OVERSCAN = 0x0004400a, - RPI_FIRMWARE_FRAMEBUFFER_TEST_PALETTE = 0x0004400b, -+ RPI_FIRMWARE_FRAMEBUFFER_TEST_VSYNC = 0x0004400e, - RPI_FIRMWARE_FRAMEBUFFER_SET_PHYSICAL_WIDTH_HEIGHT = 0x00048003, - RPI_FIRMWARE_FRAMEBUFFER_SET_VIRTUAL_WIDTH_HEIGHT = 0x00048004, - RPI_FIRMWARE_FRAMEBUFFER_SET_DEPTH = 0x00048005, -@@ -108,6 +122,10 @@ enum rpi_firmware_property_tag { - RPI_FIRMWARE_FRAMEBUFFER_SET_VIRTUAL_OFFSET = 0x00048009, - RPI_FIRMWARE_FRAMEBUFFER_SET_OVERSCAN = 0x0004800a, - RPI_FIRMWARE_FRAMEBUFFER_SET_PALETTE = 0x0004800b, -+ RPI_FIRMWARE_FRAMEBUFFER_SET_TOUCHBUF = 0x0004801f, -+ RPI_FIRMWARE_FRAMEBUFFER_SET_GPIOVIRTBUF = 0x00048020, -+ RPI_FIRMWARE_FRAMEBUFFER_SET_VSYNC = 0x0004800e, -+ RPI_FIRMWARE_FRAMEBUFFER_SET_BACKLIGHT = 0x0004800f, - - RPI_FIRMWARE_VCHIQ_INIT = 0x00048010, - -From patchwork Tue Feb 20 12:19:32 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [v5,2/5] dt-bindings: gpio: add raspberry pi GPIO expander binding -From: Baruch Siach -X-Patchwork-Id: 10229965 -Message-Id: -To: Linus Walleij , - Dave Stevenson , - Eric Anholt , Stefan Wahren -Cc: devicetree@vger.kernel.org, Baruch Siach , - linux-gpio@vger.kernel.org, Michael Zoran , - Rob Herring , linux-rpi-kernel@lists.infradead.org, - Frank Rowand , linux-arm-kernel@lists.infradead.org -Date: Tue, 20 Feb 2018 14:19:32 +0200 - -The Raspberry Pi 3 GPIO expander is controlled by the VC4 firmware over -I2C. The firmware mailbox interface allows the ARM core to control the -GPIO lines. - -Signed-off-by: Baruch Siach -Reviewed-by: Rob Herring ---- -v5: - * Remove the 'firmware' property - * Note that the gpio node is a child of the firmware node - -v4: - * Move the example gpio node under the firmware node - * Rename gpio node name to plain 'gpio' - -v3: - * Rename node name. - -v2: - * Rename compatible string to raspberrypi,firmware-gpio ---- - .../bindings/gpio/raspberrypi,firmware-gpio.txt | 30 ++++++++++++++++++++++ - 1 file changed, 30 insertions(+) - create mode 100644 Documentation/devicetree/bindings/gpio/raspberrypi,firmware-gpio.txt - -diff --git a/Documentation/devicetree/bindings/gpio/raspberrypi,firmware-gpio.txt b/Documentation/devicetree/bindings/gpio/raspberrypi,firmware-gpio.txt -new file mode 100644 -index 000000000000..ce97265e23ba ---- /dev/null -+++ b/Documentation/devicetree/bindings/gpio/raspberrypi,firmware-gpio.txt -@@ -0,0 +1,30 @@ -+Raspberry Pi GPIO expander -+ -+The Raspberry Pi 3 GPIO expander is controlled by the VC4 firmware. The -+firmware exposes a mailbox interface that allows the ARM core to control the -+GPIO lines on the expander. -+ -+The Raspberry Pi GPIO expander node must be a child node of the Raspberry Pi -+firmware node. -+ -+Required properties: -+ -+- compatible : Should be "raspberrypi,firmware-gpio" -+- gpio-controller : Marks the device node as a gpio controller -+- #gpio-cells : Should be two. The first cell is the pin number, and -+ the second cell is used to specify the gpio polarity: -+ 0 = active high -+ 1 = active low -+ -+Example: -+ -+firmware: firmware-rpi { -+ compatible = "raspberrypi,bcm2835-firmware"; -+ mboxes = <&mailbox>; -+ -+ expgpio: gpio { -+ compatible = "raspberrypi,firmware-gpio"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ }; -+}; -From patchwork Tue Feb 20 12:19:33 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [v5, - 3/5] gpio: raspberrypi-exp: Driver for RPi3 GPIO expander via mailbox - service -From: Baruch Siach -X-Patchwork-Id: 10229967 -Message-Id: <8c34f287ee72b340fa9d693aa0e304b25541c74c.1519128054.git.baruch@tkos.co.il> -To: Linus Walleij , - Dave Stevenson , - Eric Anholt , Stefan Wahren -Cc: devicetree@vger.kernel.org, Baruch Siach , - linux-gpio@vger.kernel.org, Michael Zoran , - Rob Herring , linux-rpi-kernel@lists.infradead.org, - Frank Rowand , linux-arm-kernel@lists.infradead.org -Date: Tue, 20 Feb 2018 14:19:33 +0200 - -From: Dave Stevenson - -Pi3 and Compute Module 3 have a GPIO expander that the -VPU communicates with. -There is a mailbox service that now allows control of this -expander, so add a kernel driver that can make use of it. - -Reviewed-by: Stefan Wahren -Signed-off-by: Dave Stevenson -Signed-off-by: Baruch Siach ---- -v5: - * Use the parent node to find the firmware - -v4: - * Don't set the .owner driver field - * Add Stefan's review tag - -v3: - * Tweak Kconfig driver prompt - * Make GPIO_RASPBERRYPI_EXP tristate - * Make COMPILE_TEST independent of RASPBERRYPI_FIRMWARE - * Remove redundant DMA header - * Use less code lines for dev_err() - * Check rpi_exp_gpio_get_polarity() return value - * Remove redundant platform_set_drvdata() call - -v2: - * Rename driver to gpio-raspberrypi-exp - * Populate the gpiochip parent device pointer - * Use macro for the mailbox base GPIO number - * Drop linux/gpio.h and GPIOF_DIR_* - * Check and print firmware error value - * Use devm_gpiochip_add_data(); drop .remove - * A few more minor tweaks ---- - drivers/gpio/Kconfig | 9 ++ - drivers/gpio/Makefile | 1 + - drivers/gpio/gpio-raspberrypi-exp.c | 252 ++++++++++++++++++++++++++++++++++++ - 3 files changed, 262 insertions(+) - create mode 100644 drivers/gpio/gpio-raspberrypi-exp.c - -diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig -index 8dbb2280538d..fd0562a37f68 100644 ---- a/drivers/gpio/Kconfig -+++ b/drivers/gpio/Kconfig -@@ -122,6 +122,15 @@ config GPIO_ATH79 - Select this option to enable GPIO driver for - Atheros AR71XX/AR724X/AR913X SoC devices. - -+config GPIO_RASPBERRYPI_EXP -+ tristate "Raspberry Pi 3 GPIO Expander" -+ default RASPBERRYPI_FIRMWARE -+ depends on OF_GPIO -+ depends on (ARCH_BCM2835 && RASPBERRYPI_FIRMWARE) || COMPILE_TEST -+ help -+ Turn on GPIO support for the expander on Raspberry Pi 3 boards, using -+ the firmware mailbox to communicate with VideoCore on BCM283x chips. -+ - config GPIO_BCM_KONA - bool "Broadcom Kona GPIO" - depends on OF_GPIO && (ARCH_BCM_MOBILE || COMPILE_TEST) -diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile -index cccb0d40846c..76dc0a02bd56 100644 ---- a/drivers/gpio/Makefile -+++ b/drivers/gpio/Makefile -@@ -32,6 +32,7 @@ obj-$(CONFIG_GPIO_AMDPT) += gpio-amdpt.o - obj-$(CONFIG_GPIO_ARIZONA) += gpio-arizona.o - obj-$(CONFIG_GPIO_ATH79) += gpio-ath79.o - obj-$(CONFIG_GPIO_ASPEED) += gpio-aspeed.o -+obj-$(CONFIG_GPIO_RASPBERRYPI_EXP) += gpio-raspberrypi-exp.o - obj-$(CONFIG_GPIO_BCM_KONA) += gpio-bcm-kona.o - obj-$(CONFIG_GPIO_BD9571MWV) += gpio-bd9571mwv.o - obj-$(CONFIG_GPIO_BRCMSTB) += gpio-brcmstb.o -diff --git a/drivers/gpio/gpio-raspberrypi-exp.c b/drivers/gpio/gpio-raspberrypi-exp.c -new file mode 100644 -index 000000000000..d6d36d537e37 ---- /dev/null -+++ b/drivers/gpio/gpio-raspberrypi-exp.c -@@ -0,0 +1,252 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * Raspberry Pi 3 expander GPIO driver -+ * -+ * Uses the firmware mailbox service to communicate with the -+ * GPIO expander on the VPU. -+ * -+ * Copyright (C) 2017 Raspberry Pi Trading Ltd. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+#define MODULE_NAME "raspberrypi-exp-gpio" -+#define NUM_GPIO 8 -+ -+#define RPI_EXP_GPIO_BASE 128 -+ -+#define RPI_EXP_GPIO_DIR_IN 0 -+#define RPI_EXP_GPIO_DIR_OUT 1 -+ -+struct rpi_exp_gpio { -+ struct gpio_chip gc; -+ struct rpi_firmware *fw; -+}; -+ -+/* VC4 firmware mailbox interface data structures */ -+ -+struct gpio_set_config { -+ u32 gpio; -+ u32 direction; -+ u32 polarity; -+ u32 term_en; -+ u32 term_pull_up; -+ u32 state; -+}; -+ -+struct gpio_get_config { -+ u32 gpio; -+ u32 direction; -+ u32 polarity; -+ u32 term_en; -+ u32 term_pull_up; -+}; -+ -+struct gpio_get_set_state { -+ u32 gpio; -+ u32 state; -+}; -+ -+static int rpi_exp_gpio_get_polarity(struct gpio_chip *gc, unsigned int off) -+{ -+ struct rpi_exp_gpio *gpio; -+ struct gpio_get_config get; -+ int ret; -+ -+ gpio = gpiochip_get_data(gc); -+ -+ get.gpio = off + RPI_EXP_GPIO_BASE; /* GPIO to update */ -+ -+ ret = rpi_firmware_property(gpio->fw, RPI_FIRMWARE_GET_GPIO_CONFIG, -+ &get, sizeof(get)); -+ if (ret || get.gpio != 0) { -+ dev_err(gc->parent, "Failed to get GPIO %u config (%d %x)\n", -+ off, ret, get.gpio); -+ return ret ? ret : -EIO; -+ } -+ return get.polarity; -+} -+ -+static int rpi_exp_gpio_dir_in(struct gpio_chip *gc, unsigned int off) -+{ -+ struct rpi_exp_gpio *gpio; -+ struct gpio_set_config set_in; -+ int ret; -+ -+ gpio = gpiochip_get_data(gc); -+ -+ set_in.gpio = off + RPI_EXP_GPIO_BASE; /* GPIO to update */ -+ set_in.direction = RPI_EXP_GPIO_DIR_IN; -+ set_in.term_en = 0; /* termination disabled */ -+ set_in.term_pull_up = 0; /* n/a as termination disabled */ -+ set_in.state = 0; /* n/a as configured as an input */ -+ -+ ret = rpi_exp_gpio_get_polarity(gc, off); -+ if (ret < 0) -+ return ret; -+ set_in.polarity = ret; /* Retain existing setting */ -+ -+ ret = rpi_firmware_property(gpio->fw, RPI_FIRMWARE_SET_GPIO_CONFIG, -+ &set_in, sizeof(set_in)); -+ if (ret || set_in.gpio != 0) { -+ dev_err(gc->parent, "Failed to set GPIO %u to input (%d %x)\n", -+ off, ret, set_in.gpio); -+ return ret ? ret : -EIO; -+ } -+ return 0; -+} -+ -+static int rpi_exp_gpio_dir_out(struct gpio_chip *gc, unsigned int off, int val) -+{ -+ struct rpi_exp_gpio *gpio; -+ struct gpio_set_config set_out; -+ int ret; -+ -+ gpio = gpiochip_get_data(gc); -+ -+ set_out.gpio = off + RPI_EXP_GPIO_BASE; /* GPIO to update */ -+ set_out.direction = RPI_EXP_GPIO_DIR_OUT; -+ set_out.term_en = 0; /* n/a as an output */ -+ set_out.term_pull_up = 0; /* n/a as termination disabled */ -+ set_out.state = val; /* Output state */ -+ -+ ret = rpi_exp_gpio_get_polarity(gc, off); -+ if (ret < 0) -+ return ret; -+ set_out.polarity = ret; /* Retain existing setting */ -+ -+ ret = rpi_firmware_property(gpio->fw, RPI_FIRMWARE_SET_GPIO_CONFIG, -+ &set_out, sizeof(set_out)); -+ if (ret || set_out.gpio != 0) { -+ dev_err(gc->parent, "Failed to set GPIO %u to output (%d %x)\n", -+ off, ret, set_out.gpio); -+ return ret ? ret : -EIO; -+ } -+ return 0; -+} -+ -+static int rpi_exp_gpio_get_direction(struct gpio_chip *gc, unsigned int off) -+{ -+ struct rpi_exp_gpio *gpio; -+ struct gpio_get_config get; -+ int ret; -+ -+ gpio = gpiochip_get_data(gc); -+ -+ get.gpio = off + RPI_EXP_GPIO_BASE; /* GPIO to update */ -+ -+ ret = rpi_firmware_property(gpio->fw, RPI_FIRMWARE_GET_GPIO_CONFIG, -+ &get, sizeof(get)); -+ if (ret || get.gpio != 0) { -+ dev_err(gc->parent, -+ "Failed to get GPIO %u config (%d %x)\n", off, ret, -+ get.gpio); -+ return ret ? ret : -EIO; -+ } -+ return !get.direction; -+} -+ -+static int rpi_exp_gpio_get(struct gpio_chip *gc, unsigned int off) -+{ -+ struct rpi_exp_gpio *gpio; -+ struct gpio_get_set_state get; -+ int ret; -+ -+ gpio = gpiochip_get_data(gc); -+ -+ get.gpio = off + RPI_EXP_GPIO_BASE; /* GPIO to update */ -+ get.state = 0; /* storage for returned value */ -+ -+ ret = rpi_firmware_property(gpio->fw, RPI_FIRMWARE_GET_GPIO_STATE, -+ &get, sizeof(get)); -+ if (ret || get.gpio != 0) { -+ dev_err(gc->parent, -+ "Failed to get GPIO %u state (%d %x)\n", off, ret, -+ get.gpio); -+ return ret ? ret : -EIO; -+ } -+ return !!get.state; -+} -+ -+static void rpi_exp_gpio_set(struct gpio_chip *gc, unsigned int off, int val) -+{ -+ struct rpi_exp_gpio *gpio; -+ struct gpio_get_set_state set; -+ int ret; -+ -+ gpio = gpiochip_get_data(gc); -+ -+ set.gpio = off + RPI_EXP_GPIO_BASE; /* GPIO to update */ -+ set.state = val; /* Output state */ -+ -+ ret = rpi_firmware_property(gpio->fw, RPI_FIRMWARE_SET_GPIO_STATE, -+ &set, sizeof(set)); -+ if (ret || set.gpio != 0) -+ dev_err(gc->parent, -+ "Failed to set GPIO %u state (%d %x)\n", off, ret, -+ set.gpio); -+} -+ -+static int rpi_exp_gpio_probe(struct platform_device *pdev) -+{ -+ struct device *dev = &pdev->dev; -+ struct device_node *np = dev->of_node; -+ struct device_node *fw_node; -+ struct rpi_firmware *fw; -+ struct rpi_exp_gpio *rpi_gpio; -+ -+ fw_node = of_get_parent(np); -+ if (!fw_node) { -+ dev_err(dev, "Missing firmware node\n"); -+ return -ENOENT; -+ } -+ -+ fw = rpi_firmware_get(fw_node); -+ if (!fw) -+ return -EPROBE_DEFER; -+ -+ rpi_gpio = devm_kzalloc(dev, sizeof(*rpi_gpio), GFP_KERNEL); -+ if (!rpi_gpio) -+ return -ENOMEM; -+ -+ rpi_gpio->fw = fw; -+ rpi_gpio->gc.parent = dev; -+ rpi_gpio->gc.label = MODULE_NAME; -+ rpi_gpio->gc.owner = THIS_MODULE; -+ rpi_gpio->gc.of_node = np; -+ rpi_gpio->gc.base = -1; -+ rpi_gpio->gc.ngpio = NUM_GPIO; -+ -+ rpi_gpio->gc.direction_input = rpi_exp_gpio_dir_in; -+ rpi_gpio->gc.direction_output = rpi_exp_gpio_dir_out; -+ rpi_gpio->gc.get_direction = rpi_exp_gpio_get_direction; -+ rpi_gpio->gc.get = rpi_exp_gpio_get; -+ rpi_gpio->gc.set = rpi_exp_gpio_set; -+ rpi_gpio->gc.can_sleep = true; -+ -+ return devm_gpiochip_add_data(dev, &rpi_gpio->gc, rpi_gpio); -+} -+ -+static const struct of_device_id rpi_exp_gpio_ids[] = { -+ { .compatible = "raspberrypi,firmware-gpio" }, -+ { } -+}; -+MODULE_DEVICE_TABLE(of, rpi_exp_gpio_ids); -+ -+static struct platform_driver rpi_exp_gpio_driver = { -+ .driver = { -+ .name = MODULE_NAME, -+ .of_match_table = of_match_ptr(rpi_exp_gpio_ids), -+ }, -+ .probe = rpi_exp_gpio_probe, -+}; -+module_platform_driver(rpi_exp_gpio_driver); -+ -+MODULE_LICENSE("GPL"); -+MODULE_AUTHOR("Dave Stevenson "); -+MODULE_DESCRIPTION("Raspberry Pi 3 expander GPIO driver"); -+MODULE_ALIAS("platform:rpi-exp-gpio"); -From patchwork Tue Feb 20 12:19:34 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [v5,4/5] ARM: dts: bcm2835: make the firmware node into a bus -From: Baruch Siach -X-Patchwork-Id: 10229961 -Message-Id: <43f9082a6835df6d7bcd3e16d79db687c52826d2.1519128054.git.baruch@tkos.co.il> -To: Linus Walleij , - Dave Stevenson , - Eric Anholt , Stefan Wahren -Cc: devicetree@vger.kernel.org, Baruch Siach , - linux-gpio@vger.kernel.org, Michael Zoran , - Rob Herring , linux-rpi-kernel@lists.infradead.org, - Frank Rowand , linux-arm-kernel@lists.infradead.org -Date: Tue, 20 Feb 2018 14:19:34 +0200 - -This allows adding devices for which the firmware exposes control interface -via the mailbox. An example of such device is the GPIO expander. - -Signed-off-by: Baruch Siach -Reviewed-by: Linus Walleij ---- -v4: New patch in this series ---- - arch/arm/boot/dts/bcm2835-rpi.dtsi | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi -index e36c392a2b8f..0198bd46ef7c 100644 ---- a/arch/arm/boot/dts/bcm2835-rpi.dtsi -+++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi -@@ -18,7 +18,9 @@ - - soc { - firmware: firmware { -- compatible = "raspberrypi,bcm2835-firmware"; -+ compatible = "raspberrypi,bcm2835-firmware", "simple-bus"; -+ #address-cells = <0>; -+ #size-cells = <0>; - mboxes = <&mailbox>; - }; - -From patchwork Tue Feb 20 12:19:35 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [v5,5/5] ARM: dts: bcm2837-rpi-3-b: add GPIO expander -From: Baruch Siach -X-Patchwork-Id: 10229995 -Message-Id: -To: Linus Walleij , - Dave Stevenson , - Eric Anholt , Stefan Wahren -Cc: devicetree@vger.kernel.org, Baruch Siach , - linux-gpio@vger.kernel.org, Michael Zoran , - Rob Herring , linux-rpi-kernel@lists.infradead.org, - Frank Rowand , linux-arm-kernel@lists.infradead.org -Date: Tue, 20 Feb 2018 14:19:35 +0200 - -Add a description of the RPi3 GPIO expander that the VC4 firmware controls. - -Acked-by: Stefan Wahren -Signed-off-by: Baruch Siach -Reviewed-by: Linus Walleij ---- -v5: - * Drop the 'firmware' property - -v4: - * Move the gpio node under the firmware node - * Rename the gpio node to plain 'gpio' - * Add Stefan's ack - -v3: - * List GPIO names one per line. - -v2: - * Move GPIO expander node out of the soc container - * Rename compatible string - * Add gpio-line-names property ---- - arch/arm/boot/dts/bcm2837-rpi-3-b.dts | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) - -diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts -index 3e4ed7c5b0b3..0b31d995a066 100644 ---- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts -+++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts -@@ -25,6 +25,23 @@ - }; - }; - -+&firmware { -+ expgpio: gpio { -+ compatible = "raspberrypi,firmware-gpio"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ gpio-line-names = "BT_ON", -+ "WL_ON", -+ "STATUS_LED", -+ "LAN_RUN", -+ "HPD_N", -+ "CAM_GPIO0", -+ "CAM_GPIO1", -+ "PWR_LOW_N"; -+ status = "okay"; -+ }; -+}; -+ - /* uart0 communicates with the BT module */ - &uart0 { - pinctrl-names = "default"; diff --git a/kernel.spec b/kernel.spec index b4d42b587..2a1ba8a9d 100644 --- a/kernel.spec +++ b/kernel.spec @@ -588,9 +588,6 @@ Patch305: qcom-msm89xx-fixes.patch # https://patchwork.kernel.org/patch/10173115/ Patch306: arm-dts-imx6qdl-udoo-Disable-usbh1-to-avoid-kernel-hang.patch -# Fix USB on the RPi https://patchwork.kernel.org/patch/9879371/ -Patch307: bcm283x-dma-mapping-skip-USB-devices-when-configuring-DMA-during-probe.patch - # http://patches.linaro.org/patch/131764/ Patch308: wcn36xx-Fix-firmware-crash-due-to-corrupted-buffer-address.patch @@ -600,18 +597,25 @@ Patch309: wcn36xx-reduce-verbosity-of-drivers-messages.patch # https://www.spinics.net/lists/arm-kernel/msg632925.html Patch313: arm-crypto-sunxi-ss-Add-MODULE_ALIAS-to-sun4i-ss.patch -Patch314: bcm283x-gpio-expander.patch +# Fix USB on the RPi https://patchwork.kernel.org/patch/9879371/ +Patch320: bcm283x-dma-mapping-skip-USB-devices-when-configuring-DMA-during-probe.patch # https://www.spinics.net/lists/arm-kernel/msg621982.html -Patch315: bcm283x-Fix-probing-of-bcm2835-i2s.patch +Patch321: bcm283x-Fix-probing-of-bcm2835-i2s.patch # https://www.spinics.net/lists/arm-kernel/msg633942.html -Patch316: mmc-sdhci-iproc-Disable-preset-values-for-BCM2835.patch +Patch322: mmc-sdhci-iproc-Disable-preset-values-for-BCM2835.patch # https://www.spinics.net/lists/arm-kernel/msg633945.html -Patch317: bcm2835-hwrng-Handle-deferred-clock-properly.patch +Patch323: bcm2835-hwrng-Handle-deferred-clock-properly.patch -Patch318: bcm2837-rpi-initial-support-for-the-3.patch +Patch324: bcm283x-clk-audio-fixes.patch + +# Enabling Patches for the RPi3+ +Patch330: bcm2837-rpi-initial-support-for-the-3.patch +Patch331: bcm2837-gpio-expander.patch +Patch332: bcm2837-enable-pmu.patch +Patch333: bcm2837-lan78xx-fixes.patch # 400 - IBM (ppc/s390x) patches @@ -1878,6 +1882,10 @@ fi # # %changelog +* Mon Apr 2 2018 Peter Robinson +- Improvements for the Raspberry Pi 3+ +- Fixes and minor improvements to Raspberry Pi 2/3 + * Mon Apr 02 2018 Jeremy Cline - 4.16.0-1 - Linux v4.16 - Disable debugging options. -- cgit From 01830e1a1cb6b60cf28871308e7764405002131c Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 3 Apr 2018 01:11:19 +0100 Subject: bump and build for RPi3+ --- kernel.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel.spec b/kernel.spec index 2a1ba8a9d..53f6babe9 100644 --- a/kernel.spec +++ b/kernel.spec @@ -42,7 +42,7 @@ Summary: The Linux kernel # For non-released -rc kernels, this will be appended after the rcX and # gitX tags, so a 3 here would become part of release "0.rcX.gitX.3" # -%global baserelease 1 +%global baserelease 2 %global fedora_build %{baserelease} # base_sublevel is the kernel version we're starting with and patching @@ -1882,7 +1882,7 @@ fi # # %changelog -* Mon Apr 2 2018 Peter Robinson +* Mon Apr 2 2018 Peter Robinson 4.16.0-2 - Improvements for the Raspberry Pi 3+ - Fixes and minor improvements to Raspberry Pi 2/3 -- cgit From 71c4e801d3d1ddaa02729b289c43fb7d92568113 Mon Sep 17 00:00:00 2001 From: "Justin M. Forbes" Date: Tue, 3 Apr 2018 12:18:00 -0500 Subject: Linux v4.16-2520-g642e7fd23353 --- ...ly-work-around-gcc-aliasing-warning-error.patch | 27 ---------------------- .../fedora/generic/CONFIG_DEBUG_WW_MUTEX_SLOWPATH | 1 - .../generic/CONFIG_DRM_PANEL_RAYDIUM_RM68200 | 1 + configs/fedora/generic/CONFIG_DRM_RCAR_LVDS | 1 + .../fedora/generic/arm/CONFIG_DRM_MSM_DSI_10NM_PHY | 1 + .../generic/arm/CONFIG_DRM_PANEL_ARM_VERSATILE | 1 + .../generic/arm/CONFIG_DRM_PANEL_RAYDIUM_RM68200 | 1 + configs/fedora/generic/arm/CONFIG_DRM_SUN4I | 1 + .../fedora/generic/arm/CONFIG_DRM_SUN4I_BACKEND | 1 + .../fedora/generic/arm/CONFIG_DRM_SUN8I_DW_HDMI | 1 + configs/fedora/generic/arm/armv7/CONFIG_DRM_SUN4I | 1 - .../generic/arm/armv7/CONFIG_DRM_SUN4I_BACKEND | 1 - crash-driver.patch | 2 +- efi-lockdown.patch | 4 ++-- gitrev | 2 +- kernel-aarch64-debug.config | 8 ++++++- kernel-aarch64.config | 8 ++++++- kernel-armv7hl-debug.config | 6 ++++- kernel-armv7hl-lpae-debug.config | 6 ++++- kernel-armv7hl-lpae.config | 6 ++++- kernel-armv7hl.config | 6 ++++- kernel-i686-PAE.config | 3 ++- kernel-i686-PAEdebug.config | 3 ++- kernel-i686-debug.config | 3 ++- kernel-i686.config | 3 ++- kernel-ppc64-debug.config | 3 ++- kernel-ppc64.config | 3 ++- kernel-ppc64le-debug.config | 3 ++- kernel-ppc64le.config | 3 ++- kernel-s390x-debug.config | 3 ++- kernel-s390x.config | 3 ++- kernel-x86_64-debug.config | 3 ++- kernel-x86_64.config | 3 ++- kernel.spec | 15 ++++++------ sources | 1 + 35 files changed, 79 insertions(+), 59 deletions(-) delete mode 100644 0001-Temporarily-work-around-gcc-aliasing-warning-error.patch delete mode 100644 configs/fedora/generic/CONFIG_DEBUG_WW_MUTEX_SLOWPATH create mode 100644 configs/fedora/generic/CONFIG_DRM_PANEL_RAYDIUM_RM68200 create mode 100644 configs/fedora/generic/CONFIG_DRM_RCAR_LVDS create mode 100644 configs/fedora/generic/arm/CONFIG_DRM_MSM_DSI_10NM_PHY create mode 100644 configs/fedora/generic/arm/CONFIG_DRM_PANEL_ARM_VERSATILE create mode 100644 configs/fedora/generic/arm/CONFIG_DRM_PANEL_RAYDIUM_RM68200 create mode 100644 configs/fedora/generic/arm/CONFIG_DRM_SUN4I create mode 100644 configs/fedora/generic/arm/CONFIG_DRM_SUN4I_BACKEND create mode 100644 configs/fedora/generic/arm/CONFIG_DRM_SUN8I_DW_HDMI delete mode 100644 configs/fedora/generic/arm/armv7/CONFIG_DRM_SUN4I delete mode 100644 configs/fedora/generic/arm/armv7/CONFIG_DRM_SUN4I_BACKEND diff --git a/0001-Temporarily-work-around-gcc-aliasing-warning-error.patch b/0001-Temporarily-work-around-gcc-aliasing-warning-error.patch deleted file mode 100644 index 24302d2ec..000000000 --- a/0001-Temporarily-work-around-gcc-aliasing-warning-error.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 991b5e95d4fe7778c8f5e7d7f478d01134d51ca7 Mon Sep 17 00:00:00 2001 -From: Laura Abbott -Date: Wed, 14 Mar 2018 14:20:02 -0700 -Subject: [PATCH] Temporarily work around gcc aliasing warning/error - -Signed-off-by: Laura Abbott ---- - tools/lib/str_error_r.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/tools/lib/str_error_r.c b/tools/lib/str_error_r.c -index d6d65537b0d9..c0ede4f6adae 100644 ---- a/tools/lib/str_error_r.c -+++ b/tools/lib/str_error_r.c -@@ -21,7 +21,8 @@ - char *str_error_r(int errnum, char *buf, size_t buflen) - { - int err = strerror_r(errnum, buf, buflen); -+ void *temp = buf; - if (err) -- snprintf(buf, buflen, "INTERNAL ERROR: strerror_r(%d, %p, %zd)=%d", errnum, buf, buflen, err); -+ snprintf(buf, buflen, "INTERNAL ERROR: strerror_r(%d, %p, %zd)=%d", errnum, temp, buflen, err); - return buf; - } --- -2.16.2 - diff --git a/configs/fedora/generic/CONFIG_DEBUG_WW_MUTEX_SLOWPATH b/configs/fedora/generic/CONFIG_DEBUG_WW_MUTEX_SLOWPATH deleted file mode 100644 index f4151e3d5..000000000 --- a/configs/fedora/generic/CONFIG_DEBUG_WW_MUTEX_SLOWPATH +++ /dev/null @@ -1 +0,0 @@ -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set diff --git a/configs/fedora/generic/CONFIG_DRM_PANEL_RAYDIUM_RM68200 b/configs/fedora/generic/CONFIG_DRM_PANEL_RAYDIUM_RM68200 new file mode 100644 index 000000000..0af9e0d96 --- /dev/null +++ b/configs/fedora/generic/CONFIG_DRM_PANEL_RAYDIUM_RM68200 @@ -0,0 +1 @@ +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set diff --git a/configs/fedora/generic/CONFIG_DRM_RCAR_LVDS b/configs/fedora/generic/CONFIG_DRM_RCAR_LVDS new file mode 100644 index 000000000..8cca64d3f --- /dev/null +++ b/configs/fedora/generic/CONFIG_DRM_RCAR_LVDS @@ -0,0 +1 @@ +# CONFIG_DRM_RCAR_LVDS is not set diff --git a/configs/fedora/generic/arm/CONFIG_DRM_MSM_DSI_10NM_PHY b/configs/fedora/generic/arm/CONFIG_DRM_MSM_DSI_10NM_PHY new file mode 100644 index 000000000..a18155299 --- /dev/null +++ b/configs/fedora/generic/arm/CONFIG_DRM_MSM_DSI_10NM_PHY @@ -0,0 +1 @@ +CONFIG_DRM_MSM_DSI_10NM_PHY=y diff --git a/configs/fedora/generic/arm/CONFIG_DRM_PANEL_ARM_VERSATILE b/configs/fedora/generic/arm/CONFIG_DRM_PANEL_ARM_VERSATILE new file mode 100644 index 000000000..ea5e9d550 --- /dev/null +++ b/configs/fedora/generic/arm/CONFIG_DRM_PANEL_ARM_VERSATILE @@ -0,0 +1 @@ +CONFIG_DRM_PANEL_ARM_VERSATILE=m diff --git a/configs/fedora/generic/arm/CONFIG_DRM_PANEL_RAYDIUM_RM68200 b/configs/fedora/generic/arm/CONFIG_DRM_PANEL_RAYDIUM_RM68200 new file mode 100644 index 000000000..210aaa60a --- /dev/null +++ b/configs/fedora/generic/arm/CONFIG_DRM_PANEL_RAYDIUM_RM68200 @@ -0,0 +1 @@ +CONFIG_DRM_PANEL_RAYDIUM_RM68200=m diff --git a/configs/fedora/generic/arm/CONFIG_DRM_SUN4I b/configs/fedora/generic/arm/CONFIG_DRM_SUN4I new file mode 100644 index 000000000..2eb966e5b --- /dev/null +++ b/configs/fedora/generic/arm/CONFIG_DRM_SUN4I @@ -0,0 +1 @@ +CONFIG_DRM_SUN4I=m diff --git a/configs/fedora/generic/arm/CONFIG_DRM_SUN4I_BACKEND b/configs/fedora/generic/arm/CONFIG_DRM_SUN4I_BACKEND new file mode 100644 index 000000000..c1d1d2121 --- /dev/null +++ b/configs/fedora/generic/arm/CONFIG_DRM_SUN4I_BACKEND @@ -0,0 +1 @@ +CONFIG_DRM_SUN4I_BACKEND=m diff --git a/configs/fedora/generic/arm/CONFIG_DRM_SUN8I_DW_HDMI b/configs/fedora/generic/arm/CONFIG_DRM_SUN8I_DW_HDMI new file mode 100644 index 000000000..e5b6b5746 --- /dev/null +++ b/configs/fedora/generic/arm/CONFIG_DRM_SUN8I_DW_HDMI @@ -0,0 +1 @@ +CONFIG_DRM_SUN8I_DW_HDMI=m diff --git a/configs/fedora/generic/arm/armv7/CONFIG_DRM_SUN4I b/configs/fedora/generic/arm/armv7/CONFIG_DRM_SUN4I deleted file mode 100644 index 2eb966e5b..000000000 --- a/configs/fedora/generic/arm/armv7/CONFIG_DRM_SUN4I +++ /dev/null @@ -1 +0,0 @@ -CONFIG_DRM_SUN4I=m diff --git a/configs/fedora/generic/arm/armv7/CONFIG_DRM_SUN4I_BACKEND b/configs/fedora/generic/arm/armv7/CONFIG_DRM_SUN4I_BACKEND deleted file mode 100644 index c1d1d2121..000000000 --- a/configs/fedora/generic/arm/armv7/CONFIG_DRM_SUN4I_BACKEND +++ /dev/null @@ -1 +0,0 @@ -CONFIG_DRM_SUN4I_BACKEND=m diff --git a/crash-driver.patch b/crash-driver.patch index 715ec54e8..511a41e8c 100644 --- a/crash-driver.patch +++ b/crash-driver.patch @@ -285,7 +285,7 @@ index 6e6c244..29cc9c8 100644 --- a/drivers/char/Makefile +++ b/drivers/char/Makefile @@ -60,3 +60,5 @@ js-rtc-y = rtc.o - obj-$(CONFIG_TILE_SROM) += tile-srom.o + obj-$(CONFIG_XILLYBUS) += xillybus/ obj-$(CONFIG_POWERNV_OP_PANEL) += powernv-op-panel.o + diff --git a/efi-lockdown.patch b/efi-lockdown.patch index ceb0ca7f9..a567084d7 100644 --- a/efi-lockdown.patch +++ b/efi-lockdown.patch @@ -1422,14 +1422,14 @@ index 3bb46cb24a99..3d3b59b97f31 100644 --- a/drivers/acpi/osl.c +++ b/drivers/acpi/osl.c @@ -192,7 +192,7 @@ acpi_physical_address __init acpi_os_get_root_pointer(void) - acpi_physical_address pa = 0; + acpi_physical_address pa; #ifdef CONFIG_KEXEC - if (acpi_rsdp) + if (acpi_rsdp && !kernel_is_locked_down("ACPI RSDP specification")) return acpi_rsdp; #endif - + pa = acpi_arch_get_root_pointer(); -- 2.14.3 diff --git a/gitrev b/gitrev index 3a8c54797..e16d2a74e 100644 --- a/gitrev +++ b/gitrev @@ -1 +1 @@ -0b412605ef5f5c64b31f19e2910b1d5eba9929c3 +642e7fd23353e22290e3d51719fcb658dc252342 diff --git a/kernel-aarch64-debug.config b/kernel-aarch64-debug.config index b719aedd5..bed396b93 100644 --- a/kernel-aarch64-debug.config +++ b/kernel-aarch64-debug.config @@ -1190,7 +1190,6 @@ CONFIG_DEBUG_VM_PGFLAGS=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set CONFIG_DEBUG_WX=y # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y @@ -1324,6 +1323,7 @@ CONFIG_DRM_MESON_DW_HDMI=m CONFIG_DRM_MESON=m CONFIG_DRM_MGAG200=m # CONFIG_DRM_MGA is not set +CONFIG_DRM_MSM_DSI_10NM_PHY=y CONFIG_DRM_MSM_DSI_14NM_PHY=y CONFIG_DRM_MSM_DSI_20NM_PHY=y CONFIG_DRM_MSM_DSI_28NM_8960_PHY=y @@ -1337,6 +1337,7 @@ CONFIG_DRM_MSM=m CONFIG_DRM_NOUVEAU_BACKLIGHT=y CONFIG_DRM_NOUVEAU=m CONFIG_DRM_NXP_PTN3460=m +CONFIG_DRM_PANEL_ARM_VERSATILE=m CONFIG_DRM_PANEL_ILITEK_IL9322=m # CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set # CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set @@ -1345,6 +1346,7 @@ CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00=m CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +CONFIG_DRM_PANEL_RAYDIUM_RM68200=m CONFIG_DRM_PANEL_SAMSUNG_LD9040=m CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2=m CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1362,6 +1364,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set CONFIG_DRM_ROCKCHIP=m # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set @@ -1369,8 +1372,11 @@ CONFIG_DRM_SII9234=m # CONFIG_DRM_SIL_SII8620 is not set # CONFIG_DRM_SIS is not set # CONFIG_DRM_STM is not set +CONFIG_DRM_SUN4I_BACKEND=m CONFIG_DRM_SUN4I_HDMI_CEC=y CONFIG_DRM_SUN4I_HDMI=m +CONFIG_DRM_SUN4I=m +CONFIG_DRM_SUN8I_DW_HDMI=m CONFIG_DRM_SUN8I_MIXER=m # CONFIG_DRM_TDFX is not set # CONFIG_DRM_TEGRA_DEBUG is not set diff --git a/kernel-aarch64.config b/kernel-aarch64.config index 33034904d..a2a499112 100644 --- a/kernel-aarch64.config +++ b/kernel-aarch64.config @@ -1181,7 +1181,6 @@ CONFIG_DEBUG_SHIRQ=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set CONFIG_DEBUG_WX=y # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y @@ -1314,6 +1313,7 @@ CONFIG_DRM_MESON_DW_HDMI=m CONFIG_DRM_MESON=m CONFIG_DRM_MGAG200=m # CONFIG_DRM_MGA is not set +CONFIG_DRM_MSM_DSI_10NM_PHY=y CONFIG_DRM_MSM_DSI_14NM_PHY=y CONFIG_DRM_MSM_DSI_20NM_PHY=y CONFIG_DRM_MSM_DSI_28NM_8960_PHY=y @@ -1327,6 +1327,7 @@ CONFIG_DRM_MSM=m CONFIG_DRM_NOUVEAU_BACKLIGHT=y CONFIG_DRM_NOUVEAU=m CONFIG_DRM_NXP_PTN3460=m +CONFIG_DRM_PANEL_ARM_VERSATILE=m CONFIG_DRM_PANEL_ILITEK_IL9322=m # CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set # CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set @@ -1335,6 +1336,7 @@ CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00=m CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +CONFIG_DRM_PANEL_RAYDIUM_RM68200=m CONFIG_DRM_PANEL_SAMSUNG_LD9040=m CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2=m CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1352,6 +1354,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set CONFIG_DRM_ROCKCHIP=m # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set @@ -1359,8 +1362,11 @@ CONFIG_DRM_SII9234=m # CONFIG_DRM_SIL_SII8620 is not set # CONFIG_DRM_SIS is not set # CONFIG_DRM_STM is not set +CONFIG_DRM_SUN4I_BACKEND=m CONFIG_DRM_SUN4I_HDMI_CEC=y CONFIG_DRM_SUN4I_HDMI=m +CONFIG_DRM_SUN4I=m +CONFIG_DRM_SUN8I_DW_HDMI=m CONFIG_DRM_SUN8I_MIXER=m # CONFIG_DRM_TDFX is not set # CONFIG_DRM_TEGRA_DEBUG is not set diff --git a/kernel-armv7hl-debug.config b/kernel-armv7hl-debug.config index 88f319adf..23c81b92e 100644 --- a/kernel-armv7hl-debug.config +++ b/kernel-armv7hl-debug.config @@ -1237,7 +1237,6 @@ CONFIG_DEBUG_VM_PGFLAGS=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set CONFIG_DEBUG_WX=y # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y @@ -1401,6 +1400,7 @@ CONFIG_DRM_MESON_DW_HDMI=m CONFIG_DRM_MESON=m CONFIG_DRM_MGAG200=m # CONFIG_DRM_MGA is not set +CONFIG_DRM_MSM_DSI_10NM_PHY=y CONFIG_DRM_MSM_DSI_14NM_PHY=y CONFIG_DRM_MSM_DSI_20NM_PHY=y CONFIG_DRM_MSM_DSI_28NM_8960_PHY=y @@ -1430,6 +1430,7 @@ CONFIG_DRM_OMAP_PANEL_SHARP_LS037V7DW01=m CONFIG_DRM_OMAP_PANEL_SONY_ACX565AKM=m CONFIG_DRM_OMAP_PANEL_TPO_TD028TTEC1=m CONFIG_DRM_OMAP_PANEL_TPO_TD043MTEA1=m +CONFIG_DRM_PANEL_ARM_VERSATILE=m CONFIG_DRM_PANEL_ILITEK_IL9322=m # CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set # CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set @@ -1438,6 +1439,7 @@ CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00=m CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +CONFIG_DRM_PANEL_RAYDIUM_RM68200=m CONFIG_DRM_PANEL_SAMSUNG_LD9040=m CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2=m CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1455,6 +1457,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set CONFIG_DRM_ROCKCHIP=m # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set @@ -1467,6 +1470,7 @@ CONFIG_DRM_SUN4I_BACKEND=m CONFIG_DRM_SUN4I_HDMI_CEC=y CONFIG_DRM_SUN4I_HDMI=m CONFIG_DRM_SUN4I=m +CONFIG_DRM_SUN8I_DW_HDMI=m CONFIG_DRM_SUN8I_MIXER=m # CONFIG_DRM_TDFX is not set # CONFIG_DRM_TEGRA_DEBUG is not set diff --git a/kernel-armv7hl-lpae-debug.config b/kernel-armv7hl-lpae-debug.config index 7e24f66e0..797924eb5 100644 --- a/kernel-armv7hl-lpae-debug.config +++ b/kernel-armv7hl-lpae-debug.config @@ -1183,7 +1183,6 @@ CONFIG_DEBUG_VM_PGFLAGS=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set CONFIG_DEBUG_WX=y # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y @@ -1338,11 +1337,13 @@ CONFIG_DRM_MESON_DW_HDMI=m CONFIG_DRM_MESON=m CONFIG_DRM_MGAG200=m # CONFIG_DRM_MGA is not set +CONFIG_DRM_MSM_DSI_10NM_PHY=y # CONFIG_DRM_MXSFB is not set CONFIG_DRM_NOUVEAU_BACKLIGHT=y CONFIG_DRM_NOUVEAU=m CONFIG_DRM_NXP_PTN3460=m # CONFIG_DRM_OMAP is not set +CONFIG_DRM_PANEL_ARM_VERSATILE=m CONFIG_DRM_PANEL_ILITEK_IL9322=m # CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set # CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set @@ -1351,6 +1352,7 @@ CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00=m CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +CONFIG_DRM_PANEL_RAYDIUM_RM68200=m CONFIG_DRM_PANEL_SAMSUNG_LD9040=m CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2=m CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1368,6 +1370,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set CONFIG_DRM_ROCKCHIP=m # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set @@ -1380,6 +1383,7 @@ CONFIG_DRM_SUN4I_BACKEND=m CONFIG_DRM_SUN4I_HDMI_CEC=y CONFIG_DRM_SUN4I_HDMI=m CONFIG_DRM_SUN4I=m +CONFIG_DRM_SUN8I_DW_HDMI=m CONFIG_DRM_SUN8I_MIXER=m # CONFIG_DRM_TDFX is not set # CONFIG_DRM_TEGRA_DEBUG is not set diff --git a/kernel-armv7hl-lpae.config b/kernel-armv7hl-lpae.config index c585c17e6..82b513a10 100644 --- a/kernel-armv7hl-lpae.config +++ b/kernel-armv7hl-lpae.config @@ -1173,7 +1173,6 @@ CONFIG_DEBUG_SHIRQ=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set CONFIG_DEBUG_WX=y # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y @@ -1328,11 +1327,13 @@ CONFIG_DRM_MESON_DW_HDMI=m CONFIG_DRM_MESON=m CONFIG_DRM_MGAG200=m # CONFIG_DRM_MGA is not set +CONFIG_DRM_MSM_DSI_10NM_PHY=y # CONFIG_DRM_MXSFB is not set CONFIG_DRM_NOUVEAU_BACKLIGHT=y CONFIG_DRM_NOUVEAU=m CONFIG_DRM_NXP_PTN3460=m # CONFIG_DRM_OMAP is not set +CONFIG_DRM_PANEL_ARM_VERSATILE=m CONFIG_DRM_PANEL_ILITEK_IL9322=m # CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set # CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set @@ -1341,6 +1342,7 @@ CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00=m CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +CONFIG_DRM_PANEL_RAYDIUM_RM68200=m CONFIG_DRM_PANEL_SAMSUNG_LD9040=m CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2=m CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1358,6 +1360,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set CONFIG_DRM_ROCKCHIP=m # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set @@ -1370,6 +1373,7 @@ CONFIG_DRM_SUN4I_BACKEND=m CONFIG_DRM_SUN4I_HDMI_CEC=y CONFIG_DRM_SUN4I_HDMI=m CONFIG_DRM_SUN4I=m +CONFIG_DRM_SUN8I_DW_HDMI=m CONFIG_DRM_SUN8I_MIXER=m # CONFIG_DRM_TDFX is not set # CONFIG_DRM_TEGRA_DEBUG is not set diff --git a/kernel-armv7hl.config b/kernel-armv7hl.config index ffa53449b..3d452ffbe 100644 --- a/kernel-armv7hl.config +++ b/kernel-armv7hl.config @@ -1227,7 +1227,6 @@ CONFIG_DEBUG_SHIRQ=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set CONFIG_DEBUG_WX=y # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y @@ -1391,6 +1390,7 @@ CONFIG_DRM_MESON_DW_HDMI=m CONFIG_DRM_MESON=m CONFIG_DRM_MGAG200=m # CONFIG_DRM_MGA is not set +CONFIG_DRM_MSM_DSI_10NM_PHY=y CONFIG_DRM_MSM_DSI_14NM_PHY=y CONFIG_DRM_MSM_DSI_20NM_PHY=y CONFIG_DRM_MSM_DSI_28NM_8960_PHY=y @@ -1420,6 +1420,7 @@ CONFIG_DRM_OMAP_PANEL_SHARP_LS037V7DW01=m CONFIG_DRM_OMAP_PANEL_SONY_ACX565AKM=m CONFIG_DRM_OMAP_PANEL_TPO_TD028TTEC1=m CONFIG_DRM_OMAP_PANEL_TPO_TD043MTEA1=m +CONFIG_DRM_PANEL_ARM_VERSATILE=m CONFIG_DRM_PANEL_ILITEK_IL9322=m # CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set # CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set @@ -1428,6 +1429,7 @@ CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00=m CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +CONFIG_DRM_PANEL_RAYDIUM_RM68200=m CONFIG_DRM_PANEL_SAMSUNG_LD9040=m CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2=m CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1445,6 +1447,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set CONFIG_DRM_ROCKCHIP=m # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set @@ -1457,6 +1460,7 @@ CONFIG_DRM_SUN4I_BACKEND=m CONFIG_DRM_SUN4I_HDMI_CEC=y CONFIG_DRM_SUN4I_HDMI=m CONFIG_DRM_SUN4I=m +CONFIG_DRM_SUN8I_DW_HDMI=m CONFIG_DRM_SUN8I_MIXER=m # CONFIG_DRM_TDFX is not set # CONFIG_DRM_TEGRA_DEBUG is not set diff --git a/kernel-i686-PAE.config b/kernel-i686-PAE.config index 42bd23802..487571264 100644 --- a/kernel-i686-PAE.config +++ b/kernel-i686-PAE.config @@ -1025,7 +1025,6 @@ CONFIG_DEBUG_STACKOVERFLOW=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set CONFIG_DEBUG_WX=y # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y @@ -1176,6 +1175,7 @@ CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m # CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1192,6 +1192,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set CONFIG_DRM_SII9234=m diff --git a/kernel-i686-PAEdebug.config b/kernel-i686-PAEdebug.config index 8b67565b6..27376383b 100644 --- a/kernel-i686-PAEdebug.config +++ b/kernel-i686-PAEdebug.config @@ -1035,7 +1035,6 @@ CONFIG_DEBUG_VM_PGFLAGS=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set CONFIG_DEBUG_WX=y # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y @@ -1187,6 +1186,7 @@ CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m # CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1203,6 +1203,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set CONFIG_DRM_SII9234=m diff --git a/kernel-i686-debug.config b/kernel-i686-debug.config index 975534b18..a585c9734 100644 --- a/kernel-i686-debug.config +++ b/kernel-i686-debug.config @@ -1035,7 +1035,6 @@ CONFIG_DEBUG_VM_PGFLAGS=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set CONFIG_DEBUG_WX=y # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y @@ -1187,6 +1186,7 @@ CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m # CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1203,6 +1203,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set CONFIG_DRM_SII9234=m diff --git a/kernel-i686.config b/kernel-i686.config index a4d14fba5..347b69d3a 100644 --- a/kernel-i686.config +++ b/kernel-i686.config @@ -1025,7 +1025,6 @@ CONFIG_DEBUG_STACKOVERFLOW=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set CONFIG_DEBUG_WX=y # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y @@ -1176,6 +1175,7 @@ CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m # CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1192,6 +1192,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set CONFIG_DRM_SII9234=m diff --git a/kernel-ppc64-debug.config b/kernel-ppc64-debug.config index 70139d1ca..6d781a0f5 100644 --- a/kernel-ppc64-debug.config +++ b/kernel-ppc64-debug.config @@ -1012,7 +1012,6 @@ CONFIG_DEBUG_VM_PGFLAGS=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y CONFIG_DEFAULT_HOSTNAME="(none)" @@ -1139,6 +1138,7 @@ CONFIG_DRM_NOUVEAU=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m # CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1155,6 +1155,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set CONFIG_DRM_SII9234=m diff --git a/kernel-ppc64.config b/kernel-ppc64.config index e81bdb3a0..5e4ac4894 100644 --- a/kernel-ppc64.config +++ b/kernel-ppc64.config @@ -1002,7 +1002,6 @@ CONFIG_DEBUG_STACKOVERFLOW=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y CONFIG_DEFAULT_HOSTNAME="(none)" @@ -1128,6 +1127,7 @@ CONFIG_DRM_NOUVEAU=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m # CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1144,6 +1144,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set CONFIG_DRM_SII9234=m diff --git a/kernel-ppc64le-debug.config b/kernel-ppc64le-debug.config index 8370a180c..17e277b50 100644 --- a/kernel-ppc64le-debug.config +++ b/kernel-ppc64le-debug.config @@ -966,7 +966,6 @@ CONFIG_DEBUG_VM_PGFLAGS=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y CONFIG_DEFAULT_HOSTNAME="(none)" @@ -1094,6 +1093,7 @@ CONFIG_DRM_NOUVEAU=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m # CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1110,6 +1110,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set CONFIG_DRM_SII9234=m diff --git a/kernel-ppc64le.config b/kernel-ppc64le.config index 517a9de86..269f80ec3 100644 --- a/kernel-ppc64le.config +++ b/kernel-ppc64le.config @@ -956,7 +956,6 @@ CONFIG_DEBUG_STACKOVERFLOW=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y CONFIG_DEFAULT_HOSTNAME="(none)" @@ -1083,6 +1082,7 @@ CONFIG_DRM_NOUVEAU=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m # CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1099,6 +1099,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set CONFIG_DRM_SII9234=m diff --git a/kernel-s390x-debug.config b/kernel-s390x-debug.config index ac608ceb4..510475bdf 100644 --- a/kernel-s390x-debug.config +++ b/kernel-s390x-debug.config @@ -968,7 +968,6 @@ CONFIG_DEBUG_VM_PGFLAGS=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y CONFIG_DEFAULT_HOSTNAME="(none)" @@ -1095,6 +1094,7 @@ CONFIG_DRM_NOUVEAU=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m # CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1110,6 +1110,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set CONFIG_DRM_SII9234=m diff --git a/kernel-s390x.config b/kernel-s390x.config index 3d7914a5f..2e57175a2 100644 --- a/kernel-s390x.config +++ b/kernel-s390x.config @@ -958,7 +958,6 @@ CONFIG_DEBUG_SHIRQ=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y CONFIG_DEFAULT_HOSTNAME="(none)" @@ -1084,6 +1083,7 @@ CONFIG_DRM_NOUVEAU=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m # CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1099,6 +1099,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set CONFIG_DRM_SII9234=m diff --git a/kernel-x86_64-debug.config b/kernel-x86_64-debug.config index 685ec8eb7..06cce083f 100644 --- a/kernel-x86_64-debug.config +++ b/kernel-x86_64-debug.config @@ -1076,7 +1076,6 @@ CONFIG_DEBUG_VM_PGFLAGS=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set CONFIG_DEBUG_WX=y # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y @@ -1234,6 +1233,7 @@ CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m # CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1250,6 +1250,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set CONFIG_DRM_SII9234=m diff --git a/kernel-x86_64.config b/kernel-x86_64.config index 38352e2fb..98ee99acc 100644 --- a/kernel-x86_64.config +++ b/kernel-x86_64.config @@ -1066,7 +1066,6 @@ CONFIG_DEBUG_STACKOVERFLOW=y # CONFIG_DEBUG_VM_VMACACHE is not set CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set -# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set CONFIG_DEBUG_WX=y # CONFIG_DECNET is not set CONFIG_DEFAULT_CFQ=y @@ -1223,6 +1222,7 @@ CONFIG_DRM_PANEL_LVDS=m CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m # CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set # CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m @@ -1239,6 +1239,7 @@ CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y # CONFIG_DRM_RCAR_DW_HDMI is not set +# CONFIG_DRM_RCAR_LVDS is not set # CONFIG_DRM_SAVAGE is not set # CONFIG_DRM_SII902X is not set CONFIG_DRM_SII9234=m diff --git a/kernel.spec b/kernel.spec index 53f6babe9..10ace7759 100644 --- a/kernel.spec +++ b/kernel.spec @@ -6,7 +6,7 @@ Summary: The Linux kernel # For a stable, released kernel, released_kernel should be 1. For rawhide # and/or a kernel built from an rc or git snapshot, released_kernel should # be 0. -%global released_kernel 1 +%global released_kernel 0 # Sign modules on x86. Make sure the config files match this setting if more # architectures are added. @@ -42,7 +42,7 @@ Summary: The Linux kernel # For non-released -rc kernels, this will be appended after the rcX and # gitX tags, so a 3 here would become part of release "0.rcX.gitX.3" # -%global baserelease 2 +%global baserelease 1 %global fedora_build %{baserelease} # base_sublevel is the kernel version we're starting with and patching @@ -69,7 +69,7 @@ Summary: The Linux kernel # The rc snapshot level %global rcrev 0 # The git snapshot level -%define gitrev 0 +%define gitrev 1 # Set rpm version accordingly %define rpmversion 4.%{upstream_sublevel}.0 %endif @@ -124,7 +124,7 @@ Summary: The Linux kernel # Set debugbuildsenabled to 1 for production (build separate debug kernels) # and 0 for rawhide (all kernels are debug kernels). # See also 'make debug' and 'make release'. -%define debugbuildsenabled 1 +%define debugbuildsenabled 0 %if %{with_verbose} %define make_opts V=1 @@ -506,9 +506,6 @@ Source5000: patch-4.%{base_sublevel}-git%{gitrev}.xz # ongoing complaint, full discussion delayed until ksummit/plumbers Patch002: 0001-iio-Use-event-header-from-kernel-tree.patch -# gcc -Werror=aliasing workaround -Patch003: 0001-Temporarily-work-around-gcc-aliasing-warning-error.patch - %if !%{nopatches} # Git trees. @@ -1882,6 +1879,10 @@ fi # # %changelog +* Tue Apr 03 2018 Justin M. Forbes - 4.17.0-0.rc0.git1.1 +- Linux v4.16-2520-g642e7fd23353 +- Reenable debugging options. + * Mon Apr 2 2018 Peter Robinson 4.16.0-2 - Improvements for the Raspberry Pi 3+ - Fixes and minor improvements to Raspberry Pi 2/3 diff --git a/sources b/sources index 8715868cd..95110f628 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ SHA512 (linux-4.16.tar.xz) = ab47849314b177d0eec9dbf261f33972b0d89fb92fb0650130ffa7abc2f36c0fab2d06317dc1683c51a472a9a631573a9b1e7258d6281a2ee189897827f14662 +SHA512 (patch-4.16-git1.xz) = efc6c9d3aa7b9b567d4c74b12f45905a5c3a0c847e622e3bf532b255f9f0f12c7d2be88a3409a5c92bb94a9a5951f527d59ab566f7b16b7fae5a2b67b6763f27 -- cgit