From d022a95e74d48a20f1cb500e7d31931b162a1040 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Sep 11 2017 12:28:18 +0000 Subject: Raspberry Pi serial console fixes, minor other Pi improvements (rhbz #1487305). Various ARM cleanups, build mmc/pwrseq non modular --- diff --git a/Revert-ARM-dts-bcm2835-Add-the-DSI-module-nodes-and-.patch b/Revert-ARM-dts-bcm2835-Add-the-DSI-module-nodes-and-.patch deleted file mode 100644 index 235c391..0000000 --- a/Revert-ARM-dts-bcm2835-Add-the-DSI-module-nodes-and-.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 7d9e74c53a4376245b4f05006f42184a1540dee8 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 18 Jul 2017 23:21:50 +0100 -Subject: [PATCH] Revert "ARM: dts: bcm2835: Add the DSI module nodes and - clocks." - -This reverts commit 4aba4cf820545ca8ec23785c7bac40bba7e505c5. ---- - arch/arm/boot/dts/bcm2835-rpi.dtsi | 8 ------- - arch/arm/boot/dts/bcm283x.dtsi | 48 +++----------------------------------- - 2 files changed, 3 insertions(+), 53 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi -index a7b5ce133784..e99bb149065f 100644 ---- a/arch/arm/boot/dts/bcm2835-rpi.dtsi -+++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi -@@ -98,11 +98,3 @@ - power-domains = <&power RPI_POWER_DOMAIN_VEC>; - status = "okay"; - }; -- --&dsi0 { -- power-domains = <&power RPI_POWER_DOMAIN_DSI0>; --}; -- --&dsi1 { -- power-domains = <&power RPI_POWER_DOMAIN_DSI1>; --}; -diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi -index 9444a9a9ba10..ce14c9ddf574 100644 ---- a/arch/arm/boot/dts/bcm283x.dtsi -+++ b/arch/arm/boot/dts/bcm283x.dtsi -@@ -98,13 +98,10 @@ - #clock-cells = <1>; - reg = <0x7e101000 0x2000>; - -- /* CPRMAN derives almost everything from the -- * platform's oscillator. However, the DSI -- * pixel clocks come from the DSI analog PHY. -+ /* CPRMAN derives everything from the platform's -+ * oscillator. - */ -- clocks = <&clk_osc>, -- <&dsi0 0>, <&dsi0 1>, <&dsi0 2>, -- <&dsi1 0>, <&dsi1 1>, <&dsi1 2>; -+ clocks = <&clk_osc>; - }; - - rng@7e104000 { -@@ -412,25 +409,6 @@ - interrupts = <2 14>; /* pwa1 */ - }; - -- dsi0: dsi@7e209000 { -- compatible = "brcm,bcm2835-dsi0"; -- reg = <0x7e209000 0x78>; -- interrupts = <2 4>; -- #address-cells = <1>; -- #size-cells = <0>; -- #clock-cells = <1>; -- -- clocks = <&clocks BCM2835_PLLA_DSI0>, -- <&clocks BCM2835_CLOCK_DSI0E>, -- <&clocks BCM2835_CLOCK_DSI0P>; -- clock-names = "phy", "escape", "pixel"; -- -- clock-output-names = "dsi0_byte", -- "dsi0_ddr2", -- "dsi0_ddr"; -- -- }; -- - thermal: thermal@7e212000 { - compatible = "brcm,bcm2835-thermal"; - reg = <0x7e212000 0x8>; -@@ -497,26 +475,6 @@ - interrupts = <2 1>; - }; - -- dsi1: dsi@7e700000 { -- compatible = "brcm,bcm2835-dsi1"; -- reg = <0x7e700000 0x8c>; -- interrupts = <2 12>; -- #address-cells = <1>; -- #size-cells = <0>; -- #clock-cells = <1>; -- -- clocks = <&clocks BCM2835_PLLD_DSI1>, -- <&clocks BCM2835_CLOCK_DSI1E>, -- <&clocks BCM2835_CLOCK_DSI1P>; -- clock-names = "phy", "escape", "pixel"; -- -- clock-output-names = "dsi1_byte", -- "dsi1_ddr2", -- "dsi1_ddr"; -- -- status = "disabled"; -- }; -- - i2c1: i2c@7e804000 { - compatible = "brcm,bcm2835-i2c"; - reg = <0x7e804000 0x1000>; --- -2.13.3 - diff --git a/baseconfig/CONFIG_MMC_SDHCI_OF b/baseconfig/CONFIG_MMC_SDHCI_OF deleted file mode 100644 index 2e58864..0000000 --- a/baseconfig/CONFIG_MMC_SDHCI_OF +++ /dev/null @@ -1 +0,0 @@ -# CONFIG_MMC_SDHCI_OF is not set diff --git a/baseconfig/CONFIG_PWRSEQ_SD8787 b/baseconfig/CONFIG_PWRSEQ_SD8787 index 243dba0..8209843 100644 --- a/baseconfig/CONFIG_PWRSEQ_SD8787 +++ b/baseconfig/CONFIG_PWRSEQ_SD8787 @@ -1 +1 @@ -# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SD8787=m diff --git a/baseconfig/arm/CONFIG_CRYPTO_GHASH_ARM_CE b/baseconfig/arm/CONFIG_CRYPTO_GHASH_ARM_CE new file mode 100644 index 0000000..5c70cb1 --- /dev/null +++ b/baseconfig/arm/CONFIG_CRYPTO_GHASH_ARM_CE @@ -0,0 +1 @@ +CONFIG_CRYPTO_GHASH_ARM_CE=m diff --git a/baseconfig/arm/CONFIG_DRM_SUN4I_HDMI b/baseconfig/arm/CONFIG_DRM_SUN4I_HDMI deleted file mode 100644 index cda1f60..0000000 --- a/baseconfig/arm/CONFIG_DRM_SUN4I_HDMI +++ /dev/null @@ -1 +0,0 @@ -CONFIG_DRM_SUN4I_HDMI=m diff --git a/baseconfig/arm/CONFIG_MMC b/baseconfig/arm/CONFIG_MMC new file mode 100644 index 0000000..7c2be17 --- /dev/null +++ b/baseconfig/arm/CONFIG_MMC @@ -0,0 +1 @@ +CONFIG_MMC=y diff --git a/baseconfig/arm/CONFIG_MMC_QCOM_DML b/baseconfig/arm/CONFIG_MMC_QCOM_DML deleted file mode 100644 index 11f7e7e..0000000 --- a/baseconfig/arm/CONFIG_MMC_QCOM_DML +++ /dev/null @@ -1 +0,0 @@ -# CONFIG_MMC_QCOM_DML is not set diff --git a/baseconfig/arm/CONFIG_PWRSEQ_EMMC b/baseconfig/arm/CONFIG_PWRSEQ_EMMC new file mode 100644 index 0000000..29e883d --- /dev/null +++ b/baseconfig/arm/CONFIG_PWRSEQ_EMMC @@ -0,0 +1 @@ +CONFIG_PWRSEQ_EMMC=y diff --git a/baseconfig/arm/CONFIG_PWRSEQ_SIMPLE b/baseconfig/arm/CONFIG_PWRSEQ_SIMPLE new file mode 100644 index 0000000..7c8ad9b --- /dev/null +++ b/baseconfig/arm/CONFIG_PWRSEQ_SIMPLE @@ -0,0 +1 @@ +CONFIG_PWRSEQ_SIMPLE=y diff --git a/baseconfig/arm/arm64/CONFIG_MMC_QCOM_DML b/baseconfig/arm/arm64/CONFIG_MMC_QCOM_DML new file mode 100644 index 0000000..059d0d4 --- /dev/null +++ b/baseconfig/arm/arm64/CONFIG_MMC_QCOM_DML @@ -0,0 +1 @@ +CONFIG_MMC_QCOM_DML=m diff --git a/baseconfig/arm/armv7/CONFIG_CRYPTO_GHASH_ARM_CE b/baseconfig/arm/armv7/CONFIG_CRYPTO_GHASH_ARM_CE deleted file mode 100644 index e2ffa82..0000000 --- a/baseconfig/arm/armv7/CONFIG_CRYPTO_GHASH_ARM_CE +++ /dev/null @@ -1 +0,0 @@ -# CONFIG_CRYPTO_GHASH_ARM_CE is not set diff --git a/baseconfig/arm/armv7/CONFIG_DRM_SUN4I_HDMI b/baseconfig/arm/armv7/CONFIG_DRM_SUN4I_HDMI new file mode 100644 index 0000000..cda1f60 --- /dev/null +++ b/baseconfig/arm/armv7/CONFIG_DRM_SUN4I_HDMI @@ -0,0 +1 @@ +CONFIG_DRM_SUN4I_HDMI=m diff --git a/baseconfig/arm/armv7/CONFIG_EXYNOS5420_MCPM not set b/baseconfig/arm/armv7/CONFIG_EXYNOS5420_MCPM not set deleted file mode 100644 index d161874..0000000 --- a/baseconfig/arm/armv7/CONFIG_EXYNOS5420_MCPM not set +++ /dev/null @@ -1 +0,0 @@ -# CONFIG_EXYNOS5420_MCPM not set diff --git a/baseconfig/arm/armv7/CONFIG_MMC_QCOM_DML b/baseconfig/arm/armv7/CONFIG_MMC_QCOM_DML new file mode 100644 index 0000000..059d0d4 --- /dev/null +++ b/baseconfig/arm/armv7/CONFIG_MMC_QCOM_DML @@ -0,0 +1 @@ +CONFIG_MMC_QCOM_DML=m diff --git a/baseconfig/arm/armv7/armv7/CONFIG_MMC_SDHCI_OF_ESDHC b/baseconfig/arm/armv7/armv7/CONFIG_MMC_SDHCI_OF_ESDHC new file mode 100644 index 0000000..40e2f68 --- /dev/null +++ b/baseconfig/arm/armv7/armv7/CONFIG_MMC_SDHCI_OF_ESDHC @@ -0,0 +1 @@ +CONFIG_MMC_SDHCI_OF_ESDHC=m diff --git a/baseconfig/powerpc/CONFIG_ADB_PMU_LED_DISK b/baseconfig/powerpc/CONFIG_ADB_PMU_LED_DISK deleted file mode 100644 index 74be3ce..0000000 --- a/baseconfig/powerpc/CONFIG_ADB_PMU_LED_DISK +++ /dev/null @@ -1 +0,0 @@ -CONFIG_ADB_PMU_LED_DISK=y diff --git a/baseconfig/powerpc/CONFIG_MMC_SDHCI_OF b/baseconfig/powerpc/CONFIG_MMC_SDHCI_OF deleted file mode 100644 index d2e2790..0000000 --- a/baseconfig/powerpc/CONFIG_MMC_SDHCI_OF +++ /dev/null @@ -1 +0,0 @@ -CONFIG_MMC_SDHCI_OF=m diff --git a/baseconfig/powerpc/powerpc64/CONFIG_ADB_PMU_LED_DISK b/baseconfig/powerpc/powerpc64/CONFIG_ADB_PMU_LED_DISK new file mode 100644 index 0000000..74be3ce --- /dev/null +++ b/baseconfig/powerpc/powerpc64/CONFIG_ADB_PMU_LED_DISK @@ -0,0 +1 @@ +CONFIG_ADB_PMU_LED_DISK=y diff --git a/baseconfig/x86/i686/CONFIG_MMC_SDHCI_OF b/baseconfig/x86/i686/CONFIG_MMC_SDHCI_OF deleted file mode 100644 index 2e58864..0000000 --- a/baseconfig/x86/i686/CONFIG_MMC_SDHCI_OF +++ /dev/null @@ -1 +0,0 @@ -# CONFIG_MMC_SDHCI_OF is not set diff --git a/baseconfig/x86/i686PAE/CONFIG_MMC_SDHCI_OF b/baseconfig/x86/i686PAE/CONFIG_MMC_SDHCI_OF deleted file mode 100644 index 2e58864..0000000 --- a/baseconfig/x86/i686PAE/CONFIG_MMC_SDHCI_OF +++ /dev/null @@ -1 +0,0 @@ -# CONFIG_MMC_SDHCI_OF is not set diff --git a/bcm2837-bluetooth-support.patch b/bcm2837-bluetooth-support.patch new file mode 100644 index 0000000..bdba4aa --- /dev/null +++ b/bcm2837-bluetooth-support.patch @@ -0,0 +1,642 @@ +From 98dc77d57169f51d100f8b0cb3e4d1e0911ef7a4 Mon Sep 17 00:00:00 2001 +From: Loic Poulain +Date: Tue, 4 Jul 2017 12:57:56 +0200 +Subject: Bluetooth: hci_bcm: Make bcm_request_irq fail if no IRQ resource + +In case of no IRQ resource associated to the bcm_device, requesting +IRQ should return an error in order to not enable low power mgmt. + +Signed-off-by: Loic Poulain +Reported-by: Ian Molton +Signed-off-by: Marcel Holtmann +--- + drivers/bluetooth/hci_bcm.c | 30 ++++++++++++++++-------------- + 1 file changed, 16 insertions(+), 14 deletions(-) + +diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c +index 6a662d0..6b42372 100644 +--- a/drivers/bluetooth/hci_bcm.c ++++ b/drivers/bluetooth/hci_bcm.c +@@ -176,7 +176,7 @@ static irqreturn_t bcm_host_wake(int irq, void *data) + static int bcm_request_irq(struct bcm_data *bcm) + { + struct bcm_device *bdev = bcm->dev; +- int err = 0; ++ int err; + + /* If this is not a platform device, do not enable PM functionalities */ + mutex_lock(&bcm_device_lock); +@@ -185,21 +185,23 @@ static int bcm_request_irq(struct bcm_data *bcm) + goto unlock; + } + +- if (bdev->irq > 0) { +- err = devm_request_irq(&bdev->pdev->dev, bdev->irq, +- bcm_host_wake, IRQF_TRIGGER_RISING, +- "host_wake", bdev); +- if (err) +- goto unlock; ++ if (bdev->irq <= 0) { ++ err = -EOPNOTSUPP; ++ goto unlock; ++ } + +- device_init_wakeup(&bdev->pdev->dev, true); ++ err = devm_request_irq(&bdev->pdev->dev, bdev->irq, bcm_host_wake, ++ IRQF_TRIGGER_RISING, "host_wake", bdev); ++ if (err) ++ goto unlock; + +- pm_runtime_set_autosuspend_delay(&bdev->pdev->dev, +- BCM_AUTOSUSPEND_DELAY); +- pm_runtime_use_autosuspend(&bdev->pdev->dev); +- pm_runtime_set_active(&bdev->pdev->dev); +- pm_runtime_enable(&bdev->pdev->dev); +- } ++ device_init_wakeup(&bdev->pdev->dev, true); ++ ++ pm_runtime_set_autosuspend_delay(&bdev->pdev->dev, ++ BCM_AUTOSUSPEND_DELAY); ++ pm_runtime_use_autosuspend(&bdev->pdev->dev); ++ pm_runtime_set_active(&bdev->pdev->dev); ++ pm_runtime_enable(&bdev->pdev->dev); + + unlock: + mutex_unlock(&bcm_device_lock); +-- +cgit v1.1 + +From 74183a1c50a3c61e62d2e585107ea3c0b942a3ff Mon Sep 17 00:00:00 2001 +From: Marcel Holtmann +Date: Wed, 16 Aug 2017 09:53:30 +0200 +Subject: Bluetooth: hci_bcm: Use operation speed of 4Mbps only for ACPI + devices + +Not all Broadcom controller support the 4Mbps operational speed on UART +devices. This is because the UART clock setting changes might not be +supported. + + < HCI Command: Broadcom Write UART Clock Setting (0x3f|0x0045) plen 1 + 01 . + > HCI Event: Command Complete (0x0e) plen 4 + Broadcom Write UART Clock Setting (0x3f|0x0045) ncmd 1 + Status: Unknown HCI Command (0x01) + +To support any operational speed higher than 3Mbps, support for this +command is required. With that respect it is better to not enforce any +operational speed by default. Only when its support is known, then allow +for higher operational speed. + +This patch assigns the 4Mbps opertional speed only for devices +discovered through ACPI and leave all others at the default 115200. + +Signed-off-by: Marcel Holtmann +Signed-off-by: Johan Hedberg +--- + drivers/bluetooth/hci_bcm.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c +index 6b42372..1eb286a 100644 +--- a/drivers/bluetooth/hci_bcm.c ++++ b/drivers/bluetooth/hci_bcm.c +@@ -59,6 +59,7 @@ struct bcm_device { + bool clk_enabled; + + u32 init_speed; ++ u32 oper_speed; + int irq; + u8 irq_polarity; + +@@ -303,6 +304,7 @@ static int bcm_open(struct hci_uart *hu) + if (hu->tty->dev->parent == dev->pdev->dev.parent) { + bcm->dev = dev; + hu->init_speed = dev->init_speed; ++ hu->oper_speed = dev->oper_speed; + #ifdef CONFIG_PM + dev->hu = hu; + #endif +@@ -699,8 +701,10 @@ static int bcm_resource(struct acpi_resource *ares, void *data) + + case ACPI_RESOURCE_TYPE_SERIAL_BUS: + sb = &ares->data.uart_serial_bus; +- if (sb->type == ACPI_RESOURCE_SERIAL_TYPE_UART) ++ if (sb->type == ACPI_RESOURCE_SERIAL_TYPE_UART) { + dev->init_speed = sb->default_baud_rate; ++ dev->oper_speed = 4000000; ++ } + break; + + default: +@@ -853,7 +857,6 @@ static const struct hci_uart_proto bcm_proto = { + .name = "Broadcom", + .manufacturer = 15, + .init_speed = 115200, +- .oper_speed = 4000000, + .open = bcm_open, + .close = bcm_close, + .flush = bcm_flush, +-- +cgit v1.1 + +From 33cd149e767be9afbab9fcd3d5165a2de62313c8 Mon Sep 17 00:00:00 2001 +From: Loic Poulain +Date: Thu, 17 Aug 2017 19:59:51 +0200 +Subject: Bluetooth: hci_bcm: Add serdev support + +Add basic support for Broadcom serial slave devices. +Probe the serial device, retrieve its maximum speed and +register a new hci uart device. + +Tested/compatible with bcm43438 (RPi3). + +Signed-off-by: Loic Poulain +Signed-off-by: Marcel Holtmann +--- + drivers/bluetooth/Kconfig | 1 + + drivers/bluetooth/hci_bcm.c | 85 +++++++++++++++++++++++++++++++++++++++++++-- + 2 files changed, 84 insertions(+), 2 deletions(-) + +diff --git a/drivers/bluetooth/Kconfig b/drivers/bluetooth/Kconfig +index 3a6ead6..fae5a74 100644 +--- a/drivers/bluetooth/Kconfig ++++ b/drivers/bluetooth/Kconfig +@@ -168,6 +168,7 @@ config BT_HCIUART_INTEL + config BT_HCIUART_BCM + bool "Broadcom protocol support" + depends on BT_HCIUART ++ depends on BT_HCIUART_SERDEV + select BT_HCIUART_H4 + select BT_BCM + help +diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c +index 1eb286a..34882f1 100644 +--- a/drivers/bluetooth/hci_bcm.c ++++ b/drivers/bluetooth/hci_bcm.c +@@ -27,6 +27,8 @@ + #include + #include + #include ++#include ++#include + #include + #include + #include +@@ -34,6 +36,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -46,6 +49,7 @@ + + #define BCM_AUTOSUSPEND_DELAY 5000 /* default autosleep delay */ + ++/* platform device driver resources */ + struct bcm_device { + struct list_head list; + +@@ -69,6 +73,12 @@ struct bcm_device { + #endif + }; + ++/* serdev driver resources */ ++struct bcm_serdev { ++ struct hci_uart hu; ++}; ++ ++/* generic bcm uart resources */ + struct bcm_data { + struct sk_buff *rx_skb; + struct sk_buff_head txq; +@@ -80,6 +90,14 @@ struct bcm_data { + static DEFINE_MUTEX(bcm_device_lock); + static LIST_HEAD(bcm_device_list); + ++static inline void host_set_baudrate(struct hci_uart *hu, unsigned int speed) ++{ ++ if (hu->serdev) ++ serdev_device_set_baudrate(hu->serdev, speed); ++ else ++ hci_uart_set_baudrate(hu, speed); ++} ++ + static int bcm_set_baudrate(struct hci_uart *hu, unsigned int speed) + { + struct hci_dev *hdev = hu->hdev; +@@ -290,6 +308,14 @@ static int bcm_open(struct hci_uart *hu) + + hu->priv = bcm; + ++ /* If this is a serdev defined device, then only use ++ * serdev open primitive and skip the rest. ++ */ ++ if (hu->serdev) { ++ serdev_device_open(hu->serdev); ++ goto out; ++ } ++ + if (!hu->tty->dev) + goto out; + +@@ -325,6 +351,12 @@ static int bcm_close(struct hci_uart *hu) + + bt_dev_dbg(hu->hdev, "hu %p", hu); + ++ /* If this is a serdev defined device, only use serdev ++ * close primitive and then continue as usual. ++ */ ++ if (hu->serdev) ++ serdev_device_close(hu->serdev); ++ + /* Protect bcm->dev against removal of the device or driver */ + mutex_lock(&bcm_device_lock); + if (bcm_device_exists(bdev)) { +@@ -400,7 +432,7 @@ static int bcm_setup(struct hci_uart *hu) + speed = 0; + + if (speed) +- hci_uart_set_baudrate(hu, speed); ++ host_set_baudrate(hu, speed); + + /* Operational speed if any */ + if (hu->oper_speed) +@@ -413,7 +445,7 @@ static int bcm_setup(struct hci_uart *hu) + if (speed) { + err = bcm_set_baudrate(hu, speed); + if (!err) +- hci_uart_set_baudrate(hu, speed); ++ host_set_baudrate(hu, speed); + } + + finalize: +@@ -906,9 +938,57 @@ static struct platform_driver bcm_driver = { + }, + }; + ++static int bcm_serdev_probe(struct serdev_device *serdev) ++{ ++ struct bcm_serdev *bcmdev; ++ u32 speed; ++ int err; ++ ++ bcmdev = devm_kzalloc(&serdev->dev, sizeof(*bcmdev), GFP_KERNEL); ++ if (!bcmdev) ++ return -ENOMEM; ++ ++ bcmdev->hu.serdev = serdev; ++ serdev_device_set_drvdata(serdev, bcmdev); ++ ++ err = device_property_read_u32(&serdev->dev, "max-speed", &speed); ++ if (!err) ++ bcmdev->hu.oper_speed = speed; ++ ++ return hci_uart_register_device(&bcmdev->hu, &bcm_proto); ++} ++ ++static void bcm_serdev_remove(struct serdev_device *serdev) ++{ ++ struct bcm_serdev *bcmdev = serdev_device_get_drvdata(serdev); ++ ++ hci_uart_unregister_device(&bcmdev->hu); ++} ++ ++#ifdef CONFIG_OF ++static const struct of_device_id bcm_bluetooth_of_match[] = { ++ { .compatible = "brcm,bcm43438-bt" }, ++ { }, ++}; ++MODULE_DEVICE_TABLE(of, bcm_bluetooth_of_match); ++#endif ++ ++static struct serdev_device_driver bcm_serdev_driver = { ++ .probe = bcm_serdev_probe, ++ .remove = bcm_serdev_remove, ++ .driver = { ++ .name = "hci_uart_bcm", ++ .of_match_table = of_match_ptr(bcm_bluetooth_of_match), ++ }, ++}; ++ + int __init bcm_init(void) + { ++ /* For now, we need to keep both platform device ++ * driver (ACPI generated) and serdev driver (DT). ++ */ + platform_driver_register(&bcm_driver); ++ serdev_device_driver_register(&bcm_serdev_driver); + + return hci_uart_register_proto(&bcm_proto); + } +@@ -916,6 +996,7 @@ int __init bcm_init(void) + int __exit bcm_deinit(void) + { + platform_driver_unregister(&bcm_driver); ++ serdev_device_driver_unregister(&bcm_serdev_driver); + + return hci_uart_unregister_proto(&bcm_proto); + } +-- +cgit v1.1 + +From 01d5e44ace8a20fc51e0d530f98acb3c365345a5 Mon Sep 17 00:00:00 2001 +From: Marcel Holtmann +Date: Thu, 17 Aug 2017 21:41:09 +0200 +Subject: Bluetooth: hci_bcm: Handle empty packet after firmware loading + +The Broadcom controller on the Raspberry Pi3 sends an empty packet with +packet type 0x00 after launching the firmware. This will cause logging +of errors. + + Bluetooth: hci0: Frame reassembly failed (-84) + +Since this seems to be an intented behaviour of the controller, handle +it gracefully by parsing that empty packet with packet type 0x00 and +then just simply report it as diagnostic packet. + +With that change no errors are logging and the packet itself is actually +recorded in the Bluetooth monitor traces. + + < HCI Command: Broadcom Launch RAM (0x3f|0x004e) plen 4 + Address: 0xffffffff + > HCI Event: Command Complete (0x0e) plen 4 + Broadcom Launch RAM (0x3f|0x004e) ncmd 1 + Status: Success (0x00) + = Vendor Diagnostic (len 0) + < HCI Command: Broadcom Update UART Baud Rate (0x3f|0x0018) plen 6 + 00 00 00 10 0e 00 ...... + > HCI Event: Command Complete (0x0e) plen 4 + Broadcom Update UART Baud Rate (0x3f|0x0018) ncmd 1 + Status: Success (0x00) + < HCI Command: Reset (0x03|0x0003) plen 0 + > HCI Event: Command Complete (0x0e) plen 4 + Reset (0x03|0x0003) ncmd 1 + Status: Success (0x00) + +Signed-off-by: Marcel Holtmann +Signed-off-by: Johan Hedberg +--- + drivers/bluetooth/hci_bcm.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c +index 34882f1..e254011 100644 +--- a/drivers/bluetooth/hci_bcm.c ++++ b/drivers/bluetooth/hci_bcm.c +@@ -44,6 +44,9 @@ + #include "btbcm.h" + #include "hci_uart.h" + ++#define BCM_NULL_PKT 0x00 ++#define BCM_NULL_SIZE 0 ++ + #define BCM_LM_DIAG_PKT 0x07 + #define BCM_LM_DIAG_SIZE 63 + +@@ -468,11 +471,19 @@ finalize: + .lsize = 0, \ + .maxlen = BCM_LM_DIAG_SIZE + ++#define BCM_RECV_NULL \ ++ .type = BCM_NULL_PKT, \ ++ .hlen = BCM_NULL_SIZE, \ ++ .loff = 0, \ ++ .lsize = 0, \ ++ .maxlen = BCM_NULL_SIZE ++ + static const struct h4_recv_pkt bcm_recv_pkts[] = { + { H4_RECV_ACL, .recv = hci_recv_frame }, + { H4_RECV_SCO, .recv = hci_recv_frame }, + { H4_RECV_EVENT, .recv = hci_recv_frame }, + { BCM_RECV_LM_DIAG, .recv = hci_recv_diag }, ++ { BCM_RECV_NULL, .recv = hci_recv_diag }, + }; + + static int bcm_recv(struct hci_uart *hu, const void *data, int count) +-- +cgit v1.1 + +From c34dc3bfa7642fda423208579015d615f7becfa0 Mon Sep 17 00:00:00 2001 +From: Ian Molton +Date: Sat, 8 Jul 2017 17:37:41 +0100 +Subject: Bluetooth: hci_serdev: Introduce hci_uart_unregister_device() + +Several drivers have the same (and incorrect) code in their +_remove() handler. + +Coalesce this into a shared function. + +Signed-off-by: Ian Molton +Reviewed-by: Sebastian Reichel +Signed-off-by: Marcel Holtmann +--- + drivers/bluetooth/hci_serdev.c | 13 +++++++++++++ + drivers/bluetooth/hci_uart.h | 1 + + 2 files changed, 14 insertions(+) + +diff --git a/drivers/bluetooth/hci_serdev.c b/drivers/bluetooth/hci_serdev.c +index aea9301..b725ac4 100644 +--- a/drivers/bluetooth/hci_serdev.c ++++ b/drivers/bluetooth/hci_serdev.c +@@ -354,3 +354,16 @@ err_alloc: + return err; + } + EXPORT_SYMBOL_GPL(hci_uart_register_device); ++ ++void hci_uart_unregister_device(struct hci_uart *hu) ++{ ++ struct hci_dev *hdev = hu->hdev; ++ ++ hci_unregister_dev(hdev); ++ hci_free_dev(hdev); ++ ++ cancel_work_sync(&hu->write_work); ++ ++ hu->proto->close(hu); ++} ++EXPORT_SYMBOL_GPL(hci_uart_unregister_device); +diff --git a/drivers/bluetooth/hci_uart.h b/drivers/bluetooth/hci_uart.h +index c6e9e1c..d9cd95d 100644 +--- a/drivers/bluetooth/hci_uart.h ++++ b/drivers/bluetooth/hci_uart.h +@@ -112,6 +112,7 @@ struct hci_uart { + int hci_uart_register_proto(const struct hci_uart_proto *p); + int hci_uart_unregister_proto(const struct hci_uart_proto *p); + int hci_uart_register_device(struct hci_uart *hu, const struct hci_uart_proto *p); ++void hci_uart_unregister_device(struct hci_uart *hu); + + int hci_uart_tx_wakeup(struct hci_uart *hu); + int hci_uart_init_ready(struct hci_uart *hu); +-- +cgit v1.1 + +From patchwork Thu Aug 17 17:59:48 2017 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [v4,1/4] dt-bindings: net: bluetooth: Add broadcom-bluetooth +X-Patchwork-Submitter: Loic Poulain +X-Patchwork-Id: 802828 +Message-Id: <1502992791-10265-1-git-send-email-loic.poulain@gmail.com> +To: robh+dt@kernel.org, f.fainelli@gmail.com, rjui@broadcom.com, + marcel@holtmann.org, johan.hedberg@gmail.com, stefan.wahren@i2se.com +Cc: devicetree@vger.kernel.org, linux-bluetooth@vger.kernel.org, + linux-rpi-kernel@lists.infradead.org, Loic Poulain +Date: Thu, 17 Aug 2017 19:59:48 +0200 +From: Loic Poulain +List-Id: + +Add binding document for serial bluetooth chips using +Broadcom protocol. + +Signed-off-by: Loic Poulain +Acked-by: Rob Herring +Acked-by: Rob Herring +Acked-by: Rob Herring +--- + v2: dt-bindings as separate patch + rebase on upcoming pi3 dts changes + v3: changes in bcm serdev drivers: + name refactoring and additional comments + Add generic host_set_baudrate method + Use agnostic device_property_read + v4: changes in doc and dts: + Add additional params to broadcom bt dt-bindings + Set the max baudrate to 2000000 instead of 921600 + use chosen/stdout-path instead of console= + remove useless earlyprintk + same changes in bcm283x.dtsi + + .../devicetree/bindings/net/broadcom-bluetooth.txt | 35 ++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + create mode 100644 Documentation/devicetree/bindings/net/broadcom-bluetooth.txt + +diff --git a/Documentation/devicetree/bindings/net/broadcom-bluetooth.txt b/Documentation/devicetree/bindings/net/broadcom-bluetooth.txt +new file mode 100644 +index 0000000..4194ff7 +--- /dev/null ++++ b/Documentation/devicetree/bindings/net/broadcom-bluetooth.txt +@@ -0,0 +1,35 @@ ++Broadcom Bluetooth Chips ++--------------------- ++ ++This documents the binding structure and common properties for serial ++attached Broadcom devices. ++ ++Serial attached Broadcom devices shall be a child node of the host UART ++device the slave device is attached to. ++ ++Required properties: ++ ++ - compatible: should contain one of the following: ++ * "brcm,bcm43438-bt" ++ ++Optional properties: ++ ++ - max-speed: see Documentation/devicetree/bindings/serial/slave-device.txt ++ - shutdown-gpios: GPIO specifier, used to enable the BT module ++ - device-wakeup-gpios: GPIO specifier, used to wakeup the controller ++ - host-wakeup-gpios: GPIO specifier, used to wakeup the host processor ++ - clocks: clock specifier if external clock provided to the controller ++ - clock-names: should be "extclk" ++ ++ ++Example: ++ ++&uart2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart2_pins>; ++ ++ bluetooth { ++ compatible = "brcm,bcm43438-bt"; ++ max-speed = <921600>; ++ }; ++}; +From a92507095467d77f4fd05f54ae8d299459c2c3a3 Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Sun, 10 Sep 2017 19:29:23 +0100 +Subject: [PATCH 1/2] ARM: dts: bcm283x: Use stdout-path instead of console + bootarg + +Add the serial port config to "chosen/stdout-path". +Create serial0/1 aliases referring to uart0 ant uart1 paths. +Remove unneeded earlyprintk. + +Signed-off-by: Loic Poulain +Signed-off-by: Peter Robinson +--- + arch/arm/boot/dts/bcm283x.dtsi | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi +index 431dcfc900c0..013431e3d7c3 100644 +--- a/arch/arm/boot/dts/bcm283x.dtsi ++++ b/arch/arm/boot/dts/bcm283x.dtsi +@@ -20,8 +20,13 @@ + #address-cells = <1>; + #size-cells = <1>; + ++ aliases { ++ serial0 = &uart0; ++ serial1 = &uart1; ++ }; ++ + chosen { +- bootargs = "earlyprintk console=ttyAMA0"; ++ stdout-path = "serial0:115200n8"; + }; + + thermal-zones { +-- +2.13.5 + +From 50252c318fe2fcfcbd0832fa835e7fd1fafd7d2d Mon Sep 17 00:00:00 2001 +From: Peter Robinson +Date: Sun, 10 Sep 2017 19:30:02 +0100 +Subject: [PATCH 2/2] ARM: dts: bcm2837-rpi-3-b: Add bcm43438 serial slave + +Add BCM43438 (bluetooth) as a slave device of uart0 (pl011/ttyAMA0). +This allows to automatically insert the bcm43438 to the bluetooth +subsystem instead of relying on userspace helpers (hciattach). + +Overwrite chosen/stdout-path to use 8250 aux uart as console. + +Signed-off-by: Loic Poulain +Signed-off-by: Peter Robinson +--- + arch/arm/boot/dts/bcm2837-rpi-3-b.dts | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts +index 20725ca487f3..e4488cb3067e 100644 +--- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts ++++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts +@@ -8,6 +8,11 @@ + compatible = "raspberrypi,3-model-b", "brcm,bcm2837"; + model = "Raspberry Pi 3 Model B"; + ++ chosen { ++ /* 8250 auxiliar UART instead of pl011 */ ++ stdout-path = "serial1:115200n8"; ++ }; ++ + memory { + reg = <0 0x40000000>; + }; +@@ -24,6 +29,11 @@ + pinctrl-names = "default"; + pinctrl-0 = <&uart0_gpio32 &gpclk2_gpio43>; + status = "okay"; ++ ++ bluetooth { ++ compatible = "brcm,bcm43438-bt"; ++ max-speed = <2000000>; ++ }; + }; + + /* uart1 is mapped to the pin header */ +-- +2.13.5 + diff --git a/bcm2837-move-dt.patch b/bcm2837-move-dt.patch new file mode 100644 index 0000000..018cf81 --- /dev/null +++ b/bcm2837-move-dt.patch @@ -0,0 +1,516 @@ +From 3bfe25fa9f8a56c5c877c7fd854d89238787c6d8 Mon Sep 17 00:00:00 2001 +From: Eric Anholt +Date: Wed, 26 Jul 2017 13:01:56 -0700 +Subject: ARM: dts: bcm283x: Move the BCM2837 DT contents from arm64 to arm. + +BCM2837 is somewhat unusual in that we build its DT on both arm32 and +arm64. Most devices are being run in arm32 mode. + +Having the body of the DT for 2837 separate from 2835/6 has been a +source of pain, as we often need to make changes that span both +directories simultaneously (for example, the thermal changes for 4.13, +or anything that changes the name of a node referenced by '&' from +board files). Other changes are made more complicated than they need +to be, such as the SDHOST enabling, because we have to split a single +logical change into a 283[56] half and a 2837 half. + +To fix this, make the stub board include file live in arm64 instead of +arm32, and keep all of BCM283x's contents in arm32. From here on, our +changes to DT contents can be submitted through a single tree. + +Signed-off-by: Eric Anholt +Signed-off-by: Florian Fainelli +--- + arch/arm/boot/dts/bcm2837-rpi-3-b.dts | 42 ++++++++++- + arch/arm/boot/dts/bcm2837.dtsi | 86 ++++++++++++++++++++++ + arch/arm64/boot/dts/broadcom/bcm2835-rpi.dtsi | 1 - + arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts | 42 +---------- + arch/arm64/boot/dts/broadcom/bcm2837.dtsi | 86 ---------------------- + .../boot/dts/broadcom/bcm283x-rpi-smsc9514.dtsi | 1 - + .../boot/dts/broadcom/bcm283x-rpi-usb-host.dtsi | 1 - + arch/arm64/boot/dts/broadcom/bcm283x.dtsi | 1 - + 8 files changed, 128 insertions(+), 132 deletions(-) + create mode 100644 arch/arm/boot/dts/bcm2837.dtsi + delete mode 120000 arch/arm64/boot/dts/broadcom/bcm2835-rpi.dtsi + delete mode 100644 arch/arm64/boot/dts/broadcom/bcm2837.dtsi + delete mode 120000 arch/arm64/boot/dts/broadcom/bcm283x-rpi-smsc9514.dtsi + delete mode 120000 arch/arm64/boot/dts/broadcom/bcm283x-rpi-usb-host.dtsi + delete mode 120000 arch/arm64/boot/dts/broadcom/bcm283x.dtsi + +diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts +index c72a27d..972f14d 100644 +--- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts ++++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts +@@ -1 +1,41 @@ +-#include "arm64/broadcom/bcm2837-rpi-3-b.dts" ++/dts-v1/; ++#include "bcm2837.dtsi" ++#include "bcm2835-rpi.dtsi" ++#include "bcm283x-rpi-smsc9514.dtsi" ++#include "bcm283x-rpi-usb-host.dtsi" ++ ++/ { ++ compatible = "raspberrypi,3-model-b", "brcm,bcm2837"; ++ model = "Raspberry Pi 3 Model B"; ++ ++ memory { ++ reg = <0 0x40000000>; ++ }; ++ ++ leds { ++ act { ++ gpios = <&gpio 47 0>; ++ }; ++ }; ++}; ++ ++&uart1 { ++ status = "okay"; ++}; ++ ++/* SDHCI is used to control the SDIO for wireless */ ++&sdhci { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&emmc_gpio34>; ++ status = "okay"; ++ bus-width = <4>; ++ non-removable; ++}; ++ ++/* SDHOST is used to drive the SD card */ ++&sdhost { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sdhost_gpio48>; ++ status = "okay"; ++ bus-width = <4>; ++}; +diff --git a/arch/arm/boot/dts/bcm2837.dtsi b/arch/arm/boot/dts/bcm2837.dtsi +new file mode 100644 +index 0000000..2d5de6f0 +--- /dev/null ++++ b/arch/arm/boot/dts/bcm2837.dtsi +@@ -0,0 +1,86 @@ ++#include "bcm283x.dtsi" ++ ++/ { ++ compatible = "brcm,bcm2837"; ++ ++ soc { ++ ranges = <0x7e000000 0x3f000000 0x1000000>, ++ <0x40000000 0x40000000 0x00001000>; ++ dma-ranges = <0xc0000000 0x00000000 0x3f000000>; ++ ++ local_intc: local_intc { ++ compatible = "brcm,bcm2836-l1-intc"; ++ reg = <0x40000000 0x100>; ++ interrupt-controller; ++ #interrupt-cells = <1>; ++ interrupt-parent = <&local_intc>; ++ }; ++ }; ++ ++ timer { ++ compatible = "arm,armv7-timer"; ++ interrupt-parent = <&local_intc>; ++ interrupts = <0>, // PHYS_SECURE_PPI ++ <1>, // PHYS_NONSECURE_PPI ++ <3>, // VIRT_PPI ++ <2>; // HYP_PPI ++ always-on; ++ }; ++ ++ cpus: cpus { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ cpu0: cpu@0 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a53"; ++ reg = <0>; ++ enable-method = "spin-table"; ++ cpu-release-addr = <0x0 0x000000d8>; ++ }; ++ ++ cpu1: cpu@1 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a53"; ++ reg = <1>; ++ enable-method = "spin-table"; ++ cpu-release-addr = <0x0 0x000000e0>; ++ }; ++ ++ cpu2: cpu@2 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a53"; ++ reg = <2>; ++ enable-method = "spin-table"; ++ cpu-release-addr = <0x0 0x000000e8>; ++ }; ++ ++ cpu3: cpu@3 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a53"; ++ reg = <3>; ++ enable-method = "spin-table"; ++ cpu-release-addr = <0x0 0x000000f0>; ++ }; ++ }; ++}; ++ ++/* Make the BCM2835-style global interrupt controller be a child of the ++ * CPU-local interrupt controller. ++ */ ++&intc { ++ compatible = "brcm,bcm2836-armctrl-ic"; ++ reg = <0x7e00b200 0x200>; ++ interrupt-parent = <&local_intc>; ++ interrupts = <8>; ++}; ++ ++&cpu_thermal { ++ coefficients = <(-538) 412000>; ++}; ++ ++/* enable thermal sensor with the correct compatible property set */ ++&thermal { ++ compatible = "brcm,bcm2837-thermal"; ++ status = "okay"; ++}; +diff --git a/arch/arm64/boot/dts/broadcom/bcm2835-rpi.dtsi b/arch/arm64/boot/dts/broadcom/bcm2835-rpi.dtsi +deleted file mode 120000 +index 3937b77..0000000 +--- a/arch/arm64/boot/dts/broadcom/bcm2835-rpi.dtsi ++++ /dev/null +@@ -1 +0,0 @@ +-../../../../arm/boot/dts/bcm2835-rpi.dtsi +\ No newline at end of file +diff --git a/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts +index 972f14d..699d340 100644 +--- a/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts ++++ b/arch/arm64/boot/dts/broadcom/bcm2837-rpi-3-b.dts +@@ -1,41 +1 @@ +-/dts-v1/; +-#include "bcm2837.dtsi" +-#include "bcm2835-rpi.dtsi" +-#include "bcm283x-rpi-smsc9514.dtsi" +-#include "bcm283x-rpi-usb-host.dtsi" +- +-/ { +- compatible = "raspberrypi,3-model-b", "brcm,bcm2837"; +- model = "Raspberry Pi 3 Model B"; +- +- memory { +- reg = <0 0x40000000>; +- }; +- +- leds { +- act { +- gpios = <&gpio 47 0>; +- }; +- }; +-}; +- +-&uart1 { +- status = "okay"; +-}; +- +-/* SDHCI is used to control the SDIO for wireless */ +-&sdhci { +- pinctrl-names = "default"; +- pinctrl-0 = <&emmc_gpio34>; +- status = "okay"; +- bus-width = <4>; +- non-removable; +-}; +- +-/* SDHOST is used to drive the SD card */ +-&sdhost { +- pinctrl-names = "default"; +- pinctrl-0 = <&sdhost_gpio48>; +- status = "okay"; +- bus-width = <4>; +-}; ++#include "arm/bcm2837-rpi-3-b.dts" +diff --git a/arch/arm64/boot/dts/broadcom/bcm2837.dtsi b/arch/arm64/boot/dts/broadcom/bcm2837.dtsi +deleted file mode 100644 +index 2d5de6f0..0000000 +--- a/arch/arm64/boot/dts/broadcom/bcm2837.dtsi ++++ /dev/null +@@ -1,86 +0,0 @@ +-#include "bcm283x.dtsi" +- +-/ { +- compatible = "brcm,bcm2837"; +- +- soc { +- ranges = <0x7e000000 0x3f000000 0x1000000>, +- <0x40000000 0x40000000 0x00001000>; +- dma-ranges = <0xc0000000 0x00000000 0x3f000000>; +- +- local_intc: local_intc { +- compatible = "brcm,bcm2836-l1-intc"; +- reg = <0x40000000 0x100>; +- interrupt-controller; +- #interrupt-cells = <1>; +- interrupt-parent = <&local_intc>; +- }; +- }; +- +- timer { +- compatible = "arm,armv7-timer"; +- interrupt-parent = <&local_intc>; +- interrupts = <0>, // PHYS_SECURE_PPI +- <1>, // PHYS_NONSECURE_PPI +- <3>, // VIRT_PPI +- <2>; // HYP_PPI +- always-on; +- }; +- +- cpus: cpus { +- #address-cells = <1>; +- #size-cells = <0>; +- +- cpu0: cpu@0 { +- device_type = "cpu"; +- compatible = "arm,cortex-a53"; +- reg = <0>; +- enable-method = "spin-table"; +- cpu-release-addr = <0x0 0x000000d8>; +- }; +- +- cpu1: cpu@1 { +- device_type = "cpu"; +- compatible = "arm,cortex-a53"; +- reg = <1>; +- enable-method = "spin-table"; +- cpu-release-addr = <0x0 0x000000e0>; +- }; +- +- cpu2: cpu@2 { +- device_type = "cpu"; +- compatible = "arm,cortex-a53"; +- reg = <2>; +- enable-method = "spin-table"; +- cpu-release-addr = <0x0 0x000000e8>; +- }; +- +- cpu3: cpu@3 { +- device_type = "cpu"; +- compatible = "arm,cortex-a53"; +- reg = <3>; +- enable-method = "spin-table"; +- cpu-release-addr = <0x0 0x000000f0>; +- }; +- }; +-}; +- +-/* Make the BCM2835-style global interrupt controller be a child of the +- * CPU-local interrupt controller. +- */ +-&intc { +- compatible = "brcm,bcm2836-armctrl-ic"; +- reg = <0x7e00b200 0x200>; +- interrupt-parent = <&local_intc>; +- interrupts = <8>; +-}; +- +-&cpu_thermal { +- coefficients = <(-538) 412000>; +-}; +- +-/* enable thermal sensor with the correct compatible property set */ +-&thermal { +- compatible = "brcm,bcm2837-thermal"; +- status = "okay"; +-}; +diff --git a/arch/arm64/boot/dts/broadcom/bcm283x-rpi-smsc9514.dtsi b/arch/arm64/boot/dts/broadcom/bcm283x-rpi-smsc9514.dtsi +deleted file mode 120000 +index dca7c05..0000000 +--- a/arch/arm64/boot/dts/broadcom/bcm283x-rpi-smsc9514.dtsi ++++ /dev/null +@@ -1 +0,0 @@ +-../../../../arm/boot/dts/bcm283x-rpi-smsc9514.dtsi +\ No newline at end of file +diff --git a/arch/arm64/boot/dts/broadcom/bcm283x-rpi-usb-host.dtsi b/arch/arm64/boot/dts/broadcom/bcm283x-rpi-usb-host.dtsi +deleted file mode 120000 +index cbeebe3..0000000 +--- a/arch/arm64/boot/dts/broadcom/bcm283x-rpi-usb-host.dtsi ++++ /dev/null +@@ -1 +0,0 @@ +-../../../../arm/boot/dts/bcm283x-rpi-usb-host.dtsi +\ No newline at end of file +diff --git a/arch/arm64/boot/dts/broadcom/bcm283x.dtsi b/arch/arm64/boot/dts/broadcom/bcm283x.dtsi +deleted file mode 120000 +index 5f54e4c..0000000 +--- a/arch/arm64/boot/dts/broadcom/bcm283x.dtsi ++++ /dev/null +@@ -1 +0,0 @@ +-../../../../arm/boot/dts/bcm283x.dtsi +\ No newline at end of file +-- +cgit v1.1 + +From 4188ea2aeb6dd8f99ab77662f463e41bc464a704 Mon Sep 17 00:00:00 2001 +From: Stefan Wahren +Date: Sun, 30 Jul 2017 19:10:32 +0200 +Subject: ARM: bcm283x: Define UART pinmuxing on board level + +Until RPI 3 and Zero W the pl011 (uart0) was always on pin 14/15. So in +order to take care of them and other boards in the future, +we need to define UART pinmuxing on board level. + +This work based on Eric Anholt's patch "ARM: bcm2385: Don't force pl011 +onto pins 14/15." and Fabian Vogt's patch "ARM64: dts: bcm2837: assign +uart0 to BT and uart1 to pin headers". + +Signed-off-by: Stefan Wahren +Reviewed-by: Eric Anholt +Signed-off-by: Eric Anholt +--- + arch/arm/boot/dts/bcm2835-rpi-a-plus.dts | 6 ++++++ + arch/arm/boot/dts/bcm2835-rpi-a.dts | 6 ++++++ + arch/arm/boot/dts/bcm2835-rpi-b-plus.dts | 6 ++++++ + arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts | 6 ++++++ + arch/arm/boot/dts/bcm2835-rpi-b.dts | 6 ++++++ + arch/arm/boot/dts/bcm2835-rpi-zero.dts | 6 ++++++ + arch/arm/boot/dts/bcm2835-rpi.dtsi | 2 +- + arch/arm/boot/dts/bcm2836-rpi-2-b.dts | 6 ++++++ + arch/arm/boot/dts/bcm2837-rpi-3-b.dts | 10 ++++++++++ + 9 files changed, 53 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts +index d070454..9f86649 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts ++++ b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts +@@ -99,3 +99,9 @@ + &hdmi { + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>; + }; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_gpio14>; ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/bcm2835-rpi-a.dts b/arch/arm/boot/dts/bcm2835-rpi-a.dts +index 46d078e..4b1af06 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi-a.dts ++++ b/arch/arm/boot/dts/bcm2835-rpi-a.dts +@@ -94,3 +94,9 @@ + &hdmi { + hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>; + }; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_gpio14>; ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts +index 432088e..a846f1e 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts ++++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts +@@ -101,3 +101,9 @@ + &hdmi { + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>; + }; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_gpio14>; ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts +index 4133bc2..e860964 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts ++++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts +@@ -94,3 +94,9 @@ + &hdmi { + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>; + }; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_gpio14>; ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts +index 4d56fe3..5d77f3f 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi-b.dts ++++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts +@@ -89,3 +89,9 @@ + &hdmi { + hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>; + }; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_gpio14>; ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/bcm2835-rpi-zero.dts b/arch/arm/boot/dts/bcm2835-rpi-zero.dts +index 79a20d5..7036240 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi-zero.dts ++++ b/arch/arm/boot/dts/bcm2835-rpi-zero.dts +@@ -103,3 +103,9 @@ + &hdmi { + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>; + }; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_gpio14>; ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi +index e55b362..e36c392 100644 +--- a/arch/arm/boot/dts/bcm2835-rpi.dtsi ++++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi +@@ -39,7 +39,7 @@ + }; + + alt0: alt0 { +- brcm,pins = <4 5 7 8 9 10 11 14 15>; ++ brcm,pins = <4 5 7 8 9 10 11>; + brcm,function = ; + }; + }; +diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts +index bf19e8c..e8de414 100644 +--- a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts ++++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts +@@ -39,3 +39,9 @@ + &hdmi { + hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>; + }; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_gpio14>; ++ status = "okay"; ++}; +diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts +index 972f14d..20725ca 100644 +--- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts ++++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts +@@ -19,7 +19,17 @@ + }; + }; + ++/* uart0 communicates with the BT module */ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_gpio32 &gpclk2_gpio43>; ++ status = "okay"; ++}; ++ ++/* uart1 is mapped to the pin header */ + &uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_gpio14>; + status = "okay"; + }; + +-- +cgit v1.1 + diff --git a/kernel-aarch64-debug.config b/kernel-aarch64-debug.config index 6fc8e76..438df06 100644 --- a/kernel-aarch64-debug.config +++ b/kernel-aarch64-debug.config @@ -1014,6 +1014,7 @@ CONFIG_CRYPTO_FIPS=y CONFIG_CRYPTO_GCM=m CONFIG_CRYPTO_GF128MUL=y CONFIG_CRYPTO_GHASH_ARM64_CE=m +CONFIG_CRYPTO_GHASH_ARM_CE=m CONFIG_CRYPTO_GHASH=m CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_HW=y @@ -1319,7 +1320,6 @@ CONFIG_DRM_SIL_SII8620=m # CONFIG_DRM_SIS is not set # CONFIG_DRM_STM is not set CONFIG_DRM_SUN4I_BACKEND=m -CONFIG_DRM_SUN4I_HDMI=m CONFIG_DRM_SUN8I_MIXER=m # CONFIG_DRM_TDFX is not set # CONFIG_DRM_TEGRA_DEBUG is not set @@ -3102,11 +3102,10 @@ CONFIG_MMC_DW=m CONFIG_MMC_DW_PCI=m CONFIG_MMC_DW_PLTFM=m CONFIG_MMC_DW_ROCKCHIP=m -CONFIG_MMC=m CONFIG_MMC_MESON_GX=m # CONFIG_MMC_MTK is not set CONFIG_MMC_MVSDIO=m -# CONFIG_MMC_QCOM_DML is not set +CONFIG_MMC_QCOM_DML=m CONFIG_MMC_REALTEK_PCI=m CONFIG_MMC_REALTEK_USB=m CONFIG_MMC_RICOH_MMC=y @@ -3119,7 +3118,6 @@ CONFIG_MMC_SDHCI_MSM=m CONFIG_MMC_SDHCI_OF_ARASAN=m # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set -# CONFIG_MMC_SDHCI_OF is not set CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_PXAV3=m @@ -3136,6 +3134,7 @@ CONFIG_MMC_USHC=m CONFIG_MMC_VIA_SDMMC=m CONFIG_MMC_VUB300=m CONFIG_MMC_WBSD=m +CONFIG_MMC=y CONFIG_MMIOTRACE=y CONFIG_MMU=y # CONFIG_MODULE_COMPRESS is not set @@ -4173,9 +4172,9 @@ CONFIG_PWM_SUN4I=m CONFIG_PWM_SYSFS=y CONFIG_PWM_TEGRA=m CONFIG_PWM=y -CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set -CONFIG_PWRSEQ_SIMPLE=m +CONFIG_PWRSEQ_EMMC=y +CONFIG_PWRSEQ_SD8787=m +CONFIG_PWRSEQ_SIMPLE=y # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set # CONFIG_QCA7000_UART is not set diff --git a/kernel-aarch64.config b/kernel-aarch64.config index ff26f1a..9b8bbd4 100644 --- a/kernel-aarch64.config +++ b/kernel-aarch64.config @@ -1013,6 +1013,7 @@ CONFIG_CRYPTO_FIPS=y CONFIG_CRYPTO_GCM=m CONFIG_CRYPTO_GF128MUL=y CONFIG_CRYPTO_GHASH_ARM64_CE=m +CONFIG_CRYPTO_GHASH_ARM_CE=m CONFIG_CRYPTO_GHASH=m CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_HW=y @@ -1309,7 +1310,6 @@ CONFIG_DRM_SIL_SII8620=m # CONFIG_DRM_SIS is not set # CONFIG_DRM_STM is not set CONFIG_DRM_SUN4I_BACKEND=m -CONFIG_DRM_SUN4I_HDMI=m CONFIG_DRM_SUN8I_MIXER=m # CONFIG_DRM_TDFX is not set # CONFIG_DRM_TEGRA_DEBUG is not set @@ -3082,11 +3082,10 @@ CONFIG_MMC_DW=m CONFIG_MMC_DW_PCI=m CONFIG_MMC_DW_PLTFM=m CONFIG_MMC_DW_ROCKCHIP=m -CONFIG_MMC=m CONFIG_MMC_MESON_GX=m # CONFIG_MMC_MTK is not set CONFIG_MMC_MVSDIO=m -# CONFIG_MMC_QCOM_DML is not set +CONFIG_MMC_QCOM_DML=m CONFIG_MMC_REALTEK_PCI=m CONFIG_MMC_REALTEK_USB=m CONFIG_MMC_RICOH_MMC=y @@ -3099,7 +3098,6 @@ CONFIG_MMC_SDHCI_MSM=m CONFIG_MMC_SDHCI_OF_ARASAN=m # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set -# CONFIG_MMC_SDHCI_OF is not set CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_PXAV3=m @@ -3116,6 +3114,7 @@ CONFIG_MMC_USHC=m CONFIG_MMC_VIA_SDMMC=m CONFIG_MMC_VUB300=m CONFIG_MMC_WBSD=m +CONFIG_MMC=y CONFIG_MMU=y # CONFIG_MODULE_COMPRESS is not set # CONFIG_MODULE_FORCE_LOAD is not set @@ -4151,9 +4150,9 @@ CONFIG_PWM_SUN4I=m CONFIG_PWM_SYSFS=y CONFIG_PWM_TEGRA=m CONFIG_PWM=y -CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set -CONFIG_PWRSEQ_SIMPLE=m +CONFIG_PWRSEQ_EMMC=y +CONFIG_PWRSEQ_SD8787=m +CONFIG_PWRSEQ_SIMPLE=y # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set # CONFIG_QCA7000_UART is not set diff --git a/kernel-armv7hl-debug.config b/kernel-armv7hl-debug.config index 96dd0ac..0187d8c 100644 --- a/kernel-armv7hl-debug.config +++ b/kernel-armv7hl-debug.config @@ -1068,7 +1068,7 @@ CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_FIPS=y CONFIG_CRYPTO_GCM=m CONFIG_CRYPTO_GF128MUL=y -# CONFIG_CRYPTO_GHASH_ARM_CE is not set +CONFIG_CRYPTO_GHASH_ARM_CE=m CONFIG_CRYPTO_GHASH=m CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_HW=y @@ -3304,7 +3304,6 @@ CONFIG_MMC_DW=m CONFIG_MMC_DW_PCI=m CONFIG_MMC_DW_PLTFM=m CONFIG_MMC_DW_ROCKCHIP=m -CONFIG_MMC=m # CONFIG_MMC_MESON_GX is not set # CONFIG_MMC_MTK is not set CONFIG_MMC_MVSDIO=m @@ -3325,8 +3324,7 @@ CONFIG_MMC_SDHCI=m CONFIG_MMC_SDHCI_MSM=m CONFIG_MMC_SDHCI_OF_ARASAN=m # CONFIG_MMC_SDHCI_OF_AT91 is not set -# CONFIG_MMC_SDHCI_OF_ESDHC is not set -# CONFIG_MMC_SDHCI_OF is not set +CONFIG_MMC_SDHCI_OF_ESDHC=m CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_PXAV2=m @@ -3348,6 +3346,7 @@ CONFIG_MMC_USHC=m CONFIG_MMC_VIA_SDMMC=m CONFIG_MMC_VUB300=m CONFIG_MMC_WBSD=m +CONFIG_MMC=y CONFIG_MMIOTRACE=y CONFIG_MMP_PDMA=y CONFIG_MMP_TDMA=y @@ -4494,9 +4493,9 @@ CONFIG_PWM_TIPWMSS=y CONFIG_PWM_TWL_LED=m CONFIG_PWM_TWL=m CONFIG_PWM=y -CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set -CONFIG_PWRSEQ_SIMPLE=m +CONFIG_PWRSEQ_EMMC=y +CONFIG_PWRSEQ_SD8787=m +CONFIG_PWRSEQ_SIMPLE=y CONFIG_PXA_DMA=y # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set diff --git a/kernel-armv7hl-lpae-debug.config b/kernel-armv7hl-lpae-debug.config index 1977b34..03c99ae 100644 --- a/kernel-armv7hl-lpae-debug.config +++ b/kernel-armv7hl-lpae-debug.config @@ -1017,7 +1017,7 @@ CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_FIPS=y CONFIG_CRYPTO_GCM=m CONFIG_CRYPTO_GF128MUL=y -# CONFIG_CRYPTO_GHASH_ARM_CE is not set +CONFIG_CRYPTO_GHASH_ARM_CE=m CONFIG_CRYPTO_GHASH=m CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_HW=y @@ -3158,12 +3158,11 @@ CONFIG_MMC_DW=m CONFIG_MMC_DW_PCI=m CONFIG_MMC_DW_PLTFM=m CONFIG_MMC_DW_ROCKCHIP=m -CONFIG_MMC=m # CONFIG_MMC_MESON_GX is not set # CONFIG_MMC_MTK is not set CONFIG_MMC_MVSDIO=m CONFIG_MMC_OMAP_HS=m -# CONFIG_MMC_QCOM_DML is not set +CONFIG_MMC_QCOM_DML=m CONFIG_MMC_REALTEK_PCI=m CONFIG_MMC_REALTEK_USB=m CONFIG_MMC_RICOH_MMC=y @@ -3176,7 +3175,6 @@ CONFIG_MMC_SDHCI=m CONFIG_MMC_SDHCI_OF_ARASAN=m # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set -# CONFIG_MMC_SDHCI_OF is not set CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_PXAV3=m @@ -3196,6 +3194,7 @@ CONFIG_MMC_USHC=m CONFIG_MMC_VIA_SDMMC=m CONFIG_MMC_VUB300=m CONFIG_MMC_WBSD=m +CONFIG_MMC=y CONFIG_MMIOTRACE=y CONFIG_MMU=y # CONFIG_MODULE_COMPRESS is not set @@ -4245,9 +4244,9 @@ CONFIG_PWM_SUN4I=m CONFIG_PWM_SYSFS=y CONFIG_PWM_TEGRA=m CONFIG_PWM=y -CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set -CONFIG_PWRSEQ_SIMPLE=m +CONFIG_PWRSEQ_EMMC=y +CONFIG_PWRSEQ_SD8787=m +CONFIG_PWRSEQ_SIMPLE=y # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set # CONFIG_QCA7000_UART is not set diff --git a/kernel-armv7hl-lpae.config b/kernel-armv7hl-lpae.config index 8e93747..3ac1bd2 100644 --- a/kernel-armv7hl-lpae.config +++ b/kernel-armv7hl-lpae.config @@ -1015,7 +1015,7 @@ CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_FIPS=y CONFIG_CRYPTO_GCM=m CONFIG_CRYPTO_GF128MUL=y -# CONFIG_CRYPTO_GHASH_ARM_CE is not set +CONFIG_CRYPTO_GHASH_ARM_CE=m CONFIG_CRYPTO_GHASH=m CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_HW=y @@ -3138,12 +3138,11 @@ CONFIG_MMC_DW=m CONFIG_MMC_DW_PCI=m CONFIG_MMC_DW_PLTFM=m CONFIG_MMC_DW_ROCKCHIP=m -CONFIG_MMC=m # CONFIG_MMC_MESON_GX is not set # CONFIG_MMC_MTK is not set CONFIG_MMC_MVSDIO=m CONFIG_MMC_OMAP_HS=m -# CONFIG_MMC_QCOM_DML is not set +CONFIG_MMC_QCOM_DML=m CONFIG_MMC_REALTEK_PCI=m CONFIG_MMC_REALTEK_USB=m CONFIG_MMC_RICOH_MMC=y @@ -3156,7 +3155,6 @@ CONFIG_MMC_SDHCI=m CONFIG_MMC_SDHCI_OF_ARASAN=m # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set -# CONFIG_MMC_SDHCI_OF is not set CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_PXAV3=m @@ -3176,6 +3174,7 @@ CONFIG_MMC_USHC=m CONFIG_MMC_VIA_SDMMC=m CONFIG_MMC_VUB300=m CONFIG_MMC_WBSD=m +CONFIG_MMC=y CONFIG_MMU=y # CONFIG_MODULE_COMPRESS is not set # CONFIG_MODULE_FORCE_LOAD is not set @@ -4223,9 +4222,9 @@ CONFIG_PWM_SUN4I=m CONFIG_PWM_SYSFS=y CONFIG_PWM_TEGRA=m CONFIG_PWM=y -CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set -CONFIG_PWRSEQ_SIMPLE=m +CONFIG_PWRSEQ_EMMC=y +CONFIG_PWRSEQ_SD8787=m +CONFIG_PWRSEQ_SIMPLE=y # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set # CONFIG_QCA7000_UART is not set diff --git a/kernel-armv7hl.config b/kernel-armv7hl.config index 852fdea..eef755f 100644 --- a/kernel-armv7hl.config +++ b/kernel-armv7hl.config @@ -1066,7 +1066,7 @@ CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_FIPS=y CONFIG_CRYPTO_GCM=m CONFIG_CRYPTO_GF128MUL=y -# CONFIG_CRYPTO_GHASH_ARM_CE is not set +CONFIG_CRYPTO_GHASH_ARM_CE=m CONFIG_CRYPTO_GHASH=m CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_HW=y @@ -3284,7 +3284,6 @@ CONFIG_MMC_DW=m CONFIG_MMC_DW_PCI=m CONFIG_MMC_DW_PLTFM=m CONFIG_MMC_DW_ROCKCHIP=m -CONFIG_MMC=m # CONFIG_MMC_MESON_GX is not set # CONFIG_MMC_MTK is not set CONFIG_MMC_MVSDIO=m @@ -3305,8 +3304,7 @@ CONFIG_MMC_SDHCI=m CONFIG_MMC_SDHCI_MSM=m CONFIG_MMC_SDHCI_OF_ARASAN=m # CONFIG_MMC_SDHCI_OF_AT91 is not set -# CONFIG_MMC_SDHCI_OF_ESDHC is not set -# CONFIG_MMC_SDHCI_OF is not set +CONFIG_MMC_SDHCI_OF_ESDHC=m CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_PXAV2=m @@ -3328,6 +3326,7 @@ CONFIG_MMC_USHC=m CONFIG_MMC_VIA_SDMMC=m CONFIG_MMC_VUB300=m CONFIG_MMC_WBSD=m +CONFIG_MMC=y CONFIG_MMP_PDMA=y CONFIG_MMP_TDMA=y CONFIG_MMU=y @@ -4472,9 +4471,9 @@ CONFIG_PWM_TIPWMSS=y CONFIG_PWM_TWL_LED=m CONFIG_PWM_TWL=m CONFIG_PWM=y -CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set -CONFIG_PWRSEQ_SIMPLE=m +CONFIG_PWRSEQ_EMMC=y +CONFIG_PWRSEQ_SD8787=m +CONFIG_PWRSEQ_SIMPLE=y CONFIG_PXA_DMA=y # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set diff --git a/kernel-i686-PAE.config b/kernel-i686-PAE.config index 52a2c1c..4f8f7fd 100644 --- a/kernel-i686-PAE.config +++ b/kernel-i686-PAE.config @@ -3001,7 +3001,6 @@ CONFIG_MMC_SDHCI=m # CONFIG_MMC_SDHCI_OF_ARASAN is not set # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set -# CONFIG_MMC_SDHCI_OF is not set CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_XENON=m @@ -4000,7 +3999,7 @@ CONFIG_PWM_LPSS_PLATFORM=m # CONFIG_PWM_PCA9685 is not set CONFIG_PWM=y CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SD8787=m CONFIG_PWRSEQ_SIMPLE=m # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set diff --git a/kernel-i686-PAEdebug.config b/kernel-i686-PAEdebug.config index ef80c58..098c8dc 100644 --- a/kernel-i686-PAEdebug.config +++ b/kernel-i686-PAEdebug.config @@ -3021,7 +3021,6 @@ CONFIG_MMC_SDHCI=m # CONFIG_MMC_SDHCI_OF_ARASAN is not set # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set -# CONFIG_MMC_SDHCI_OF is not set CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_XENON=m @@ -4021,7 +4020,7 @@ CONFIG_PWM_LPSS_PLATFORM=m # CONFIG_PWM_PCA9685 is not set CONFIG_PWM=y CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SD8787=m CONFIG_PWRSEQ_SIMPLE=m # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set diff --git a/kernel-i686-debug.config b/kernel-i686-debug.config index c011045..c960be7 100644 --- a/kernel-i686-debug.config +++ b/kernel-i686-debug.config @@ -3021,7 +3021,6 @@ CONFIG_MMC_SDHCI=m # CONFIG_MMC_SDHCI_OF_ARASAN is not set # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set -# CONFIG_MMC_SDHCI_OF is not set CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_XENON=m @@ -4021,7 +4020,7 @@ CONFIG_PWM_LPSS_PLATFORM=m # CONFIG_PWM_PCA9685 is not set CONFIG_PWM=y CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SD8787=m CONFIG_PWRSEQ_SIMPLE=m # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set diff --git a/kernel-i686.config b/kernel-i686.config index 1b92c6a..5e77c70 100644 --- a/kernel-i686.config +++ b/kernel-i686.config @@ -3001,7 +3001,6 @@ CONFIG_MMC_SDHCI=m # CONFIG_MMC_SDHCI_OF_ARASAN is not set # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set -# CONFIG_MMC_SDHCI_OF is not set CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_XENON=m @@ -4000,7 +3999,7 @@ CONFIG_PWM_LPSS_PLATFORM=m # CONFIG_PWM_PCA9685 is not set CONFIG_PWM=y CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SD8787=m CONFIG_PWRSEQ_SIMPLE=m # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set diff --git a/kernel-ppc64-debug.config b/kernel-ppc64-debug.config index da5951c..d51eebc 100644 --- a/kernel-ppc64-debug.config +++ b/kernel-ppc64-debug.config @@ -2864,7 +2864,6 @@ CONFIG_MMC_SDHCI=m # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set # CONFIG_MMC_SDHCI_OF_HLWD is not set -CONFIG_MMC_SDHCI_OF=m CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_XENON=m @@ -3837,7 +3836,7 @@ CONFIG_PWM_HIBVT=m # CONFIG_PWM_PCA9685 is not set CONFIG_PWM=y CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SD8787=m CONFIG_PWRSEQ_SIMPLE=m # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set diff --git a/kernel-ppc64.config b/kernel-ppc64.config index 4df97c4..46bb44a 100644 --- a/kernel-ppc64.config +++ b/kernel-ppc64.config @@ -2843,7 +2843,6 @@ CONFIG_MMC_SDHCI=m # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set # CONFIG_MMC_SDHCI_OF_HLWD is not set -CONFIG_MMC_SDHCI_OF=m CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_XENON=m @@ -3814,7 +3813,7 @@ CONFIG_PWM_HIBVT=m # CONFIG_PWM_PCA9685 is not set CONFIG_PWM=y CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SD8787=m CONFIG_PWRSEQ_SIMPLE=m # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set diff --git a/kernel-ppc64le-debug.config b/kernel-ppc64le-debug.config index 9171912..7578714 100644 --- a/kernel-ppc64le-debug.config +++ b/kernel-ppc64le-debug.config @@ -92,7 +92,6 @@ CONFIG_AD7766=m # CONFIG_AD9832 is not set # CONFIG_AD9834 is not set CONFIG_ADAPTEC_STARFIRE=m -CONFIG_ADB_PMU_LED_DISK=y # CONFIG_ADE7753 is not set # CONFIG_ADE7754 is not set # CONFIG_ADE7758 is not set @@ -2810,7 +2809,6 @@ CONFIG_MMC_SDHCI=m # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set # CONFIG_MMC_SDHCI_OF_HLWD is not set -CONFIG_MMC_SDHCI_OF=m CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_XENON=m @@ -3777,7 +3775,7 @@ CONFIG_PWM_HIBVT=m # CONFIG_PWM_PCA9685 is not set CONFIG_PWM=y CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SD8787=m CONFIG_PWRSEQ_SIMPLE=m # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set diff --git a/kernel-ppc64le.config b/kernel-ppc64le.config index 95ce5a0..7fc5ca9 100644 --- a/kernel-ppc64le.config +++ b/kernel-ppc64le.config @@ -92,7 +92,6 @@ CONFIG_AD7766=m # CONFIG_AD9832 is not set # CONFIG_AD9834 is not set CONFIG_ADAPTEC_STARFIRE=m -CONFIG_ADB_PMU_LED_DISK=y # CONFIG_ADE7753 is not set # CONFIG_ADE7754 is not set # CONFIG_ADE7758 is not set @@ -2789,7 +2788,6 @@ CONFIG_MMC_SDHCI=m # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set # CONFIG_MMC_SDHCI_OF_HLWD is not set -CONFIG_MMC_SDHCI_OF=m CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_XENON=m @@ -3754,7 +3752,7 @@ CONFIG_PWM_HIBVT=m # CONFIG_PWM_PCA9685 is not set CONFIG_PWM=y CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SD8787=m CONFIG_PWRSEQ_SIMPLE=m # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set diff --git a/kernel-ppc64p7-debug.config b/kernel-ppc64p7-debug.config index ad638cf..6b2d0ea 100644 --- a/kernel-ppc64p7-debug.config +++ b/kernel-ppc64p7-debug.config @@ -92,7 +92,6 @@ CONFIG_AD7766=m # CONFIG_AD9832 is not set # CONFIG_AD9834 is not set CONFIG_ADAPTEC_STARFIRE=m -CONFIG_ADB_PMU_LED_DISK=y # CONFIG_ADE7753 is not set # CONFIG_ADE7754 is not set # CONFIG_ADE7758 is not set @@ -2809,7 +2808,6 @@ CONFIG_MMC_SDHCI=m # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set # CONFIG_MMC_SDHCI_OF_HLWD is not set -CONFIG_MMC_SDHCI_OF=m CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_XENON=m @@ -3776,7 +3774,7 @@ CONFIG_PWM_HIBVT=m # CONFIG_PWM_PCA9685 is not set CONFIG_PWM=y CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SD8787=m CONFIG_PWRSEQ_SIMPLE=m # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set diff --git a/kernel-ppc64p7.config b/kernel-ppc64p7.config index bd49c9e..3444a63 100644 --- a/kernel-ppc64p7.config +++ b/kernel-ppc64p7.config @@ -92,7 +92,6 @@ CONFIG_AD7766=m # CONFIG_AD9832 is not set # CONFIG_AD9834 is not set CONFIG_ADAPTEC_STARFIRE=m -CONFIG_ADB_PMU_LED_DISK=y # CONFIG_ADE7753 is not set # CONFIG_ADE7754 is not set # CONFIG_ADE7758 is not set @@ -2788,7 +2787,6 @@ CONFIG_MMC_SDHCI=m # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set # CONFIG_MMC_SDHCI_OF_HLWD is not set -CONFIG_MMC_SDHCI_OF=m CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_XENON=m @@ -3753,7 +3751,7 @@ CONFIG_PWM_HIBVT=m # CONFIG_PWM_PCA9685 is not set CONFIG_PWM=y CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SD8787=m CONFIG_PWRSEQ_SIMPLE=m # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set diff --git a/kernel-s390x-debug.config b/kernel-s390x-debug.config index 0b5805b..c46c8e8 100644 --- a/kernel-s390x-debug.config +++ b/kernel-s390x-debug.config @@ -2746,7 +2746,6 @@ CONFIG_MMC_SDHCI=m # CONFIG_MMC_SDHCI_OF_ARASAN is not set # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set -# CONFIG_MMC_SDHCI_OF is not set CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_XENON=m @@ -3665,7 +3664,7 @@ CONFIG_PWM_HIBVT=m # CONFIG_PWM is not set # CONFIG_PWM_PCA9685 is not set CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SD8787=m CONFIG_PWRSEQ_SIMPLE=m # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set diff --git a/kernel-s390x.config b/kernel-s390x.config index 3503494..21f70f7 100644 --- a/kernel-s390x.config +++ b/kernel-s390x.config @@ -2725,7 +2725,6 @@ CONFIG_MMC_SDHCI=m # CONFIG_MMC_SDHCI_OF_ARASAN is not set # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set -# CONFIG_MMC_SDHCI_OF is not set CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_XENON=m @@ -3642,7 +3641,7 @@ CONFIG_PWM_HIBVT=m # CONFIG_PWM is not set # CONFIG_PWM_PCA9685 is not set CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SD8787=m CONFIG_PWRSEQ_SIMPLE=m # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set diff --git a/kernel-x86_64-debug.config b/kernel-x86_64-debug.config index e6fbdb4..f5fdc76 100644 --- a/kernel-x86_64-debug.config +++ b/kernel-x86_64-debug.config @@ -3067,7 +3067,6 @@ CONFIG_MMC_SDHCI=m # CONFIG_MMC_SDHCI_OF_ARASAN is not set # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set -# CONFIG_MMC_SDHCI_OF is not set CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_XENON=m @@ -4057,7 +4056,7 @@ CONFIG_PWM_LPSS_PLATFORM=m # CONFIG_PWM_PCA9685 is not set CONFIG_PWM=y CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SD8787=m CONFIG_PWRSEQ_SIMPLE=m # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set diff --git a/kernel-x86_64.config b/kernel-x86_64.config index e33386a..c8334ad 100644 --- a/kernel-x86_64.config +++ b/kernel-x86_64.config @@ -3047,7 +3047,6 @@ CONFIG_MMC_SDHCI=m # CONFIG_MMC_SDHCI_OF_ARASAN is not set # CONFIG_MMC_SDHCI_OF_AT91 is not set # CONFIG_MMC_SDHCI_OF_ESDHC is not set -# CONFIG_MMC_SDHCI_OF is not set CONFIG_MMC_SDHCI_PCI=m CONFIG_MMC_SDHCI_PLTFM=m CONFIG_MMC_SDHCI_XENON=m @@ -4036,7 +4035,7 @@ CONFIG_PWM_LPSS_PLATFORM=m # CONFIG_PWM_PCA9685 is not set CONFIG_PWM=y CONFIG_PWRSEQ_EMMC=m -# CONFIG_PWRSEQ_SD8787 is not set +CONFIG_PWRSEQ_SD8787=m CONFIG_PWRSEQ_SIMPLE=m # CONFIG_QCA7000 is not set # CONFIG_QCA7000_SPI is not set diff --git a/kernel.spec b/kernel.spec index 3a9a278..1c739b9 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 300 +%global baserelease 301 %global fedora_build %{baserelease} # base_sublevel is the kernel version we're starting with and patching @@ -621,9 +621,12 @@ Patch320: bcm283x-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-constructed-BO # Fix USB on the RPi https://patchwork.kernel.org/patch/9879371/ Patch321: bcm283x-dma-mapping-skip-USB-devices-when-configuring-DMA-during-probe.patch -# This breaks RPi booting with a LPAE kernel, we don't support the DSI ports currently -# Revert it while I engage upstream to work out what's going on -Patch322: Revert-ARM-dts-bcm2835-Add-the-DSI-module-nodes-and-.patch +# Updat3 move of bcm2837, landed in 4.14 +Patch322: bcm2837-move-dt.patch + +# bcm2837 bluetooth support +# +Patch323: bcm2837-bluetooth-support.patch # 400 - IBM (ppc/s390x) patches @@ -2204,6 +2207,10 @@ fi # # %changelog +* Sun Sep 10 2017 Peter Robinson 4.13.1-301 +- Raspberry Pi serial console fixes, minor other Pi improvements +- Various ARM cleanups, build mmc/pwrseq non modular + * Sun Sep 10 2017 Laura Abbott - 4.13.1-300 - Linux v4.13.1