diff --git a/packages/graphics/bcm2835-driver/package.mk b/packages/graphics/bcm2835-driver/package.mk index 1d5dfe26eb..689e6dd991 100644 --- a/packages/graphics/bcm2835-driver/package.mk +++ b/packages/graphics/bcm2835-driver/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="bcm2835-driver" -PKG_VERSION="ec63df1" +PKG_VERSION="a021d6e" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="nonfree" diff --git a/packages/linux-drivers/RTL8192CU/patches/RTL8192CU-kernel-4.8.patch b/packages/linux-drivers/RTL8192CU/patches/RTL8192CU-kernel-4.8.patch new file mode 100644 index 0000000000..6ed92e7bfd --- /dev/null +++ b/packages/linux-drivers/RTL8192CU/patches/RTL8192CU-kernel-4.8.patch @@ -0,0 +1,18 @@ +diff -Naur a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c +--- a/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:43:17.669610692 +0100 ++++ b/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:45:09.268139751 +0100 +@@ -1789,7 +1789,14 @@ + } + else + { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0) ++ struct cfg80211_scan_info info = { ++ .aborted = aborted ++ }; ++ cfg80211_scan_done(pwdev_priv->scan_request, &info); ++#else + cfg80211_scan_done(pwdev_priv->scan_request, aborted); ++#endif + } + + pwdev_priv->scan_request = NULL; diff --git a/packages/linux-drivers/RTL8192DU/patches/RTL8192DU-kernel-4.8.patch b/packages/linux-drivers/RTL8192DU/patches/RTL8192DU-kernel-4.8.patch new file mode 100644 index 0000000000..c6f517ba64 --- /dev/null +++ b/packages/linux-drivers/RTL8192DU/patches/RTL8192DU-kernel-4.8.patch @@ -0,0 +1,18 @@ +diff -Naur a/os_dep/ioctl_cfg80211.c b/os_dep/ioctl_cfg80211.c +--- a/os_dep/ioctl_cfg80211.c 2016-09-11 01:51:12.796375013 +0100 ++++ b/os_dep/ioctl_cfg80211.c 2016-09-11 01:52:39.942348529 +0100 +@@ -1425,7 +1425,14 @@ + } + else + { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0) ++ struct cfg80211_scan_info info = { ++ .aborted = aborted ++ }; ++ cfg80211_scan_done(pwdev_priv->scan_request, &info); ++#else + cfg80211_scan_done(pwdev_priv->scan_request, aborted); ++#endif + } + + pwdev_priv->scan_request = NULL; diff --git a/packages/linux-drivers/RTL8192EU/patches/RTL8192EU-kernel-4.8.patch b/packages/linux-drivers/RTL8192EU/patches/RTL8192EU-kernel-4.8.patch new file mode 100644 index 0000000000..5de2869002 --- /dev/null +++ b/packages/linux-drivers/RTL8192EU/patches/RTL8192EU-kernel-4.8.patch @@ -0,0 +1,18 @@ +diff -Naur a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c +--- a/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:54:30.184844740 +0100 ++++ b/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:55:58.426842518 +0100 +@@ -1891,7 +1891,14 @@ + } + else + { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0) ++ struct cfg80211_scan_info info = { ++ .aborted = aborted ++ }; ++ cfg80211_scan_done(pwdev_priv->scan_request, &info); ++#else + cfg80211_scan_done(pwdev_priv->scan_request, aborted); ++#endif + } + + pwdev_priv->scan_request = NULL; diff --git a/packages/linux-drivers/RTL8812AU/patches/RTL8812AU-kernel-4.8.patch b/packages/linux-drivers/RTL8812AU/patches/RTL8812AU-kernel-4.8.patch new file mode 100644 index 0000000000..1044c9260d --- /dev/null +++ b/packages/linux-drivers/RTL8812AU/patches/RTL8812AU-kernel-4.8.patch @@ -0,0 +1,18 @@ +diff -Naur a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c +--- a/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:57:03.868327247 +0100 ++++ b/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:58:00.381610662 +0100 +@@ -2019,7 +2019,14 @@ + } + else + { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0) ++ struct cfg80211_scan_info info = { ++ .aborted = aborted ++ }; ++ cfg80211_scan_done(pwdev_priv->scan_request, &info); ++#else + cfg80211_scan_done(pwdev_priv->scan_request, aborted); ++#endif + } + + pwdev_priv->scan_request = NULL; diff --git a/packages/linux-drivers/bcm_sta/patches/bcm_sta-0007-kernel-4.8.patch b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0007-kernel-4.8.patch new file mode 100644 index 0000000000..5f830e2d43 --- /dev/null +++ b/packages/linux-drivers/bcm_sta/patches/bcm_sta-0007-kernel-4.8.patch @@ -0,0 +1,96 @@ +diff -Naur a/x86-32/src/wl/sys/wl_cfg80211_hybrid.c b/x86-32/src/wl/sys/wl_cfg80211_hybrid.c +--- a/x86-32/src/wl/sys/wl_cfg80211_hybrid.c 2016-09-11 01:59:36.987804240 +0100 ++++ b/x86-32/src/wl/sys/wl_cfg80211_hybrid.c 2016-09-11 02:02:44.876069294 +0100 +@@ -2387,7 +2387,14 @@ + + if (wl->scan_request) { + WL_DBG(("%s: Aborting scan\n", __FUNCTION__)); ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0) ++ struct cfg80211_scan_info info = { ++ .aborted = true ++ }; ++ cfg80211_scan_done(wl->scan_request, &info); ++#else + cfg80211_scan_done(wl->scan_request, true); ++#endif + wl->scan_request = NULL; + } + +@@ -2488,7 +2495,14 @@ + + scan_done_out: + if (wl->scan_request) { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0) ++ struct cfg80211_scan_info info = { ++ .aborted = false ++ }; ++ cfg80211_scan_done(wl->scan_request, &info); ++#else + cfg80211_scan_done(wl->scan_request, false); ++#endif + wl->scan_request = NULL; + } + rtnl_unlock(); +@@ -2913,7 +2927,14 @@ + s32 err = 0; + + if (wl->scan_request) { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0) ++ struct cfg80211_scan_info info = { ++ .aborted = true ++ }; ++ cfg80211_scan_done(wl->scan_request, &info); ++#else + cfg80211_scan_done(wl->scan_request, true); ++#endif + wl->scan_request = NULL; + } + +diff -Naur a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c +--- a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c 2016-09-11 01:59:50.796117742 +0100 ++++ b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c 2016-09-11 02:04:12.290053058 +0100 +@@ -2387,7 +2387,14 @@ + + if (wl->scan_request) { + WL_DBG(("%s: Aborting scan\n", __FUNCTION__)); ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0) ++ struct cfg80211_scan_info info = { ++ .aborted = true ++ }; ++ cfg80211_scan_done(wl->scan_request, &info); ++#else + cfg80211_scan_done(wl->scan_request, true); ++#endif + wl->scan_request = NULL; + } + +@@ -2488,7 +2495,14 @@ + + scan_done_out: + if (wl->scan_request) { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0) ++ struct cfg80211_scan_info info = { ++ .aborted = false ++ }; ++ cfg80211_scan_done(wl->scan_request, &info); ++#else + cfg80211_scan_done(wl->scan_request, false); ++#endif + wl->scan_request = NULL; + } + rtnl_unlock(); +@@ -2913,7 +2927,14 @@ + s32 err = 0; + + if (wl->scan_request) { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0) ++ struct cfg80211_scan_info info = { ++ .aborted = true ++ }; ++ cfg80211_scan_done(wl->scan_request, &info); ++#else + cfg80211_scan_done(wl->scan_request, true); ++#endif + wl->scan_request = NULL; + } + diff --git a/packages/linux/package.mk b/packages/linux/package.mk index b41668f18a..30dc1144ff 100644 --- a/packages/linux/package.mk +++ b/packages/linux/package.mk @@ -60,7 +60,7 @@ case "$LINUX" in PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET imx6-status-led imx6-soc-fan irqbalanced" ;; *) - PKG_VERSION="4.7.6" + PKG_VERSION="4.8.1" PKG_URL="http://www.kernel.org/pub/linux/kernel/v4.x/$PKG_NAME-$PKG_VERSION.tar.xz" ;; esac diff --git a/packages/linux/patches/4.7.6/linux-231-Terratec-Cinergy-S2-Rev.3.patch b/packages/linux/patches/4.7.6/linux-231-Terratec-Cinergy-S2-Rev.3.patch deleted file mode 100644 index c662155e74..0000000000 --- a/packages/linux/patches/4.7.6/linux-231-Terratec-Cinergy-S2-Rev.3.patch +++ /dev/null @@ -1,51 +0,0 @@ -From: cvh -Date: Sun, 29 May 2016 23:00:40 +0200 -Subject: [PATCH] [media] Add support for Terratec Cinergy S2 Rev.3 - ---- - drivers/media/usb/dvb-usb/dw2102.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/drivers/media/usb/dvb-usb/dw2102.c b/drivers/media/usb/dvb-usb/dw2102.c -index 49b55d7..961f64e 100644 ---- a/drivers/media/usb/dvb-usb/dw2102.c -+++ b/drivers/media/usb/dvb-usb/dw2102.c -@@ -1641,6 +1641,7 @@ enum dw2102_table_entry { - TEVII_S421, - TEVII_S632, - TERRATEC_CINERGY_S2_R2, -+ TERRATEC_CINERGY_S2_R3, - GOTVIEW_SAT_HD, - GENIATECH_T220, - TECHNOTREND_S2_4600, -@@ -1669,6 +1670,7 @@ static struct usb_device_id dw2102_table[] = { - [TEVII_S421] = {USB_DEVICE(0x9022, USB_PID_TEVII_S421)}, - [TEVII_S632] = {USB_DEVICE(0x9022, USB_PID_TEVII_S632)}, - [TERRATEC_CINERGY_S2_R2] = {USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_S2_R2)}, -+ [TERRATEC_CINERGY_S2_R3] = {USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_S2_R3)}, - [GOTVIEW_SAT_HD] = {USB_DEVICE(0x1FE1, USB_PID_GOTVIEW_SAT_HD)}, - [GENIATECH_T220] = {USB_DEVICE(0x1f4d, 0xD220)}, - [TECHNOTREND_S2_4600] = {USB_DEVICE(USB_VID_TECHNOTREND, -@@ -2083,7 +2085,7 @@ static struct dvb_usb_device_properties su3000_properties = { - }}, - } - }, -- .num_device_descs = 5, -+ .num_device_descs = 6, - .devices = { - { "SU3000HD DVB-S USB2.0", - { &dw2102_table[GENIATECH_SU3000], NULL }, -@@ -2101,6 +2103,10 @@ static struct dvb_usb_device_properties su3000_properties = { - { &dw2102_table[TERRATEC_CINERGY_S2_R2], NULL }, - { NULL }, - }, -+ { "Terratec Cinergy S2 USB HD Rev.3", -+ { &dw2102_table[TERRATEC_CINERGY_S2_R3], NULL }, -+ { NULL }, -+ }, - { "GOTVIEW Satellite HD", - { &dw2102_table[GOTVIEW_SAT_HD], NULL }, - { NULL }, --- -2.7.4 - diff --git a/packages/linux/patches/4.7.6/linux-004-fix-build-with-gcc-5.patch b/packages/linux/patches/4.8.1/linux-004-fix-build-with-gcc-5.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-004-fix-build-with-gcc-5.patch rename to packages/linux/patches/4.8.1/linux-004-fix-build-with-gcc-5.patch diff --git a/packages/linux/patches/4.7.6/linux-051-ouya_controller_support.patch b/packages/linux/patches/4.8.1/linux-051-ouya_controller_support.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-051-ouya_controller_support.patch rename to packages/linux/patches/4.8.1/linux-051-ouya_controller_support.patch diff --git a/packages/linux/patches/4.7.6/linux-052-XBOX_remote_support.patch b/packages/linux/patches/4.8.1/linux-052-XBOX_remote_support.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-052-XBOX_remote_support.patch rename to packages/linux/patches/4.8.1/linux-052-XBOX_remote_support.patch diff --git a/packages/linux/patches/4.7.6/linux-053-spinelplus-remote-0.2.patch b/packages/linux/patches/4.8.1/linux-053-spinelplus-remote-0.2.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-053-spinelplus-remote-0.2.patch rename to packages/linux/patches/4.8.1/linux-053-spinelplus-remote-0.2.patch diff --git a/packages/linux/patches/4.7.6/linux-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3.6.114c13.patch b/packages/linux/patches/4.8.1/linux-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3.6.114c13.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3.6.114c13.patch rename to packages/linux/patches/4.8.1/linux-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3.6.114c13.patch diff --git a/packages/linux/patches/4.7.6/linux-057-Removed-MCE-customer-code-restriction-in-rc6-decode.patch b/packages/linux/patches/4.8.1/linux-057-Removed-MCE-customer-code-restriction-in-rc6-decode.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-057-Removed-MCE-customer-code-restriction-in-rc6-decode.patch rename to packages/linux/patches/4.8.1/linux-057-Removed-MCE-customer-code-restriction-in-rc6-decode.patch diff --git a/packages/linux/patches/4.7.6/linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch b/packages/linux/patches/4.8.1/linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch rename to packages/linux/patches/4.8.1/linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch diff --git a/packages/linux/patches/4.7.6/linux-062-imon_pad_ignore_diagonal.patch b/packages/linux/patches/4.8.1/linux-062-imon_pad_ignore_diagonal.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-062-imon_pad_ignore_diagonal.patch rename to packages/linux/patches/4.8.1/linux-062-imon_pad_ignore_diagonal.patch diff --git a/packages/linux/patches/4.7.6/linux-203-stb0899_enable_low_symbol_rate.patch b/packages/linux/patches/4.8.1/linux-203-stb0899_enable_low_symbol_rate.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-203-stb0899_enable_low_symbol_rate.patch rename to packages/linux/patches/4.8.1/linux-203-stb0899_enable_low_symbol_rate.patch diff --git a/packages/linux/patches/4.7.6/linux-212-mantis_stb0899_faster_lock.patch b/packages/linux/patches/4.8.1/linux-212-mantis_stb0899_faster_lock.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-212-mantis_stb0899_faster_lock.patch rename to packages/linux/patches/4.8.1/linux-212-mantis_stb0899_faster_lock.patch diff --git a/packages/linux/patches/4.7.6/linux-221-ddbridge-features.patch b/packages/linux/patches/4.8.1/linux-221-ddbridge-features.patch similarity index 99% rename from packages/linux/patches/4.7.6/linux-221-ddbridge-features.patch rename to packages/linux/patches/4.8.1/linux-221-ddbridge-features.patch index 958d680c78..87eafb9f25 100644 --- a/packages/linux/patches/4.7.6/linux-221-ddbridge-features.patch +++ b/packages/linux/patches/4.8.1/linux-221-ddbridge-features.patch @@ -1,51 +1,3 @@ - drivers/media/dvb-core/Makefile | 2 +- - drivers/media/dvb-core/dvb_ca_en50221.c | 128 +- - drivers/media/dvb-core/dvb_ca_en50221.h | 7 + - drivers/media/dvb-core/dvb_frontend.c | 15 + - drivers/media/dvb-core/dvb_frontend.h | 4 + - drivers/media/dvb-core/dvb_netstream.c | 259 + - drivers/media/dvb-core/dvb_netstream.h | 93 + - drivers/media/dvb-core/dvbdev.c | 3 +- - drivers/media/dvb-core/dvbdev.h | 4 + - drivers/media/dvb-frontends/Kconfig | 41 + - drivers/media/dvb-frontends/Makefile | 5 + - drivers/media/dvb-frontends/cxd2843.c | 2063 ++++++++ - drivers/media/dvb-frontends/cxd2843.h | 30 + - drivers/media/dvb-frontends/mxl5xx.c | 1738 +++++++ - drivers/media/dvb-frontends/mxl5xx.h | 39 + - drivers/media/dvb-frontends/mxl5xx_defs.h | 818 ++++ - drivers/media/dvb-frontends/mxl5xx_regs.h | 941 ++++ - drivers/media/dvb-frontends/stv0367dd.c | 1874 +++++++ - drivers/media/dvb-frontends/stv0367dd.h | 31 + - drivers/media/dvb-frontends/stv0367dd_regs.h | 3429 +++++++++++++ - drivers/media/dvb-frontends/stv0910.c | 1526 ++++++ - drivers/media/dvb-frontends/stv0910.h | 31 + - drivers/media/dvb-frontends/stv0910_regs.h | 3997 +++++++++++++++ - drivers/media/dvb-frontends/stv6111.c | 684 +++ - drivers/media/dvb-frontends/stv6111.h | 20 + - drivers/media/pci/ddbridge/Kconfig | 29 +- - drivers/media/pci/ddbridge/Makefile | 4 +- - drivers/media/pci/ddbridge/ddbridge-core.c | 5105 +++++++++++++++----- - drivers/media/pci/ddbridge/ddbridge-i2c.c | 290 ++ - drivers/media/pci/ddbridge/ddbridge-i2c.h | 116 + - drivers/media/pci/ddbridge/ddbridge-mod.c | 1118 +++++ - drivers/media/pci/ddbridge/ddbridge-ns.c | 491 ++ - drivers/media/pci/ddbridge/ddbridge-regs.h | 355 +- - drivers/media/pci/ddbridge/ddbridge.c | 541 +++ - drivers/media/pci/ddbridge/ddbridge.h | 579 ++- - drivers/media/pci/ddbridge/octonet.c | 262 + - .../media/platform/sti/c8sectpfe/c8sectpfe-dvb.c | 1 + - drivers/media/tuners/tda18212.c | 5 + - drivers/media/tuners/tda18212.h | 7 + - drivers/media/usb/dvb-usb-v2/anysee.c | 2 + - drivers/media/usb/em28xx/em28xx-dvb.c | 1 + - drivers/staging/media/cxd2099/cxd2099.c | 234 +- - drivers/staging/media/cxd2099/cxd2099.h | 6 +- - include/uapi/linux/dvb/frontend.h | 7 +- - include/uapi/linux/dvb/mod.h | 22 + - include/uapi/linux/dvb/ns.h | 69 + - 46 files changed, 25615 insertions(+), 1411 deletions(-) - diff --git a/drivers/media/dvb-core/Makefile b/drivers/media/dvb-core/Makefile index 8f22bcd..5ff851a 100644 --- a/drivers/media/dvb-core/Makefile @@ -59,10 +11,10 @@ index 8f22bcd..5ff851a 100644 obj-$(CONFIG_DVB_CORE) += dvb-core.o diff --git a/drivers/media/dvb-core/dvb_ca_en50221.c b/drivers/media/dvb-core/dvb_ca_en50221.c -index f82cd1f..4849156 100644 +index b5b5b19..2cb8415 100644 --- a/drivers/media/dvb-core/dvb_ca_en50221.c +++ b/drivers/media/dvb-core/dvb_ca_en50221.c -@@ -315,7 +315,7 @@ static int dvb_ca_en50221_link_init(struct dvb_ca_private *ca, int slot) +@@ -344,7 +344,7 @@ static int dvb_ca_en50221_link_init(struct dvb_ca_private *ca, int slot) /* read the buffer size from the CAM */ if ((ret = ca->pub->write_cam_control(ca->pub, slot, CTRLIF_COMMAND, IRQEN | CMDREG_SR)) != 0) return ret; @@ -71,7 +23,7 @@ index f82cd1f..4849156 100644 return ret; if ((ret = dvb_ca_en50221_read_data(ca, slot, buf, 2)) != 2) return -EIO; -@@ -612,65 +612,78 @@ static int dvb_ca_en50221_read_data(struct dvb_ca_private *ca, int slot, u8 * eb +@@ -641,65 +641,78 @@ static int dvb_ca_en50221_read_data(struct dvb_ca_private *ca, int slot, u8 * eb } } @@ -200,7 +152,7 @@ index f82cd1f..4849156 100644 } /* OK, add it to the receive buffer, or copy into external buffer if supplied */ -@@ -722,6 +735,9 @@ static int dvb_ca_en50221_write_data(struct dvb_ca_private *ca, int slot, u8 * b +@@ -751,6 +764,9 @@ static int dvb_ca_en50221_write_data(struct dvb_ca_private *ca, int slot, u8 * b if (bytes_write > ca->slot_info[slot].link_buf_size) return -EINVAL; @@ -210,7 +162,7 @@ index f82cd1f..4849156 100644 /* it is possible we are dealing with a single buffer implementation, thus if there is data available for read or if there is even a read already in progress, we do nothing but awake the kernel thread to -@@ -1057,7 +1073,8 @@ static int dvb_ca_en50221_thread(void *data) +@@ -1086,7 +1102,8 @@ static int dvb_ca_en50221_thread(void *data) printk("dvb_ca adapter %d: Invalid PC card inserted :(\n", ca->dvbdev->adapter->num); @@ -220,7 +172,7 @@ index f82cd1f..4849156 100644 dvb_ca_en50221_thread_update_delay(ca); break; } -@@ -1087,7 +1104,10 @@ static int dvb_ca_en50221_thread(void *data) +@@ -1116,7 +1133,10 @@ static int dvb_ca_en50221_thread(void *data) if (time_after(jiffies, ca->slot_info[slot].timeout)) { printk("dvb_ca adapter %d: DVB CAM did not respond :(\n", ca->dvbdev->adapter->num); @@ -232,7 +184,7 @@ index f82cd1f..4849156 100644 dvb_ca_en50221_thread_update_delay(ca); break; } -@@ -1113,7 +1133,7 @@ static int dvb_ca_en50221_thread(void *data) +@@ -1142,7 +1162,7 @@ static int dvb_ca_en50221_thread(void *data) } printk("dvb_ca adapter %d: DVB CAM link initialisation failed :(\n", ca->dvbdev->adapter->num); @@ -267,10 +219,10 @@ index 1e4bbbd..056d10c 100644 int (*slot_shutdown)(struct dvb_ca_en50221 *ca, int slot); int (*slot_ts_enable)(struct dvb_ca_en50221 *ca, int slot); diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c -index c014261..6047f4f 100644 +index be99c8d..254f89d 100644 --- a/drivers/media/dvb-core/dvb_frontend.c +++ b/drivers/media/dvb-core/dvb_frontend.c -@@ -1019,6 +1019,7 @@ static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = { +@@ -1037,6 +1037,7 @@ static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = { _DTV_CMD(DTV_STREAM_ID, 1, 0), _DTV_CMD(DTV_DVBT2_PLP_ID_LEGACY, 1, 0), _DTV_CMD(DTV_LNA, 1, 0), @@ -278,7 +230,7 @@ index c014261..6047f4f 100644 /* Get */ _DTV_CMD(DTV_DISEQC_SLAVE_REPLY, 0, 1), -@@ -1449,6 +1450,14 @@ static int dtv_property_process_get(struct dvb_frontend *fe, +@@ -1467,6 +1468,14 @@ static int dtv_property_process_get(struct dvb_frontend *fe, tvp->u.data = c->lna; break; @@ -293,7 +245,7 @@ index c014261..6047f4f 100644 /* Fill quality measures */ case DTV_STAT_SIGNAL_STRENGTH: tvp->u.st = c->strength; -@@ -1884,6 +1893,12 @@ static int dtv_property_process_set(struct dvb_frontend *fe, +@@ -1902,6 +1911,12 @@ static int dtv_property_process_set(struct dvb_frontend *fe, c->lna = LNA_AUTO; break; @@ -307,10 +259,10 @@ index c014261..6047f4f 100644 return -EINVAL; } diff --git a/drivers/media/dvb-core/dvb_frontend.h b/drivers/media/dvb-core/dvb_frontend.h -index 9592573..c93aff5 100644 +index fb6e848..3efb21b 100644 --- a/drivers/media/dvb-core/dvb_frontend.h +++ b/drivers/media/dvb-core/dvb_frontend.h -@@ -471,6 +471,7 @@ struct dvb_frontend_ops { +@@ -452,6 +452,7 @@ struct dvb_frontend_ops { int (*i2c_gate_ctrl)(struct dvb_frontend* fe, int enable); int (*ts_bus_ctrl)(struct dvb_frontend* fe, int acquire); int (*set_lna)(struct dvb_frontend *); @@ -318,7 +270,7 @@ index 9592573..c93aff5 100644 /* * These callbacks are for devices that implement their own -@@ -483,6 +484,8 @@ struct dvb_frontend_ops { +@@ -464,6 +465,8 @@ struct dvb_frontend_ops { int (*set_property)(struct dvb_frontend* fe, struct dtv_property* tvp); int (*get_property)(struct dvb_frontend* fe, struct dtv_property* tvp); @@ -327,7 +279,7 @@ index 9592573..c93aff5 100644 }; #ifdef __DVB_CORE__ -@@ -632,6 +635,7 @@ struct dtv_frontend_properties { +@@ -613,6 +616,7 @@ struct dtv_frontend_properties { u8 atscmh_sccc_code_mode_d; u32 lna; @@ -712,7 +664,7 @@ index 75a3f4b..3f309b4 100644 }; #ifdef CONFIG_DVB_DYNAMIC_MINORS -@@ -900,6 +900,7 @@ out: +@@ -900,6 +900,7 @@ int dvb_usercopy(struct file *file, kfree(mbuf); return err; } @@ -736,7 +688,7 @@ index 4aff7bd..ae4f4d1 100644 #define DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr) \ static short adapter_nr[] = \ diff --git a/drivers/media/dvb-frontends/Kconfig b/drivers/media/dvb-frontends/Kconfig -index a82f77c..3692927 100644 +index c645aa8..f5ff222 100644 --- a/drivers/media/dvb-frontends/Kconfig +++ b/drivers/media/dvb-frontends/Kconfig @@ -28,6 +28,14 @@ config DVB_STV090x @@ -776,7 +728,7 @@ index a82f77c..3692927 100644 config DVB_M88DS3103 tristate "Montage Technology M88DS3103" depends on DVB_CORE && I2C && I2C_MUX -@@ -81,6 +104,24 @@ config DVB_MN88473 +@@ -89,6 +112,24 @@ config DVB_MN88473 help Say Y when you want to support this frontend. @@ -802,10 +754,10 @@ index a82f77c..3692927 100644 depends on DVB_CORE diff --git a/drivers/media/dvb-frontends/Makefile b/drivers/media/dvb-frontends/Makefile -index eb7191f..1749be8 100644 +index e90165a..d3fed98 100644 --- a/drivers/media/dvb-frontends/Makefile +++ b/drivers/media/dvb-frontends/Makefile -@@ -110,6 +110,11 @@ obj-$(CONFIG_DVB_CXD2820R) += cxd2820r.o +@@ -111,6 +111,11 @@ obj-$(CONFIG_DVB_CXD2820R) += cxd2820r.o obj-$(CONFIG_DVB_CXD2841ER) += cxd2841er.o obj-$(CONFIG_DVB_DRXK) += drxk.o obj-$(CONFIG_DVB_TDA18271C2DD) += tda18271c2dd.o @@ -2924,10 +2876,10 @@ index 0000000..2467a6b +#endif /* _CXD2843_H_ */ diff --git a/drivers/media/dvb-frontends/mxl5xx.c b/drivers/media/dvb-frontends/mxl5xx.c new file mode 100644 -index 0000000..29bebed +index 0000000..4413fd2 --- /dev/null +++ b/drivers/media/dvb-frontends/mxl5xx.c -@@ -0,0 +1,1738 @@ +@@ -0,0 +1,1749 @@ +/* + * Driver for the Maxlinear MX58x family of tuners/demods + * @@ -3382,53 +3334,6 @@ index 0000000..29bebed + return stat; +} + -+static int get_stats(struct dvb_frontend *fe); -+ -+static int read_status(struct dvb_frontend *fe, enum fe_status *status) -+{ -+ struct mxl *state = fe->demodulator_priv; -+ -+ int stat; -+ u32 regData = 0; -+ -+ mutex_lock(&state->base->status_lock); -+ HYDRA_DEMOD_STATUS_LOCK(state, state->demod); -+ stat = read_register(state, (HYDRA_DMD_LOCK_STATUS_ADDR_OFFSET + -+ HYDRA_DMD_STATUS_OFFSET(state->demod)), -+ ®Data); -+ HYDRA_DEMOD_STATUS_UNLOCK(state, state->demod); -+ mutex_unlock(&state->base->status_lock); -+ -+ *status = (regData == 1) ? 0x1f : 0; -+ get_stats(fe); -+ return stat; -+} -+ -+static int tune(struct dvb_frontend *fe, bool re_tune, -+ unsigned int mode_flags, -+ unsigned int *delay, enum fe_status *status) -+{ -+ struct mxl *state = fe->demodulator_priv; -+ int r = 0; -+ -+ *delay = HZ / 2; -+ if (re_tune) { -+ r = set_parameters(fe); -+ if (r) -+ return r; -+ state->tune_time = jiffies; -+ return 0; -+ } -+ if (*status & FE_HAS_LOCK) -+ return 0; -+ -+ r = read_status(fe, status); -+ if (r) -+ return r; -+ -+ return 0; -+} -+ +static int enable_tuner(struct mxl *state, u32 tuner, u32 enable); + +static int sleep(struct dvb_frontend *fe) @@ -3465,10 +3370,14 @@ index 0000000..29bebed + ®Data); + HYDRA_DEMOD_STATUS_UNLOCK(state, state->demod); + mutex_unlock(&state->base->status_lock); -+ *snr = (s16) (regData & 0xFFFF); /* 100x dB */ ++ + p->cnr.len = 1; + p->cnr.stat[0].scale = FE_SCALE_DECIBEL; -+ p->cnr.stat[0].uvalue = 10 * (s64) *snr; ++ p->cnr.stat[0].svalue = (s16)regData * 10; ++ ++ if (regData > 2000) regData = 2000; ++ *snr = (s16)(regData/10) * 328; /* 20dB = 100% */ ++ + return stat; +} + @@ -3476,52 +3385,64 @@ index 0000000..29bebed +{ + struct mxl *state = fe->demodulator_priv; + struct dtv_frontend_properties *p = &fe->dtv_property_cache; -+ u32 reg[8], reg2[4]; ++ u32 reg[8]; + int stat; + -+ *ber = 0; + mutex_lock(&state->base->status_lock); + HYDRA_DEMOD_STATUS_LOCK(state, state->demod); + stat = read_register_block(state, ++ (HYDRA_DMD_DVBS_1ST_CORR_RS_ERRORS_ADDR_OFFSET + ++ HYDRA_DMD_STATUS_OFFSET(state->demod)), ++ (4 * sizeof(u32)), ++ (u8 *) ®[0]); ++ HYDRA_DEMOD_STATUS_UNLOCK(state, state->demod); ++ ++ switch (p->delivery_system) { ++ case SYS_DSS: ++ case SYS_DVBS: ++ p->pre_bit_error.len = 1; ++ p->pre_bit_error.stat[0].scale = FE_SCALE_COUNTER; ++ p->pre_bit_error.stat[0].uvalue = reg[2]; ++ p->pre_bit_count.len = 1; ++ p->pre_bit_count.stat[0].scale = FE_SCALE_COUNTER; ++ p->pre_bit_count.stat[0].uvalue = reg[3]; ++ break; ++ default: ++ break; ++ } ++ ++ stat = read_register_block(state, + (HYDRA_DMD_DVBS2_CRC_ERRORS_ADDR_OFFSET + + HYDRA_DMD_STATUS_OFFSET(state->demod)), + (7 * sizeof(u32)), + (u8 *) ®[0]); -+ stat = read_register_block(state, -+ (HYDRA_DMD_DVBS_1ST_CORR_RS_ERRORS_ADDR_OFFSET + -+ HYDRA_DMD_STATUS_OFFSET(state->demod)), -+ (4 * sizeof(u32)), -+ (u8 *) ®2[0]); -+ HYDRA_DEMOD_STATUS_UNLOCK(state, state->demod); -+ mutex_unlock(&state->base->status_lock); -+ + + switch (p->delivery_system) { + case SYS_DSS: -+ break; + case SYS_DVBS: -+ p->pre_bit_error.len = 1; -+ p->pre_bit_error.stat[0].scale = FE_SCALE_COUNTER; -+ p->pre_bit_error.stat[0].uvalue = reg[5]; -+ p->pre_bit_count.len = 1; -+ p->pre_bit_count.stat[0].scale = FE_SCALE_COUNTER; -+ p->pre_bit_count.stat[0].uvalue = reg[6] * 188 * 8; ++ p->post_bit_error.len = 1; ++ p->post_bit_error.stat[0].scale = FE_SCALE_COUNTER; ++ p->post_bit_error.stat[0].uvalue = reg[5]; ++ p->post_bit_count.len = 1; ++ p->post_bit_count.stat[0].scale = FE_SCALE_COUNTER; ++ p->post_bit_count.stat[0].uvalue = reg[6]; + break; + case SYS_DVBS2: ++ p->post_bit_error.len = 1; ++ p->post_bit_error.stat[0].scale = FE_SCALE_COUNTER; ++ p->post_bit_error.stat[0].uvalue = reg[1]; ++ p->post_bit_count.len = 1; ++ p->post_bit_count.stat[0].scale = FE_SCALE_COUNTER; ++ p->post_bit_count.stat[0].uvalue = reg[2]; + break; + default: + break; + } -+ pr_debug("ber %08x %08x %08x %08x %08x %08x %08x\n", -+ reg[0], reg[1], reg[2], reg[3], reg[4], reg[5], reg[6]); -+ pr_debug("ber2 %08x %08x %08x %08x\n", -+ reg[0], reg[1], reg[2], reg[3]); -+ /* -+ * pre_bit_error, pre_bit_count -+ * post_bit_error, post_bit_count; -+ * block_error block_count; -+ * reset_fec_counter(state); -+ */ ++ ++ *ber = p->post_bit_error.stat[0].uvalue; ++ ++ mutex_unlock(&state->base->status_lock); ++ + return 0; +} + @@ -3539,10 +3460,12 @@ index 0000000..29bebed + ®Data); + HYDRA_DEMOD_STATUS_UNLOCK(state, state->demod); + mutex_unlock(&state->base->status_lock); -+ *strength = (u16) (regData & 0xFFFF); /* 10x dBm */ ++ + p->strength.len = 1; + p->strength.stat[0].scale = FE_SCALE_DECIBEL; -+ p->strength.stat[0].uvalue = 10 * (s64) (s16) (regData & 0xFFFF); ++ p->strength.stat[0].svalue = (s16)regData *10; ++ ++ *strength = (100 + (s16)regData/100) * 656; + return stat; +} + @@ -3551,14 +3474,54 @@ index 0000000..29bebed + return 0; +} + -+static int get_stats(struct dvb_frontend *fe) ++static int read_status(struct dvb_frontend *fe, enum fe_status *status) +{ -+ u16 val; -+ u32 val32; ++ struct mxl *state = fe->demodulator_priv; + ++ int stat; ++ u32 regData = 0; ++ u16 val; ++ ++ mutex_lock(&state->base->status_lock); ++ HYDRA_DEMOD_STATUS_LOCK(state, state->demod); ++ stat = read_register(state, (HYDRA_DMD_LOCK_STATUS_ADDR_OFFSET + ++ HYDRA_DMD_STATUS_OFFSET(state->demod)), ++ ®Data); ++ HYDRA_DEMOD_STATUS_UNLOCK(state, state->demod); ++ mutex_unlock(&state->base->status_lock); ++ ++ *status = (regData == 1) ? 0x1f : 0; + read_signal_strength(fe, &val); -+ read_snr(fe, &val); -+ read_ber(fe, &val32); ++ if (*status) { ++ read_snr(fe, &val); ++ read_ber(fe, ®Data); ++ } ++ ++ return 0; ++} ++ ++static int tune(struct dvb_frontend *fe, bool re_tune, ++ unsigned int mode_flags, ++ unsigned int *delay, enum fe_status *status) ++{ ++ struct mxl *state = fe->demodulator_priv; ++ int r = 0; ++ ++ *delay = HZ / 2; ++ if (re_tune) { ++ r = set_parameters(fe); ++ if (r) ++ return r; ++ state->tune_time = jiffies; ++ return 0; ++ } ++ if (*status & FE_HAS_LOCK) ++ return 0; ++ ++ r = read_status(fe, status); ++ if (r) ++ return r; ++ + return 0; +} + @@ -18189,7 +18152,7 @@ index 7446c8b..28e89f0 100644 ccflags-y += -Idrivers/media/dvb-core/ ccflags-y += -Idrivers/media/dvb-frontends/ diff --git a/drivers/media/pci/ddbridge/ddbridge-core.c b/drivers/media/pci/ddbridge/ddbridge-core.c -index 6e995ef..82c1938 100644 +index 47def73..82c1938 100644 --- a/drivers/media/pci/ddbridge/ddbridge-core.c +++ b/drivers/media/pci/ddbridge/ddbridge-core.c @@ -1,7 +1,10 @@ @@ -20069,7 +20032,7 @@ index 6e995ef..82c1938 100644 { int ret; -@@ -759,1000 +1576,3010 @@ static int start_feed(struct dvb_demux_feed *dvbdmxfeed) +@@ -759,999 +1576,3010 @@ static int start_feed(struct dvb_demux_feed *dvbdmxfeed) { struct dvb_demux *dvbdmx = dvbdmxfeed->demux; struct ddb_input *input = dvbdmx->priv; @@ -23465,10 +23428,9 @@ index 6e995ef..82c1938 100644 - if (pci_enable_device(pdev) < 0) - return -ENODEV; - -- dev = vmalloc(sizeof(struct ddb)); +- dev = vzalloc(sizeof(struct ddb)); - if (dev == NULL) - return -ENOMEM; -- memset(dev, 0, sizeof(struct ddb)); - - dev->pdev = pdev; - pci_set_drvdata(pdev, dev); @@ -27881,7 +27843,7 @@ index ae917c0..02d22eb 100644 static struct cx24116_config anysee_cx24116_config = { diff --git a/drivers/media/usb/em28xx/em28xx-dvb.c b/drivers/media/usb/em28xx/em28xx-dvb.c -index 1a5c012..335d16a 100644 +index 8cedef0..7bc7778 100644 --- a/drivers/media/usb/em28xx/em28xx-dvb.c +++ b/drivers/media/usb/em28xx/em28xx-dvb.c @@ -376,6 +376,7 @@ static struct tda18271_config kworld_ub435q_v2_config = { diff --git a/packages/linux/patches/4.7.6/linux-222-stb0899_signal_quality.patch b/packages/linux/patches/4.8.1/linux-222-stb0899_signal_quality.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-222-stb0899_signal_quality.patch rename to packages/linux/patches/4.8.1/linux-222-stb0899_signal_quality.patch diff --git a/packages/linux/patches/4.7.6/linux-227-ds3000-invalid-symbol-rate.patch b/packages/linux/patches/4.8.1/linux-227-ds3000-invalid-symbol-rate.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-227-ds3000-invalid-symbol-rate.patch rename to packages/linux/patches/4.8.1/linux-227-ds3000-invalid-symbol-rate.patch diff --git a/packages/linux/patches/4.7.6/linux-950-saa716x_PCIe_interface_chipset.patch.todo b/packages/linux/patches/4.8.1/linux-950-saa716x_PCIe_interface_chipset.patch.todo similarity index 100% rename from packages/linux/patches/4.7.6/linux-950-saa716x_PCIe_interface_chipset.patch.todo rename to packages/linux/patches/4.8.1/linux-950-saa716x_PCIe_interface_chipset.patch.todo diff --git a/packages/linux/patches/4.7.6/linux-990.06-hda-Avoid-outputting-HDMI-audio-before-prepare-.patch b/packages/linux/patches/4.8.1/linux-990.06-hda-Avoid-outputting-HDMI-audio-before-prepare-.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-990.06-hda-Avoid-outputting-HDMI-audio-before-prepare-.patch rename to packages/linux/patches/4.8.1/linux-990.06-hda-Avoid-outputting-HDMI-audio-before-prepare-.patch diff --git a/packages/linux/patches/4.8.1/linux-999-i915-Fix-random-GPU-hang-Bug-156851.patch b/packages/linux/patches/4.8.1/linux-999-i915-Fix-random-GPU-hang-Bug-156851.patch new file mode 100644 index 0000000000..0faf7baa96 --- /dev/null +++ b/packages/linux/patches/4.8.1/linux-999-i915-Fix-random-GPU-hang-Bug-156851.patch @@ -0,0 +1,184 @@ +From patchwork Thu Sep 15 07:27:32 2016 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: DRM: i915: Fix random GPU hang, Bug 156851 +From: bobcao3 +X-Patchwork-Id: 9332989 +Message-Id: <20160915072732.11950-1-bobcaocheng@163.com> +To: Daniel Vetter , + Jani Nikula , David Airlie +Cc: Cheng Cao , intel-gfx@lists.freedesktop.org, + linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, + Icenowy Zheng +Date: Thu, 15 Sep 2016 15:27:32 +0800 + +Signed-off-by: Cheng Cao +--- + drivers/gpu/drm/i915/i915_gem_gtt.c | 6 ++++ + drivers/gpu/drm/i915/i915_gem_stolen.c | 61 ++++++++++++++++----------------- + drivers/gpu/drm/i915/i915_reg.h | 6 ++++ + drivers/gpu/drm/i915/intel_ringbuffer.c | 20 ++++++++++- + 4 files changed, 60 insertions(+), 33 deletions(-) + +diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c +index 7a30af7..0b05dd9 100644 +--- a/drivers/gpu/drm/i915/i915_gem_gtt.c ++++ b/drivers/gpu/drm/i915/i915_gem_gtt.c +@@ -2907,6 +2907,12 @@ static unsigned int gen8_get_total_gtt_size(u16 bdw_gmch_ctl) + if (bdw_gmch_ctl > 4) + bdw_gmch_ctl = 4; + #endif ++#ifdef CONFIG_X86_64 ++ /* Limit 64b platforms to a 4GB GGTT */ ++ /* DMA 4GB protection */ ++ if (bdw_gmch_ctl > 8) ++ bdw_gmch_ctl = 8; ++#endif + + return bdw_gmch_ctl << 20; + } +diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c +index 66be299a1..da272ae 100644 +--- a/drivers/gpu/drm/i915/i915_gem_stolen.c ++++ b/drivers/gpu/drm/i915/i915_gem_stolen.c +@@ -352,47 +352,44 @@ static void gen8_get_stolen_reserved(struct drm_i915_private *dev_priv, + unsigned long *base, unsigned long *size) + { + uint32_t reg_val = I915_READ(GEN6_STOLEN_RESERVED); ++ unsigned long stolen_top; ++ struct i915_ggtt *ggtt = &dev_priv->ggtt; + + *base = reg_val & GEN6_STOLEN_RESERVED_ADDR_MASK; + + switch (reg_val & GEN8_STOLEN_RESERVED_SIZE_MASK) { + case GEN8_STOLEN_RESERVED_1M: +- *size = 1024 * 1024; ++ *size = 1 << 10 << 10; + break; + case GEN8_STOLEN_RESERVED_2M: +- *size = 2 * 1024 * 1024; ++ *size = 2 << 10 << 10; + break; + case GEN8_STOLEN_RESERVED_4M: +- *size = 4 * 1024 * 1024; ++ *size = 4 << 10 << 10; + break; + case GEN8_STOLEN_RESERVED_8M: +- *size = 8 * 1024 * 1024; ++ *size = 8 << 10 << 10; + break; + default: +- *size = 8 * 1024 * 1024; +- MISSING_CASE(reg_val & GEN8_STOLEN_RESERVED_SIZE_MASK); +- } +-} +- +-static void bdw_get_stolen_reserved(struct drm_i915_private *dev_priv, +- unsigned long *base, unsigned long *size) +-{ +- struct i915_ggtt *ggtt = &dev_priv->ggtt; +- uint32_t reg_val = I915_READ(GEN6_STOLEN_RESERVED); +- unsigned long stolen_top; ++ /* Whatever if it is a BDW device or SKL device ++ * Or others devices.. ++ * This way is always going to work on 5th ++ * generation Intel Processer ++ */ ++ stolen_top = dev_priv->mm.stolen_base + ggtt->stolen_size; + +- stolen_top = dev_priv->mm.stolen_base + ggtt->stolen_size; ++ *base = reg_val & GEN6_STOLEN_RESERVED_ADDR_MASK; + +- *base = reg_val & GEN6_STOLEN_RESERVED_ADDR_MASK; ++ /* MLIMIT - MBASE => PEG */ ++ /* -- mobile-5th-gen-core-family-datasheet-vol-2.pdf */ ++ if (*base == 0) { ++ *size = 0; ++ MISSING_CASE(reg_val & GEN8_STOLEN_RESERVED_SIZE_MASK); ++ } else ++ *size = stolen_top - *base; + +- /* On these platforms, the register doesn't have a size field, so the +- * size is the distance between the base and the top of the stolen +- * memory. We also have the genuine case where base is zero and there's +- * nothing reserved. */ +- if (*base == 0) +- *size = 0; +- else +- *size = stolen_top - *base; ++ break; ++ } + } + + int i915_gem_init_stolen(struct drm_device *dev) +@@ -442,14 +439,14 @@ int i915_gem_init_stolen(struct drm_device *dev) + gen7_get_stolen_reserved(dev_priv, &reserved_base, + &reserved_size); + break; ++ case 8: ++ gen8_get_stolen_reserved(dev_priv, &reserved_base, ++ &reserved_size); ++ break; + default: +- if (IS_BROADWELL(dev_priv) || +- IS_SKYLAKE(dev_priv) || IS_KABYLAKE(dev)) +- bdw_get_stolen_reserved(dev_priv, &reserved_base, +- &reserved_size); +- else +- gen8_get_stolen_reserved(dev_priv, &reserved_base, +- &reserved_size); ++ // FIXME: This seemed like going to work ++ gen8_get_stolen_reserved(dev_priv, &reserved_base, ++ &reserved_size); + break; + } + +diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h +index bf2cad3..3dce37b 100644 +--- a/drivers/gpu/drm/i915/i915_reg.h ++++ b/drivers/gpu/drm/i915/i915_reg.h +@@ -1748,6 +1748,12 @@ enum skl_disp_power_wells { + #define RING_INDIRECT_CTX_OFFSET(base) _MMIO((base)+0x1c8) /* gen8+ */ + #define RING_CTX_TIMESTAMP(base) _MMIO((base)+0x3a8) /* gen8+ */ + ++// 64 bit, low 32 preserved ++#define IOTLB_INVALID(base) _MMIO((base)+0x508 + 4) /* gen8+ */ ++#define IOTLB_INVALID_IVT (1<<31) ++#define IOTLB_GLOBAL_INV_REQ (1<<28) ++#define IOTLB_INVALID_IAIG (1<<25) ++ + #define ERROR_GEN6 _MMIO(0x40a0) + #define GEN7_ERR_INT _MMIO(0x44040) + #define ERR_INT_POISON (1<<31) +diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c +index 1d3161b..84dafcb 100644 +--- a/drivers/gpu/drm/i915/intel_ringbuffer.c ++++ b/drivers/gpu/drm/i915/intel_ringbuffer.c +@@ -498,7 +498,25 @@ static void intel_ring_setup_status_page(struct intel_engine_cs *engine) + * arises: do we still need this and if so how should we go about + * invalidating the TLB? + */ +- if (IS_GEN(dev_priv, 6, 7)) { ++ /* Respond to this question: ++ * According to mobile-5th-gen-core-family-datasheet-vol-2 from Intel ++ * There are registers for invalidation, set those registers will ++ * cause the hardware to perform IOTLB invalidation. ++ */ ++ if (IS_GEN8(dev_priv)) { ++ i915_reg_t reg = IOTLB_INVALID(engine->mmio_base); ++ ++ /* ring should be idle before issuing a sync flush*/ ++ WARN_ON((I915_READ_MODE(engine) & MODE_IDLE) == 0); ++ ++ I915_WRITE(reg, 0x0 | IOTLB_INVALID_IVT | IOTLB_GLOBAL_INV_REQ); ++ ++ if (intel_wait_for_register(dev_priv, ++ reg, IOTLB_INVALID_IAIG, 0, ++ 1000)) ++ DRM_ERROR("%s: wait for TLB invalidation timed out\n", ++ engine->name); ++ } else if (IS_GEN(dev_priv, 6, 7)) { + i915_reg_t reg = RING_INSTPM(engine->mmio_base); + + /* ring should be idle before issuing a sync flush*/ diff --git a/packages/linux/patches/4.7.6/linux-999-i915-extend-fake-hdmi-live-status-to-valley-view.patch b/packages/linux/patches/4.8.1/linux-999-i915-extend-fake-hdmi-live-status-to-valley-view.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-999-i915-extend-fake-hdmi-live-status-to-valley-view.patch rename to packages/linux/patches/4.8.1/linux-999-i915-extend-fake-hdmi-live-status-to-valley-view.patch diff --git a/packages/linux/patches/4.8.1/linux-999-i915-fixes-and-diagnostics-for-braswell.patch b/packages/linux/patches/4.8.1/linux-999-i915-fixes-and-diagnostics-for-braswell.patch new file mode 100644 index 0000000000..f07daafe09 --- /dev/null +++ b/packages/linux/patches/4.8.1/linux-999-i915-fixes-and-diagnostics-for-braswell.patch @@ -0,0 +1,113 @@ +From 0db9810b18ffc46709ad00831c426712d5489aea Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Sat, 13 Aug 2016 21:32:17 +0100 +Subject: [PATCH 1/2] drm/i915: Show RPS autotuning thresholds along waitboost + +--- + drivers/gpu/drm/i915/i915_debugfs.c | 62 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 62 insertions(+) + +diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c +index 1035468..2cff44a 100644 +--- a/drivers/gpu/drm/i915/i915_debugfs.c ++++ b/drivers/gpu/drm/i915/i915_debugfs.c +@@ -2434,6 +2434,68 @@ static int i915_rps_boost_info(struct seq_file *m, void *data) + spin_unlock(&dev_priv->rps.client_lock); + mutex_unlock(&dev->filelist_mutex); + ++ if (INTEL_INFO(dev)->gen >= 6) { ++ u32 rpmodectl, rpinclimit, rpdeclimit; ++ u32 rpstat, cagf; ++ u32 rpupei, rpcurup, rpprevup; ++ u32 rpdownei, rpcurdown, rpprevdown; ++ ++ intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL); ++ ++ rpmodectl = I915_READ(GEN6_RP_CONTROL); ++ rpinclimit = I915_READ(GEN6_RP_UP_THRESHOLD); ++ rpdeclimit = I915_READ(GEN6_RP_DOWN_THRESHOLD); ++ ++ rpstat = I915_READ(GEN6_RPSTAT1); ++ rpupei = I915_READ(GEN6_RP_CUR_UP_EI) & GEN6_CURICONT_MASK; ++ rpcurup = I915_READ(GEN6_RP_CUR_UP) & GEN6_CURBSYTAVG_MASK; ++ rpprevup = I915_READ(GEN6_RP_PREV_UP) & GEN6_CURBSYTAVG_MASK; ++ rpdownei = I915_READ(GEN6_RP_CUR_DOWN_EI) & GEN6_CURIAVG_MASK; ++ rpcurdown = I915_READ(GEN6_RP_CUR_DOWN) & GEN6_CURBSYTAVG_MASK; ++ rpprevdown = I915_READ(GEN6_RP_PREV_DOWN) & GEN6_CURBSYTAVG_MASK; ++ intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL); ++ ++ if (IS_GEN9(dev)) ++ cagf = (rpstat & GEN9_CAGF_MASK) >> GEN9_CAGF_SHIFT; ++ else if (IS_HASWELL(dev) || IS_BROADWELL(dev)) ++ cagf = (rpstat & HSW_CAGF_MASK) >> HSW_CAGF_SHIFT; ++ else ++ cagf = (rpstat & GEN6_CAGF_MASK) >> GEN6_CAGF_SHIFT; ++ cagf = intel_gpu_freq(dev_priv, cagf); ++ ++ ++ seq_printf(m, "RP CUR UP EI: %d (%dus)\n", ++ rpupei, GT_PM_INTERVAL_TO_US(dev_priv, rpupei)); ++ seq_printf(m, "RP CUR UP: %d (%dus)\n", ++ rpcurup, GT_PM_INTERVAL_TO_US(dev_priv, rpcurup)); ++ seq_printf(m, "RP PREV UP: %d (%dus)\n", ++ rpprevup, GT_PM_INTERVAL_TO_US(dev_priv, rpprevup)); ++ seq_printf(m, "Up threshold: %d%%\n", ++ dev_priv->rps.up_threshold); ++ ++ seq_printf(m, "RP CUR DOWN EI: %d (%dus)\n", ++ rpdownei, GT_PM_INTERVAL_TO_US(dev_priv, rpdownei)); ++ seq_printf(m, "RP CUR DOWN: %d (%dus)\n", ++ rpcurdown, GT_PM_INTERVAL_TO_US(dev_priv, rpcurdown)); ++ seq_printf(m, "RP PREV DOWN: %d (%dus)\n", ++ rpprevdown, GT_PM_INTERVAL_TO_US(dev_priv, rpprevdown)); ++ seq_printf(m, "Down threshold: %d%%\n", ++ dev_priv->rps.down_threshold); ++ ++ seq_printf(m, "Current freq: %d MHz\n", ++ intel_gpu_freq(dev_priv, dev_priv->rps.cur_freq)); ++ seq_printf(m, "Actual freq: %d MHz\n", cagf); ++ seq_printf(m, "Idle freq: %d MHz\n", ++ intel_gpu_freq(dev_priv, dev_priv->rps.idle_freq)); ++ seq_printf(m, "Min freq: %d MHz\n", ++ intel_gpu_freq(dev_priv, dev_priv->rps.min_freq)); ++ seq_printf(m, "Max freq: %d MHz\n", ++ intel_gpu_freq(dev_priv, dev_priv->rps.max_freq)); ++ seq_printf(m, ++ "efficient (RPe) frequency: %d MHz\n", ++ intel_gpu_freq(dev_priv, dev_priv->rps.efficient_freq)); ++ } ++ + return 0; + } + +-- +2.7.4 + + +From d77c081cd5ea0d278b314ee2043556d2bd9aacaf Mon Sep 17 00:00:00 2001 +From: fritsch +Date: Sat, 13 Aug 2016 22:56:37 +0200 +Subject: [PATCH 2/2] drm/i915: intel-pm enable thresholds + +--- + drivers/gpu/drm/i915/intel_pm.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c +index 2863b92..f3aaef2 100644 +--- a/drivers/gpu/drm/i915/intel_pm.c ++++ b/drivers/gpu/drm/i915/intel_pm.c +@@ -4511,8 +4511,7 @@ static void valleyview_set_rps(struct drm_device *dev, u8 val) + + if (val != dev_priv->rps.cur_freq) { + vlv_punit_write(dev_priv, PUNIT_REG_GPU_FREQ_REQ, val); +- if (!IS_CHERRYVIEW(dev_priv)) +- gen6_set_rps_thresholds(dev_priv, val); ++ gen6_set_rps_thresholds(dev_priv, val); + } + + dev_priv->rps.cur_freq = val; +-- +2.7.4 + + diff --git a/packages/linux/patches/4.7.6/linux-999-i915-implement-passthrough-colors.patch b/packages/linux/patches/4.8.1/linux-999-i915-implement-passthrough-colors.patch similarity index 72% rename from packages/linux/patches/4.7.6/linux-999-i915-implement-passthrough-colors.patch rename to packages/linux/patches/4.8.1/linux-999-i915-implement-passthrough-colors.patch index 2721a94d53..37649c62ef 100644 --- a/packages/linux/patches/4.7.6/linux-999-i915-implement-passthrough-colors.patch +++ b/packages/linux/patches/4.8.1/linux-999-i915-implement-passthrough-colors.patch @@ -1,32 +1,20 @@ -From 7fa7c0b24aa134d5fdb65dc2a984c734b499f70e Mon Sep 17 00:00:00 2001 -From: fritsch -Date: Sun, 29 Nov 2015 16:38:14 +0100 -Subject: [PATCH] Intel: Implement Video Color Range (testing) - ---- - drivers/gpu/drm/i915/i915_drv.h | 1 + - drivers/gpu/drm/i915/intel_drv.h | 8 ++++++++ - drivers/gpu/drm/i915/intel_hdmi.c | 17 +++++++++++++++-- - drivers/gpu/drm/i915/intel_modes.c | 1 + - 4 files changed, 25 insertions(+), 2 deletions(-) - diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h -index a01e515..9e4b8d0 100644 +index f68c789..a6b6dfe 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h -@@ -3450,6 +3450,7 @@ int intel_freq_opcode(struct drm_i915_private *dev_priv, int val); +@@ -3948,6 +3948,7 @@ __raw_write(64, q) #define INTEL_BROADCAST_RGB_AUTO 0 #define INTEL_BROADCAST_RGB_FULL 1 #define INTEL_BROADCAST_RGB_LIMITED 2 +#define INTEL_BROADCAST_RGB_VIDEO 3 - static inline uint32_t i915_vgacntrl_reg(struct drm_device *dev) + static inline i915_reg_t i915_vgacntrl_reg(struct drm_device *dev) { diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h -index f2a1142..210e7a7 100644 +index ff399b9..f2ac0ff 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h -@@ -372,6 +372,13 @@ struct intel_crtc_state { +@@ -522,6 +522,13 @@ struct intel_crtc_state { */ bool limited_color_range; @@ -37,11 +25,11 @@ index f2a1142..210e7a7 100644 + */ + bool video_color_range; + - /* DP has a bunch of special case unfortunately, so mark the pipe - * accordingly. */ - bool has_dp_encoder; -@@ -682,6 +689,7 @@ struct intel_hdmi { - int ddc_bus; + /* Bitmask of encoder types (enum intel_output_type) + * driven by the pipe. + */ +@@ -805,6 +812,7 @@ struct intel_hdmi { + } dp_dual_mode; bool limited_color_range; bool color_range_auto; + bool color_range_video; @@ -49,10 +37,10 @@ index f2a1142..210e7a7 100644 bool has_audio; enum hdmi_force_audio force_audio; diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c -index 81cdd9f..417f9be 100644 +index 4df9f38..8b64508 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c -@@ -464,7 +464,8 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder, +@@ -462,7 +462,8 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder, } if (intel_hdmi->rgb_quant_range_selectable) { @@ -62,16 +50,16 @@ index 81cdd9f..417f9be 100644 frame.avi.quantization_range = HDMI_QUANTIZATION_RANGE_LIMITED; else -@@ -1266,6 +1267,8 @@ bool intel_hdmi_compute_config(struct intel_encoder *encoder, +@@ -1308,6 +1309,8 @@ bool intel_hdmi_compute_config(struct intel_encoder *encoder, pipe_config->limited_color_range = intel_hdmi->limited_color_range; } + if (intel_hdmi->color_range_video) -+ pipe_config->video_color_range = true; ++ pipe_config->video_color_range = true; if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK) { pipe_config->pixel_multiplier = 2; -@@ -1485,25 +1488,35 @@ intel_hdmi_set_property(struct drm_connector *connector, +@@ -1588,25 +1591,35 @@ intel_hdmi_set_property(struct drm_connector *connector, if (property == dev_priv->broadcast_rgb_property) { bool old_auto = intel_hdmi->color_range_auto; bool old_range = intel_hdmi->limited_color_range; @@ -109,7 +97,7 @@ index 81cdd9f..417f9be 100644 goto done; diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c -index 38a4c8c..c49681a 100644 +index f2584d0..5a6f853 100644 --- a/drivers/gpu/drm/i915/intel_modes.c +++ b/drivers/gpu/drm/i915/intel_modes.c @@ -103,6 +103,7 @@ static const struct drm_prop_enum_list broadcast_rgb_names[] = { @@ -120,5 +108,3 @@ index 38a4c8c..c49681a 100644 }; void --- -2.5.0 diff --git a/packages/linux/patches/4.7.6/linux-999-i915-use-legacy-turbo.patch b/packages/linux/patches/4.8.1/linux-999-i915-use-legacy-turbo.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-999-i915-use-legacy-turbo.patch rename to packages/linux/patches/4.8.1/linux-999-i915-use-legacy-turbo.patch diff --git a/packages/linux/patches/4.7.6/linux-999-partly-revert-media-rc-core.patch b/packages/linux/patches/4.8.1/linux-999-partly-revert-media-rc-core.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-999-partly-revert-media-rc-core.patch rename to packages/linux/patches/4.8.1/linux-999-partly-revert-media-rc-core.patch diff --git a/packages/linux/patches/4.7.6/linux-999.02-0001-pm-disable-async-suspend-resume-by-default.patch b/packages/linux/patches/4.8.1/linux-999.02-0001-pm-disable-async-suspend-resume-by-default.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-999.02-0001-pm-disable-async-suspend-resume-by-default.patch rename to packages/linux/patches/4.8.1/linux-999.02-0001-pm-disable-async-suspend-resume-by-default.patch diff --git a/packages/linux/patches/4.7.6/linux-999.05-eMMC-Don-t-initialize-partitions-on-RPMB-flagged-are.patch b/packages/linux/patches/4.8.1/linux-999.05-eMMC-Don-t-initialize-partitions-on-RPMB-flagged-are.patch similarity index 100% rename from packages/linux/patches/4.7.6/linux-999.05-eMMC-Don-t-initialize-partitions-on-RPMB-flagged-are.patch rename to packages/linux/patches/4.8.1/linux-999.05-eMMC-Don-t-initialize-partitions-on-RPMB-flagged-are.patch diff --git a/packages/sysutils/lirc/patches/lirc-0006-kernel-4.8.patch b/packages/sysutils/lirc/patches/lirc-0006-kernel-4.8.patch new file mode 100644 index 0000000000..456468b873 --- /dev/null +++ b/packages/sysutils/lirc/patches/lirc-0006-kernel-4.8.patch @@ -0,0 +1,138 @@ +From 31fcc8aa39f62c5cbf0e4af19d253764c905e4d4 Mon Sep 17 00:00:00 2001 +From: Alec Leamas +Date: Fri, 19 Aug 2016 04:48:02 +0200 +Subject: [PATCH 1/2] lircd: Remove use of functions killed in kernel 4.8.0 + +From 4.8.0 the kernel no longer supports LIRC_NOTIFY_DECODE, +LIRC_SETUP_START/LIRC_SETUP_END and several constants related +to initiating filters. Remove corresponding calls from lircd. +--- + daemons/lircd.cpp | 51 ++------------------------------------------------- + lib/driver.h | 7 +++++++ + 2 files changed, 9 insertions(+), 49 deletions(-) + +diff --git a/daemons/lircd.cpp b/daemons/lircd.cpp +index a7dbc94..a50d11f 100644 +--- a/daemons/lircd.cpp ++++ b/daemons/lircd.cpp +@@ -464,50 +464,6 @@ static int setup_timeout(void) + } + + +-static int setup_filter(void) +-{ +- int ret1, ret2; +- lirc_t min_pulse_supported = 0, max_pulse_supported = 0; +- lirc_t min_space_supported = 0, max_space_supported = 0; +- +- if (!(curr_driver->features & LIRC_CAN_SET_REC_FILTER)) +- return 1; +- if (curr_driver->drvctl_func(LIRC_GET_MIN_FILTER_PULSE, +- &min_pulse_supported) == -1 || +- curr_driver->drvctl_func(LIRC_GET_MAX_FILTER_PULSE, &max_pulse_supported) == -1 +- || curr_driver->drvctl_func(LIRC_GET_MIN_FILTER_SPACE, &min_space_supported) == -1 +- || curr_driver->drvctl_func(LIRC_GET_MAX_FILTER_SPACE, &max_space_supported) == -1) { +- log_error("could not get filter range"); +- log_perror_err(__func__); +- } +- +- if (setup_min_pulse > max_pulse_supported) +- setup_min_pulse = max_pulse_supported; +- else if (setup_min_pulse < min_pulse_supported) +- setup_min_pulse = 0; /* disable filtering */ +- +- if (setup_min_space > max_space_supported) +- setup_min_space = max_space_supported; +- else if (setup_min_space < min_space_supported) +- setup_min_space = 0; /* disable filtering */ +- +- ret1 = curr_driver->drvctl_func(LIRC_SET_REC_FILTER_PULSE, &setup_min_pulse); +- ret2 = curr_driver->drvctl_func(LIRC_SET_REC_FILTER_SPACE, &setup_min_space); +- if (ret1 == -1 || ret2 == -1) { +- if (curr_driver-> +- drvctl_func(LIRC_SET_REC_FILTER, +- setup_min_pulse < setup_min_space ? &setup_min_pulse : &setup_min_space) == -1) { +- log_error("could not set filter"); +- log_perror_err(__func__); +- return 0; +- } +- } +- return 1; +-} +- +- +- +- + static int setup_hardware(void) + { + int ret = 1; +@@ -516,10 +472,7 @@ static int setup_hardware(void) + if ((curr_driver->features & LIRC_CAN_SET_REC_CARRIER) + || (curr_driver->features & LIRC_CAN_SET_REC_TIMEOUT) + || (curr_driver->features & LIRC_CAN_SET_REC_FILTER)) { +- (void)curr_driver->drvctl_func(LIRC_SETUP_START, NULL); +- ret = setup_frequency() && setup_timeout() +- && setup_filter(); +- (void)curr_driver->drvctl_func(LIRC_SETUP_END, NULL); ++ ret = setup_frequency() && setup_timeout(); + } + } + return ret; +@@ -2162,7 +2115,7 @@ void loop(void) + int reps; + + if (curr_driver->drvctl_func && (curr_driver->features & LIRC_CAN_NOTIFY_DECODE)) +- curr_driver->drvctl_func(LIRC_NOTIFY_DECODE, NULL); ++ curr_driver->drvctl_func(DRVCTL_NOTIFY_DECODE, NULL); + + get_release_data(&remote_name, &button_name, &reps); + +diff --git a/lib/driver.h b/lib/driver.h +index c7c4a6a..fc7318e 100644 +--- a/lib/driver.h ++++ b/lib/driver.h +@@ -97,6 +97,13 @@ int drv_handle_options(const char* options); + /** drvctl cmd: Free memory in argument obtained using DRVCTL_GET_DEVICES. */ + #define DRVCTL_FREE_DEVICES 6 + ++/** ++ * The former LIRC_NOTIFY_DECODE, informs drier that signal is successfully ++ * decoded e. g., to initiate some visual feedback through a LED. ++ */ ++ ++#define DRVCTL_NOTIFY_DECODE 7 ++ + /** Last well-known command. Remaining is used in driver-specific controls.*/ + #define DRVCTL_MAX 128 + +-- +2.7.4 + + +From 55cd30e16a46bde49ccbbce1dea8bc734362170d Mon Sep 17 00:00:00 2001 +From: MilhouseVH +Date: Fri, 30 Sep 2016 01:53:50 +0100 +Subject: [PATCH 2/2] build hack + +Hack to build with 4.8 backport above. Including "driver.h" +isn't enough, but this works. Can all be dropped once lirc +0.9.5 is released. +--- + daemons/lircd.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/daemons/lircd.cpp b/daemons/lircd.cpp +index a50d11f..8b46bc0 100644 +--- a/daemons/lircd.cpp ++++ b/daemons/lircd.cpp +@@ -71,6 +71,7 @@ + #endif + + #include "lirc_private.h" ++#define DRVCTL_NOTIFY_DECODE 7 + + #ifdef HAVE_INT_GETGROUPLIST_GROUPS + #define lirc_gid int +-- +2.7.4 + diff --git a/packages/tools/bcm2835-bootloader/package.mk b/packages/tools/bcm2835-bootloader/package.mk index cbe6ab5470..918d9fe911 100644 --- a/packages/tools/bcm2835-bootloader/package.mk +++ b/packages/tools/bcm2835-bootloader/package.mk @@ -17,7 +17,7 @@ ################################################################################ PKG_NAME="bcm2835-bootloader" -PKG_VERSION="ec63df1" +PKG_VERSION="a021d6e" PKG_REV="1" PKG_ARCH="arm" PKG_LICENSE="nonfree" diff --git a/packages/x11/driver/xf86-video-nvidia/patches/xf86-video-nvidia-kernel-4.8.patch b/packages/x11/driver/xf86-video-nvidia/patches/xf86-video-nvidia-kernel-4.8.patch new file mode 100644 index 0000000000..1014c54da2 --- /dev/null +++ b/packages/x11/driver/xf86-video-nvidia/patches/xf86-video-nvidia-kernel-4.8.patch @@ -0,0 +1,49 @@ +diff -Naur a/kernel/nvidia-drm/nvidia-drm-drv.c b/kernel/nvidia-drm/nvidia-drm-drv.c +--- a/kernel/nvidia-drm/nvidia-drm-drv.c 2016-07-12 00:53:45.000000000 -0400 ++++ b/kernel/nvidia-drm/nvidia-drm-drv.c 2016-08-03 20:19:16.536783934 -0400 +@@ -36,6 +36,7 @@ + #include "nvidia-drm-ioctl.h" + + #include ++#include + + #include + +@@ -419,7 +420,7 @@ + + static + void nvidia_drm_master_drop(struct drm_device *dev, +- struct drm_file *file_priv, bool from_release) ++ struct drm_file *file_priv) + { + struct nvidia_drm_device *nv_dev = dev->dev_private; + int ret; +@@ -452,7 +453,7 @@ + mutex_lock(&dev->master_mutex); + + if (!file_priv->is_master || +- !file_priv->minor->master) ++ !file_priv->minor->dev->master) + { + goto done; + } +@@ -473,7 +474,7 @@ + * NVKMS modeset ownership, because nvidia_drm_master_set()'s call to + * grabOwnership() will fail. + */ +- drm_master_put(&file_priv->minor->master); ++ drm_master_put(&file_priv->minor->dev->master); + file_priv->is_master = 0; + + ret = 0; +diff -Naur a/kernel/nvidia-drm/nvidia-drm-modeset.c b/kernel/nvidia-drm/nvidia-drm-modeset.c +--- a/kernel/nvidia-drm/nvidia-drm-modeset.c 2016-07-12 00:53:45.000000000 -0400 ++++ b/kernel/nvidia-drm/nvidia-drm-modeset.c 2016-08-03 20:14:18.058238340 -0400 +@@ -675,7 +675,7 @@ + goto failed; + } + +- drm_atomic_helper_swap_state(dev, state); ++ drm_atomic_helper_swap_state(state, async); + + nvidia_drm_update_head_mode_config(state, requested_config); diff --git a/projects/Generic/linux/linux.x86_64.conf b/projects/Generic/linux/linux.x86_64.conf index f7c317961f..e7937500dd 100644 --- a/projects/Generic/linux/linux.x86_64.conf +++ b/projects/Generic/linux/linux.x86_64.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 4.7.4 Kernel Configuration +# Linux/x86_64 4.8.1 Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y @@ -38,7 +38,6 @@ CONFIG_AUDIT_ARCH=y CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_X86_64_SMP=y -CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_FIX_EARLYCON_MEM=y CONFIG_DEBUG_RODATA=y @@ -234,6 +233,7 @@ CONFIG_SLUB_DEBUG=y # CONFIG_SLAB is not set CONFIG_SLUB=y # CONFIG_SLOB is not set +# CONFIG_SLAB_FREELIST_RANDOM is not set CONFIG_SLUB_CPU_PARTIAL=y # CONFIG_SYSTEM_DATA_VERIFICATION is not set # CONFIG_PROFILING is not set @@ -274,11 +274,14 @@ CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y CONFIG_HAVE_ARCH_SECCOMP_FILTER=y CONFIG_SECCOMP_FILTER=y +CONFIG_HAVE_GCC_PLUGINS=y +# CONFIG_GCC_PLUGINS is not set CONFIG_HAVE_CC_STACKPROTECTOR=y # CONFIG_CC_STACKPROTECTOR is not set CONFIG_CC_STACKPROTECTOR_NONE=y # CONFIG_CC_STACKPROTECTOR_REGULAR is not set # CONFIG_CC_STACKPROTECTOR_STRONG is not set +CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y CONFIG_HAVE_CONTEXT_TRACKING=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y @@ -502,6 +505,7 @@ CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 CONFIG_TRANSPARENT_HUGEPAGE=y # CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +CONFIG_TRANSPARENT_HUGE_PAGECACHE=y CONFIG_CLEANCACHE=y # CONFIG_FRONTSWAP is not set # CONFIG_CMA is not set @@ -597,6 +601,7 @@ CONFIG_ACPI_VIDEO=y CONFIG_ACPI_FAN=y # CONFIG_ACPI_DOCK is not set CONFIG_ACPI_CPU_FREQ_PSS=y +CONFIG_ACPI_PROCESSOR_CSTATE=y CONFIG_ACPI_PROCESSOR_IDLE=y CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_HOTPLUG_CPU=y @@ -604,6 +609,7 @@ CONFIG_ACPI_PROCESSOR_AGGREGATOR=y CONFIG_ACPI_THERMAL=y CONFIG_ACPI_NUMA=y # CONFIG_ACPI_CUSTOM_DSDT is not set +CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y CONFIG_ACPI_TABLE_UPGRADE=y # CONFIG_ACPI_DEBUG is not set # CONFIG_ACPI_PCI_SLOT is not set @@ -619,7 +625,9 @@ CONFIG_ACPI_HOTPLUG_IOAPIC=y CONFIG_HAVE_ACPI_APEI=y CONFIG_HAVE_ACPI_APEI_NMI=y # CONFIG_ACPI_APEI is not set +# CONFIG_DPTF_POWER is not set # CONFIG_PMIC_OPREGION is not set +# CONFIG_ACPI_CONFIGFS is not set # CONFIG_SFI is not set # @@ -1028,6 +1036,7 @@ CONFIG_DNS_RESOLVER=y # CONFIG_HSR is not set # CONFIG_NET_SWITCHDEV is not set # CONFIG_NET_L3_MASTER_DEV is not set +# CONFIG_NET_NCSI is not set CONFIG_RPS=y CONFIG_RFS_ACCEL=y CONFIG_XPS=y @@ -1214,7 +1223,6 @@ CONFIG_BLK_DEV_NVME=y # CONFIG_ISL29003 is not set # CONFIG_ISL29020 is not set # CONFIG_SENSORS_TSL2550 is not set -# CONFIG_SENSORS_BH1780 is not set # CONFIG_SENSORS_BH1770 is not set # CONFIG_SENSORS_APDS990X is not set # CONFIG_HMC6352 is not set @@ -1285,8 +1293,7 @@ CONFIG_ALTERA_STAPL=m # CONFIG_GENWQE is not set # CONFIG_ECHO is not set # CONFIG_CXL_BASE is not set -# CONFIG_CXL_KERNEL_API is not set -# CONFIG_CXL_EEH is not set +# CONFIG_CXL_AFU_DRIVER_OPS is not set CONFIG_HAVE_IDE=y # CONFIG_IDE is not set @@ -1683,6 +1690,7 @@ CONFIG_REALTEK_PHY=y # CONFIG_MDIO_OCTEON is not set # CONFIG_MDIO_THUNDER is not set # CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_INTEL_XWAY_PHY is not set CONFIG_PPP=m CONFIG_PPP_BSDCOMP=m CONFIG_PPP_DEFLATE=m @@ -2072,6 +2080,9 @@ CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y # CONFIG_TOUCHSCREEN_TSC_SERIO is not set # CONFIG_TOUCHSCREEN_TSC2004 is not set # CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_RM_TS is not set +# CONFIG_TOUCHSCREEN_SILEAD is not set +# CONFIG_TOUCHSCREEN_SIS_I2C is not set CONFIG_TOUCHSCREEN_ST1232=m # CONFIG_TOUCHSCREEN_SUR40 is not set # CONFIG_TOUCHSCREEN_SX8654 is not set @@ -2215,6 +2226,7 @@ CONFIG_I2C_MUX=m # CONFIG_I2C_MUX_PINCTRL is not set # CONFIG_I2C_MUX_REG is not set CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_SMBUS=y CONFIG_I2C_ALGOBIT=y # @@ -2322,7 +2334,6 @@ CONFIG_PINCTRL_BAYTRAIL=y CONFIG_PINCTRL_CHERRYVIEW=y # CONFIG_PINCTRL_BROXTON is not set # CONFIG_PINCTRL_SUNRISEPOINT is not set -CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y CONFIG_GPIOLIB=y CONFIG_GPIO_DEVRES=y CONFIG_GPIO_ACPI=y @@ -2369,14 +2380,12 @@ CONFIG_GPIOLIB_IRQCHIP=y # # CONFIG_GPIO_AMD8111 is not set # CONFIG_GPIO_BT8XX is not set -# CONFIG_GPIO_INTEL_MID is not set # CONFIG_GPIO_ML_IOH is not set # CONFIG_GPIO_RDC321X is not set # # SPI or I2C GPIO expanders # -# CONFIG_GPIO_MCP23S08 is not set # # USB GPIO expanders @@ -2499,6 +2508,7 @@ CONFIG_SENSORS_IT87=m # CONFIG_PMBUS is not set # CONFIG_SENSORS_SHT15 is not set # CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x is not set # CONFIG_SENSORS_SHTC1 is not set # CONFIG_SENSORS_SIS5595 is not set # CONFIG_SENSORS_DME1737 is not set @@ -2516,6 +2526,7 @@ CONFIG_SENSORS_IT87=m # CONFIG_SENSORS_AMC6821 is not set # CONFIG_SENSORS_INA209 is not set # CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA3221 is not set # CONFIG_SENSORS_TC74 is not set # CONFIG_SENSORS_THMC50 is not set # CONFIG_SENSORS_TMP102 is not set @@ -2644,7 +2655,6 @@ CONFIG_MFD_RTSX_PCI=y # CONFIG_MFD_RT5033 is not set CONFIG_MFD_RTSX_USB=y # CONFIG_MFD_RC5T583 is not set -# CONFIG_MFD_RN5T618 is not set # CONFIG_MFD_SEC_CORE is not set # CONFIG_MFD_SI476X_CORE is not set # CONFIG_MFD_SM501 is not set @@ -3049,6 +3059,8 @@ CONFIG_DVB_M88DS3103=m CONFIG_DVB_DRXK=m CONFIG_DVB_TDA18271C2DD=m CONFIG_DVB_SI2165=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m CONFIG_DVB_STV0367DD=m CONFIG_DVB_CXD2843=m @@ -3196,7 +3208,6 @@ CONFIG_DRM_TTM=y # # I2C encoder or helper chips # -# CONFIG_DRM_I2C_ADV7511 is not set # CONFIG_DRM_I2C_CH7006 is not set # CONFIG_DRM_I2C_SIL164 is not set # CONFIG_DRM_I2C_NXP_TDA998X is not set @@ -3219,6 +3230,7 @@ CONFIG_DRM_AMD_ACP=y CONFIG_DRM_I915=y # CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set CONFIG_DRM_I915_USERPTR=y +# CONFIG_DRM_I915_GVT is not set # # drm/i915 Debugging @@ -3530,7 +3542,10 @@ CONFIG_SND_SST_IPC_ACPI=m CONFIG_SND_SOC_INTEL_SST=m CONFIG_SND_SOC_INTEL_SST_ACPI=m CONFIG_SND_SOC_INTEL_SST_MATCH=m +# CONFIG_SND_SOC_INTEL_HASWELL_MACH is not set +# CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH is not set # CONFIG_SND_SOC_INTEL_BXT_RT298_MACH is not set +# CONFIG_SND_SOC_INTEL_BROADWELL_MACH is not set CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m # CONFIG_SND_SOC_INTEL_BYTCR_RT5651_MACH is not set CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m @@ -3544,6 +3559,7 @@ CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m # Allwinner SoC Audio support # # CONFIG_SND_SUN4I_CODEC is not set +# CONFIG_SND_SUN4I_I2S is not set # CONFIG_SND_SOC_XTFPGA_I2S is not set CONFIG_SND_SOC_I2C_AND_SPI=y @@ -3552,12 +3568,15 @@ CONFIG_SND_SOC_I2C_AND_SPI=y # # CONFIG_SND_SOC_AC97_CODEC is not set # CONFIG_SND_SOC_ADAU1701 is not set +# CONFIG_SND_SOC_ADAU7002 is not set # CONFIG_SND_SOC_AK4554 is not set # CONFIG_SND_SOC_AK4613 is not set # CONFIG_SND_SOC_AK4642 is not set # CONFIG_SND_SOC_AK5386 is not set # CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_BT_SCO is not set # CONFIG_SND_SOC_CS35L32 is not set +# CONFIG_SND_SOC_CS35L33 is not set # CONFIG_SND_SOC_CS42L51_I2C is not set # CONFIG_SND_SOC_CS42L52 is not set # CONFIG_SND_SOC_CS42L56 is not set @@ -3567,10 +3586,13 @@ CONFIG_SND_SOC_I2C_AND_SPI=y # CONFIG_SND_SOC_CS4271_I2C is not set # CONFIG_SND_SOC_CS42XX8_I2C is not set # CONFIG_SND_SOC_CS4349 is not set +# CONFIG_SND_SOC_CS53L30 is not set # CONFIG_SND_SOC_ES8328 is not set # CONFIG_SND_SOC_GTM601 is not set # CONFIG_SND_SOC_INNO_RK3036 is not set CONFIG_SND_SOC_MAX98090=m +# CONFIG_SND_SOC_MAX98504 is not set +# CONFIG_SND_SOC_MAX9860 is not set # CONFIG_SND_SOC_PCM1681 is not set # CONFIG_SND_SOC_PCM179X_I2C is not set # CONFIG_SND_SOC_PCM3168A_I2C is not set @@ -3616,7 +3638,9 @@ CONFIG_SND_SOC_TS3A227E=m # CONFIG_SND_SOC_WM8962 is not set # CONFIG_SND_SOC_WM8974 is not set # CONFIG_SND_SOC_WM8978 is not set +# CONFIG_SND_SOC_WM8985 is not set # CONFIG_SND_SOC_TPA6130A2 is not set +CONFIG_SND_SIMPLE_CARD_UTILS=m CONFIG_SND_SIMPLE_CARD=m # CONFIG_SOUND_PRIME is not set CONFIG_AC97_BUS=m @@ -3667,6 +3691,7 @@ CONFIG_HID_GYRATION=y CONFIG_HID_TWINHAN=y CONFIG_HID_KENSINGTON=y CONFIG_HID_LCPOWER=y +# CONFIG_HID_LED is not set CONFIG_HID_LENOVO=y CONFIG_HID_LOGITECH=y CONFIG_HID_LOGITECH_DJ=y @@ -3678,7 +3703,7 @@ CONFIG_LOGIWHEELS_FF=y # CONFIG_HID_MAGICMOUSE is not set CONFIG_HID_MICROSOFT=y CONFIG_HID_MONTEREY=y -# CONFIG_HID_MULTITOUCH is not set +CONFIG_HID_MULTITOUCH=m # CONFIG_HID_NTRIG is not set CONFIG_HID_ORTEK=y CONFIG_HID_OUYA=y @@ -3712,6 +3737,7 @@ CONFIG_HID_XINMO=y # CONFIG_HID_ZEROPLUS is not set CONFIG_HID_ZYDACRON=y # CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set # # USB HID support @@ -3879,7 +3905,6 @@ CONFIG_USB_SERIAL_PL2303=m # CONFIG_USB_RIO500 is not set # CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LCD is not set -# CONFIG_USB_LED is not set # CONFIG_USB_CYPRESS_CY7C63 is not set # CONFIG_USB_CYTHERM is not set # CONFIG_USB_IDMOUSE is not set @@ -3970,6 +3995,7 @@ CONFIG_LEDS_CLASS_FLASH=y # CONFIG_LEDS_PCA9532 is not set # CONFIG_LEDS_GPIO is not set # CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP3952 is not set # CONFIG_LEDS_LP5521 is not set # CONFIG_LEDS_LP5523 is not set # CONFIG_LEDS_LP5562 is not set @@ -3996,6 +4022,7 @@ CONFIG_LEDS_CLASS_FLASH=y CONFIG_LEDS_TRIGGERS=y # CONFIG_LEDS_TRIGGER_TIMER is not set # CONFIG_LEDS_TRIGGER_ONESHOT is not set +# CONFIG_LEDS_TRIGGER_DISK is not set # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set # CONFIG_LEDS_TRIGGER_BACKLIGHT is not set # CONFIG_LEDS_TRIGGER_CPU is not set @@ -4014,6 +4041,7 @@ CONFIG_EDAC_ATOMIC_SCRUB=y CONFIG_EDAC_SUPPORT=y # CONFIG_EDAC is not set CONFIG_RTC_LIB=y +CONFIG_RTC_MC146818_LIB=y CONFIG_RTC_CLASS=y CONFIG_RTC_HCTOSYS=y CONFIG_RTC_HCTOSYS_DEVICE="rtc0" @@ -4173,8 +4201,8 @@ CONFIG_VT6656=m # # CONFIG_SPEAKUP is not set CONFIG_STAGING_MEDIA=y +# CONFIG_MEDIA_CEC is not set CONFIG_DVB_CXD2099=m -CONFIG_DVB_MN88472=m # CONFIG_VIDEO_TW686X_KH is not set CONFIG_LIRC_STAGING=y # CONFIG_LIRC_BT829 is not set @@ -4198,6 +4226,7 @@ CONFIG_LIRC_XBOX=m # CONFIG_UNISYSSPAR is not set # CONFIG_WILC1000_SDIO is not set # CONFIG_MOST is not set +# CONFIG_KS7010 is not set # CONFIG_X86_PLATFORM_DEVICES is not set # CONFIG_CHROME_PLATFORMS is not set CONFIG_CLKDEV_LOOKUP=y @@ -4213,7 +4242,7 @@ CONFIG_COMMON_CLK=y # CONFIG_COMMON_CLK_NXP is not set # CONFIG_COMMON_CLK_PXA is not set # CONFIG_COMMON_CLK_PIC32 is not set -# CONFIG_COMMON_CLK_OXNAS is not set +# CONFIG_SUNXI_CCU is not set # # Hardware Spinlock drivers @@ -4244,6 +4273,10 @@ CONFIG_CLKBLD_I8253=y # # SOC (System On Chip) specific Drivers # + +# +# Broadcom SoC drivers +# # CONFIG_SUNXI_SRAM is not set # CONFIG_SOC_TI is not set # CONFIG_PM_DEVFREQ is not set @@ -4319,6 +4352,7 @@ CONFIG_EFI_RUNTIME_WRAPPERS=y # File systems # CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_FS_IOMAP=y # CONFIG_EXT2_FS is not set # CONFIG_EXT3_FS is not set CONFIG_EXT4_FS=y @@ -4361,6 +4395,7 @@ CONFIG_F2FS_CHECK_FS=y # CONFIG_FS_DAX is not set CONFIG_FS_POSIX_ACL=y CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set CONFIG_FILE_LOCKING=y CONFIG_MANDATORY_FILE_LOCKING=y # CONFIG_FS_ENCRYPTION is not set @@ -4671,8 +4706,6 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=60 # CONFIG_NOTIFIER_ERROR_INJECTION is not set # CONFIG_FAULT_INJECTION is not set # CONFIG_LATENCYTOP is not set -CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y -# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set CONFIG_USER_STACKTRACE_SUPPORT=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y @@ -4763,6 +4796,9 @@ CONFIG_KEYS=y # CONFIG_SECURITY_DMESG_RESTRICT is not set # CONFIG_SECURITY is not set # CONFIG_SECURITYFS is not set +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y +CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y +# CONFIG_HARDENED_USERCOPY is not set CONFIG_DEFAULT_SECURITY_DAC=y CONFIG_DEFAULT_SECURITY="" CONFIG_XOR_BLOCKS=y @@ -4783,7 +4819,10 @@ CONFIG_CRYPTO_RNG=m CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_RNG_DEFAULT=m CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_KPP2=y # CONFIG_CRYPTO_RSA is not set +# CONFIG_CRYPTO_DH is not set +# CONFIG_CRYPTO_ECDH is not set CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y # CONFIG_CRYPTO_USER is not set @@ -4850,8 +4889,11 @@ CONFIG_CRYPTO_SHA1=m # CONFIG_CRYPTO_SHA256_SSSE3 is not set # CONFIG_CRYPTO_SHA512_SSSE3 is not set # CONFIG_CRYPTO_SHA1_MB is not set +# CONFIG_CRYPTO_SHA256_MB is not set +# CONFIG_CRYPTO_SHA512_MB is not set CONFIG_CRYPTO_SHA256=y # CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_SHA3 is not set # CONFIG_CRYPTO_TGR192 is not set # CONFIG_CRYPTO_WP512 is not set # CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set diff --git a/projects/Generic/patches/linux/linux-030-BYT-CHT-SOC-audio-support.patch b/projects/Generic/patches/linux/linux-030-BYT-CHT-SOC-audio-support.patch index 6c67e87f48..9d5d1c5b17 100644 --- a/projects/Generic/patches/linux/linux-030-BYT-CHT-SOC-audio-support.patch +++ b/projects/Generic/patches/linux/linux-030-BYT-CHT-SOC-audio-support.patch @@ -1,4 +1,4 @@ -From d7c07ade8f6b82a3fd299e749f98381f3c3c2057 Mon Sep 17 00:00:00 2001 +From 982a9c5bbe16cabc297e75d6d9e8d2926f5641b8 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Wed, 2 Mar 2016 14:30:44 -0600 Subject: [PATCH 01/12] drm: i915: remove intel_hdmi variable declaration @@ -12,10 +12,10 @@ Signed-off-by: Pierre-Louis Bossart 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c -index a884470..2adcc15 100644 +index 4df9f38..34e497f 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c -@@ -1514,7 +1514,7 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) +@@ -1496,7 +1496,7 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) intel_hdmi_unset_edid(connector); if (intel_hdmi_set_edid(connector, live_status)) { @@ -25,7 +25,7 @@ index a884470..2adcc15 100644 hdmi_to_dig_port(intel_hdmi)->base.type = INTEL_OUTPUT_HDMI; status = connector_status_connected; -From 0dffccdf5025a92d38f18c1698e542a8bd2de903 Mon Sep 17 00:00:00 2001 +From 9a4bb140fbca791441bcf93ddf0a2ae062bc9945 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Tue, 1 Mar 2016 16:25:04 -0600 Subject: [PATCH 02/12] drm/i915: Add headers for non-HDAudio HDMI interface @@ -43,10 +43,10 @@ Signed-off-by: David Henningsson Signed-off-by: Pierre-Louis Bossart --- drivers/gpu/drm/i915/hdmi_audio_if.h | 125 +++++++++++++++++++++++++++++++++++ - drivers/gpu/drm/i915/i915_drv.h | 32 +++++++++ + drivers/gpu/drm/i915/i915_drv.h | 31 +++++++++ drivers/gpu/drm/i915/i915_reg.h | 22 ++++++ drivers/gpu/drm/i915/intel_drv.h | 13 ++++ - 4 files changed, 192 insertions(+) + 4 files changed, 191 insertions(+) create mode 100644 drivers/gpu/drm/i915/hdmi_audio_if.h diff --git a/drivers/gpu/drm/i915/hdmi_audio_if.h b/drivers/gpu/drm/i915/hdmi_audio_if.h @@ -181,19 +181,18 @@ index 0000000..165bba5 + +#endif /* __HDMI_AUDIO_IF_H */ diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h -index bc3f2e6..7c2577d 100644 +index f68c789..4c682fae 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h -@@ -61,6 +61,8 @@ - #include "i915_gem_gtt.h" +@@ -63,6 +63,7 @@ #include "i915_gem_render_state.h" + #include "intel_gvt.h" +#include "hdmi_audio_if.h" -+ + /* General customization: */ - -@@ -1165,6 +1167,18 @@ struct intel_gen6_power_mgmt { +@@ -1208,6 +1209,18 @@ struct intel_gen6_power_mgmt { struct mutex hw_lock; }; @@ -212,7 +211,7 @@ index bc3f2e6..7c2577d 100644 /* defined intel_pm.c */ extern spinlock_t mchdev_lock; -@@ -1997,6 +2011,19 @@ struct drm_i915_private { +@@ -2066,6 +2079,19 @@ struct drm_i915_private { struct intel_encoder *dig_port_map[I915_MAX_PORTS]; @@ -232,7 +231,7 @@ index bc3f2e6..7c2577d 100644 /* * NOTE: This is the dri1/ums dungeon, don't add stuff here. Your patch * will be rejected. Instead look for a better place. -@@ -3634,6 +3661,11 @@ int intel_freq_opcode(struct drm_i915_private *dev_priv, int val); +@@ -3903,6 +3929,11 @@ int intel_freq_opcode(struct drm_i915_private *dev_priv, int val); } while (upper != old_upper && loop++ < 2); \ (u64)upper << 32 | lower; }) @@ -245,10 +244,10 @@ index bc3f2e6..7c2577d 100644 #define POSTING_READ16(reg) (void)I915_READ16_NOTRACE(reg) diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h -index 3fcf7dd..d3e5935 100644 +index bf2cad3..bb0378f2d 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h -@@ -2113,7 +2113,25 @@ enum skl_disp_power_wells { +@@ -2131,7 +2131,25 @@ enum skl_disp_power_wells { #define I915_WINVALID_INTERRUPT (1<<1) #define I915_USER_INTERRUPT (1<<1) #define I915_ASLE_INTERRUPT (1<<0) @@ -274,7 +273,7 @@ index 3fcf7dd..d3e5935 100644 #define GEN6_BSD_RNCID _MMIO(0x12198) -@@ -3433,6 +3451,9 @@ enum skl_disp_power_wells { +@@ -3468,6 +3486,9 @@ enum { #define _GEN3_SDVOC 0x61160 #define GEN3_SDVOB _MMIO(_GEN3_SDVOB) #define GEN3_SDVOC _MMIO(_GEN3_SDVOC) @@ -284,7 +283,7 @@ index 3fcf7dd..d3e5935 100644 #define GEN4_HDMIB GEN3_SDVOB #define GEN4_HDMIC GEN3_SDVOC #define VLV_HDMIB _MMIO(VLV_DISPLAY_BASE + 0x61140) -@@ -3442,6 +3463,7 @@ enum skl_disp_power_wells { +@@ -3477,6 +3498,7 @@ enum { #define PCH_HDMIB PCH_SDVOB #define PCH_HDMIC _MMIO(0xe1150) #define PCH_HDMID _MMIO(0xe1160) @@ -293,10 +292,10 @@ index 3fcf7dd..d3e5935 100644 #define PORT_DFT_I9XX _MMIO(0x61150) #define DC_BALANCE_RESET (1 << 25) diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h -index f7f0f01..2820ef2 100644 +index ff399b9..83915b1 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h -@@ -751,6 +751,14 @@ struct cxsr_latency { +@@ -796,6 +796,14 @@ struct cxsr_latency { #define to_intel_plane_state(x) container_of(x, struct intel_plane_state, base) #define intel_fb_obj(x) (x ? to_intel_framebuffer(x)->obj : NULL) @@ -311,7 +310,7 @@ index f7f0f01..2820ef2 100644 struct intel_hdmi { i915_reg_t hdmi_reg; int ddc_bus; -@@ -766,6 +774,9 @@ struct intel_hdmi { +@@ -811,6 +819,9 @@ struct intel_hdmi { bool rgb_quant_range_selectable; enum hdmi_picture_aspect aspect_ratio; struct intel_connector *attached_connector; @@ -321,7 +320,7 @@ index f7f0f01..2820ef2 100644 void (*write_infoframe)(struct drm_encoder *encoder, enum hdmi_infoframe_type type, const void *frame, ssize_t len); -@@ -1196,6 +1207,8 @@ intel_rotation_90_or_270(unsigned int rotation) +@@ -1263,6 +1274,8 @@ intel_rotation_90_or_270(unsigned int rotation) void intel_create_rotation_property(struct drm_device *dev, struct intel_plane *plane); @@ -331,7 +330,7 @@ index f7f0f01..2820ef2 100644 void assert_pch_transcoder_disabled(struct drm_i915_private *dev_priv, enum pipe pipe); -From fdb02b86d0cc7c9ec341efdc3086aa703637f2b6 Mon Sep 17 00:00:00 2001 +From 0aca8e42f07b0f84970a39d7f91b33a9899001a9 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Tue, 1 Mar 2016 16:25:04 -0600 Subject: [PATCH 03/12] drm/i915: changes for non-HDAudio HDMI interface @@ -361,15 +360,15 @@ Signed-off-by: Pierre-Louis Bossart Signed-off-by: Toyo Abe --- drivers/gpu/drm/i915/i915_irq.c | 169 +++++++++++++++++++++++++++- - drivers/gpu/drm/i915/intel_display.c | 103 ++++++++++++++++- - drivers/gpu/drm/i915/intel_hdmi.c | 211 ++++++++++++++++++++++++++++++++++- - 3 files changed, 479 insertions(+), 4 deletions(-) + drivers/gpu/drm/i915/intel_display.c | 100 +++++++++++++++++ + drivers/gpu/drm/i915/intel_hdmi.c | 212 ++++++++++++++++++++++++++++++++++- + 3 files changed, 478 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c -index aab47f7..3ef0d14 100644 +index 1c2aec3..93ad21e 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c -@@ -603,6 +603,42 @@ i915_disable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe, +@@ -587,6 +587,42 @@ i915_disable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe, __i915_disable_pipestat(dev_priv, pipe, enable_mask, status_mask); } @@ -382,7 +381,7 @@ index aab47f7..3ef0d14 100644 + mask = dev_priv->hdmi_audio_interrupt_mask; + mask |= I915_HDMI_AUDIO_UNDERRUN | I915_HDMI_AUDIO_BUFFER_DONE; + /* Enable the interrupt, clear any pending status */ -+ if (IS_CHERRYVIEW(dev_priv->dev)) { ++ if (IS_CHERRYVIEW(dev_priv)) { + I915_WRITE(I915_LPE_AUDIO_HDMI_STATUS_C, mask); + POSTING_READ(I915_LPE_AUDIO_HDMI_STATUS_C); + } else { @@ -399,7 +398,7 @@ index aab47f7..3ef0d14 100644 + mask = dev_priv->hdmi_audio_interrupt_mask; + mask |= I915_HDMI_AUDIO_UNDERRUN | I915_HDMI_AUDIO_BUFFER_DONE; + /* Disable the interrupt, clear any pending status */ -+ if (IS_CHERRYVIEW(dev_priv->dev)) { ++ if (IS_CHERRYVIEW(dev_priv)) { + I915_WRITE(I915_LPE_AUDIO_HDMI_STATUS_C, mask); + POSTING_READ(I915_LPE_AUDIO_HDMI_STATUS_C); + @@ -411,9 +410,9 @@ index aab47f7..3ef0d14 100644 + /** * i915_enable_asle_pipestat - enable ASLE pipestat for OpRegion - * @dev: drm device -@@ -1651,6 +1687,24 @@ static bool intel_pipe_handle_vblank(struct drm_device *dev, enum pipe pipe) - return true; + * @dev_priv: i915 device private +@@ -1618,6 +1654,24 @@ static bool intel_pipe_handle_vblank(struct drm_i915_private *dev_priv, + return ret; } +static inline @@ -434,15 +433,15 @@ index aab47f7..3ef0d14 100644 + } +} + - static void valleyview_pipestat_irq_ack(struct drm_device *dev, u32 iir, - u32 pipe_stats[I915_MAX_PIPES]) + static void valleyview_pipestat_irq_ack(struct drm_i915_private *dev_priv, + u32 iir, u32 pipe_stats[I915_MAX_PIPES]) { -@@ -1853,6 +1907,23 @@ static irqreturn_t valleyview_irq_handler(int irq, void *arg) - i9xx_hpd_irq_handler(dev, hotplug_status); +@@ -1817,6 +1871,23 @@ static irqreturn_t valleyview_irq_handler(int irq, void *arg) + i9xx_hpd_irq_handler(dev_priv, hotplug_status); - valleyview_pipestat_irq_handler(dev, pipe_stats); + valleyview_pipestat_irq_handler(dev_priv, pipe_stats); + -+ if (IS_CHERRYVIEW(dev)) { ++ if (IS_CHERRYVIEW(dev_priv)) { + // FIXME: plb: why are pipes and status mapped this way? + if (iir & I915_LPE_PIPE_C_INTERRUPT) + i915_notify_audio_buffer_status(dev, @@ -461,12 +460,12 @@ index aab47f7..3ef0d14 100644 } while (0); enable_rpm_wakeref_asserts(dev_priv); -@@ -1930,6 +2001,23 @@ static irqreturn_t cherryview_irq_handler(int irq, void *arg) - i9xx_hpd_irq_handler(dev, hotplug_status); +@@ -1894,6 +1965,23 @@ static irqreturn_t cherryview_irq_handler(int irq, void *arg) + i9xx_hpd_irq_handler(dev_priv, hotplug_status); - valleyview_pipestat_irq_handler(dev, pipe_stats); + valleyview_pipestat_irq_handler(dev_priv, pipe_stats); + -+ if (IS_CHERRYVIEW(dev)) { ++ if (IS_CHERRYVIEW(dev_priv)) { + // FIXME: plb: why are pipes and status mapped this way? + if (iir & I915_LPE_PIPE_C_INTERRUPT) + i915_notify_audio_buffer_status(dev, @@ -485,7 +484,7 @@ index aab47f7..3ef0d14 100644 } while (0); enable_rpm_wakeref_asserts(dev_priv); -@@ -2861,6 +2949,72 @@ static void gen8_disable_vblank(struct drm_device *dev, unsigned int pipe) +@@ -2803,6 +2891,72 @@ static void gen8_disable_vblank(struct drm_device *dev, unsigned int pipe) spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); } @@ -502,7 +501,7 @@ index aab47f7..3ef0d14 100644 + + imr = I915_READ(VLV_IMR); + -+ if (IS_CHERRYVIEW(dev_priv->dev)) { ++ if (IS_CHERRYVIEW(dev_priv)) { + // FIXME: plb: looks wrong + + //imr &= ~I915_LPE_PIPE_C_INTERRUPT; @@ -534,7 +533,7 @@ index aab47f7..3ef0d14 100644 + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + imr = I915_READ(VLV_IMR); + -+ if (IS_CHERRYVIEW(dev_priv->dev)) { ++ if (IS_CHERRYVIEW(dev_priv)) { + // FIXME: plb: looks wrong, should have other interrupts as well? + //imr |= I915_LPE_PIPE_C_INTERRUPT; + int_bit = (pipe ? (I915_LPE_PIPE_B_INTERRUPT >> @@ -558,7 +557,7 @@ index aab47f7..3ef0d14 100644 static bool ring_idle(struct intel_engine_cs *engine, u32 seqno) { -@@ -3371,7 +3525,8 @@ static void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv) +@@ -3293,7 +3447,8 @@ static void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv) u32 pipestat_mask; u32 enable_mask; enum pipe pipe; @@ -568,11 +567,11 @@ index aab47f7..3ef0d14 100644 pipestat_mask = PLANE_FLIP_DONE_INT_STATUS_VLV | PIPE_CRC_DONE_INTERRUPT_STATUS; -@@ -3385,6 +3540,18 @@ static void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv) +@@ -3307,6 +3462,18 @@ static void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv) if (IS_CHERRYVIEW(dev_priv)) enable_mask |= I915_DISPLAY_PIPE_C_EVENT_INTERRUPT; -+ if (IS_CHERRYVIEW(dev_priv->dev)) ++ if (IS_CHERRYVIEW(dev_priv)) + // FIXME: plb: looks wrong: what about other interrupts + enable_mask |= I915_LPE_PIPE_C_INTERRUPT; + @@ -580,7 +579,7 @@ index aab47f7..3ef0d14 100644 + I915_HDMI_AUDIO_BUFFER_DONE; + I915_WRITE(I915_LPE_AUDIO_HDMI_STATUS_A, lpe_status_clear); + I915_WRITE(I915_LPE_AUDIO_HDMI_STATUS_B, lpe_status_clear); -+ if (IS_CHERRYVIEW(dev_priv->dev)) ++ if (IS_CHERRYVIEW(dev_priv)) + I915_WRITE(I915_LPE_AUDIO_HDMI_STATUS_C, lpe_status_clear); + + @@ -588,28 +587,28 @@ index aab47f7..3ef0d14 100644 dev_priv->irq_mask = ~enable_mask; diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c -index 3074c56..5d162b8 100644 +index 175595f..d4499ff 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c -@@ -7964,6 +7964,8 @@ static int chv_crtc_compute_clock(struct intel_crtc *crtc, +@@ -8096,6 +8096,8 @@ static int chv_crtc_compute_clock(struct intel_crtc *crtc, { int refclk = 100000; - const intel_limit_t *limit = &intel_limits_chv; + const struct intel_limit *limit = &intel_limits_chv; + struct drm_device *dev = crtc->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; memset(&crtc_state->dpll_hw_state, 0, sizeof(crtc_state->dpll_hw_state)); -@@ -7977,6 +7979,16 @@ static int chv_crtc_compute_clock(struct intel_crtc *crtc, +@@ -8109,6 +8111,16 @@ static int chv_crtc_compute_clock(struct intel_crtc *crtc, chv_compute_dpll(crtc, crtc_state); + /* Added for HDMI Audio */ -+ if ((IS_CHERRYVIEW(dev)) || (IS_VALLEYVIEW(dev))) { -+ if (intel_pipe_will_have_type(crtc_state, INTEL_OUTPUT_HDMI)) { ++ if ((IS_CHERRYVIEW(dev_priv)) || (IS_VALLEYVIEW(dev_priv))) { ++ if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) { + dev_priv->tmds_clock_speed = crtc_state->port_clock; + -+ mid_hdmi_audio_signal_event(dev_priv->dev, ++ mid_hdmi_audio_signal_event(dev, + HAD_EVENT_MODE_CHANGING); + } + } @@ -617,27 +616,25 @@ index 3074c56..5d162b8 100644 return 0; } -@@ -7985,7 +7997,9 @@ static int vlv_crtc_compute_clock(struct intel_crtc *crtc, +@@ -8117,6 +8129,8 @@ static int vlv_crtc_compute_clock(struct intel_crtc *crtc, { int refclk = 100000; - const intel_limit_t *limit = &intel_limits_vlv; -- + const struct intel_limit *limit = &intel_limits_vlv; + struct drm_device *dev = crtc->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; -+ + memset(&crtc_state->dpll_hw_state, 0, sizeof(crtc_state->dpll_hw_state)); - -@@ -7998,6 +8012,16 @@ static int vlv_crtc_compute_clock(struct intel_crtc *crtc, +@@ -8130,6 +8144,16 @@ static int vlv_crtc_compute_clock(struct intel_crtc *crtc, vlv_compute_dpll(crtc, crtc_state); + /* Added for HDMI Audio */ -+ if ((IS_CHERRYVIEW(dev)) || (IS_VALLEYVIEW(dev))) { -+ if (intel_pipe_will_have_type(crtc_state, INTEL_OUTPUT_HDMI)) { ++ if ((IS_CHERRYVIEW(dev_priv)) || (IS_VALLEYVIEW(dev_priv))) { ++ if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) { + dev_priv->tmds_clock_speed = crtc_state->port_clock; + -+ mid_hdmi_audio_signal_event(dev_priv->dev, ++ mid_hdmi_audio_signal_event(dev, + HAD_EVENT_MODE_CHANGING); + } + } @@ -645,15 +642,14 @@ index 3074c56..5d162b8 100644 return 0; } -@@ -14678,6 +14702,83 @@ static void intel_setup_outputs(struct drm_device *dev) +@@ -14913,6 +14937,82 @@ static void intel_setup_outputs(struct drm_device *dev) drm_helper_move_panel_connectors_to_head(dev); } +void chv_set_lpe_audio_reg_pipe(struct drm_device *dev, + int encoder_type, enum port port) +{ -+ struct drm_i915_private *dev_priv = dev->dev_private; -+ struct intel_encoder *intel_encoder; ++ struct drm_i915_private *dev_priv = to_i915(dev); + struct hdmi_audio_priv *hdmi_priv = get_hdmi_priv(); + + if(!hdmi_priv) { @@ -730,7 +726,7 @@ index 3074c56..5d162b8 100644 { struct drm_device *dev = fb->dev; diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c -index 2adcc15..c4ec79e 100644 +index 34e497f..67cbf17 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c @@ -38,6 +38,8 @@ @@ -742,7 +738,7 @@ index 2adcc15..c4ec79e 100644 static struct drm_device *intel_hdmi_to_dev(struct intel_hdmi *intel_hdmi) { return hdmi_to_dig_port(intel_hdmi)->base.base.dev; -@@ -1479,6 +1481,124 @@ intel_hdmi_set_edid(struct drm_connector *connector, bool force) +@@ -1461,6 +1463,124 @@ intel_hdmi_set_edid(struct drm_connector *connector, bool force) return connected; } @@ -867,7 +863,7 @@ index 2adcc15..c4ec79e 100644 static enum drm_connector_status intel_hdmi_detect(struct drm_connector *connector, bool force) { -@@ -1487,6 +1607,8 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) +@@ -1469,6 +1589,8 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) struct drm_i915_private *dev_priv = to_i915(connector->dev); bool live_status = false; unsigned int try; @@ -876,7 +872,7 @@ index 2adcc15..c4ec79e 100644 DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", connector->base.id, connector->name); -@@ -1523,6 +1645,31 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) +@@ -1505,6 +1627,31 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) intel_display_power_put(dev_priv, POWER_DOMAIN_GMBUS); @@ -897,7 +893,7 @@ index 2adcc15..c4ec79e 100644 + /* Send a disconnect event to audio */ + if (inform_audio) { + DRM_DEBUG_DRIVER("Sending event to audio"); -+ mid_hdmi_audio_signal_event(dev_priv->dev, ++ mid_hdmi_audio_signal_event(dev, + HAD_EVENT_HOT_UNPLUG); + } + } @@ -908,7 +904,7 @@ index 2adcc15..c4ec79e 100644 return status; } -@@ -1546,12 +1693,29 @@ intel_hdmi_force(struct drm_connector *connector) +@@ -1528,12 +1675,29 @@ intel_hdmi_force(struct drm_connector *connector) static int intel_hdmi_get_modes(struct drm_connector *connector) { struct edid *edid; @@ -918,7 +914,7 @@ index 2adcc15..c4ec79e 100644 + hdmi_to_dig_port(intel_hdmi); + struct drm_device *dev = connector->dev; + int ret; -+ struct drm_i915_private *dev_priv = connector->dev->dev_private; ++ edid = to_intel_connector(connector)->detect_edid; if (edid == NULL) @@ -930,7 +926,7 @@ index 2adcc15..c4ec79e 100644 + if (i915_notify_had) { + chv_set_lpe_audio_reg_pipe(dev, INTEL_OUTPUT_HDMI, + intel_dig_port->port); -+ mid_hdmi_audio_signal_event(dev_priv->dev, ++ mid_hdmi_audio_signal_event(dev, + HAD_EVENT_HOT_PLUG); + i915_notify_had = 0; + } @@ -939,7 +935,7 @@ index 2adcc15..c4ec79e 100644 } static bool -@@ -2258,6 +2422,20 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, +@@ -1907,6 +2071,21 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, u32 temp = I915_READ(PEG_BAND_GAP_DATA); I915_WRITE(PEG_BAND_GAP_DATA, (temp & ~0xf) | 0xd); } @@ -952,15 +948,16 @@ index 2adcc15..c4ec79e 100644 +{ + struct drm_i915_private *dev_priv = container_of(work, + struct drm_i915_private, hdmi_audio_wq); ++ struct drm_device *dev = &dev_priv->drm; + + if (i915_hdmi_state == connector_status_connected) { -+ mid_hdmi_audio_signal_event(dev_priv->dev, -+ HAD_EVENT_HOT_PLUG); ++ mid_hdmi_audio_signal_event(dev, ++ HAD_EVENT_HOT_PLUG); + } } void intel_hdmi_init(struct drm_device *dev, -@@ -2266,7 +2444,10 @@ void intel_hdmi_init(struct drm_device *dev, +@@ -1915,7 +2094,10 @@ void intel_hdmi_init(struct drm_device *dev, struct intel_digital_port *intel_dig_port; struct intel_encoder *intel_encoder; struct intel_connector *intel_connector; @@ -972,7 +969,7 @@ index 2adcc15..c4ec79e 100644 intel_dig_port = kzalloc(sizeof(*intel_dig_port), GFP_KERNEL); if (!intel_dig_port) return; -@@ -2277,6 +2458,7 @@ void intel_hdmi_init(struct drm_device *dev, +@@ -1926,6 +2108,7 @@ void intel_hdmi_init(struct drm_device *dev, return; } @@ -980,7 +977,7 @@ index 2adcc15..c4ec79e 100644 intel_encoder = &intel_dig_port->base; drm_encoder_init(dev, &intel_encoder->base, &intel_hdmi_enc_funcs, -@@ -2336,4 +2518,29 @@ void intel_hdmi_init(struct drm_device *dev, +@@ -1985,4 +2168,29 @@ void intel_hdmi_init(struct drm_device *dev, intel_dig_port->max_lanes = 4; intel_hdmi_init_connector(intel_dig_port, intel_connector); @@ -1011,7 +1008,7 @@ index 2adcc15..c4ec79e 100644 + } -From bea9d15e00603196e4d138af691327bbf6a86af0 Mon Sep 17 00:00:00 2001 +From c2fc8a0fadd274be5b75f6ca10c3ca35c381d611 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Tue, 1 Mar 2016 16:25:04 -0600 Subject: [PATCH 04/12] drm/i915: power-related changes non-HDAudio HDMI @@ -1516,10 +1513,10 @@ index 0000000..511311c + +#endif /*CONFIG_PM_RUNTIME*/ diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c -index 2863b92..883b13c 100644 +index 2d24813..23206de 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c -@@ -31,6 +31,17 @@ +@@ -32,6 +32,17 @@ #include "../../../platform/x86/intel_ips.h" #include @@ -1537,15 +1534,15 @@ index 2863b92..883b13c 100644 /** * DOC: RC6 * -@@ -7264,6 +7275,7 @@ void intel_init_clock_gating_hooks(struct drm_i915_private *dev_priv) +@@ -7774,6 +7785,7 @@ void intel_init_clock_gating_hooks(struct drm_i915_private *dev_priv) void intel_init_pm(struct drm_device *dev) { - struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_private *dev_priv = to_i915(dev); + gdev = dev; intel_fbc_init(dev_priv); -@@ -7496,3 +7508,44 @@ void intel_pm_setup(struct drm_device *dev) +@@ -8088,3 +8100,44 @@ void intel_pm_setup(struct drm_device *dev) atomic_set(&dev_priv->pm.wakeref_count, 0); atomic_set(&dev_priv->pm.atomic_seq, 0); } @@ -1591,7 +1588,7 @@ index 2863b92..883b13c 100644 +} +EXPORT_SYMBOL(ospm_power_using_hw_end); -From b172cffb536124dba41ff37793a67dc6f9a6a39c Mon Sep 17 00:00:00 2001 +From d37021d5405ce4eb5f42328b575f07fa5d6f34a9 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Thu, 3 Mar 2016 11:08:10 -0600 Subject: [PATCH 05/12] drm/i915: Add API code for non-HDAudio HDMI interface @@ -1614,7 +1611,7 @@ Signed-off-by: Pierre-Louis Bossart diff --git a/drivers/gpu/drm/i915/hdmi_audio_if.c b/drivers/gpu/drm/i915/hdmi_audio_if.c new file mode 100644 -index 0000000..c7c5f8f +index 0000000..d176b25 --- /dev/null +++ b/drivers/gpu/drm/i915/hdmi_audio_if.c @@ -0,0 +1,425 @@ @@ -1669,7 +1666,7 @@ index 0000000..c7c5f8f + struct drm_i915_private *dev_priv = + (struct drm_i915_private *) dev->dev_private; + memcpy(hdmi_eld, eld, HAD_MAX_ELD_BYTES); -+ mid_hdmi_audio_signal_event(dev_priv->dev, HAD_EVENT_HOT_PLUG); ++ mid_hdmi_audio_signal_event(dev, HAD_EVENT_HOT_PLUG); +} + +static inline int android_hdmi_get_eld(struct drm_device *dev, void *eld) @@ -2044,7 +2041,7 @@ index 0000000..c7c5f8f +EXPORT_SYMBOL(mid_hdmi_audio_register); +#endif -From 915a5b433454cab54cda47484390e84cfb8c7b5d Mon Sep 17 00:00:00 2001 +From fee88eee7f0b174a146bf612ef19bc0602b5f89b Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Tue, 1 Mar 2016 16:25:04 -0600 Subject: [PATCH 06/12] drm/i915: enable non-HDAudio HDMI interface Makefile @@ -2064,12 +2061,12 @@ Signed-off-by: Pierre-Louis Bossart 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile -index 0b88ba0..57406b2 100644 +index 684fc1c..ea14a7c 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile -@@ -14,7 +14,8 @@ i915-y := i915_drv.o \ - i915_sysfs.o \ +@@ -16,7 +16,8 @@ i915-y := i915_drv.o \ intel_csr.o \ + intel_device_info.o \ intel_pm.o \ - intel_runtime_pm.o + intel_runtime_pm.o \ @@ -2077,8 +2074,8 @@ index 0b88ba0..57406b2 100644 i915-$(CONFIG_COMPAT) += i915_ioc32.o i915-$(CONFIG_DEBUG_FS) += i915_debugfs.o -@@ -39,6 +40,7 @@ i915-y += i915_cmd_parser.o \ - i915_trace_points.o \ +@@ -42,6 +43,7 @@ i915-y += i915_cmd_parser.o \ + intel_breadcrumbs.o \ intel_lrc.o \ intel_mocs.o \ + i915_rpm.o \ @@ -2086,7 +2083,7 @@ index 0b88ba0..57406b2 100644 intel_uncore.o -From 8213760904b873b68e55f5c707921704d0ff4c8f Mon Sep 17 00:00:00 2001 +From 138e6f7e00064d2d94a76308771f4f4b7e528a48 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Thu, 3 Mar 2016 11:09:26 -0600 Subject: [PATCH 07/12] ALSA: Intel: Atom: add Atom non-HDAudio HDMI interface @@ -2132,10 +2129,10 @@ index 5a240e0..75c679e 100644 + Choose this option to support HDMI. + diff --git a/sound/Makefile b/sound/Makefile -index 7732070..f2c5e82 100644 +index c41bdf5..256f335 100644 --- a/sound/Makefile +++ b/sound/Makefile -@@ -8,6 +8,7 @@ obj-$(CONFIG_DMASOUND) += oss/ +@@ -7,6 +7,7 @@ obj-$(CONFIG_DMASOUND) += oss/ obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ sh/ synth/ usb/ \ firewire/ sparc/ spi/ parisc/ pcmcia/ mips/ soc/ atmel/ hda/ obj-$(CONFIG_SND_AOA) += aoa/ @@ -5477,7 +5474,7 @@ index 0000000..acc407d + return retval; +} -From 16eb2207449a5bf5115345384e78033cb13a0f3c Mon Sep 17 00:00:00 2001 +From ba7b36acd4d4f2bcf9c84c885d385d3d1327b221 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Sat, 20 Feb 2016 18:08:41 -0600 Subject: [PATCH 08/12] add dependency on PM_RUNTIME @@ -5500,7 +5497,7 @@ index 75c679e..b8b4fce 100644 help Choose this option to support HDMI. -From 6f73b34ca585c052de0732c02dece07126d36dbe Mon Sep 17 00:00:00 2001 +From 30f9d3b223b28623431348350cdf00409b8cef24 Mon Sep 17 00:00:00 2001 From: David Henningsson Date: Fri, 21 Aug 2015 11:08:47 +0200 Subject: [PATCH 09/12] hdmi_audio: Improve position reporting @@ -5553,7 +5550,7 @@ index d8c5574..b2337c3 100644 } -From 3265fa5f1bea0e7820718a1c14528ba8620ee70a Mon Sep 17 00:00:00 2001 +From 25f0028061dcb8c4ed3d464419e4095570a68441 Mon Sep 17 00:00:00 2001 From: David Henningsson Date: Fri, 21 Aug 2015 11:18:19 +0200 Subject: [PATCH 10/12] hdmi_audio: Fixup some monitor @@ -5605,7 +5602,7 @@ index b2337c3..1667748 100644 return 0; } -From fbad36dca91688d71593b61bd170cf4c39eb24fb Mon Sep 17 00:00:00 2001 +From 0ef07c8e6cf8505f89ceab0b27895d8a21062d70 Mon Sep 17 00:00:00 2001 From: Toyo Abe Date: Thu, 3 Mar 2016 12:57:41 +0900 Subject: [PATCH 11/12] hdmi_audio: Fix mishandling of AUD_HDMI_STATUS_v2 @@ -5635,7 +5632,7 @@ index 1667748..86db38e 100644 } else break; -From 9c175c10b955b2d6f2865bb4a1c2dcda6d57dbf6 Mon Sep 17 00:00:00 2001 +From 71729bb7f7f080b68e36a4e4b9f65fce67d5e869 Mon Sep 17 00:00:00 2001 From: Jerome Anand Date: Fri, 1 Apr 2016 11:07:48 +0530 Subject: [PATCH 12/12] Create a platform device for hdmi audio driver and diff --git a/projects/RPi/linux/linux.arm.conf b/projects/RPi/linux/linux.arm.conf index 89dfbe1137..c2bf25103d 100644 --- a/projects/RPi/linux/linux.arm.conf +++ b/projects/RPi/linux/linux.arm.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 4.7.0 Kernel Configuration +# Linux/arm 4.8.1 Kernel Configuration # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -189,6 +189,7 @@ CONFIG_SLUB_DEBUG=y # CONFIG_SLAB is not set CONFIG_SLUB=y # CONFIG_SLOB is not set +# CONFIG_SLAB_FREELIST_RANDOM is not set # CONFIG_SYSTEM_DATA_VERIFICATION is not set # CONFIG_PROFILING is not set CONFIG_HAVE_OPROFILE=y @@ -215,6 +216,8 @@ CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_ARCH_JUMP_LABEL=y CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_GCC_PLUGINS=y +# CONFIG_GCC_PLUGINS is not set CONFIG_HAVE_CC_STACKPROTECTOR=y # CONFIG_CC_STACKPROTECTOR is not set CONFIG_CC_STACKPROTECTOR_NONE=y @@ -315,7 +318,6 @@ CONFIG_MMU=y CONFIG_ARCH_BCM2708=y # CONFIG_ARCH_BCM2709 is not set # CONFIG_ARCH_MULTIPLATFORM is not set -# CONFIG_ARCH_CLPS711X is not set # CONFIG_ARCH_GEMINI is not set # CONFIG_ARCH_EBSA110 is not set # CONFIG_ARCH_EP93XX is not set @@ -829,6 +831,7 @@ CONFIG_DNS_RESOLVER=y # CONFIG_HSR is not set # CONFIG_NET_SWITCHDEV is not set # CONFIG_NET_L3_MASTER_DEV is not set +# CONFIG_NET_NCSI is not set # CONFIG_SOCK_CGROUP_DATA is not set # CONFIG_CGROUP_NET_PRIO is not set # CONFIG_CGROUP_NET_CLASSID is not set @@ -1002,6 +1005,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 # CONFIG_ATA_OVER_ETH is not set # CONFIG_MG_DISK is not set # CONFIG_BLK_DEV_RBD is not set +# CONFIG_NVME_TARGET is not set # # Misc devices @@ -1016,7 +1020,6 @@ CONFIG_BCM2835_SMI=m # CONFIG_ISL29003 is not set # CONFIG_ISL29020 is not set # CONFIG_SENSORS_TSL2550 is not set -# CONFIG_SENSORS_BH1780 is not set # CONFIG_SENSORS_BH1770 is not set # CONFIG_SENSORS_APDS990X is not set # CONFIG_HMC6352 is not set @@ -1085,8 +1088,7 @@ CONFIG_BCM2708_VCHIQ=y # # CONFIG_ECHO is not set # CONFIG_CXL_BASE is not set -# CONFIG_CXL_KERNEL_API is not set -# CONFIG_CXL_EEH is not set +# CONFIG_CXL_AFU_DRIVER_OPS is not set # # SCSI device support @@ -1162,6 +1164,7 @@ CONFIG_VETH=m # # CONFIG_ETHERNET is not set CONFIG_PHYLIB=y +CONFIG_SWPHY=y # # MII PHY device drivers @@ -1189,11 +1192,13 @@ CONFIG_PHYLIB=y # CONFIG_DP83848_PHY is not set # CONFIG_DP83867_PHY is not set # CONFIG_MICROCHIP_PHY is not set -# CONFIG_FIXED_PHY is not set +CONFIG_FIXED_PHY=y # CONFIG_MDIO_BITBANG is not set # CONFIG_MDIO_BUS_MUX_GPIO is not set # CONFIG_MDIO_BUS_MUX_MMIOREG is not set # CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_INTEL_XWAY_PHY is not set +# CONFIG_MDIO_HISI_FEMAC is not set # CONFIG_MICREL_KS8995MA is not set CONFIG_PPP=m CONFIG_PPP_BSDCOMP=m @@ -1480,8 +1485,12 @@ CONFIG_TOUCHSCREEN_USB_3M=y # CONFIG_TOUCHSCREEN_TSC2004 is not set # CONFIG_TOUCHSCREEN_TSC2005 is not set # CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_RM_TS is not set +# CONFIG_TOUCHSCREEN_SILEAD is not set +# CONFIG_TOUCHSCREEN_SIS_I2C is not set CONFIG_TOUCHSCREEN_ST1232=m # CONFIG_TOUCHSCREEN_SUR40 is not set +# CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set # CONFIG_TOUCHSCREEN_SX8654 is not set # CONFIG_TOUCHSCREEN_TPS6507X is not set # CONFIG_TOUCHSCREEN_ZFORCE is not set @@ -1489,6 +1498,7 @@ CONFIG_TOUCHSCREEN_ST1232=m CONFIG_INPUT_MISC=y # CONFIG_INPUT_AD714X is not set # CONFIG_INPUT_ARIZONA_HAPTICS is not set +# CONFIG_INPUT_ATMEL_CAPTOUCH is not set # CONFIG_INPUT_BMA150 is not set # CONFIG_INPUT_E3X0_BUTTON is not set # CONFIG_INPUT_MMA8450 is not set @@ -1580,7 +1590,6 @@ CONFIG_SERIAL_CORE_CONSOLE=y # CONFIG_SERIAL_ALTERA_UART is not set # CONFIG_SERIAL_IFX6X60 is not set # CONFIG_SERIAL_XILINX_PS_UART is not set -# CONFIG_SERIAL_MPS2_UART is not set # CONFIG_SERIAL_ARC is not set # CONFIG_SERIAL_FSL_LPUART is not set # CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set @@ -1826,6 +1835,7 @@ CONFIG_POWER_SUPPLY=y # CONFIG_BATTERY_GAUGE_LTC2941 is not set # CONFIG_CHARGER_RT9455 is not set CONFIG_POWER_RESET=y +# CONFIG_POWER_RESET_BRCMKONA is not set CONFIG_POWER_RESET_GPIO=y CONFIG_POWER_RESET_GPIO_RESTART=y # CONFIG_POWER_RESET_LTC2952 is not set @@ -1862,6 +1872,7 @@ CONFIG_HWMON=y # CONFIG_SENSORS_F71805F is not set # CONFIG_SENSORS_F71882FG is not set # CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FTSTEUTATES is not set # CONFIG_SENSORS_GL518SM is not set # CONFIG_SENSORS_GL520SM is not set # CONFIG_SENSORS_G760A is not set @@ -1920,6 +1931,7 @@ CONFIG_HWMON=y # CONFIG_PMBUS is not set # CONFIG_SENSORS_SHT15 is not set # CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x is not set # CONFIG_SENSORS_SHTC1 is not set # CONFIG_SENSORS_DME1737 is not set # CONFIG_SENSORS_EMC1403 is not set @@ -1939,6 +1951,7 @@ CONFIG_HWMON=y # CONFIG_SENSORS_AMC6821 is not set # CONFIG_SENSORS_INA209 is not set # CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA3221 is not set # CONFIG_SENSORS_TC74 is not set # CONFIG_SENSORS_THMC50 is not set # CONFIG_SENSORS_TMP102 is not set @@ -1991,7 +2004,7 @@ CONFIG_WATCHDOG_CORE=y # CONFIG_CADENCE_WATCHDOG is not set # CONFIG_DW_WATCHDOG is not set # CONFIG_MAX63XX_WATCHDOG is not set -CONFIG_BCM2835_WDT=m +CONFIG_BCM2835_WDT=y # CONFIG_MEN_A21_WDT is not set # @@ -2408,6 +2421,8 @@ CONFIG_DVB_M88DS3103=m CONFIG_DVB_DRXK=m CONFIG_DVB_TDA18271C2DD=m CONFIG_DVB_SI2165=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m # # DVB-S (satellite) frontends @@ -2691,6 +2706,7 @@ CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC=m # Allwinner SoC Audio support # # CONFIG_SND_SUN4I_CODEC is not set +# CONFIG_SND_SUN4I_I2S is not set # CONFIG_SND_SUN4I_SPDIF is not set # CONFIG_SND_SOC_XTFPGA_I2S is not set CONFIG_SND_SOC_I2C_AND_SPI=m @@ -2702,13 +2718,16 @@ CONFIG_SND_SOC_I2C_AND_SPI=m # CONFIG_SND_SOC_ADAU1701 is not set CONFIG_SND_SOC_ADAU1977=m CONFIG_SND_SOC_ADAU1977_I2C=m +# CONFIG_SND_SOC_ADAU7002 is not set # CONFIG_SND_SOC_AK4104 is not set # CONFIG_SND_SOC_AK4554 is not set # CONFIG_SND_SOC_AK4613 is not set # CONFIG_SND_SOC_AK4642 is not set # CONFIG_SND_SOC_AK5386 is not set # CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_BT_SCO is not set # CONFIG_SND_SOC_CS35L32 is not set +# CONFIG_SND_SOC_CS35L33 is not set # CONFIG_SND_SOC_CS42L51_I2C is not set # CONFIG_SND_SOC_CS42L52 is not set # CONFIG_SND_SOC_CS42L56 is not set @@ -2719,9 +2738,12 @@ CONFIG_SND_SOC_ADAU1977_I2C=m # CONFIG_SND_SOC_CS4271_SPI is not set # CONFIG_SND_SOC_CS42XX8_I2C is not set # CONFIG_SND_SOC_CS4349 is not set +# CONFIG_SND_SOC_CS53L30 is not set # CONFIG_SND_SOC_ES8328 is not set # CONFIG_SND_SOC_GTM601 is not set # CONFIG_SND_SOC_INNO_RK3036 is not set +# CONFIG_SND_SOC_MAX98504 is not set +# CONFIG_SND_SOC_MAX9860 is not set # CONFIG_SND_SOC_PCM1681 is not set # CONFIG_SND_SOC_PCM179X_I2C is not set # CONFIG_SND_SOC_PCM179X_SPI is not set @@ -2775,6 +2797,7 @@ CONFIG_SND_SOC_WM8804_I2C=m # CONFIG_SND_SOC_WM8962 is not set # CONFIG_SND_SOC_WM8974 is not set # CONFIG_SND_SOC_WM8978 is not set +# CONFIG_SND_SOC_WM8985 is not set CONFIG_SND_SOC_TPA6130A2=m # CONFIG_SND_SIMPLE_CARD is not set # CONFIG_SOUND_PRIME is not set @@ -2825,6 +2848,7 @@ CONFIG_HID_GYRATION=y CONFIG_HID_TWINHAN=y CONFIG_HID_KENSINGTON=y CONFIG_HID_LCPOWER=y +# CONFIG_HID_LED is not set CONFIG_HID_LENOVO=y CONFIG_HID_LOGITECH=y CONFIG_HID_LOGITECH_DJ=y @@ -2836,7 +2860,7 @@ CONFIG_LOGIWHEELS_FF=y # CONFIG_HID_MAGICMOUSE is not set CONFIG_HID_MICROSOFT=y CONFIG_HID_MONTEREY=y -# CONFIG_HID_MULTITOUCH is not set +CONFIG_HID_MULTITOUCH=m # CONFIG_HID_NTRIG is not set CONFIG_HID_ORTEK=y CONFIG_HID_OUYA=y @@ -2870,6 +2894,7 @@ CONFIG_HID_XINMO=y # CONFIG_HID_ZEROPLUS is not set CONFIG_HID_ZYDACRON=y # CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set # # USB HID support @@ -3027,7 +3052,6 @@ CONFIG_USB_SERIAL_PL2303=m # CONFIG_USB_RIO500 is not set # CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LCD is not set -# CONFIG_USB_LED is not set # CONFIG_USB_CYPRESS_CY7C63 is not set # CONFIG_USB_CYTHERM is not set # CONFIG_USB_IDMOUSE is not set @@ -3050,7 +3074,6 @@ CONFIG_USB_SERIAL_PL2303=m # # CONFIG_USB_PHY is not set # CONFIG_NOP_USB_XCEIV is not set -# CONFIG_AM335X_PHY_USB is not set # CONFIG_USB_GPIO_VBUS is not set # CONFIG_USB_ISP1301 is not set # CONFIG_USB_ULPI is not set @@ -3207,6 +3230,7 @@ CONFIG_RTC_DRV_PCF8563=m # CONFIG_RTC_DRV_DS1343 is not set # CONFIG_RTC_DRV_DS1347 is not set # CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6916 is not set # CONFIG_RTC_DRV_R9701 is not set # CONFIG_RTC_DRV_RX4581 is not set # CONFIG_RTC_DRV_RX6110 is not set @@ -3309,7 +3333,7 @@ CONFIG_VT6656=m # # CONFIG_SPEAKUP is not set CONFIG_STAGING_MEDIA=y -CONFIG_DVB_MN88472=m +# CONFIG_MEDIA_CEC is not set CONFIG_LIRC_STAGING=y # CONFIG_LIRC_IMON is not set CONFIG_LIRC_RPI=m @@ -3331,6 +3355,7 @@ CONFIG_LIRC_RPI=m # CONFIG_WILC1000_SDIO is not set # CONFIG_WILC1000_SPI is not set # CONFIG_MOST is not set +# CONFIG_KS7010 is not set # CONFIG_GOLDFISH is not set # CONFIG_CHROME_PLATFORMS is not set CONFIG_CLKDEV_LOOKUP=y @@ -3350,7 +3375,7 @@ CONFIG_COMMON_CLK=y # CONFIG_COMMON_CLK_NXP is not set # CONFIG_COMMON_CLK_PXA is not set # CONFIG_COMMON_CLK_PIC32 is not set -# CONFIG_COMMON_CLK_OXNAS is not set +# CONFIG_SUNXI_CCU is not set # # Hardware Spinlock drivers @@ -3388,7 +3413,11 @@ CONFIG_BCM2835_MBOX=y # # SOC (System On Chip) specific Drivers # -# CONFIG_RASPBERRYPI_POWER is not set + +# +# Broadcom SoC drivers +# +CONFIG_RASPBERRYPI_POWER=y # CONFIG_SOC_BRCMSTB is not set # CONFIG_SUNXI_SRAM is not set # CONFIG_SOC_TI is not set @@ -3410,7 +3439,8 @@ CONFIG_EXTCON_ARIZONA=m CONFIG_IRQCHIP=y CONFIG_ARM_GIC_MAX_NR=1 # CONFIG_IPACK_BUS is not set -# CONFIG_RESET_CONTROLLER is not set +CONFIG_RESET_CONTROLLER=y +# CONFIG_TI_SYSCON_RESET is not set # CONFIG_FMC is not set # @@ -3444,6 +3474,7 @@ CONFIG_ARM_GIC_MAX_NR=1 # # Firmware Drivers # +# CONFIG_ARM_SCPI_PROTOCOL is not set # CONFIG_FIRMWARE_MEMMAP is not set CONFIG_RASPBERRYPI_FIRMWARE=y # CONFIG_FW_CFG_SYSFS is not set @@ -3452,6 +3483,7 @@ CONFIG_RASPBERRYPI_FIRMWARE=y # File systems # CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_FS_IOMAP=y # CONFIG_EXT2_FS is not set # CONFIG_EXT3_FS is not set CONFIG_EXT4_FS=y @@ -3494,6 +3526,7 @@ CONFIG_F2FS_CHECK_FS=y # CONFIG_F2FS_FAULT_INJECTION is not set CONFIG_FS_POSIX_ACL=y CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set CONFIG_FILE_LOCKING=y CONFIG_MANDATORY_FILE_LOCKING=y # CONFIG_FS_ENCRYPTION is not set @@ -3844,6 +3877,9 @@ CONFIG_KEYS=y # CONFIG_SECURITY_DMESG_RESTRICT is not set # CONFIG_SECURITY is not set # CONFIG_SECURITYFS is not set +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y +CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y +# CONFIG_HARDENED_USERCOPY is not set CONFIG_DEFAULT_SECURITY_DAC=y CONFIG_DEFAULT_SECURITY="" CONFIG_XOR_BLOCKS=m @@ -3864,7 +3900,10 @@ CONFIG_CRYPTO_RNG=m CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_RNG_DEFAULT=m CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_KPP2=y # CONFIG_CRYPTO_RSA is not set +# CONFIG_CRYPTO_DH is not set +# CONFIG_CRYPTO_ECDH is not set CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y # CONFIG_CRYPTO_USER is not set @@ -3925,6 +3964,7 @@ CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_SHA1=m CONFIG_CRYPTO_SHA256=y # CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_SHA3 is not set # CONFIG_CRYPTO_TGR192 is not set # CONFIG_CRYPTO_WP512 is not set diff --git a/projects/RPi/patches/linux/linux-01-RPi_support.patch b/projects/RPi/patches/linux/linux-01-RPi_support.patch index c50c977a1a..b79210e3e6 100644 --- a/projects/RPi/patches/linux/linux-01-RPi_support.patch +++ b/projects/RPi/patches/linux/linux-01-RPi_support.patch @@ -1,7 +1,7 @@ -From b1aece2fa813ff109c29493777e10966bb0319e6 Mon Sep 17 00:00:00 2001 +From 0feed04eba698c3a73470ed2d2dbd539215b3f26 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 27 Apr 2016 17:43:28 +0100 -Subject: [PATCH 001/160] Revert "SUNRPC: Make NFS swap work with multipath" +Subject: [PATCH 001/132] Revert "SUNRPC: Make NFS swap work with multipath" This reverts commit 15001e5a7e1e207b6bd258cd8f187814cd15b6dc. --- @@ -9,10 +9,10 @@ This reverts commit 15001e5a7e1e207b6bd258cd8f187814cd15b6dc. 1 file changed, 42 insertions(+), 24 deletions(-) diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c -index 2808d550d2730ff8e36b6d8c072c65e1631064c4..b362c2f099941c1f3388507983ffbdd1b4cc1241 100644 +index 66f23b376fa04a91134eddf6d8ee22a2f5de5808..f55fe2b0137e8fbefcd20c336b28ad48a7a105c1 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c -@@ -2719,39 +2719,57 @@ void rpc_show_tasks(struct net *net) +@@ -2743,39 +2743,57 @@ void rpc_show_tasks(struct net *net) #endif #if IS_ENABLED(CONFIG_SUNRPC_SWAP) @@ -95,10 +95,10 @@ index 2808d550d2730ff8e36b6d8c072c65e1631064c4..b362c2f099941c1f3388507983ffbdd1 EXPORT_SYMBOL_GPL(rpc_clnt_swap_deactivate); #endif /* CONFIG_SUNRPC_SWAP */ -From bdf04d72a682bc54a9f4caa774eec6792fb241ac Mon Sep 17 00:00:00 2001 +From 61c2fd6b6b40155198041cd0f629642ec36aa0c5 Mon Sep 17 00:00:00 2001 From: Steve Glendinning Date: Thu, 19 Feb 2015 18:47:12 +0000 -Subject: [PATCH 002/160] smsx95xx: fix crimes against truesize +Subject: [PATCH 002/132] smsx95xx: fix crimes against truesize smsc95xx is adjusting truesize when it shouldn't, and following a recent patch from Eric this is now triggering warnings. @@ -145,10 +145,10 @@ index dc989a8b5afbd62b07cd65a2fa5edde67d3cc5fb..116680e3089f16e1e3e9113a3b93e62c usbnet_skb_return(dev, ax_skb); } -From ce8b508e394fc0e4cf6a37de9c88b3a323890756 Mon Sep 17 00:00:00 2001 +From a883acbfdaae6666205749159df57af1c3cba31b Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 17 Apr 2015 16:58:45 +0100 -Subject: [PATCH 003/160] smsc95xx: Disable turbo mode by default +Subject: [PATCH 003/132] smsc95xx: Disable turbo mode by default --- drivers/net/usb/smsc95xx.c | 2 +- @@ -168,10 +168,10 @@ index 116680e3089f16e1e3e9113a3b93e62cb78cc1bb..aa4cb43dcd9ba83b042332bc15a4dce6 MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction"); -From a4c9e26ef898b25f9d8e2e0bf5ed1f4e949b39c3 Mon Sep 17 00:00:00 2001 +From c0a473f810ac26f9c61ed2706f2a332fb8d280a5 Mon Sep 17 00:00:00 2001 From: Sam Nazarko Date: Fri, 1 Apr 2016 17:27:21 +0100 -Subject: [PATCH 004/160] add smsc95xx packetsize module_param +Subject: [PATCH 004/132] add smsc95xx packetsize module_param Signed-off-by: Sam Nazarko --- @@ -213,10 +213,10 @@ index aa4cb43dcd9ba83b042332bc15a4dce68affce28..889bdabd9dea6cebccc361aa4ac569d7 netif_dbg(dev, ifup, dev->net, "rx_urb_size=%ld\n", -From d9e30021dd4c708d0593e9cb53fe798d8d74c6dd Mon Sep 17 00:00:00 2001 +From 1bc556871ead5d8c9f1c2721523d5b80365d308f Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 26 Mar 2013 17:26:38 +0000 -Subject: [PATCH 005/160] Allow mac address to be set in smsc95xx +Subject: [PATCH 005/132] Allow mac address to be set in smsc95xx Signed-off-by: popcornmix --- @@ -312,10 +312,44 @@ index 889bdabd9dea6cebccc361aa4ac569d73681396b..d22a2324085fbf61fbd8920362bfc7b9 eth_hw_addr_random(dev->net); netif_dbg(dev, ifup, dev->net, "MAC address set to eth_random_addr\n"); -From 4ede18cc857f8d7d43d66e4b93b589250cc2175f Mon Sep 17 00:00:00 2001 +From e940173d966e03398e6ebd2f30c8d8012684ebf9 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Tue, 9 Aug 2016 22:19:28 +0100 +Subject: [PATCH 006/132] smsc95xx: Experimental: Enable turbo_mode and + packetsize=2560 by default + +See: http://forum.kodi.tv/showthread.php?tid=285288 +--- + drivers/net/usb/smsc95xx.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c +index d22a2324085fbf61fbd8920362bfc7b9f72bebe3..c846c55075387398d9bcb0957e31f5c82fd7d58d 100644 +--- a/drivers/net/usb/smsc95xx.c ++++ b/drivers/net/usb/smsc95xx.c +@@ -77,7 +77,7 @@ struct smsc95xx_priv { + struct usbnet *dev; + }; + +-static bool turbo_mode = false; ++static bool turbo_mode = true; + module_param(turbo_mode, bool, 0644); + MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction"); + +@@ -85,7 +85,7 @@ static bool truesize_mode = false; + module_param(truesize_mode, bool, 0644); + MODULE_PARM_DESC(truesize_mode, "Report larger truesize value"); + +-static int packetsize = 0; ++static int packetsize = 2560; + module_param(packetsize, int, 0644); + MODULE_PARM_DESC(packetsize, "Override the RX URB packet size"); + + +From f034d07fa73f57a3cb2d17ffdf91c70bc6599e21 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 9 Mar 2016 13:28:24 +0000 -Subject: [PATCH 006/160] serial: Take care starting a hung-up tty's port +Subject: [PATCH 007/132] serial: Take care starting a hung-up tty's port tty_port_hangup sets a port's tty field to NULL (holding the port lock), but uart_tx_stopped, called from __uart_start (with the port lock), @@ -330,10 +364,10 @@ Signed-off-by: Phil Elwell 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h -index a3d7c0d4a03e75016023184a5fea18c91d9d8dbc..d61b4167a03205f917448d0bd71a84d0e1891047 100644 +index 2f44e20136545162d15ee9a39c2eae38352580d1..6b0518ce13ad210b888b73dd6c02a5558798b38f 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h -@@ -406,7 +406,7 @@ int uart_resume_port(struct uart_driver *reg, struct uart_port *port); +@@ -412,7 +412,7 @@ int uart_resume_port(struct uart_driver *reg, struct uart_port *port); static inline int uart_tx_stopped(struct uart_port *port) { struct tty_struct *tty = port->state->port.tty; @@ -343,40 +377,10 @@ index a3d7c0d4a03e75016023184a5fea18c91d9d8dbc..d61b4167a03205f917448d0bd71a84d0 return 0; } -From 581ad04d68f4de8c4a1f7c9ab523b18b23f8ac19 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Wed, 18 Jun 2014 13:42:01 +0100 -Subject: [PATCH 007/160] vmstat: Workaround for issue where dirty page count - goes negative - -See: -https://github.com/raspberrypi/linux/issues/617 -http://www.spinics.net/lists/linux-mm/msg72236.html ---- - include/linux/vmstat.h | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h -index d2da8e053210041bfcefb9e04b59d195880d2d0e..e3258dc35371ee6e528dc02ffc705570c2f555be 100644 ---- a/include/linux/vmstat.h -+++ b/include/linux/vmstat.h -@@ -222,7 +222,11 @@ static inline void __inc_zone_state(struct zone *zone, enum zone_stat_item item) - static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item) - { - atomic_long_dec(&zone->vm_stat[item]); -+ if (item == NR_FILE_DIRTY && unlikely(atomic_long_read(&zone->vm_stat[item]) < 0)) -+ atomic_long_set(&zone->vm_stat[item], 0); - atomic_long_dec(&vm_stat[item]); -+ if (item == NR_FILE_DIRTY && unlikely(atomic_long_read(&vm_stat[item]) < 0)) -+ atomic_long_set(&vm_stat[item], 0); - } - - static inline void __inc_zone_page_state(struct page *page, - -From 657592399723dd4c2d0dbd1e80deeb475700f8f8 Mon Sep 17 00:00:00 2001 +From 21b1c0e3468cfcc15f432e04124428f3bbd698f1 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 13 Mar 2015 12:43:36 +0000 -Subject: [PATCH 008/160] Protect __release_resource against resources without +Subject: [PATCH 008/132] Protect __release_resource against resources without parents Without this patch, removing a device tree overlay can crash here. @@ -404,10 +408,10 @@ index 9b5f04404152c296af3a96132f27cfc80ffa9af9..f8a9af6e6b915812be2ba2c1c2b40106 for (;;) { tmp = *p; -From 543ed3c60dc8498fa3e030502592d7b77e6de04a Mon Sep 17 00:00:00 2001 +From 81e163c07843ca521bd0753a05d8e177b15e9e55 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 18 Dec 2014 16:07:15 -0800 -Subject: [PATCH 009/160] mm: Remove the PFN busy warning +Subject: [PATCH 009/132] mm: Remove the PFN busy warning See commit dae803e165a11bc88ca8dbc07a11077caf97bbcb -- the warning is expected sometimes when using CMA. However, that commit still spams @@ -419,10 +423,10 @@ Signed-off-by: Eric Anholt 1 file changed, 2 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 6e354199151b9f71c3e8671a6f5bdee5fd29f866..9b542a3a16d5ebba8ef2c411489e7b81d6878e4e 100644 +index a2214c64ed3cd04dceaed7a579f593852e458df1..de26bffb1baa5cffa692fcb12b478263d6e03114 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c -@@ -7406,8 +7406,6 @@ int alloc_contig_range(unsigned long start, unsigned long end, +@@ -7308,8 +7308,6 @@ int alloc_contig_range(unsigned long start, unsigned long end, /* Make sure the range is really isolated. */ if (test_pages_isolated(outer_start, end, false)) { @@ -432,10 +436,10 @@ index 6e354199151b9f71c3e8671a6f5bdee5fd29f866..9b542a3a16d5ebba8ef2c411489e7b81 goto done; } -From ab2492b9e21315c561866fc1f50546f76882ecae Mon Sep 17 00:00:00 2001 +From 45978dc4bb5c1454039233e54d19dc333dadf5b9 Mon Sep 17 00:00:00 2001 From: Robert Tiemann Date: Mon, 20 Jul 2015 11:01:25 +0200 -Subject: [PATCH 010/160] BCM2835_DT: Fix I2S register map +Subject: [PATCH 010/132] BCM2835_DT: Fix I2S register map --- Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt | 4 ++-- @@ -473,10 +477,10 @@ index 65783de0aedf3da79adc36fd077b7a89954ddb6b..a89fe4220fdc3f26f75ee66daf187554 dmas = <&dma 2>, <&dma 3>; -From 02cd74e5e7452f68a8106a090d532ff19a26a0a9 Mon Sep 17 00:00:00 2001 +From 4491cdafc08c5475282ed797870970174d4c4ec8 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 4 Dec 2015 17:41:50 +0000 -Subject: [PATCH 011/160] irq-bcm2836: Prevent spurious interrupts, and trap +Subject: [PATCH 011/132] irq-bcm2836: Prevent spurious interrupts, and trap them early The old arch-specific IRQ macros included a dsb to ensure the @@ -491,22 +495,22 @@ though, so trap them early. 1 file changed, 1 insertion(+) diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c -index 72ff1d5c5de67058f4ef22bb233c41b7c737d6e3..de3b3a37a63d00cc82ae4725b2fe8584c084c4dc 100644 +index d96b2c947e74e3edab3917551c64fbd1ced0f34c..93e3f7660c4230c9f1dd3b195958cb498949b0ca 100644 --- a/drivers/irqchip/irq-bcm2836.c +++ b/drivers/irqchip/irq-bcm2836.c @@ -175,6 +175,7 @@ __exception_irq_entry bcm2836_arm_irqchip_handle_irq(struct pt_regs *regs) u32 ipi = ffs(mbox_val) - 1; writel(1 << ipi, mailbox0); -+ dsb(); ++ dsb(sy); handle_IPI(ipi, regs); #endif } else if (stat) { -From 1854e722a9d4ba2eac9676bef7867863cb923379 Mon Sep 17 00:00:00 2001 +From b2d86404d6c139bdf57ac40405cc335872d425a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 12 Jun 2015 19:01:05 +0200 -Subject: [PATCH 012/160] irqchip: bcm2835: Add FIQ support +Subject: [PATCH 012/132] irqchip: bcm2835: Add FIQ support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -524,23 +528,23 @@ Acked-by: Stephen Warren 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig -index 68ab6412392a44b84f4519ff04d725a3505f9bcf..b2385da38949e08787b942e73ba287035b401986 100644 +index 34f0fca0b8472720cd107946e8f5a99d4cfa542a..5f6ab16792a93b2dd2e3f9e647f8ac4062d4fa6d 100644 --- a/arch/arm/mach-bcm/Kconfig +++ b/arch/arm/mach-bcm/Kconfig -@@ -143,6 +143,7 @@ config ARCH_BCM2835 - select ARM_TIMER_SP804 +@@ -153,6 +153,7 @@ config ARCH_BCM2835 select HAVE_ARM_ARCH_TIMER if ARCH_MULTI_V7 select CLKSRC_OF + select BCM2835_TIMER + select FIQ select PINCTRL select PINCTRL_BCM2835 help diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c -index bf9cc5f2e839e845fe1ce65caa672b6212d3ffbc..3f601f98aa884b941fbb84edb349f6c469b940b1 100644 +index 44d7c38dde479d771f3552e914bf8c1c1f5019f7..42ff5e6a8e0d532f5b60a1e7af7cc4d941bd5008 100644 --- a/drivers/irqchip/irq-bcm2835.c +++ b/drivers/irqchip/irq-bcm2835.c -@@ -55,7 +55,7 @@ - #include +@@ -54,7 +54,7 @@ + #include /* Put the bank and irq (32 bits) into the hwirq */ -#define MAKE_HWIRQ(b, n) ((b << 5) | (n)) @@ -548,7 +552,7 @@ index bf9cc5f2e839e845fe1ce65caa672b6212d3ffbc..3f601f98aa884b941fbb84edb349f6c4 #define HWIRQ_BANK(i) (i >> 5) #define HWIRQ_BIT(i) BIT(i & 0x1f) -@@ -71,9 +71,13 @@ +@@ -70,9 +70,13 @@ | SHORTCUT1_MASK | SHORTCUT2_MASK) #define REG_FIQ_CONTROL 0x0c @@ -562,7 +566,7 @@ index bf9cc5f2e839e845fe1ce65caa672b6212d3ffbc..3f601f98aa884b941fbb84edb349f6c4 static const int reg_pending[] __initconst = { 0x00, 0x04, 0x08 }; static const int reg_enable[] __initconst = { 0x18, 0x10, 0x14 }; -@@ -98,14 +102,38 @@ static void __exception_irq_entry bcm2835_handle_irq( +@@ -97,14 +101,38 @@ static void __exception_irq_entry bcm2835_handle_irq( struct pt_regs *regs); static void bcm2836_chained_handle_irq(struct irq_desc *desc); @@ -603,7 +607,7 @@ index bf9cc5f2e839e845fe1ce65caa672b6212d3ffbc..3f601f98aa884b941fbb84edb349f6c4 } static struct irq_chip armctrl_chip = { -@@ -151,8 +179,9 @@ static int __init armctrl_of_init(struct device_node *node, +@@ -150,8 +178,9 @@ static int __init armctrl_of_init(struct device_node *node, panic("%s: unable to map IC registers\n", node->full_name); @@ -615,7 +619,7 @@ index bf9cc5f2e839e845fe1ce65caa672b6212d3ffbc..3f601f98aa884b941fbb84edb349f6c4 if (!intc.domain) panic("%s: unable to create IRQ domain\n", node->full_name); -@@ -182,6 +211,18 @@ static int __init armctrl_of_init(struct device_node *node, +@@ -181,6 +210,18 @@ static int __init armctrl_of_init(struct device_node *node, set_handle_irq(bcm2835_handle_irq); } @@ -635,24 +639,24 @@ index bf9cc5f2e839e845fe1ce65caa672b6212d3ffbc..3f601f98aa884b941fbb84edb349f6c4 } -From 99826eb237003a4a74508f4a01b4bf0b83638815 Mon Sep 17 00:00:00 2001 +From 11338cb04778f32d3debcb3380d14088f9109034 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 23 Oct 2015 16:26:55 +0200 -Subject: [PATCH 013/160] irqchip: irq-bcm2835: Add 2836 FIQ support +Subject: [PATCH 013/132] irqchip: irq-bcm2835: Add 2836 FIQ support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Noralf Trønnes --- - drivers/irqchip/irq-bcm2835.c | 42 ++++++++++++++++++++++++++++++++++++++++-- - 1 file changed, 40 insertions(+), 2 deletions(-) + drivers/irqchip/irq-bcm2835.c | 43 +++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c -index 3f601f98aa884b941fbb84edb349f6c469b940b1..20deb282286834b1f234a65e614b8584688a25d7 100644 +index 42ff5e6a8e0d532f5b60a1e7af7cc4d941bd5008..eccf6ed025299cb480884f5bcbe77abf55a6bbb1 100644 --- a/drivers/irqchip/irq-bcm2835.c +++ b/drivers/irqchip/irq-bcm2835.c -@@ -50,6 +50,8 @@ +@@ -50,8 +50,11 @@ #include #include #include @@ -660,8 +664,11 @@ index 3f601f98aa884b941fbb84edb349f6c469b940b1..20deb282286834b1f234a65e614b8584 +#include #include - #include -@@ -70,6 +72,9 @@ ++#include + + /* Put the bank and irq (32 bits) into the hwirq */ + #define MAKE_HWIRQ(b, n) (((b) << 5) | (n)) +@@ -69,6 +72,9 @@ #define BANK0_VALID_MASK (BANK0_HWIRQ_MASK | BANK1_HWIRQ | BANK2_HWIRQ \ | SHORTCUT1_MASK | SHORTCUT2_MASK) @@ -671,7 +678,7 @@ index 3f601f98aa884b941fbb84edb349f6c469b940b1..20deb282286834b1f234a65e614b8584 #define REG_FIQ_CONTROL 0x0c #define REG_FIQ_ENABLE 0x80 #define REG_FIQ_DISABLE 0 -@@ -95,6 +100,7 @@ struct armctrl_ic { +@@ -94,6 +100,7 @@ struct armctrl_ic { void __iomem *enable[NR_BANKS]; void __iomem *disable[NR_BANKS]; struct irq_domain *domain; @@ -679,7 +686,7 @@ index 3f601f98aa884b941fbb84edb349f6c469b940b1..20deb282286834b1f234a65e614b8584 }; static struct armctrl_ic intc __read_mostly; -@@ -128,12 +134,35 @@ static void armctrl_mask_irq(struct irq_data *d) +@@ -127,12 +134,35 @@ static void armctrl_mask_irq(struct irq_data *d) static void armctrl_unmask_irq(struct irq_data *d) { @@ -717,7 +724,7 @@ index 3f601f98aa884b941fbb84edb349f6c469b940b1..20deb282286834b1f234a65e614b8584 } static struct irq_chip armctrl_chip = { -@@ -211,6 +240,15 @@ static int __init armctrl_of_init(struct device_node *node, +@@ -210,6 +240,15 @@ static int __init armctrl_of_init(struct device_node *node, set_handle_irq(bcm2835_handle_irq); } @@ -734,10 +741,10 @@ index 3f601f98aa884b941fbb84edb349f6c469b940b1..20deb282286834b1f234a65e614b8584 for (b = 0; b < NR_BANKS; b++) { for (i = 0; i < bank_irqs[b]; i++) { -From 2c068b4c7ecb508c63ce57207c0375d7f2d6d473 Mon Sep 17 00:00:00 2001 +From 0dcb9a305c2ce1e15d63394376fe607d3a736e9d Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 14 Jul 2015 10:26:09 +0100 -Subject: [PATCH 014/160] spidev: Add "spidev" compatible string to silence +Subject: [PATCH 014/132] spidev: Add "spidev" compatible string to silence warning See: https://github.com/raspberrypi/linux/issues/1054 @@ -746,10 +753,10 @@ See: https://github.com/raspberrypi/linux/issues/1054 1 file changed, 1 insertion(+) diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c -index e3c19f30f591115a823467033702ff1b232c5ebc..f4963e3c1dbcd13edb9b97e9dad65438214ec9d3 100644 +index 2e05046f866bd01bf87edcdeff0d5b76d4d0aea7..d780491b8013a4e97fa843958964454e4463fe5e 100644 --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c -@@ -695,6 +695,7 @@ static struct class *spidev_class; +@@ -696,6 +696,7 @@ static struct class *spidev_class; static const struct of_device_id spidev_dt_ids[] = { { .compatible = "rohm,dh2228fv" }, { .compatible = "lineartechnology,ltc2488" }, @@ -758,17 +765,17 @@ index e3c19f30f591115a823467033702ff1b232c5ebc..f4963e3c1dbcd13edb9b97e9dad65438 }; MODULE_DEVICE_TABLE(of, spidev_dt_ids); -From d84e83cc45f6aee4e00086530e8e00eca553acbf Mon Sep 17 00:00:00 2001 +From a67d1e46f90073cc31e8dce5be0dbd7b85f40570 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 30 Jun 2015 14:12:42 +0100 -Subject: [PATCH 015/160] serial: 8250: Don't crash when nr_uarts is 0 +Subject: [PATCH 015/132] serial: 8250: Don't crash when nr_uarts is 0 --- drivers/tty/serial/8250/8250_core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c -index 0fbd7c033a251e7d0cb214ed2bbd1ad1f19f0a76..00fc96497968c826978465957454ad73c3fb6042 100644 +index dcf43f66404f12d2bd290a30adfe494dd056162e..0fba189c676ded310b92a09c4e7e8f768d753895 100644 --- a/drivers/tty/serial/8250/8250_core.c +++ b/drivers/tty/serial/8250/8250_core.c @@ -509,6 +509,8 @@ static void __init serial8250_isa_init_ports(void) @@ -781,10 +788,10 @@ index 0fbd7c033a251e7d0cb214ed2bbd1ad1f19f0a76..00fc96497968c826978465957454ad73 for (i = 0; i < nr_uarts; i++) { struct uart_8250_port *up = &serial8250_ports[i]; -From 77f790d85237a37fc6032dc028e96bc167419adc Mon Sep 17 00:00:00 2001 +From 11fb46f18b2fe596dad81cc811001897591a8fca Mon Sep 17 00:00:00 2001 From: notro Date: Thu, 10 Jul 2014 13:59:47 +0200 -Subject: [PATCH 016/160] pinctrl-bcm2835: Set base to 0 give expected gpio +Subject: [PATCH 016/132] pinctrl-bcm2835: Set base to 0 give expected gpio numbering Signed-off-by: Noralf Tronnes @@ -806,10 +813,10 @@ index fa77165fab2c1348163979da507df17e7168c49b..d11e2e4ea189466e686d762cb6c6fef9 .can_sleep = false, }; -From ae07346c42a10dc8a0e9e7a7d0fed9599202da41 Mon Sep 17 00:00:00 2001 +From f8f0689cf95fa9b04fc0f52128542b330ff4f0ef Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 24 Feb 2015 13:40:50 +0000 -Subject: [PATCH 017/160] pinctrl-bcm2835: Fix interrupt handling for GPIOs +Subject: [PATCH 017/132] pinctrl-bcm2835: Fix interrupt handling for GPIOs 28-31 and 46-53 Contrary to the documentation, the BCM2835 GPIO controller actually has @@ -955,10 +962,10 @@ index d11e2e4ea189466e686d762cb6c6fef9111ecf8e..107ad7d58de8f8a7f55e09c9cdcf7d66 }, }; -From 0ee6df28b32a38f956873934d345429f09d58113 Mon Sep 17 00:00:00 2001 +From 595b5d8e6cc8ee5752ab3113825d9f0baa2f8367 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 26 Feb 2015 09:58:22 +0000 -Subject: [PATCH 018/160] pinctrl-bcm2835: Only request the interrupts listed +Subject: [PATCH 018/132] pinctrl-bcm2835: Only request the interrupts listed in the DTB Although the GPIO controller can generate three interrupts (four counting @@ -985,10 +992,10 @@ index 107ad7d58de8f8a7f55e09c9cdcf7d66fa7ab66b..644bdecbcfcb79d3b84a33769265fca5 pc->irq_data[i].irqgroup = i; -From 36cef23145cf1dda514100e8b06e00d585e0bdb2 Mon Sep 17 00:00:00 2001 +From d2da294a1db152547062050cff201b3fe4dadb15 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 6 May 2016 12:32:47 +0100 -Subject: [PATCH 019/160] pinctrl-bcm2835: Return pins to inputs when freed +Subject: [PATCH 019/132] pinctrl-bcm2835: Return pins to inputs when freed When dynamically unloading overlays, it is important that freed pins are restored to being inputs to prevent functions from being enabled in @@ -1029,10 +1036,10 @@ index 644bdecbcfcb79d3b84a33769265fca5d3d0c9e5..81a66cba2ab0f7e3ae179de7edd10122 .get_function_name = bcm2835_pmx_get_function_name, .get_function_groups = bcm2835_pmx_get_function_groups, -From d5d1906d5843c0ee5aeff5e9154eb1e1b3dc4a84 Mon Sep 17 00:00:00 2001 +From 254a5b3a8eadb8d9ee888f98b6a3c05422c0ca7a Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 24 Jun 2015 14:10:44 +0100 -Subject: [PATCH 020/160] spi-bcm2835: Support pin groups other than 7-11 +Subject: [PATCH 020/132] spi-bcm2835: Support pin groups other than 7-11 The spi-bcm2835 driver automatically uses GPIO chip-selects due to some unreliability of the native ones. In doing so it chooses the @@ -1113,10 +1120,47 @@ index f35cc10772f6670397ea923ad30158270dd68578..5dfe20ffc2866fa6789825016c585175 /* and set up the "mode" and level */ dev_info(&spi->dev, "setting up native-CS%i as GPIO %i\n", -From 15eb235ecf2cafcc856ef591249867fed8459fa7 Mon Sep 17 00:00:00 2001 +From 2c660c2523aa3c0ded6cefd5b670a722221655e0 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Fri, 1 Jul 2016 22:09:24 +0100 +Subject: [PATCH 021/132] spi-bcm2835: Disable forced software CS + +Select software CS in bcm2708_common.dtsi, and disable the automatic +conversion in the driver to allow hardware CS to be re-enabled with an +overlay. + +See: https://github.com/raspberrypi/linux/issues/1547 + +Signed-off-by: Phil Elwell +--- + drivers/spi/spi-bcm2835.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c +index 5dfe20ffc2866fa6789825016c585175a29705b6..8493474d286f7a1ac6454a22c61c8c2cef9121bf 100644 +--- a/drivers/spi/spi-bcm2835.c ++++ b/drivers/spi/spi-bcm2835.c +@@ -707,6 +707,7 @@ static int bcm2835_spi_setup(struct spi_device *spi) + return -EINVAL; + } + ++#if 0 + /* now translate native cs to GPIO */ + /* first look for chip select pins in the devices pin groups */ + for (pingroup_index = 0; +@@ -756,6 +757,7 @@ static int bcm2835_spi_setup(struct spi_device *spi) + spi->chip_select, spi->cs_gpio, err); + return err; + } ++#endif + + return 0; + } + +From b20b6c9db3b0ac6b5daad77e06c8390e617c5aa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Wed, 3 Jun 2015 12:26:13 +0200 -Subject: [PATCH 021/160] ARM: bcm2835: Set Serial number and Revision +Subject: [PATCH 022/132] ARM: bcm2835: Set Serial number and Revision MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -1137,16 +1181,16 @@ didn't get in: Signed-off-by: Noralf Trønnes --- - arch/arm/mach-bcm/board_bcm2835.c | 9 +++++++++ - 1 file changed, 9 insertions(+) + arch/arm/mach-bcm/board_bcm2835.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) diff --git a/arch/arm/mach-bcm/board_bcm2835.c b/arch/arm/mach-bcm/board_bcm2835.c -index 834d67684e205a185971c13ebc6620434eeac788..3b68a8d3501a5dcb1b4790c35d921cf5fa641ec7 100644 +index 0c1edfc98696da0e0bb7f4a18cdfbcdd27a9795d..8f152266ba9b470df2eaaed9ebcf158ed2079834 100644 --- a/arch/arm/mach-bcm/board_bcm2835.c +++ b/arch/arm/mach-bcm/board_bcm2835.c -@@ -17,12 +17,16 @@ +@@ -16,13 +16,23 @@ + #include #include - #include #include +#include @@ -1158,13 +1202,8 @@ index 834d67684e205a185971c13ebc6620434eeac788..3b68a8d3501a5dcb1b4790c35d921cf5 + struct device_node *np = of_find_node_by_path("/system"); + u32 val; + u64 val64; - int ret; - ++ bcm2835_init_clocks(); -@@ -33,6 +37,11 @@ static void __init bcm2835_init(void) - pr_err("of_platform_populate failed: %d\n", ret); - BUG(); - } + + if (!of_property_read_u32(np, "linux,revision", &val)) + system_rev = val; @@ -1174,10 +1213,10 @@ index 834d67684e205a185971c13ebc6620434eeac788..3b68a8d3501a5dcb1b4790c35d921cf5 static const char * const bcm2835_compat[] = { -From 4c078e006ef6a56a2a66c99a6dcc8533ca7345db Mon Sep 17 00:00:00 2001 +From a08fd2843c135370ff6d0bd2ddc23abdd27ea947 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Sat, 3 Oct 2015 22:22:55 +0200 -Subject: [PATCH 022/160] dmaengine: bcm2835: Load driver early and support +Subject: [PATCH 023/132] dmaengine: bcm2835: Load driver early and support legacy API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -1195,7 +1234,7 @@ Signed-off-by: Noralf Trønnes 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig -index 8c98779a12b134f3688e1076f1e11211c23e2623..ece64af02387ab867e21b7bc9178e0842bf1ecac 100644 +index 739f797b40d9843b7d75261e955439866c7aaa83..f7b3ac574968b35aeb1fb6b3ba8d4f1bf61599f9 100644 --- a/drivers/dma/Kconfig +++ b/drivers/dma/Kconfig @@ -108,7 +108,7 @@ config COH901318 @@ -1208,7 +1247,7 @@ index 8c98779a12b134f3688e1076f1e11211c23e2623..ece64af02387ab867e21b7bc9178e084 select DMA_VIRTUAL_CHANNELS diff --git a/drivers/dma/bcm2835-dma.c b/drivers/dma/bcm2835-dma.c -index 6149b27c33ad0962a19ed411055d9d05bfb252d3..43265b2847d37b3ee8f71b7528eebea1713f263c 100644 +index e18dc596cf2447fa9ef7e41b62d9396e29043426..80d35f760b4a4a51e60c355a84d538bac3892a4d 100644 --- a/drivers/dma/bcm2835-dma.c +++ b/drivers/dma/bcm2835-dma.c @@ -37,6 +37,7 @@ @@ -1227,7 +1266,7 @@ index 6149b27c33ad0962a19ed411055d9d05bfb252d3..43265b2847d37b3ee8f71b7528eebea1 struct bcm2835_dmadev { struct dma_device ddev; -@@ -921,6 +923,9 @@ static int bcm2835_dma_probe(struct platform_device *pdev) +@@ -922,6 +924,9 @@ static int bcm2835_dma_probe(struct platform_device *pdev) base = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(base)) return PTR_ERR(base); @@ -1237,7 +1276,7 @@ index 6149b27c33ad0962a19ed411055d9d05bfb252d3..43265b2847d37b3ee8f71b7528eebea1 od->base = base; -@@ -958,6 +963,9 @@ static int bcm2835_dma_probe(struct platform_device *pdev) +@@ -959,6 +964,9 @@ static int bcm2835_dma_probe(struct platform_device *pdev) goto err_no_dma; } @@ -1247,7 +1286,7 @@ index 6149b27c33ad0962a19ed411055d9d05bfb252d3..43265b2847d37b3ee8f71b7528eebea1 /* get irqs for each channel that we support */ for (i = 0; i <= BCM2835_DMA_MAX_DMA_CHAN_SUPPORTED; i++) { /* skip masked out channels */ -@@ -1032,6 +1040,7 @@ static int bcm2835_dma_remove(struct platform_device *pdev) +@@ -1033,6 +1041,7 @@ static int bcm2835_dma_remove(struct platform_device *pdev) { struct bcm2835_dmadev *od = platform_get_drvdata(pdev); @@ -1255,7 +1294,7 @@ index 6149b27c33ad0962a19ed411055d9d05bfb252d3..43265b2847d37b3ee8f71b7528eebea1 dma_async_device_unregister(&od->ddev); bcm2835_dma_free(od); -@@ -1047,7 +1056,22 @@ static struct platform_driver bcm2835_dma_driver = { +@@ -1048,7 +1057,22 @@ static struct platform_driver bcm2835_dma_driver = { }, }; @@ -1280,10 +1319,10 @@ index 6149b27c33ad0962a19ed411055d9d05bfb252d3..43265b2847d37b3ee8f71b7528eebea1 MODULE_ALIAS("platform:bcm2835-dma"); MODULE_DESCRIPTION("BCM2835 DMA engine driver"); -From e25a8c81b0db52d1f305698eba1d885a26be101a Mon Sep 17 00:00:00 2001 +From 86eba5c1a1089dc0bad01735f559e37d08525527 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Sat, 15 Aug 2015 20:50:02 +0200 -Subject: [PATCH 023/160] bcm2835: Add support for uart1 +Subject: [PATCH 024/132] bcm2835: Add support for uart1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -1297,10 +1336,10 @@ Signed-off-by: Noralf Trønnes 1 file changed, 25 insertions(+) diff --git a/arch/arm/mach-bcm/board_bcm2835.c b/arch/arm/mach-bcm/board_bcm2835.c -index 3b68a8d3501a5dcb1b4790c35d921cf5fa641ec7..e72e522fbc840c36a39cb6550850b3c663bcff2e 100644 +index 8f152266ba9b470df2eaaed9ebcf158ed2079834..0ef5cd3d1d6ec420360294acc98d40d698d38d8a 100644 --- a/arch/arm/mach-bcm/board_bcm2835.c +++ b/arch/arm/mach-bcm/board_bcm2835.c -@@ -22,6 +22,29 @@ +@@ -21,6 +21,29 @@ #include #include @@ -1330,7 +1369,7 @@ index 3b68a8d3501a5dcb1b4790c35d921cf5fa641ec7..e72e522fbc840c36a39cb6550850b3c6 static void __init bcm2835_init(void) { struct device_node *np = of_find_node_by_path("/system"); -@@ -42,6 +65,8 @@ static void __init bcm2835_init(void) +@@ -33,6 +56,8 @@ static void __init bcm2835_init(void) system_rev = val; if (!of_property_read_u64(np, "linux,serial", &val64)) system_serial_low = val64; @@ -1340,10 +1379,10 @@ index 3b68a8d3501a5dcb1b4790c35d921cf5fa641ec7..e72e522fbc840c36a39cb6550850b3c6 static const char * const bcm2835_compat[] = { -From 64419e9ba75c01a280de0200383f89109da3c4bf Mon Sep 17 00:00:00 2001 +From d14fbca2b82afe7646783c51dfe1e503cb7e8df0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 25 Jan 2016 17:25:12 +0000 -Subject: [PATCH 024/160] firmware: Updated mailbox header +Subject: [PATCH 025/132] firmware: Updated mailbox header --- include/soc/bcm2835/raspberrypi-firmware.h | 11 +++++++++++ @@ -1406,10 +1445,338 @@ index 3fb357193f09914fe21f8555a4b8613f74f22bc3..227a107214a02deadcca3db202da265e RPI_FIRMWARE_GET_COMMAND_LINE = 0x00050001, RPI_FIRMWARE_GET_DMA_CHANNELS = 0x00060001, -From 1915eb30cab86f0bbebdc8281b08754040840338 Mon Sep 17 00:00:00 2001 +From a7294b259a4fcf36e5073123f513ce622c0a1d31 Mon Sep 17 00:00:00 2001 +From: Eric Anholt +Date: Tue, 26 Apr 2016 11:44:59 -0700 +Subject: [PATCH 026/132] clk: bcm2835: Mark the VPU clock as critical + +The VPU clock is also the clock for our AXI bus, so we really can't +disable it. This might have happened during boot if, for example, +uart1 (aux_uart clock) probed and was then disabled before the other +consumers of the VPU clock had probed. + +v2: Rewrite to use a .flags in bcm2835_clock_data, since other clocks + will need this too. + +Signed-off-by: Eric Anholt +--- + drivers/clk/bcm/clk-bcm2835.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c +index 7a7970865c2d856b6b57113c2bb7e8074140a5dd..d9db03cb3fd84163f320dca6f2e533c61f61b5ad 100644 +--- a/drivers/clk/bcm/clk-bcm2835.c ++++ b/drivers/clk/bcm/clk-bcm2835.c +@@ -443,6 +443,8 @@ struct bcm2835_clock_data { + /* Number of fractional bits in the divider */ + u32 frac_bits; + ++ u32 flags; ++ + bool is_vpu_clock; + bool is_mash_clock; + }; +@@ -1230,7 +1232,7 @@ static struct clk *bcm2835_register_clock(struct bcm2835_cprman *cprman, + init.parent_names = parents; + init.num_parents = data->num_mux_parents; + init.name = data->name; +- init.flags = CLK_IGNORE_UNUSED; ++ init.flags = data->flags | CLK_IGNORE_UNUSED; + + if (data->is_vpu_clock) { + init.ops = &bcm2835_vpu_clock_clk_ops; +@@ -1649,6 +1651,7 @@ static const struct bcm2835_clk_desc clk_desc_array[] = { + .div_reg = CM_VPUDIV, + .int_bits = 12, + .frac_bits = 8, ++ .flags = CLK_IS_CRITICAL, + .is_vpu_clock = true), + + /* clocks with per parent mux */ + +From 90a08a523e50a201c288c783a927688e5a2d5261 Mon Sep 17 00:00:00 2001 +From: Eric Anholt +Date: Mon, 9 May 2016 17:28:18 -0700 +Subject: [PATCH 027/132] clk: bcm2835: Mark GPIO clocks enabled at boot as + critical. + +These divide off of PLLD_PER and are used for the ethernet and wifi +PHYs source PLLs. Neither of them is currently represented by a phy +device that would grab the clock for us. + +This keeps other drivers from killing the networking PHYs when they +disable their own clocks and trigger PLLD_PER's refcount going to 0. + +v2: Skip marking as critical if they aren't on at boot. + +Signed-off-by: Eric Anholt +--- + drivers/clk/bcm/clk-bcm2835.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c +index d9db03cb3fd84163f320dca6f2e533c61f61b5ad..f6bbe8d5929828048114286ec29a33e02519eab8 100644 +--- a/drivers/clk/bcm/clk-bcm2835.c ++++ b/drivers/clk/bcm/clk-bcm2835.c +@@ -1234,6 +1234,15 @@ static struct clk *bcm2835_register_clock(struct bcm2835_cprman *cprman, + init.name = data->name; + init.flags = data->flags | CLK_IGNORE_UNUSED; + ++ /* ++ * Some GPIO clocks for ethernet/wifi PLLs are marked as ++ * critical (since some platforms use them), but if the ++ * firmware didn't have them turned on then they clearly ++ * aren't actually critical. ++ */ ++ if ((cprman_read(cprman, data->ctl_reg) & CM_ENABLE) == 0) ++ init.flags &= ~CLK_IS_CRITICAL; ++ + if (data->is_vpu_clock) { + init.ops = &bcm2835_vpu_clock_clk_ops; + } else { +@@ -1708,13 +1717,15 @@ static const struct bcm2835_clk_desc clk_desc_array[] = { + .div_reg = CM_GP1DIV, + .int_bits = 12, + .frac_bits = 12, ++ .flags = CLK_IS_CRITICAL, + .is_mash_clock = true), + [BCM2835_CLOCK_GP2] = REGISTER_PER_CLK( + .name = "gp2", + .ctl_reg = CM_GP2CTL, + .div_reg = CM_GP2DIV, + .int_bits = 12, +- .frac_bits = 12), ++ .frac_bits = 12, ++ .flags = CLK_IS_CRITICAL), + + /* HDMI state machine */ + [BCM2835_CLOCK_HSM] = REGISTER_PER_CLK( + +From d73c0ce72b3d4b259f73e4ccab38b886035e4fe9 Mon Sep 17 00:00:00 2001 +From: Eric Anholt +Date: Tue, 26 Apr 2016 12:39:45 -0700 +Subject: [PATCH 028/132] clk: bcm2835: Skip PLLC clocks when deciding on a new + clock parent + +If the firmware had set up a clock to source from PLLC, go along with +it. But if we're looking for a new parent, we don't want to switch it +to PLLC because the firmware will force PLLC (and thus the AXI bus +clock) to different frequencies during over-temp/under-voltage, +without notification to Linux. + +On my system, this moves the Linux-enabled HDMI state machine and DSI1 +escape clock over to plld_per from pllc_per. EMMC still ends up on +pllc_per, because the firmware had set it up to use that. + +Signed-off-by: Eric Anholt +Fixes: 41691b8862e2 ("clk: bcm2835: Add support for programming the audio domain clocks") +--- + drivers/clk/bcm/clk-bcm2835.c | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c +index f6bbe8d5929828048114286ec29a33e02519eab8..e527649ee5e32d20cebd762f4badbfca06657a84 100644 +--- a/drivers/clk/bcm/clk-bcm2835.c ++++ b/drivers/clk/bcm/clk-bcm2835.c +@@ -1008,16 +1008,28 @@ static int bcm2835_clock_set_rate(struct clk_hw *hw, + return 0; + } + ++static bool ++bcm2835_clk_is_pllc(struct clk_hw *hw) ++{ ++ if (!hw) ++ return false; ++ ++ return strncmp(clk_hw_get_name(hw), "pllc", 4) == 0; ++} ++ + static int bcm2835_clock_determine_rate(struct clk_hw *hw, + struct clk_rate_request *req) + { + struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw); + struct clk_hw *parent, *best_parent = NULL; ++ bool current_parent_is_pllc; + unsigned long rate, best_rate = 0; + unsigned long prate, best_prate = 0; + size_t i; + u32 div; + ++ current_parent_is_pllc = bcm2835_clk_is_pllc(clk_hw_get_parent(hw)); ++ + /* + * Select parent clock that results in the closest but lower rate + */ +@@ -1025,6 +1037,17 @@ static int bcm2835_clock_determine_rate(struct clk_hw *hw, + parent = clk_hw_get_parent_by_index(hw, i); + if (!parent) + continue; ++ ++ /* ++ * Don't choose a PLLC-derived clock as our parent ++ * unless it had been manually set that way. PLLC's ++ * frequency gets adjusted by the firmware due to ++ * over-temp or under-voltage conditions, without ++ * prior notification to our clock consumer. ++ */ ++ if (bcm2835_clk_is_pllc(parent) && !current_parent_is_pllc) ++ continue; ++ + prate = clk_hw_get_rate(parent); + div = bcm2835_clock_choose_div(hw, req->rate, prate, true); + rate = bcm2835_clock_rate_from_divisor(clock, prate, div); + +From 3a34c414d4eb9aa6921a940cc831550028e33be1 Mon Sep 17 00:00:00 2001 +From: Eric Anholt +Date: Wed, 1 Jun 2016 12:05:35 -0700 +Subject: [PATCH 029/132] clk: bcm2835: Mark the CM SDRAM clock's parent as + critical + +While the SDRAM is being driven by its dedicated PLL most of the time, +there is a little loop running in the firmware that periodically turns +on the CM SDRAM clock (using its pre-initialized parent) and switches +SDRAM to using the CM clock to do PVT recalibration. + +This avoids system hangs if we choose SDRAM's parent for some other +clock, then disable that clock. + +Signed-off-by: Eric Anholt +--- + drivers/clk/bcm/clk-bcm2835.c | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c +index e527649ee5e32d20cebd762f4badbfca06657a84..fbf616021704178a9d007219a0ea2a9f1704f0a6 100644 +--- a/drivers/clk/bcm/clk-bcm2835.c ++++ b/drivers/clk/bcm/clk-bcm2835.c +@@ -36,6 +36,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -1827,6 +1828,25 @@ static const struct bcm2835_clk_desc clk_desc_array[] = { + .ctl_reg = CM_PERIICTL), + }; + ++/* ++ * Permanently take a reference on the parent of the SDRAM clock. ++ * ++ * While the SDRAM is being driven by its dedicated PLL most of the ++ * time, there is a little loop running in the firmware that ++ * periodically switches the SDRAM to using our CM clock to do PVT ++ * recalibration, with the assumption that the previously configured ++ * SDRAM parent is still enabled and running. ++ */ ++static int bcm2835_mark_sdc_parent_critical(struct clk *sdc) ++{ ++ struct clk *parent = clk_get_parent(sdc); ++ ++ if (IS_ERR(parent)) ++ return PTR_ERR(parent); ++ ++ return clk_prepare_enable(parent); ++} ++ + static int bcm2835_clk_probe(struct platform_device *pdev) + { + struct device *dev = &pdev->dev; +@@ -1836,6 +1856,7 @@ static int bcm2835_clk_probe(struct platform_device *pdev) + const struct bcm2835_clk_desc *desc; + const size_t asize = ARRAY_SIZE(clk_desc_array); + size_t i; ++ int ret; + + cprman = devm_kzalloc(dev, + sizeof(*cprman) + asize * sizeof(*clks), +@@ -1866,6 +1887,10 @@ static int bcm2835_clk_probe(struct platform_device *pdev) + clks[i] = desc->clk_register(cprman, desc->data); + } + ++ ret = bcm2835_mark_sdc_parent_critical(clks[BCM2835_CLOCK_SDRAM]); ++ if (ret) ++ return ret; ++ + return of_clk_add_provider(dev->of_node, of_clk_src_onecell_get, + &cprman->onecell); + } + +From 40725d1fe6352be0ade2cad97bbf624ea5db0aef Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Mon, 3 Oct 2016 13:58:40 +0100 +Subject: [PATCH 030/132] Enable upstream BCM2835 auxiliar mini UART support + +--- + drivers/tty/serial/8250/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/tty/serial/8250/Kconfig b/drivers/tty/serial/8250/Kconfig +index 7c6f7afca5ddeed7b25fa6272246fc539bf31b04..748098f900d3474b5d535b24da76ad06e9690335 100644 +--- a/drivers/tty/serial/8250/Kconfig ++++ b/drivers/tty/serial/8250/Kconfig +@@ -291,7 +291,7 @@ config SERIAL_8250_ACORN + + config SERIAL_8250_BCM2835AUX + tristate "BCM2835 auxiliar mini UART support" +- depends on ARCH_BCM2835 || COMPILE_TEST ++ depends on ARCH_BCM2708 || ARCH_BCM2709 || ARCH_BCM2835 || COMPILE_TEST + depends on SERIAL_8250 && SERIAL_8250_SHARE_IRQ + help + Support for the BCM2835 auxiliar mini UART. + +From 132099baa7ca5d311f6ff982f4868ea5c786b356 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 15 Jun 2016 16:48:41 +0100 +Subject: [PATCH 031/132] rtc: Add SPI alias for pcf2123 driver + +Without this alias, Device Tree won't cause the driver +to be loaded. + +See: https://github.com/raspberrypi/linux/pull/1510 +--- + drivers/rtc/rtc-pcf2123.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/rtc/rtc-pcf2123.c b/drivers/rtc/rtc-pcf2123.c +index b4478cc92b55dbd76731ea8ec6a4228677adcebb..6981064d5cbad7d7078b23ce4ed5227e45b1e4e1 100644 +--- a/drivers/rtc/rtc-pcf2123.c ++++ b/drivers/rtc/rtc-pcf2123.c +@@ -471,3 +471,4 @@ module_spi_driver(pcf2123_driver); + MODULE_AUTHOR("Chris Verges "); + MODULE_DESCRIPTION("NXP PCF2123 RTC driver"); + MODULE_LICENSE("GPL"); ++MODULE_ALIAS("spi:rtc-pcf2123"); + +From 242d5204bc3c598defca5f98e3cafb1a589f626c Mon Sep 17 00:00:00 2001 +From: Eric Anholt +Date: Tue, 19 Apr 2016 15:55:02 -0700 +Subject: [PATCH 032/132] ARM: bcm2708: Enable building power domain driver. + +Signed-off-by: Eric Anholt +--- + drivers/soc/bcm/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/soc/bcm/Kconfig b/drivers/soc/bcm/Kconfig +index a39b0d58ddd0fdf0ac1cc7295f8aafb12546e226..7d11a44f36d2e6f8697773cd49a72e53bca3a5a0 100644 +--- a/drivers/soc/bcm/Kconfig ++++ b/drivers/soc/bcm/Kconfig +@@ -2,7 +2,7 @@ menu "Broadcom SoC drivers" + + config RASPBERRYPI_POWER + bool "Raspberry Pi power domain driver" +- depends on ARCH_BCM2835 || (COMPILE_TEST && OF) ++ depends on ARCH_BCM2835 || ARCH_BCM2708 || ARCH_BCM2709 || (COMPILE_TEST && OF) + depends on RASPBERRYPI_FIRMWARE=y + select PM_GENERIC_DOMAINS if PM + help + +From e21a41779b151baa1ea67f50744c5b6c102d66b2 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 12 May 2013 12:24:19 +0100 -Subject: [PATCH 025/160] Main bcm2708/bcm2709 linux port +Subject: [PATCH 033/132] Main bcm2708/bcm2709 linux port MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -1451,9 +1818,9 @@ Signed-off-by: Noralf Trønnes arch/arm/tools/mach-types | 2 + drivers/clocksource/Makefile | 2 +- drivers/irqchip/Makefile | 3 + - drivers/irqchip/irq-bcm2835.c | 3 +- + drivers/irqchip/irq-bcm2835.c | 7 +- include/linux/mmc/host.h | 1 + - 36 files changed, 2147 insertions(+), 5 deletions(-) + 36 files changed, 2151 insertions(+), 5 deletions(-) create mode 100644 arch/arm/mach-bcm2708/Kconfig create mode 100644 arch/arm/mach-bcm2708/Makefile create mode 100644 arch/arm/mach-bcm2708/Makefile.boot @@ -1481,10 +1848,10 @@ Signed-off-by: Noralf Trønnes create mode 100644 arch/arm/mach-bcm2709/vc_mem.c diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index 90542db1220dbcff5bc7f0d27ce233389a6d780d..437c4c3fd3cead08377098ae89de79c40d804df2 100644 +index a9c4e48bb7ec997bec394066914d26f337a2fec4..018ee76322d9e013598887c50ebea9628ecb9ee3 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig -@@ -324,6 +324,52 @@ choice +@@ -326,6 +326,52 @@ choice default ARM_SINGLE_ARMV7M if !MMU default ARCH_MULTIPLATFORM if MMU @@ -1537,7 +1904,7 @@ index 90542db1220dbcff5bc7f0d27ce233389a6d780d..437c4c3fd3cead08377098ae89de79c4 config ARCH_MULTIPLATFORM bool "Allow multiple platforms to be selected" depends on MMU -@@ -725,6 +771,9 @@ config ARCH_VIRT +@@ -711,6 +757,9 @@ config ARCH_VIRT # Kconfigs may be included either alphabetically (according to the # plat- suffix) or along side the corresponding mach-* source. # @@ -1548,10 +1915,10 @@ index 90542db1220dbcff5bc7f0d27ce233389a6d780d..437c4c3fd3cead08377098ae89de79c4 source "arch/arm/mach-alpine/Kconfig" diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug -index 19a3dcf5eb2e5600563cbcd47599ba458a546260..a15dd5cde577cc014de4063b7881d2ce03198df8 100644 +index a9693b6987a6e41c69702f1003d0d8bd2279530e..f47f4e70395635fafeacd680c4392cc51660ea8e 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug -@@ -1294,6 +1294,14 @@ choice +@@ -1312,6 +1312,14 @@ choice options; the platform specific options are deprecated and will be soon removed. @@ -1565,12 +1932,12 @@ index 19a3dcf5eb2e5600563cbcd47599ba458a546260..a15dd5cde577cc014de4063b7881d2ce + endchoice - config DEBUG_EXYNOS_UART + config DEBUG_AT91_UART diff --git a/arch/arm/Makefile b/arch/arm/Makefile -index 274e8a6582f1cd671731d1acbdda6f0f49c358c8..36e8f1e6fc7f169a68aa9476e618b50c79b0b2e3 100644 +index 61f6ccc19cfa94364e777cc68d10ce5a24093c0f..d1e45094ab4338f95dab09e81d358cd723f5eb3d 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile -@@ -153,6 +153,8 @@ textofs-$(CONFIG_ARCH_AXXIA) := 0x00308000 +@@ -152,6 +152,8 @@ textofs-$(CONFIG_ARCH_AXXIA) := 0x00308000 # Machine directory name. This list is sorted alphanumerically # by CONFIG_* macro name. @@ -1599,7 +1966,7 @@ index 04286fd9e09ce7a27259c4d375a05a965e3be0ea..ed826280e744828ebb1c5ae6b7a62d70 ENDPROC(__fixup_a_pv_table) diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c -index 4a803c5a1ff7276859b823a7b9b02dc24ee6e564..c09505c5312860aade6f68f160f657349785d8cd 100644 +index 612eb530f33fcd19bc4539facb26fc30a2583979..0a0332cb13a7475ee0c4d75a97685b7de6475c95 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c @@ -91,6 +91,16 @@ void arch_cpu_idle_exit(void) @@ -3859,20 +4226,20 @@ index 2ed1b8a922ed02b9e3545991873af77b4c1bf871..b52d949ee91d96eb7672fbbb4969bfa1 ics_if_voip MACH_ICS_IF_VOIP ICS_IF_VOIP 3206 wlf_cragg_6410 MACH_WLF_CRAGG_6410 WLF_CRAGG_6410 3207 diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile -index 473974f9590a5cb19da5bf2bccf1e126f45bfb45..dc76b5e1b1f31fa2d802ee3da3dbfda1a88c6574 100644 +index fd9d6df0bbc0993c3b7862a08f89dc3a9725be9d..a60aa840b28f0fa73c496a2e0d5c816eed6f771a 100644 --- a/drivers/clocksource/Makefile +++ b/drivers/clocksource/Makefile @@ -19,7 +19,7 @@ obj-$(CONFIG_CLKSRC_NOMADIK_MTU) += nomadik-mtu.o obj-$(CONFIG_CLKSRC_DBX500_PRCMU) += clksrc-dbx500-prcmu.o obj-$(CONFIG_ARMADA_370_XP_TIMER) += time-armada-370-xp.o obj-$(CONFIG_ORION_TIMER) += time-orion.o --obj-$(CONFIG_ARCH_BCM2835) += bcm2835_timer.o -+obj-$(CONFIG_ARCH_BCM2835)$(CONFIG_ARCH_BCM2708) += bcm2835_timer.o - obj-$(CONFIG_ARCH_CLPS711X) += clps711x-timer.o - obj-$(CONFIG_ARCH_ATLAS7) += timer-atlas7.o - obj-$(CONFIG_ARCH_MOXART) += moxart_timer.o +-obj-$(CONFIG_BCM2835_TIMER) += bcm2835_timer.o ++obj-$(CONFIG_BCM2835_TIMER)$(CONFIG_ARCH_BCM2708) += bcm2835_timer.o + obj-$(CONFIG_CLPS711X_TIMER) += clps711x-timer.o + obj-$(CONFIG_ATLAS7_TIMER) += timer-atlas7.o + obj-$(CONFIG_MOXART_TIMER) += moxart_timer.o diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile -index 38853a187607591555c351bc2586b8ac73450b7f..382a22ab9ec6c02395a3be44d0787c15e2ddba8b 100644 +index 4c203b6b816357dce8d7a768ac81feaba91d431b..75da978fac0e06819d8a9740b95ee3d7035c1059 100644 --- a/drivers/irqchip/Makefile +++ b/drivers/irqchip/Makefile @@ -5,6 +5,9 @@ obj-$(CONFIG_ATH79) += irq-ath79-cpu.o @@ -3886,10 +4253,20 @@ index 38853a187607591555c351bc2586b8ac73450b7f..382a22ab9ec6c02395a3be44d0787c15 obj-$(CONFIG_ARCH_HIP04) += irq-hip04.o obj-$(CONFIG_ARCH_LPC32XX) += irq-lpc32xx.o diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c -index 20deb282286834b1f234a65e614b8584688a25d7..c02bf8a9f9970401dc98c4f656c20c35d8070123 100644 +index eccf6ed025299cb480884f5bcbe77abf55a6bbb1..8ed457fd74bd23bee27b64a2c9e3828ce0e4fb87 100644 --- a/drivers/irqchip/irq-bcm2835.c +++ b/drivers/irqchip/irq-bcm2835.c -@@ -82,6 +82,7 @@ +@@ -54,7 +54,9 @@ + #include + + #include ++#ifndef CONFIG_ARM64 + #include ++#endif + + /* Put the bank and irq (32 bits) into the hwirq */ + #define MAKE_HWIRQ(b, n) (((b) << 5) | (n)) +@@ -82,6 +84,7 @@ #define NR_BANKS 3 #define IRQS_PER_BANK 32 #define NUMBER_IRQS MAKE_HWIRQ(NR_BANKS, 0) @@ -3897,7 +4274,7 @@ index 20deb282286834b1f234a65e614b8584688a25d7..c02bf8a9f9970401dc98c4f656c20c35 #define FIQ_START (NR_IRQS_BANK0 + MAKE_HWIRQ(NR_BANKS - 1, 0)) static const int reg_pending[] __initconst = { 0x00, 0x04, 0x08 }; -@@ -256,7 +257,7 @@ static int __init armctrl_of_init(struct device_node *node, +@@ -256,10 +259,12 @@ static int __init armctrl_of_init(struct device_node *node, MAKE_HWIRQ(b, i) + NUMBER_IRQS); BUG_ON(irq <= 0); irq_set_chip(irq, &armctrl_chip); @@ -3905,24 +4282,29 @@ index 20deb282286834b1f234a65e614b8584688a25d7..c02bf8a9f9970401dc98c4f656c20c35 + irq_set_probe(irq); } } ++#ifndef CONFIG_ARM64 init_FIQ(FIQ_START); ++#endif + + return 0; + } diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h -index 45cde8cd39f2434f5f9ec02c702a91a7f6b971c9..6a01ffa629386bdecf85e5a4736f7c27133869ab 100644 +index aa4bfbf129e4585ebb89b25fca4b03c928925022..89f7a3a539b5a1b84ddcf0a1548160c000103fbb 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h -@@ -302,6 +302,7 @@ struct mmc_host { - #define MMC_CAP2_SDIO_IRQ_NOTHREAD (1 << 17) - #define MMC_CAP2_NO_WRITE_PROTECT (1 << 18) /* No physical write protect pin, assume that card is always read-write */ - #define MMC_CAP2_NO_SDIO (1 << 19) /* Do not send SDIO commands during initialization */ +@@ -311,6 +311,7 @@ struct mmc_host { + #define MMC_CAP2_HS400_ES (1 << 20) /* Host supports enhanced strobe */ + #define MMC_CAP2_NO_SD (1 << 21) /* Do not send SD commands during initialization */ + #define MMC_CAP2_NO_MMC (1 << 22) /* Do not send (e)MMC commands during initialization */ +#define MMC_CAP2_FORCE_MULTIBLOCK (1 << 31) /* Always use multiblock transfers */ mmc_pm_flag_t pm_caps; /* supported pm features */ -From 6c506e0aeb2588c9ce6e319a6f32349ed1ddd2aa Mon Sep 17 00:00:00 2001 +From 362ad8c9c871f54a1636cd6120712008f57c5ce5 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 5 Apr 2016 19:40:12 +0100 -Subject: [PATCH 026/160] reboot: Use power off rather than busy spinning when +Subject: [PATCH 034/132] reboot: Use power off rather than busy spinning when halt is requested --- @@ -3945,33 +4327,32 @@ index 3fa867a2aae672755c6ce6448f4148c989dbf964..80dca8dcd6709034b643c6a3f35729e0 /* -From 3768c27f173f8e566afd47497ca29a7b0278d589 Mon Sep 17 00:00:00 2001 +From 599e58207ac644a3732bae3cc1d5d98da1b53c3a Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 11 Nov 2015 21:01:15 +0000 -Subject: [PATCH 027/160] squash: include ARCH_BCM2708 / ARCH_BCM2709 +Subject: [PATCH 035/132] squash: include ARCH_BCM2708 / ARCH_BCM2709 --- drivers/char/hw_random/Kconfig | 2 +- drivers/clk/bcm/Makefile | 4 ++-- drivers/mailbox/Kconfig | 2 +- drivers/mailbox/bcm2835-mailbox.c | 18 ++++++++++++++++-- - drivers/pinctrl/Makefile | 1 + drivers/pwm/Kconfig | 2 +- drivers/spi/Kconfig | 4 ++-- drivers/watchdog/Kconfig | 2 +- sound/soc/bcm/Kconfig | 2 +- - 9 files changed, 26 insertions(+), 11 deletions(-) + 8 files changed, 25 insertions(+), 11 deletions(-) diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig -index ac51149e977758beb8db91e159175be9525fc13c..7fb001bb8e7609d3640b27cec5ec5180d8dbbcc2 100644 +index 8c0770bf8881351c1d956d310c5d670684090770..205b6b34d32c660d34c885e8391032d682c8870e 100644 --- a/drivers/char/hw_random/Kconfig +++ b/drivers/char/hw_random/Kconfig @@ -90,7 +90,7 @@ config HW_RANDOM_BCM63XX config HW_RANDOM_BCM2835 tristate "Broadcom BCM2835 Random Number Generator support" -- depends on ARCH_BCM2835 -+ depends on ARCH_BCM2835 || ARCH_BCM2708 || ARCH_BCM2709 +- depends on ARCH_BCM2835 || ARCH_BCM_NSP || ARCH_BCM_5301X ++ depends on ARCH_BCM2835 || ARCH_BCM2708 || ARCH_BCM2709 || ARCH_BCM_NSP || ARCH_BCM_5301X default HW_RANDOM ---help--- This driver provides kernel-side support for the Random Number @@ -3991,7 +4372,7 @@ index 1d79bd2c36f004669d1dcf78fa681025c3f074e2..fcf1bb5d792111a31226c33dec6b1da3 obj-$(CONFIG_ARCH_BCM_CYGNUS) += clk-cygnus.o obj-$(CONFIG_ARCH_BCM_NSP) += clk-nsp.o diff --git a/drivers/mailbox/Kconfig b/drivers/mailbox/Kconfig -index 5305923752d283d31a6c2a0435cf7e68dbf200b7..3de0dcbace67415412405903b720db495ebf76a7 100644 +index 7817d40d81e74ad282b1760b1dc50d090d10670d..dc46b41705af8ea405dc961d9230058c7086db7d 100644 --- a/drivers/mailbox/Kconfig +++ b/drivers/mailbox/Kconfig @@ -74,7 +74,7 @@ config ALTERA_MBOX @@ -4052,23 +4433,11 @@ index cfb4b4496dd9f61362dea012176c146120fada07..d9c6c217c4d6a2408abe2665bf7f2700 MODULE_AUTHOR("Lubomir Rintel "); MODULE_DESCRIPTION("BCM2835 mailbox IPC driver"); -diff --git a/drivers/pinctrl/Makefile b/drivers/pinctrl/Makefile -index 42a5c1dddfefaf7414eca1809ef7d1bf75a11628..4c62b88401c5bee3015e74ce95a411d9c62c3dd6 100644 ---- a/drivers/pinctrl/Makefile -+++ b/drivers/pinctrl/Makefile -@@ -35,6 +35,7 @@ obj-$(CONFIG_PINCTRL_TB10X) += pinctrl-tb10x.o - obj-$(CONFIG_PINCTRL_ST) += pinctrl-st.o - obj-$(CONFIG_PINCTRL_ZYNQ) += pinctrl-zynq.o - -+obj-$(CONFIG_ARCH_BCM2708)$(CONFIG_ARCH_BCM2709) += bcm/ - obj-$(CONFIG_ARCH_BCM) += bcm/ - obj-$(CONFIG_PINCTRL_BERLIN) += berlin/ - obj-y += freescale/ diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig -index c182efc62c7bc3ffe31d81a539c88c35f55abac9..fe0f845fa21e1a2fa129814358f172ad3cd4627b 100644 +index 80a566a00d0437dcc8fca7715c1109e7c2d35f67..549cf7a786e27e19863ec0ad53a8b2836afd0c2a 100644 --- a/drivers/pwm/Kconfig +++ b/drivers/pwm/Kconfig -@@ -85,7 +85,7 @@ config PWM_BCM_KONA +@@ -95,7 +95,7 @@ config PWM_BCM_KONA config PWM_BCM2835 tristate "BCM2835 PWM support" @@ -4078,7 +4447,7 @@ index c182efc62c7bc3ffe31d81a539c88c35f55abac9..fe0f845fa21e1a2fa129814358f172ad PWM framework driver for BCM2835 controller (Raspberry Pi) diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig -index 4b931ec8d90b610f498a3e317e0523e9d1aa6900..82528961746f960e9851b4c252f42de5f1fbf298 100644 +index d6fb8d4b778672fd006446c0eab710d35f6e6e3a..4b09be74af155c2a6e0590a6380242db40e6f914 100644 --- a/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig @@ -94,7 +94,7 @@ config SPI_AXI_SPI_ENGINE @@ -4100,10 +4469,10 @@ index 4b931ec8d90b610f498a3e317e0523e9d1aa6900..82528961746f960e9851b4c252f42de5 This selects a driver for the Broadcom BCM2835 SPI aux master. diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig -index b4b3e256491bfbe8c05fa0f7830c003541db8720..eaf2e847254e00b457ad37cb4a8c0b2baee8d1a9 100644 +index 1bffe006ca9a843e2e71bc1a461a2d67e97480c0..9a28f1fdf93a79104049c03ed51abc31d34165d5 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig -@@ -1409,7 +1409,7 @@ config BCM63XX_WDT +@@ -1440,7 +1440,7 @@ config BCM63XX_WDT config BCM2835_WDT tristate "Broadcom BCM2835 hardware watchdog" @@ -4113,7 +4482,7 @@ index b4b3e256491bfbe8c05fa0f7830c003541db8720..eaf2e847254e00b457ad37cb4a8c0b2b help Watchdog driver for the built in watchdog hardware in Broadcom diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 6a834e109f1de47e533d17e87cdc73d8ee86fc4d..c5070aec5996aafb2d9daaf75163e16a29bc6892 100644 +index d528aaceaad95bc6bae2147ebe66249629d2512e..03a303e52d5fe57bbdd8769d24bca59067c54c65 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig @@ -1,6 +1,6 @@ @@ -4125,10 +4494,10 @@ index 6a834e109f1de47e533d17e87cdc73d8ee86fc4d..c5070aec5996aafb2d9daaf75163e16a select REGMAP_MMIO help -From 47797faa4180edede5ac275b9e6831a0cceeddc3 Mon Sep 17 00:00:00 2001 +From 8488874d9857ae014aa5cf49748a0412bdf44490 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 1 May 2013 19:46:17 +0100 -Subject: [PATCH 028/160] Add dwc_otg driver +Subject: [PATCH 036/132] Add dwc_otg driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -4620,6 +4989,8 @@ Make it a default to learn more. See: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=70437 Signed-off-by: popcornmix + +dwc_otg: Use kzalloc when suitable --- arch/arm/include/asm/irqflags.h | 16 +- arch/arm/kernel/fiqasm.S | 4 + @@ -4655,7 +5026,7 @@ Signed-off-by: popcornmix drivers/usb/host/dwc_common_port/usb.h | 946 +++ drivers/usb/host/dwc_otg/Makefile | 82 + drivers/usb/host/dwc_otg/doc/doxygen.cfg | 224 + - drivers/usb/host/dwc_otg/dummy_audio.c | 1575 +++++ + drivers/usb/host/dwc_otg/dummy_audio.c | 1574 +++++ drivers/usb/host/dwc_otg/dwc_cfi_common.h | 142 + drivers/usb/host/dwc_otg/dwc_otg_adp.c | 854 +++ drivers/usb/host/dwc_otg/dwc_otg_adp.h | 80 + @@ -4685,13 +5056,13 @@ Signed-off-by: popcornmix drivers/usb/host/dwc_otg/dwc_otg_pcd.h | 266 + drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h | 360 + drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c | 5147 ++++++++++++++ - drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c | 1280 ++++ + drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c | 1279 ++++ drivers/usb/host/dwc_otg/dwc_otg_regs.h | 2550 +++++++ drivers/usb/host/dwc_otg/test/Makefile | 16 + drivers/usb/host/dwc_otg/test/dwc_otg_test.pm | 337 + drivers/usb/host/dwc_otg/test/test_mod_param.pl | 133 + drivers/usb/host/dwc_otg/test/test_sysfs.pl | 193 + - 70 files changed, 59885 insertions(+), 16 deletions(-) + 70 files changed, 59883 insertions(+), 16 deletions(-) create mode 100644 drivers/usb/gadget/file_storage.c create mode 100644 drivers/usb/host/dwc_common_port/Makefile create mode 100644 drivers/usb/host/dwc_common_port/Makefile.fbsd @@ -4835,10 +5206,10 @@ index 1d5fc32d06d007a6f64526a531da8ae69e8e6950..ce881480114d0f444f4b1099c713c256 USB_PORT_FEAT_C_OVER_CURRENT); msleep(100); /* Cool down */ diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c -index ea681f157368f245772ab145073594bf4f6fb273..cb9b9c2df9b8fd7df50fa846b37c3f3d5fab6256 100644 +index 0406a59f05510cb1dee98ffbf22b55c0ccd65750..8c3401f7c1ca80e0eedc7aec6cca5d593cf16718 100644 --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c -@@ -1905,6 +1905,85 @@ free_interfaces: +@@ -1906,6 +1906,85 @@ free_interfaces: if (cp->string == NULL && !(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS)) cp->string = usb_cache_string(dev, cp->desc.iConfiguration); @@ -8764,7 +9135,7 @@ index 0000000000000000000000000000000000000000..a896d73f7a9336f5a34015c44ea5a6b0 +} +module_exit(fsg_cleanup); diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig -index d8f5674809e88e4f68d19411473ff752ce6230ef..50322813b65b6d7ddf273db46581c9b58be1c40b 100644 +index 2e710a4cca525915991bf2b2a884dd2cec844281..a94354d1c7574c5cf1fdb7c47165459a5378c2c0 100644 --- a/drivers/usb/host/Kconfig +++ b/drivers/usb/host/Kconfig @@ -762,6 +762,19 @@ config USB_HWA_HCD @@ -19580,10 +19951,10 @@ index 0000000000000000000000000000000000000000..712b057ef7c293e8ddfa95d89e2471fb +SEARCHENGINE = NO diff --git a/drivers/usb/host/dwc_otg/dummy_audio.c b/drivers/usb/host/dwc_otg/dummy_audio.c new file mode 100644 -index 0000000000000000000000000000000000000000..225decf765ce825b896ba98771ccb19c20d99404 +index 0000000000000000000000000000000000000000..f827102fa64414d0f6e6ad47948a87fa4ab97e69 --- /dev/null +++ b/drivers/usb/host/dwc_otg/dummy_audio.c -@@ -0,0 +1,1575 @@ +@@ -0,0 +1,1574 @@ +/* + * zero.c -- Gadget Zero, for USB development + * @@ -20963,10 +21334,9 @@ index 0000000000000000000000000000000000000000..225decf765ce825b896ba98771ccb19c + + + /* ok, we made sense of the hardware ... */ -+ dev = kmalloc (sizeof *dev, SLAB_KERNEL); ++ dev = kzalloc (sizeof *dev, SLAB_KERNEL); + if (!dev) + return -ENOMEM; -+ memset (dev, 0, sizeof *dev); + spin_lock_init (&dev->lock); + dev->gadget = gadget; + set_gadget_data (gadget, dev); @@ -60610,10 +60980,10 @@ index 0000000000000000000000000000000000000000..c8590b527110753b8064d35fab4c3422 +#endif /* DWC_HOST_ONLY */ diff --git a/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c new file mode 100644 -index 0000000000000000000000000000000000000000..0eb0f3572d1230fdd23966c47ba9370d22bb8cb5 +index 0000000000000000000000000000000000000000..5624f32c9ea9117599df451af29fca2e3bca36de --- /dev/null +++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c -@@ -0,0 +1,1280 @@ +@@ -0,0 +1,1279 @@ + /* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd_linux.c $ + * $Revision: #21 $ @@ -60828,12 +61198,11 @@ index 0000000000000000000000000000000000000000..0eb0f3572d1230fdd23966c47ba9370d + DWC_WARN("%s() %s\n", __func__, "Invalid EP!\n"); + return 0; + } -+ usb_req = kmalloc(sizeof(*usb_req), gfp_flags); ++ usb_req = kzalloc(sizeof(*usb_req), gfp_flags); + if (0 == usb_req) { + DWC_WARN("%s() %s\n", __func__, "request allocation failed!\n"); + return 0; + } -+ memset(usb_req, 0, sizeof(*usb_req)); + usb_req->dma = DWC_DMA_ADDR_INVALID; + + return usb_req; @@ -65154,10 +65523,10 @@ index 0000000000000000000000000000000000000000..cdc9963176e5a4a0d5250613b61e26c5 +test_main(); +0; -From a103f6cf9b29546224615565f35e8568dd2359e1 Mon Sep 17 00:00:00 2001 +From be1266206f3c88f565c0d9ec85bf998fd45717a4 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 17 Jun 2015 17:06:34 +0100 -Subject: [PATCH 029/160] bcm2708 framebuffer driver +Subject: [PATCH 037/132] bcm2708 framebuffer driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -68616,10 +68985,10 @@ index 3c14e43b82fefe1d32f591d1b2f61d2cd28d0fa8..7626beb6a5bb8df601ddf0f6e6909d1f +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 -From 5d46a5972c6ff8eed7952dab45d4d83df79dc491 Mon Sep 17 00:00:00 2001 +From c9e7cf342ea0486e4177b2db3e9daf0e32a4437c Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 14:22:53 +0100 -Subject: [PATCH 030/160] dmaengine: Add support for BCM2708 +Subject: [PATCH 038/132] dmaengine: Add support for BCM2708 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -68766,6 +69135,8 @@ Dropping non-DT support means we don't need this driver, but we still need the legacy DMA API. Signed-off-by: Noralf Trønnes + +bcm2708-dmaengine - Fix arm64 portability/build issues --- drivers/dma/Kconfig | 4 + drivers/dma/Makefile | 1 + @@ -68776,10 +69147,10 @@ Signed-off-by: Noralf Trønnes create mode 100644 include/linux/platform_data/dma-bcm2708.h diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig -index ece64af02387ab867e21b7bc9178e0842bf1ecac..ffc92425cbd7bafc23899b7680949e47943f9561 100644 +index f7b3ac574968b35aeb1fb6b3ba8d4f1bf61599f9..2a2108062687ff33ff540c987f6367fa3b8aad9d 100644 --- a/drivers/dma/Kconfig +++ b/drivers/dma/Kconfig -@@ -488,6 +488,10 @@ config TIMB_DMA +@@ -502,6 +502,10 @@ config TIMB_DMA help Enable support for the Timberdale FPGA DMA engine. @@ -68791,7 +69162,7 @@ index ece64af02387ab867e21b7bc9178e0842bf1ecac..ffc92425cbd7bafc23899b7680949e47 tristate "AM33xx CPPI41 DMA support" depends on ARCH_OMAP diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile -index 614f28b0b739de875823b05a66a62186a1e9f45f..598e44dca3e4a9b33cc206e107226de8e0b34111 100644 +index e4dc9cac7ee8427184f821896364c232634a444f..58cc24730ed6ab4fd35a9cb182c4862f8f2d546f 100644 --- a/drivers/dma/Makefile +++ b/drivers/dma/Makefile @@ -18,6 +18,7 @@ obj-$(CONFIG_AT_HDMAC) += at_hdmac.o @@ -68804,7 +69175,7 @@ index 614f28b0b739de875823b05a66a62186a1e9f45f..598e44dca3e4a9b33cc206e107226de8 obj-$(CONFIG_DMA_JZ4780) += dma-jz4780.o diff --git a/drivers/dma/bcm2708-dmaengine.c b/drivers/dma/bcm2708-dmaengine.c new file mode 100644 -index 0000000000000000000000000000000000000000..56f18dc4aa5627625e9620daa9d6482e0098af7e +index 0000000000000000000000000000000000000000..0f4a26983e401c60647655dcb35afd58f37515a8 --- /dev/null +++ b/drivers/dma/bcm2708-dmaengine.c @@ -0,0 +1,281 @@ @@ -68879,7 +69250,7 @@ index 0000000000000000000000000000000000000000..56f18dc4aa5627625e9620daa9d6482e +extern void bcm_dma_start(void __iomem *dma_chan_base, + dma_addr_t control_block) +{ -+ dsb(); /* ARM data synchronization (push) operation */ ++ dsb(sy); /* ARM data synchronization (push) operation */ + + writel(control_block, dma_chan_base + BCM2708_DMA_ADDR); + writel(BCM2708_DMA_ACTIVE, dma_chan_base + BCM2708_DMA_CS); @@ -68888,7 +69259,7 @@ index 0000000000000000000000000000000000000000..56f18dc4aa5627625e9620daa9d6482e + +extern void bcm_dma_wait_idle(void __iomem *dma_chan_base) +{ -+ dsb(); ++ dsb(sy); + + /* ugly busy wait only option for now */ + while (readl(dma_chan_base + BCM2708_DMA_CS) & BCM2708_DMA_ACTIVE) @@ -68898,7 +69269,7 @@ index 0000000000000000000000000000000000000000..56f18dc4aa5627625e9620daa9d6482e + +extern bool bcm_dma_is_busy(void __iomem *dma_chan_base) +{ -+ dsb(); ++ dsb(sy); + + return readl(dma_chan_base + BCM2708_DMA_CS) & BCM2708_DMA_ACTIVE; +} @@ -69091,7 +69462,7 @@ index 0000000000000000000000000000000000000000..56f18dc4aa5627625e9620daa9d6482e +MODULE_LICENSE("GPL"); diff --git a/include/linux/platform_data/dma-bcm2708.h b/include/linux/platform_data/dma-bcm2708.h new file mode 100644 -index 0000000000000000000000000000000000000000..99cc7fdbf543207208bf3638a0d4dbb6ec4ea8c2 +index 0000000000000000000000000000000000000000..c5bfff2765be4606077e6c8af73040ec13ee8974 --- /dev/null +++ b/include/linux/platform_data/dma-bcm2708.h @@ -0,0 +1,143 @@ @@ -69160,13 +69531,13 @@ index 0000000000000000000000000000000000000000..99cc7fdbf543207208bf3638a0d4dbb6 +#define BCM_DMA_FEATURE_COUNT 4 + +struct bcm2708_dma_cb { -+ unsigned long info; -+ unsigned long src; -+ unsigned long dst; -+ unsigned long length; -+ unsigned long stride; -+ unsigned long next; -+ unsigned long pad[2]; ++ u32 info; ++ u32 src; ++ u32 dst; ++ u32 length; ++ u32 stride; ++ u32 next; ++ u32 pad[2]; +}; + +struct scatterlist; @@ -69239,10 +69610,10 @@ index 0000000000000000000000000000000000000000..99cc7fdbf543207208bf3638a0d4dbb6 + +#endif /* _PLAT_BCM2708_DMA_H */ -From 6208a6f79fe50c17eaf41438b0381e96d600cf77 Mon Sep 17 00:00:00 2001 +From e846affe69966a357f3024d7c3846775a29c80e8 Mon Sep 17 00:00:00 2001 From: gellert Date: Fri, 15 Aug 2014 16:35:06 +0100 -Subject: [PATCH 031/160] MMC: added alternative MMC driver +Subject: [PATCH 039/132] MMC: added alternative MMC driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -69333,7 +69704,7 @@ Signed-off-by: Phil Elwell create mode 100644 drivers/mmc/host/bcm2835-mmc.c diff --git a/drivers/mmc/core/quirks.c b/drivers/mmc/core/quirks.c -index fad660b95809224e3a06abde0709be3d50acf307..b79fe14c18f1fe521fadf8adfc136de62140c8b9 100644 +index ca9cade317c7eccee354bb1a075b091f59a62de1..5e9e3518e0eb6be78f6e2847846a90ddd0febb77 100644 --- a/drivers/mmc/core/quirks.c +++ b/drivers/mmc/core/quirks.c @@ -53,6 +53,9 @@ static const struct mmc_fixup mmc_fixup_methods[] = { @@ -69346,7 +69717,7 @@ index fad660b95809224e3a06abde0709be3d50acf307..b79fe14c18f1fe521fadf8adfc136de6 const struct mmc_fixup *f; u64 rev = cid_rev_card(card); -@@ -77,5 +80,12 @@ void mmc_fixup_device(struct mmc_card *card, const struct mmc_fixup *table) +@@ -79,5 +82,12 @@ void mmc_fixup_device(struct mmc_card *card, const struct mmc_fixup *table) f->vendor_fixup(card, f->data); } } @@ -69360,7 +69731,7 @@ index fad660b95809224e3a06abde0709be3d50acf307..b79fe14c18f1fe521fadf8adfc136de6 } EXPORT_SYMBOL(mmc_fixup_device); diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig -index 0aa484c10c0a9b93a4aedc885235d95ffe6872e6..36d00eba1df06946fb2bb9bb9dd1f0d847ef8158 100644 +index 5274f503a39ad9c034e23b634ff0ec6634cbbd78..405d62909dd6ac5351684c002414cc02135d98ba 100644 --- a/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig @@ -4,6 +4,35 @@ @@ -69400,7 +69771,7 @@ index 0aa484c10c0a9b93a4aedc885235d95ffe6872e6..36d00eba1df06946fb2bb9bb9dd1f0d8 tristate "ARM AMBA Multimedia Card Interface support" depends on ARM_AMBA diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile -index af918d261ff9625d1d42146da1173031cd9917dd..3ba94f0af9b1793aa66d95d8fbd9bb661ca82778 100644 +index e2bdaaf431841535b936600af56b8e38f52f9845..5133b680970c93fbb9695f83296f0f70b4977240 100644 --- a/drivers/mmc/host/Makefile +++ b/drivers/mmc/host/Makefile @@ -18,6 +18,7 @@ obj-$(CONFIG_MMC_SDHCI_S3C) += sdhci-s3c.o @@ -70989,10 +71360,10 @@ index 0000000000000000000000000000000000000000..ceb37930e167f47c9c848e8de757ad09 +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Gellert Weisz"); -From 45ac67f6273670af201033904221c78a00aabd65 Mon Sep 17 00:00:00 2001 +From a9424805c97a56bff335d322bdbc951ac3d11c01 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 25 Mar 2015 17:49:47 +0000 -Subject: [PATCH 032/160] Adding bcm2835-sdhost driver, and an overlay to +Subject: [PATCH 040/132] Adding bcm2835-sdhost driver, and an overlay to enable it BCM2835 has two SD card interfaces. This driver uses the other one. @@ -71135,16 +71506,32 @@ Since reprogramming the clock can now involve a round-trip to the firmware it must not be done at atomic context, and a tasklet is not a task. +Signed-off-by: Phil Elwell + +bcm2835-sdhost: Don't exit cmd wait loop on error + +The FAIL flag can be set in the CMD register before command processing +is complete, leading to spurious "failed to complete" errors. This has +the effect of promoting harmless CRC7 errors during CMD1 processing +into errors that can delay and even prevent booting. + +Also: +1) Convert the last KERN_ERROR message in the register dumping to + KERN_INFO. +2) Remove an unnecessary reset call from bcm2835_sdhost_add_host. + +See: https://github.com/raspberrypi/linux/pull/1492 + Signed-off-by: Phil Elwell --- drivers/mmc/host/Kconfig | 10 + drivers/mmc/host/Makefile | 1 + - drivers/mmc/host/bcm2835-sdhost.c | 2189 +++++++++++++++++++++++++++++++++++++ - 3 files changed, 2200 insertions(+) + drivers/mmc/host/bcm2835-sdhost.c | 2185 +++++++++++++++++++++++++++++++++++++ + 3 files changed, 2196 insertions(+) create mode 100644 drivers/mmc/host/bcm2835-sdhost.c diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig -index 36d00eba1df06946fb2bb9bb9dd1f0d847ef8158..97650d32a733251076726a0cecb4239906ff3814 100644 +index 405d62909dd6ac5351684c002414cc02135d98ba..205d836b52e3bbcf8956fec98072c6ee7804a403 100644 --- a/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig @@ -33,6 +33,16 @@ config MMC_BCM2835_PIO_DMA_BARRIER @@ -71165,7 +71552,7 @@ index 36d00eba1df06946fb2bb9bb9dd1f0d847ef8158..97650d32a733251076726a0cecb42399 tristate "ARM AMBA Multimedia Card Interface support" depends on ARM_AMBA diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile -index 3ba94f0af9b1793aa66d95d8fbd9bb661ca82778..8daaa94ab268495bbbf335ccad5a35e2d37b6fe5 100644 +index 5133b680970c93fbb9695f83296f0f70b4977240..adbc4586fec94aa8bd70f5ca3e2c90d123849a34 100644 --- a/drivers/mmc/host/Makefile +++ b/drivers/mmc/host/Makefile @@ -18,6 +18,7 @@ obj-$(CONFIG_MMC_SDHCI_S3C) += sdhci-s3c.o @@ -71178,10 +71565,10 @@ index 3ba94f0af9b1793aa66d95d8fbd9bb661ca82778..8daaa94ab268495bbbf335ccad5a35e2 obj-$(CONFIG_MMC_AU1X) += au1xmmc.o diff --git a/drivers/mmc/host/bcm2835-sdhost.c b/drivers/mmc/host/bcm2835-sdhost.c new file mode 100644 -index 0000000000000000000000000000000000000000..d7b6b5a4e31f7aaa76470d3a79ea78a643184855 +index 0000000000000000000000000000000000000000..23dea422182534e248435aeaee3ecb5da69c0d33 --- /dev/null +++ b/drivers/mmc/host/bcm2835-sdhost.c -@@ -0,0 +1,2189 @@ +@@ -0,0 +1,2185 @@ +/* + * BCM2835 SD host driver. + * @@ -71557,7 +71944,7 @@ index 0000000000000000000000000000000000000000..d7b6b5a4e31f7aaa76470d3a79ea78a6 + pr_info("%s: SDRSP2 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDRSP2)); -+ pr_err("%s: SDRSP3 0x%08x\n", ++ pr_info("%s: SDRSP3 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDRSP3)); + pr_info("%s: SDHSTS 0x%08x\n", @@ -71999,7 +72386,7 @@ index 0000000000000000000000000000000000000000..d7b6b5a4e31f7aaa76470d3a79ea78a6 + if (sg_is_last(sg)) { + BUG_ON(sg->length < len); + sg->length -= len; -+ host->drain_page = (struct page *)sg->page_link; ++ host->drain_page = sg_page(sg); + host->drain_offset = sg->offset + sg->length; + } + } @@ -72367,9 +72754,8 @@ index 0000000000000000000000000000000000000000..d7b6b5a4e31f7aaa76470d3a79ea78a6 + retries = 1; // We've already waited long enough this time + } + -+ retries = host->cmd_quick_poll_retries; + for (sdcmd = bcm2835_sdhost_read(host, SDCMD); -+ (sdcmd & SDCMD_NEW_FLAG) && !(sdcmd & SDCMD_FAIL_FLAG) && retries; ++ (sdcmd & SDCMD_NEW_FLAG) && retries; + retries--) { + cpu_relax(); + sdcmd = bcm2835_sdhost_read(host, SDCMD); @@ -72392,8 +72778,7 @@ index 0000000000000000000000000000000000000000..d7b6b5a4e31f7aaa76470d3a79ea78a6 + usleep_range(1, 10); + spin_lock_irqsave(&host->lock, *irq_flags); + sdcmd = bcm2835_sdhost_read(host, SDCMD); -+ if (!(sdcmd & SDCMD_NEW_FLAG) || -+ (sdcmd & SDCMD_FAIL_FLAG)) ++ if (!(sdcmd & SDCMD_NEW_FLAG)) + break; + } + } @@ -73076,8 +73461,6 @@ index 0000000000000000000000000000000000000000..d7b6b5a4e31f7aaa76470d3a79ea78a6 + + mmc = host->mmc; + -+ bcm2835_sdhost_reset_internal(host); -+ + mmc->f_max = host->max_clk; + mmc->f_min = host->max_clk / SDCDIV_MAX_CDIV; + @@ -73372,10 +73755,10 @@ index 0000000000000000000000000000000000000000..d7b6b5a4e31f7aaa76470d3a79ea78a6 +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Phil Elwell"); -From c59e355fdd64889c528df665168fa4ccb216c1c8 Mon Sep 17 00:00:00 2001 +From 06e7b99225b70df708d47818e3f08f1a0fba0597 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 11 May 2016 12:50:33 +0100 -Subject: [PATCH 033/160] mmc: Add MMC_QUIRK_ERASE_BROKEN for some cards +Subject: [PATCH 041/132] mmc: Add MMC_QUIRK_ERASE_BROKEN for some cards Some SD cards have been found that corrupt data when small blocks are erased. Add a quirk to indicate that ERASE should not be used, @@ -73404,10 +73787,10 @@ Signed-off-by: Phil Elwell 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c -index c5472e3c923126097fd93f2abf31402a1717c228..c55094303b087eb944baf28d4023ab72a61206d5 100644 +index 2206d4477dbbdb5190906e277124580b600d71e0..8c3c361f24ea675cd3a85d9d2d0124f3793adcc9 100644 --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c -@@ -133,6 +133,13 @@ enum { +@@ -134,6 +134,13 @@ enum { module_param(perdev_minors, int, 0444); MODULE_PARM_DESC(perdev_minors, "Minors numbers to allocate per device"); @@ -73421,7 +73804,7 @@ index c5472e3c923126097fd93f2abf31402a1717c228..c55094303b087eb944baf28d4023ab72 static inline int mmc_blk_part_switch(struct mmc_card *card, struct mmc_blk_data *md); static int get_card_status(struct mmc_card *card, u32 *status, int retries); -@@ -2576,6 +2583,17 @@ static const struct mmc_fixup blk_fixups[] = +@@ -2572,6 +2579,17 @@ static const struct mmc_fixup blk_fixups[] = MMC_FIXUP("V10016", CID_MANFID_KINGSTON, CID_OEMID_ANY, add_quirk_mmc, MMC_QUIRK_TRIM_BROKEN), @@ -73439,7 +73822,7 @@ index c5472e3c923126097fd93f2abf31402a1717c228..c55094303b087eb944baf28d4023ab72 END_FIXUP }; -@@ -2583,6 +2601,7 @@ static int mmc_blk_probe(struct mmc_card *card) +@@ -2579,6 +2597,7 @@ static int mmc_blk_probe(struct mmc_card *card) { struct mmc_blk_data *md, *part_md; char cap_str[10]; @@ -73447,7 +73830,7 @@ index c5472e3c923126097fd93f2abf31402a1717c228..c55094303b087eb944baf28d4023ab72 /* * Check that the card supports the command class(es) we need. -@@ -2590,7 +2609,16 @@ static int mmc_blk_probe(struct mmc_card *card) +@@ -2586,7 +2605,16 @@ static int mmc_blk_probe(struct mmc_card *card) if (!(card->csd.cmdclass & CCC_BLOCK_READ)) return -ENODEV; @@ -73465,7 +73848,7 @@ index c5472e3c923126097fd93f2abf31402a1717c228..c55094303b087eb944baf28d4023ab72 md = mmc_blk_alloc(card); if (IS_ERR(md)) -@@ -2598,9 +2626,14 @@ static int mmc_blk_probe(struct mmc_card *card) +@@ -2594,9 +2622,14 @@ static int mmc_blk_probe(struct mmc_card *card) string_get_size((u64)get_capacity(md->disk), 512, STRING_UNITS_2, cap_str, sizeof(cap_str)); @@ -73483,10 +73866,10 @@ index c5472e3c923126097fd93f2abf31402a1717c228..c55094303b087eb944baf28d4023ab72 if (mmc_blk_alloc_parts(card, md)) goto out; diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c -index 8b4dfd45433b73c1ccf6fe4cd4f9ca3338546cff..376ca5e984f1d7e0a10bb6e90893cf81a331c8fa 100644 +index e55cde6d436dddae261c69ef36ca4de93eaa01ac..48e341b6ba6dde26605e7f9e8b9aa84c7ea268fa 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c -@@ -2260,7 +2260,8 @@ EXPORT_SYMBOL(mmc_erase); +@@ -2289,7 +2289,8 @@ EXPORT_SYMBOL(mmc_erase); int mmc_can_erase(struct mmc_card *card) { if ((card->host->caps & MMC_CAP_ERASE) && @@ -73497,11 +73880,11 @@ index 8b4dfd45433b73c1ccf6fe4cd4f9ca3338546cff..376ca5e984f1d7e0a10bb6e90893cf81 return 0; } diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h -index eb0151bac50c1fd796f479d017bc3c3d7017c9e9..fa4e6454456747f02a10621f4f4da3ac1a5be2c1 100644 +index d8673ca968ba2d65fb3da39680583ca5152641e4..510c3872929b3267fb6665bb69d26f5aca740a28 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h -@@ -281,6 +281,9 @@ struct mmc_card { - #define MMC_QUIRK_TRIM_BROKEN (1<<12) /* Skip trim */ +@@ -283,6 +283,9 @@ struct mmc_card { + #define MMC_QUIRK_BROKEN_HPI (1<<13) /* Disable broken HPI support */ +#define MMC_QUIRK_ERASE_BROKEN (1<<31) /* Skip erase */ @@ -73511,10 +73894,10 @@ index eb0151bac50c1fd796f479d017bc3c3d7017c9e9..fa4e6454456747f02a10621f4f4da3ac unsigned int erase_shift; /* if erase unit is power 2 */ unsigned int pref_erase; /* in sectors */ -From aecc64caf2f7a4c8993f4efe6983e3d83b9da8f3 Mon Sep 17 00:00:00 2001 +From f687bd2ac3d0f168d1603d2dce96e1c67ad00a82 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:31:47 +0100 -Subject: [PATCH 034/160] cma: Add vc_cma driver to enable use of CMA +Subject: [PATCH 042/132] cma: Add vc_cma driver to enable use of CMA MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -73546,7 +73929,7 @@ Signed-off-by: Noralf Trønnes create mode 100644 include/linux/broadcom/vc_cma.h diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig -index 601f64fcc8908bad887a2f3fd70cd23fdf34ad1c..a23a93cfa57f01f37777f42fc241f62958fdf1c1 100644 +index dcc09739a54ef860343ac2fca5acf59724ca60e2..6d518c7635ae128f4554945dd3ffd351f9d325bf 100644 --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig @@ -4,6 +4,8 @@ @@ -73559,13 +73942,13 @@ index 601f64fcc8908bad887a2f3fd70cd23fdf34ad1c..a23a93cfa57f01f37777f42fc241f629 config DEVMEM diff --git a/drivers/char/Makefile b/drivers/char/Makefile -index d8a7579300d2df1112446c3a69a29713fd2af163..9d8662e2ccc637cabb56e31c936ca23bcc15e120 100644 +index 6e6c244a66a02c4efd57229b0f31d331377bbc55..67c40b8f2ff25f423cb74b64de9afa6f32479aed 100644 --- a/drivers/char/Makefile +++ b/drivers/char/Makefile @@ -60,3 +60,4 @@ 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 +obj-$(CONFIG_BRCM_CHAR_DRIVERS) += broadcom/ diff --git a/drivers/char/broadcom/Kconfig b/drivers/char/broadcom/Kconfig new file mode 100644 @@ -74857,10 +75240,10 @@ index 0000000000000000000000000000000000000000..be2819d5d41f9d5ed65daf8eedb94c9e + +#endif /* VC_CMA_H */ -From e0ce5ad0ca8eb362d2dd5dd4591361b788e6bb4c Mon Sep 17 00:00:00 2001 +From fd27fd1ac90261925dad77c00c3f901f51ab8abd Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 26 Mar 2012 22:15:50 +0100 -Subject: [PATCH 035/160] bcm2708: alsa sound driver +Subject: [PATCH 043/132] bcm2708: alsa sound driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -74905,16 +75288,25 @@ synchronization within the control callbacks. We most likely need to ensure this manually, so add locking around all access to shared mutable data. In particular, bcm2835_audio_set_ctls() should probably always be called under our own audio lock. + +snd-bcm2835: Don't allow responses from VC to be interrupted by user signals + +There should always be a response, and retry after a signal interruption is not handled, so don't report +we are interruptible. + +See: https://github.com/raspberrypi/linux/issues/1560 + +snd-bcm2835: Use bcm2835_hw params in preallocate --- sound/arm/Kconfig | 8 + sound/arm/Makefile | 5 + - sound/arm/bcm2835-ctl.c | 350 ++++++++++++++ - sound/arm/bcm2835-pcm.c | 561 +++++++++++++++++++++++ - sound/arm/bcm2835-vchiq.c | 902 +++++++++++++++++++++++++++++++++++++ + sound/arm/bcm2835-ctl.c | 350 +++++++++++++++ + sound/arm/bcm2835-pcm.c | 563 +++++++++++++++++++++++ + sound/arm/bcm2835-vchiq.c | 889 +++++++++++++++++++++++++++++++++++++ sound/arm/bcm2835.c | 511 +++++++++++++++++++++ sound/arm/bcm2835.h | 167 +++++++ sound/arm/vc_vchi_audioserv_defs.h | 116 +++++ - 8 files changed, 2620 insertions(+) + 8 files changed, 2609 insertions(+) create mode 100755 sound/arm/bcm2835-ctl.c create mode 100755 sound/arm/bcm2835-pcm.c create mode 100755 sound/arm/bcm2835-vchiq.c @@ -74923,10 +75315,10 @@ probably always be called under our own audio lock. create mode 100644 sound/arm/vc_vchi_audioserv_defs.h diff --git a/sound/arm/Kconfig b/sound/arm/Kconfig -index e0406211716b003daae37efbc8cdfd73213b31f3..7746e5d28d49f2ea9161546b35ae278a718101b5 100644 +index 65171f6657a2984ccc14ce907a4c7c87d77d196b..8883c2f3a3269742e2bf6fc995643fb282f3509a 100644 --- a/sound/arm/Kconfig +++ b/sound/arm/Kconfig -@@ -40,5 +40,13 @@ config SND_PXA2XX_AC97 +@@ -32,6 +32,14 @@ config SND_PXA2XX_AC97 Say Y or M if you want to support any AC97 codec attached to the PXA2xx AC97 interface. @@ -74940,6 +75332,7 @@ index e0406211716b003daae37efbc8cdfd73213b31f3..7746e5d28d49f2ea9161546b35ae278a + endif # SND_ARM + config SND_PXA2XX_LIB diff --git a/sound/arm/Makefile b/sound/arm/Makefile index 8c0c851d464109819beb296c2624bbec7af131e9..6796d7f5c7803ccfdaadbe56b2520c5454678686 100644 --- a/sound/arm/Makefile @@ -75311,10 +75704,10 @@ index 0000000000000000000000000000000000000000..75dc3224be7ce8353378e9676ad2c684 +} diff --git a/sound/arm/bcm2835-pcm.c b/sound/arm/bcm2835-pcm.c new file mode 100755 -index 0000000000000000000000000000000000000000..d2de13cbd76ed16634f27c0843474825671a28eb +index 0000000000000000000000000000000000000000..71b128924affac2b7a01d1169e43d437bb1d0c1a --- /dev/null +++ b/sound/arm/bcm2835-pcm.c -@@ -0,0 +1,561 @@ +@@ -0,0 +1,563 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* @@ -75835,9 +76228,9 @@ index 0000000000000000000000000000000000000000..d2de13cbd76ed16634f27c0843474825 + /* pre-allocation of buffers */ + /* NOTE: this may fail */ + snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, -+ snd_dma_continuous_data -+ (GFP_KERNEL), 64 * 1024, -+ 64 * 1024); ++ snd_dma_continuous_data (GFP_KERNEL), ++ snd_bcm2835_playback_hw.buffer_bytes_max, snd_bcm2835_playback_hw.buffer_bytes_max); ++ + +out: + mutex_unlock(&chip->audio_mutex); @@ -75867,9 +76260,11 @@ index 0000000000000000000000000000000000000000..d2de13cbd76ed16634f27c0843474825 + snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, + &snd_bcm2835_playback_spdif_ops); + ++ /* pre-allocation of buffers */ ++ /* NOTE: this may fail */ + snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, + snd_dma_continuous_data (GFP_KERNEL), -+ 64 * 1024, 64 * 1024); ++ snd_bcm2835_playback_spdif_hw.buffer_bytes_max, snd_bcm2835_playback_spdif_hw.buffer_bytes_max); +out: + mutex_unlock(&chip->audio_mutex); + audio_info(" .. OUT\n"); @@ -75878,10 +76273,10 @@ index 0000000000000000000000000000000000000000..d2de13cbd76ed16634f27c0843474825 +} diff --git a/sound/arm/bcm2835-vchiq.c b/sound/arm/bcm2835-vchiq.c new file mode 100755 -index 0000000000000000000000000000000000000000..3de30945d8155b90d244734881a7caa81930fa7c +index 0000000000000000000000000000000000000000..7ee436ca9fa2903d41d1bdd8f8f0774025d22ae0 --- /dev/null +++ b/sound/arm/bcm2835-vchiq.c -@@ -0,0 +1,902 @@ +@@ -0,0 +1,889 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* @@ -76395,12 +76790,7 @@ index 0000000000000000000000000000000000000000..3de30945d8155b90d244734881a7caa8 + } + + /* We are expecting a reply from the videocore */ -+ ret = wait_for_completion_interruptible(&instance->msg_avail_comp); -+ if (ret) { -+ LOG_DBG("%s: failed on waiting for event (status=%d)\n", -+ __func__, success); -+ goto unlock; -+ } ++ wait_for_completion(&instance->msg_avail_comp); + + if (instance->result != 0) { + LOG_ERR("%s: result=%d\n", __func__, instance->result); @@ -76499,12 +76889,7 @@ index 0000000000000000000000000000000000000000..3de30945d8155b90d244734881a7caa8 + } + + /* We are expecting a reply from the videocore */ -+ ret = wait_for_completion_interruptible(&instance->msg_avail_comp); -+ if (ret) { -+ LOG_DBG("%s: failed on waiting for event (status=%d)\n", -+ __func__, success); -+ goto unlock; -+ } ++ wait_for_completion(&instance->msg_avail_comp); + + if (instance->result != 0) { + LOG_ERR("%s: result=%d", __func__, instance->result); @@ -76645,14 +77030,11 @@ index 0000000000000000000000000000000000000000..3de30945d8155b90d244734881a7caa8 + goto unlock; + } + -+ ret = wait_for_completion_interruptible(&instance->msg_avail_comp); -+ if (ret) { -+ LOG_DBG("%s: failed on waiting for event (status=%d)\n", -+ __func__, success); -+ goto unlock; -+ } ++ /* We are expecting a reply from the videocore */ ++ wait_for_completion(&instance->msg_avail_comp); ++ + if (instance->result != 0) { -+ LOG_ERR("%s: failed result (status=%d)\n", ++ LOG_ERR("%s: failed result (result=%d)\n", + __func__, instance->result); + + ret = -1; @@ -77597,10 +77979,10 @@ index 0000000000000000000000000000000000000000..af3e6eb690113fc32ce9e06bd2f0f294 + +#endif // _VC_AUDIO_DEFS_H_ -From 595fee52bf068a703fdc3c4a517158d4b56c30b7 Mon Sep 17 00:00:00 2001 +From 84e1f14df19a2e7ee78949943a6aeca5b3cb3e95 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 2 Jul 2013 23:42:01 +0100 -Subject: [PATCH 036/160] bcm2708 vchiq driver +Subject: [PATCH 044/132] bcm2708 vchiq driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -77913,10 +78295,10 @@ index 311b9f26fab7dd770bdcd684c7691442b0872d55..9a638f528fcebc9206419a2cc68f3c98 /* * Watchdog diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig -index a216b46677429402168c587c638cc1d710632960..90af750e589982a5dcd854f54e8270d935ea6768 100644 +index d002528289667732e9032f68aa0dba6624abfd9c..dc9a6ae02c2aebd934cb5ff66c7db9eaccb4c0d2 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig -@@ -812,6 +812,7 @@ source "drivers/misc/lis3lv02d/Kconfig" +@@ -802,6 +802,7 @@ source "drivers/misc/lis3lv02d/Kconfig" source "drivers/misc/altera-stapl/Kconfig" source "drivers/misc/mei/Kconfig" source "drivers/misc/vmw_vmci/Kconfig" @@ -77925,10 +78307,10 @@ index a216b46677429402168c587c638cc1d710632960..90af750e589982a5dcd854f54e8270d9 source "drivers/misc/genwqe/Kconfig" source "drivers/misc/echo/Kconfig" diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile -index b2fb6dbffcef0c4999439287b3e1c1a10bdcf264..1a58cf720b9a162ac654b7a8dc21855363f34136 100644 +index fb32516ddfe2e4f8112beee9e831bcc4eb729667..bdf0f5fe7be52b16e12e0bbc79ebfe58a084794d 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile -@@ -51,6 +51,7 @@ obj-$(CONFIG_INTEL_MEI) += mei/ +@@ -50,6 +50,7 @@ obj-$(CONFIG_INTEL_MEI) += mei/ obj-$(CONFIG_VMWARE_VMCI) += vmw_vmci/ obj-$(CONFIG_LATTICE_ECP3_CONFIG) += lattice-ecp3-config.o obj-$(CONFIG_SRAM) += sram.o @@ -90965,10 +91347,10 @@ index 0000000000000000000000000000000000000000..b6bfa21155e431e93bfb2c149d324371 + return vchiq_build_time; +} -From 094dcdbec38f99068b7ee0a5cff6e44301e8c1a0 Mon Sep 17 00:00:00 2001 +From edfaae0f3da398d23ac31dc6fde41b6411c8b89c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 17 Jun 2015 16:07:06 +0100 -Subject: [PATCH 037/160] vc_mem: Add vc_mem driver +Subject: [PATCH 045/132] vc_mem: Add vc_mem driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -91973,10 +92355,10 @@ index 0000000000000000000000000000000000000000..20a475377eb3078ea1ecaef2b24efc35 + +#endif /* _VC_MEM_H */ -From 451be32609d7c3568174a1bdf2177aba4fafbb53 Mon Sep 17 00:00:00 2001 +From 8c5804101002c1f58f24d978ae77abc9e61af245 Mon Sep 17 00:00:00 2001 From: Tim Gover Date: Tue, 22 Jul 2014 15:41:04 +0100 -Subject: [PATCH 038/160] vcsm: VideoCore shared memory service for BCM2835 +Subject: [PATCH 046/132] vcsm: VideoCore shared memory service for BCM2835 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -96394,10 +96776,10 @@ index 0000000000000000000000000000000000000000..334f36d0d697b047df2922b5f2db67f3 + +#endif /* __VMCS_SM_IOCTL_H__INCLUDED__ */ -From 20bab8314e4451630067ca9a6a3e4b1c9497b403 Mon Sep 17 00:00:00 2001 +From 721516601326d191675ed2b19c853579c868e8e0 Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Fri, 21 Aug 2015 23:14:48 +0100 -Subject: [PATCH 039/160] Add /dev/gpiomem device for rootless user GPIO access +Subject: [PATCH 047/132] Add /dev/gpiomem device for rootless user GPIO access Signed-off-by: Luke Wren @@ -96708,10 +97090,10 @@ index 0000000000000000000000000000000000000000..911f5b7393ed48ceed8751f06967ae64 +MODULE_DESCRIPTION("gpiomem driver for accessing GPIO from userspace"); +MODULE_AUTHOR("Luke Wren "); -From 6a7c565f7bf24ec6e269583d91bd175cbc2b0296 Mon Sep 17 00:00:00 2001 +From 1c1b4745deb8c8ef28ae58f5d0251945d0d9664d Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Sat, 5 Sep 2015 01:14:45 +0100 -Subject: [PATCH 040/160] Add SMI driver +Subject: [PATCH 048/132] Add SMI driver Signed-off-by: Luke Wren --- @@ -97243,7 +97625,7 @@ index 0000000000000000000000000000000000000000..d6efd92fdfe46df5cfe219d2123e0dff + "Character device driver for BCM2835's secondary memory interface"); +MODULE_AUTHOR("Luke Wren "); diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig -index 90af750e589982a5dcd854f54e8270d935ea6768..7011b2daec3df832eebf9c7f40f6cb3bc6191595 100644 +index dc9a6ae02c2aebd934cb5ff66c7db9eaccb4c0d2..cff8c3df50c4b13d40fd1143eb86a66756bc097c 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig @@ -10,6 +10,14 @@ config SENSORS_LIS3LV02D @@ -97262,7 +97644,7 @@ index 90af750e589982a5dcd854f54e8270d935ea6768..7011b2daec3df832eebf9c7f40f6cb3b tristate "Analog Devices Digital Potentiometers" depends on (I2C || SPI) && SYSFS diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile -index 1a58cf720b9a162ac654b7a8dc21855363f34136..28989fae581bbfd0bc87f1542d7f6b83e8c3c5cc 100644 +index bdf0f5fe7be52b16e12e0bbc79ebfe58a084794d..d31dd62a64dfb98f07d1cae048b31961600d79f9 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -9,6 +9,7 @@ obj-$(CONFIG_AD525X_DPOT_SPI) += ad525x_dpot-spi.o @@ -98662,10 +99044,183 @@ index 0000000000000000000000000000000000000000..ee3a75edfc033eeb0d90a687ffb68b10 + +#endif /* BCM2835_SMI_H */ -From 18d1090cc3805fbed23a3267d5a4c9c294d68f1c Mon Sep 17 00:00:00 2001 +From 49331b05243323f9bd40e5b78206ddda4afa8118 Mon Sep 17 00:00:00 2001 +From: Martin Sperl +Date: Tue, 26 Apr 2016 14:59:21 +0000 +Subject: [PATCH 049/132] MISC: bcm2835: smi: use clock manager and fix reload + issues + +Use clock manager instead of self-made clockmanager. + +Also fix some error paths that showd up during development +(especially missing release of dma resources on rmmod) + +Signed-off-by: Martin Sperl +--- + drivers/misc/bcm2835_smi.c | 86 +++++++++++++++------------------------------- + 1 file changed, 28 insertions(+), 58 deletions(-) + +diff --git a/drivers/misc/bcm2835_smi.c b/drivers/misc/bcm2835_smi.c +index 63a4ea08b9930a3a31a985f0a1d969b488ed49ec..1261540703127d1d63b9f3c87042c6e50d3fbec2 100644 +--- a/drivers/misc/bcm2835_smi.c ++++ b/drivers/misc/bcm2835_smi.c +@@ -34,6 +34,7 @@ + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + ++#include + #include + #include + #include +@@ -62,7 +63,7 @@ + struct bcm2835_smi_instance { + struct device *dev; + struct smi_settings settings; +- __iomem void *smi_regs_ptr, *cm_smi_regs_ptr; ++ __iomem void *smi_regs_ptr; + dma_addr_t smi_regs_busaddr; + + struct dma_chan *dma_chan; +@@ -72,8 +73,7 @@ struct bcm2835_smi_instance { + + struct scatterlist buffer_sgl; + +- int clock_source; +- int clock_divisor; ++ struct clk *clk; + + /* Sometimes we are called into in an atomic context (e.g. by + JFFS2 + MTD) so we can't use a mutex */ +@@ -82,42 +82,6 @@ struct bcm2835_smi_instance { + + /**************************************************************************** + * +-* SMI clock manager setup +-* +-***************************************************************************/ +- +-static inline void write_smi_cm_reg(struct bcm2835_smi_instance *inst, +- u32 val, unsigned reg) +-{ +- writel(CM_PWD | val, inst->cm_smi_regs_ptr + reg); +-} +- +-static inline u32 read_smi_cm_reg(struct bcm2835_smi_instance *inst, +- unsigned reg) +-{ +- return readl(inst->cm_smi_regs_ptr + reg); +-} +- +-static void smi_setup_clock(struct bcm2835_smi_instance *inst) +-{ +- dev_dbg(inst->dev, "Setting up clock..."); +- /* Disable SMI clock and wait for it to stop. */ +- write_smi_cm_reg(inst, 0, CM_SMI_CTL); +- while (read_smi_cm_reg(inst, CM_SMI_CTL) & CM_SMI_CTL_BUSY) +- ; +- +- write_smi_cm_reg(inst, (inst->clock_divisor << CM_SMI_DIV_DIVI_OFFS), +- CM_SMI_DIV); +- write_smi_cm_reg(inst, (inst->clock_source << CM_SMI_CTL_SRC_OFFS), +- CM_SMI_CTL); +- +- /* Enable the clock */ +- write_smi_cm_reg(inst, (inst->clock_source << CM_SMI_CTL_SRC_OFFS) | +- CM_SMI_CTL_ENAB, CM_SMI_CTL); +-} +- +-/**************************************************************************** +-* + * SMI peripheral setup + * + ***************************************************************************/ +@@ -894,42 +858,40 @@ static int bcm2835_smi_probe(struct platform_device *pdev) + struct device_node *node = dev->of_node; + struct resource *ioresource; + struct bcm2835_smi_instance *inst; ++ const __be32 *addr; + ++ /* We require device tree support */ ++ if (!node) ++ return -EINVAL; + /* Allocate buffers and instance data */ +- + inst = devm_kzalloc(dev, sizeof(struct bcm2835_smi_instance), + GFP_KERNEL); +- + if (!inst) + return -ENOMEM; + + inst->dev = dev; + spin_lock_init(&inst->transaction_lock); + +- /* We require device tree support */ +- if (!node) +- return -EINVAL; +- + ioresource = platform_get_resource(pdev, IORESOURCE_MEM, 0); + inst->smi_regs_ptr = devm_ioremap_resource(dev, ioresource); +- ioresource = platform_get_resource(pdev, IORESOURCE_MEM, 1); +- inst->cm_smi_regs_ptr = devm_ioremap_resource(dev, ioresource); +- inst->smi_regs_busaddr = be32_to_cpu( +- *of_get_address(node, 0, NULL, NULL)); +- of_property_read_u32(node, +- "brcm,smi-clock-source", +- &inst->clock_source); +- of_property_read_u32(node, +- "brcm,smi-clock-divisor", +- &inst->clock_divisor); ++ if (IS_ERR(inst->smi_regs_ptr)) { ++ err = PTR_ERR(inst->smi_regs_ptr); ++ goto err; ++ } ++ addr = of_get_address(node, 0, NULL, NULL); ++ inst->smi_regs_busaddr = be32_to_cpu(addr); + + err = bcm2835_smi_dma_setup(inst); + if (err) +- return err; ++ goto err; + +- /* Finally, do peripheral setup */ ++ /* request clock */ ++ inst->clk = devm_clk_get(dev, NULL); ++ if (!inst->clk) ++ goto err; ++ clk_prepare_enable(inst->clk); + +- smi_setup_clock(inst); ++ /* Finally, do peripheral setup */ + smi_setup_regs(inst); + + platform_set_drvdata(pdev, inst); +@@ -937,6 +899,9 @@ static int bcm2835_smi_probe(struct platform_device *pdev) + dev_info(inst->dev, "initialised"); + + return 0; ++err: ++ kfree(inst); ++ return err; + } + + /**************************************************************************** +@@ -950,6 +915,11 @@ static int bcm2835_smi_remove(struct platform_device *pdev) + struct bcm2835_smi_instance *inst = platform_get_drvdata(pdev); + struct device *dev = inst->dev; + ++ dmaengine_terminate_all(inst->dma_chan); ++ dma_release_channel(inst->dma_chan); ++ ++ clk_disable_unprepare(inst->clk); ++ + dev_info(dev, "SMI device removed - OK"); + return 0; + } + +From 4ed2dd5674f865427386e01ba475c7a944e530f1 Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Sat, 5 Sep 2015 01:16:10 +0100 -Subject: [PATCH 041/160] Add SMI NAND driver +Subject: [PATCH 050/132] Add SMI NAND driver Signed-off-by: Luke Wren --- @@ -98727,7 +99282,7 @@ index 0000000000000000000000000000000000000000..159544d6579070d376d146bd24a86653 +}; \ No newline at end of file diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig -index f05e0e9eb2f73e8b807d97fb30cf4638d07286d9..8c6954116637153776ab2e54ebabcba881ce88cf 100644 +index 21ff58099f3bfd5c042040d2ee7e4bbcbdb6a074..b6a0529b2c15f37983169e3429b67bedb71fb14e 100644 --- a/drivers/mtd/nand/Kconfig +++ b/drivers/mtd/nand/Kconfig @@ -41,6 +41,13 @@ config MTD_SM_COMMON @@ -98745,7 +99300,7 @@ index f05e0e9eb2f73e8b807d97fb30cf4638d07286d9..8c6954116637153776ab2e54ebabcba8 tristate diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile -index f55335373f7c5b755c4363574ed7abc211ec89c7..ea8d647d92ffb3b328e04a35a16430f62d534553 100644 +index cafde6f3d95761263d4c5af1395b11bfc000ca9b..d399ab9c92350596ac0970fb1a2a70fa3ac0094b 100644 --- a/drivers/mtd/nand/Makefile +++ b/drivers/mtd/nand/Makefile @@ -14,6 +14,7 @@ obj-$(CONFIG_MTD_NAND_DENALI) += denali.o @@ -99030,10 +99585,10 @@ index 0000000000000000000000000000000000000000..02adda6da18bd0ba9ab19a104975b79d + ("Driver for NAND chips using Broadcom Secondary Memory Interface"); +MODULE_AUTHOR("Luke Wren "); -From 1ccc9ef25c3dcc1b60a908f770d0ad94c5d5db6c Mon Sep 17 00:00:00 2001 +From a78ebca38932798450723efc61c7ef278f81ed0e Mon Sep 17 00:00:00 2001 From: Aron Szabo Date: Sat, 16 Jun 2012 12:15:55 +0200 -Subject: [PATCH 042/160] lirc: added support for RaspberryPi GPIO +Subject: [PATCH 051/132] lirc: added support for RaspberryPi GPIO lirc_rpi: Use read_current_timer to determine transmitter delay. Thanks to jjmz and others See: https://github.com/raspberrypi/linux/issues/525 @@ -99896,10 +100451,10 @@ index 0000000000000000000000000000000000000000..fb69624ccef00ddbdccf8256d6baf1b1 + +#endif -From 742d973b0060e88c152d8ec43eda3d5a29c04c16 Mon Sep 17 00:00:00 2001 +From 45af8be6c56f3fafdd315d36499041c3f330b3dc Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:49:20 +0100 -Subject: [PATCH 043/160] Add cpufreq driver +Subject: [PATCH 052/132] Add cpufreq driver Signed-off-by: popcornmix --- @@ -100161,10 +100716,10 @@ index 0000000000000000000000000000000000000000..3eb9e9326231b08e6ee95ad486485245 +module_init(bcm2835_cpufreq_module_init); +module_exit(bcm2835_cpufreq_module_exit); -From 2dbfb3a01d29c2e084801450b2c80a4d1d4e8f33 Mon Sep 17 00:00:00 2001 +From 309406e6c75697878ff031b395c3cf36364a239b Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 26 Mar 2013 19:24:24 +0000 -Subject: [PATCH 044/160] Added hwmon/thermal driver for reporting core +Subject: [PATCH 053/132] Added hwmon/thermal driver for reporting core temperature. Thanks Dorian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -100330,10 +100885,10 @@ index 0000000000000000000000000000000000000000..c63fb9f9d143e19612a18fe530c7b2b3 +MODULE_DESCRIPTION("Thermal driver for bcm2835 chip"); +MODULE_LICENSE("GPL"); -From aba1a502c5979ce6f8becdc418862518e0f730b5 Mon Sep 17 00:00:00 2001 +From 54c7d492dc0c915d738bca6398e89007909c9cc8 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 17 Jun 2015 15:44:08 +0100 -Subject: [PATCH 045/160] Add Chris Boot's i2c driver +Subject: [PATCH 054/132] Add Chris Boot's i2c driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -100416,15 +100971,28 @@ i2c-bcm2708: Remove non-DT support Signed-off-by: Noralf Trønnes Set the BSC_CLKT clock streching timeout to 35ms as per SMBus specs. + +Fixes i2c_bcm2708: Write to FIFO correctly - v2 (#1574) + +* i2c: fix i2c_bcm2708: Clear FIFO before sending data + +Make sure FIFO gets cleared before trying to send +data in case of a repeated start (COMBINED=Y). + +* i2c: fix i2c_bcm2708: Only write to FIFO when not full + +Check if FIFO can accept data before writing. +To avoid a peripheral read on the last iteration of a loop, +both bcm2708_bsc_fifo_fill and ~drain are changed as well. --- drivers/i2c/busses/Kconfig | 21 +- drivers/i2c/busses/Makefile | 2 + - drivers/i2c/busses/i2c-bcm2708.c | 508 +++++++++++++++++++++++++++++++++++++++ - 3 files changed, 530 insertions(+), 1 deletion(-) + drivers/i2c/busses/i2c-bcm2708.c | 512 +++++++++++++++++++++++++++++++++++++++ + 3 files changed, 534 insertions(+), 1 deletion(-) create mode 100644 drivers/i2c/busses/i2c-bcm2708.c diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig -index f167021b8c2178b8a9544bd7d750648c641f6c85..85e2de31c26cd03d5815fe397d47b461ad65359c 100644 +index 5c3993b261298ef3c9571e76307fe912548b9538..37f463232d6db91940763345600b095dbd8b5c58 100644 --- a/drivers/i2c/busses/Kconfig +++ b/drivers/i2c/busses/Kconfig @@ -8,6 +8,25 @@ menu "I2C Hardware Bus support" @@ -100453,7 +101021,7 @@ index f167021b8c2178b8a9544bd7d750648c641f6c85..85e2de31c26cd03d5815fe397d47b461 config I2C_ALI1535 tristate "ALI 1535" depends on PCI -@@ -365,7 +384,7 @@ config I2C_AXXIA +@@ -366,7 +385,7 @@ config I2C_AXXIA config I2C_BCM2835 tristate "Broadcom BCM2835 I2C controller" @@ -100477,10 +101045,10 @@ index 37f2819b4560b0e0947b74c214f5c5a0952bc0ae..e309579e691599031f25bd9b9b364307 diff --git a/drivers/i2c/busses/i2c-bcm2708.c b/drivers/i2c/busses/i2c-bcm2708.c new file mode 100644 -index 0000000000000000000000000000000000000000..c9b8e5cb1702e4b20e45214d81a7a40ac709220f +index 0000000000000000000000000000000000000000..962f2e5c7455d91bf32925d785f5f16b83b049f8 --- /dev/null +++ b/drivers/i2c/busses/i2c-bcm2708.c -@@ -0,0 +1,508 @@ +@@ -0,0 +1,512 @@ +/* + * Driver for Broadcom BCM2708 BSC Controllers + * @@ -100598,13 +101166,13 @@ index 0000000000000000000000000000000000000000..c9b8e5cb1702e4b20e45214d81a7a40a + +static inline void bcm2708_bsc_fifo_drain(struct bcm2708_i2c *bi) +{ -+ while ((bcm2708_rd(bi, BSC_S) & BSC_S_RXD) && (bi->pos < bi->msg->len)) ++ while ((bi->pos < bi->msg->len) && (bcm2708_rd(bi, BSC_S) & BSC_S_RXD)) + bi->msg->buf[bi->pos++] = bcm2708_rd(bi, BSC_FIFO); +} + +static inline void bcm2708_bsc_fifo_fill(struct bcm2708_i2c *bi) +{ -+ while ((bcm2708_rd(bi, BSC_S) & BSC_S_TXD) && (bi->pos < bi->msg->len)) ++ while ((bi->pos < bi->msg->len) && (bcm2708_rd(bi, BSC_S) & BSC_S_TXD)) + bcm2708_wr(bi, BSC_FIFO, bi->msg->buf[bi->pos++]); +} + @@ -100638,6 +101206,10 @@ index 0000000000000000000000000000000000000000..c9b8e5cb1702e4b20e45214d81a7a40a + if ( (bi->nmsgs > 1) && + !(bi->msg[0].flags & I2C_M_RD) && (bi->msg[1].flags & I2C_M_RD) && + (bi->msg[0].addr == bi->msg[1].addr) && (bi->msg[0].len <= 16)) { ++ ++ /* Clear FIFO */ ++ bcm2708_wr(bi, BSC_C, BSC_C_CLEAR_1); ++ + /* Fill FIFO with entire write message (16 byte FIFO) */ + while (bi->pos < bi->msg->len) { + bcm2708_wr(bi, BSC_FIFO, bi->msg->buf[bi->pos++]); @@ -100990,10 +101562,10 @@ index 0000000000000000000000000000000000000000..c9b8e5cb1702e4b20e45214d81a7a40a +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" DRV_NAME); -From 907d2d05095364f19a1ba1a28e3f7bb9a8e20856 Mon Sep 17 00:00:00 2001 +From dca6c4fcfcf71265e5f8ec2e98dec0acdbce63d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 26 Jun 2015 14:27:06 +0200 -Subject: [PATCH 046/160] char: broadcom: Add vcio module +Subject: [PATCH 055/132] char: broadcom: Add vcio module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -101219,10 +101791,10 @@ index 0000000000000000000000000000000000000000..c19bc2075c77879563ef5e59038b5a14 +MODULE_DESCRIPTION("Mailbox userspace access"); +MODULE_LICENSE("GPL"); -From 5be66a0a29e985e22e81604a411b4df80477fec1 Mon Sep 17 00:00:00 2001 +From a57044bdab979cdf3f08636caf2f5e528a8c4a3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 26 Jun 2015 14:25:01 +0200 -Subject: [PATCH 047/160] firmware: bcm2835: Support ARCH_BCM270x +Subject: [PATCH 056/132] firmware: bcm2835: Support ARCH_BCM270x MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -101328,10 +101900,10 @@ index dd506cd3a5b874f9e1acd07efb8cd151bb6145d1..b980d531b35b9981a88356ef1c8a7b86 MODULE_AUTHOR("Eric Anholt "); MODULE_DESCRIPTION("Raspberry Pi firmware driver"); -From f940e244201e78de2c51bb3bbe517f63ad78db16 Mon Sep 17 00:00:00 2001 +From a9fc5095ee4589dadaf3e8f7b2f4a5c6c1f219e9 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Wed, 30 Jan 2013 12:45:18 +0000 -Subject: [PATCH 048/160] bcm2835: add v4l2 camera device +Subject: [PATCH 057/132] bcm2835: add v4l2 camera device - Supports raw YUV capture, preview, JPEG and H264. - Uses videobuf2 for data transfer, using dma_buf. @@ -101813,7 +102385,7 @@ index 0000000000000000000000000000000000000000..c585a8fadf91c5a04453e442fc29ed89 + +$ v4l2-ctl --list-formats diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig -index 84e041c0a70e5b2634282f8605f7473efce3ac48..895c7182799dbccebb88e6545be8c5b281fe8518 100644 +index 552b635cfce7f02b4f3e65d1d641e9e39903ec43..d22e5d5dd939451aa62988f69c6a80ae545011d4 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig @@ -11,6 +11,8 @@ menuconfig V4L_PLATFORM_DRIVERS @@ -101826,7 +102398,7 @@ index 84e041c0a70e5b2634282f8605f7473efce3ac48..895c7182799dbccebb88e6545be8c5b2 config VIDEO_VIA_CAMERA diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile -index bbb7bd1eb268d731608aba05305859958eb7b82c..6fe5b3fbceae92ec77ee20c1283418889dcd3d64 100644 +index 21771c1a13fbcf9460900826ae2ecb8e2dbaa469..a7a0df8ab6e7672c2e44714a95c95790f55abeb4 100644 --- a/drivers/media/platform/Makefile +++ b/drivers/media/platform/Makefile @@ -2,6 +2,8 @@ @@ -109063,10 +109635,10 @@ index 0000000000000000000000000000000000000000..9d1d11e4a53e510c04a416d92d195a7d + +#endif /* MMAL_VCHIQ_H */ -From f4c514edf4c8161f785993826884a3ea20e601bf Mon Sep 17 00:00:00 2001 +From f8908aab2504c30c88f484f08c5bcae34c10187d Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 11 May 2015 09:00:42 +0100 -Subject: [PATCH 049/160] scripts: Add mkknlimg and knlinfo scripts from tools +Subject: [PATCH 058/132] scripts: Add mkknlimg and knlinfo scripts from tools repo The Raspberry Pi firmware looks for a trailer on the kernel image to @@ -109578,10 +110150,10 @@ index 0000000000000000000000000000000000000000..78c5845d2f01deb04b477327d83fa606 + return $trailer; +} -From 2341070196390d83cc59c720d14a1ea718b21548 Mon Sep 17 00:00:00 2001 +From 09c70feaf9e84efae6c7a2691179bb0bdf73ea75 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 10 Aug 2015 09:49:15 +0100 -Subject: [PATCH 050/160] scripts/dtc: Update to upstream version 1.4.1 +Subject: [PATCH 059/132] scripts/dtc: Update to upstream version 1.4.1 Includes the new localfixups format. @@ -112432,10 +113004,10 @@ index ad9b05ae698b0495ecbda42ffcf4743555313a27..2595dfda020fd9e03f0beff5006f229d -#define DTC_VERSION "DTC 1.4.1-g53bf130b" +#define DTC_VERSION "DTC 1.4.1-g25efc119" -From dc1d8bc984a5b7519ea278d974c12512c12f4fe0 Mon Sep 17 00:00:00 2001 +From 9be0bede884724e4e2f1aca40eb1f66c4467a60b Mon Sep 17 00:00:00 2001 From: notro Date: Wed, 9 Jul 2014 14:46:08 +0200 -Subject: [PATCH 051/160] BCM2708: Add core Device Tree support +Subject: [PATCH 060/132] BCM2708: Add core Device Tree support Add the bare minimum needed to boot BCM2708 from a Device Tree. @@ -112501,30 +113073,34 @@ squash: Add cprman to dt BCM270X_DT: Use clk_core for I2C interfaces --- - arch/arm/boot/dts/Makefile | 31 + - arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 164 +++ - arch/arm/boot/dts/bcm2708-rpi-b.dts | 154 +++ - arch/arm/boot/dts/bcm2708-rpi-cm.dts | 102 ++ - arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 52 + + arch/arm/boot/dts/Makefile | 32 + + arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 162 +++ + arch/arm/boot/dts/bcm2708-rpi-b.dts | 152 +++ + arch/arm/boot/dts/bcm2708-rpi-cm.dts | 106 ++ + arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 50 + arch/arm/boot/dts/bcm2708.dtsi | 40 + - arch/arm/boot/dts/bcm2708_common.dtsi | 471 ++++++++ - arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 164 +++ + arch/arm/boot/dts/bcm2708_common.dtsi | 436 +++++++ + arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 162 +++ arch/arm/boot/dts/bcm2709.dtsi | 102 ++ - arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 211 ++++ - arch/arm/boot/dts/bcm2710.dtsi | 102 ++ + arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 213 ++++ + arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 162 +++ + arch/arm/boot/dts/bcm2710.dtsi | 165 +++ arch/arm/boot/dts/bcm2835-rpi-cm.dts | 93 ++ arch/arm/boot/dts/bcm2835-rpi-cm.dtsi | 30 + - arch/arm/boot/dts/overlays/Makefile | 105 ++ - arch/arm/boot/dts/overlays/README | 1223 ++++++++++++++++++++ + arch/arm/boot/dts/overlays/Makefile | 111 ++ + arch/arm/boot/dts/overlays/README | 1302 ++++++++++++++++++++ .../arm/boot/dts/overlays/adau1977-adc-overlay.dts | 53 + arch/arm/boot/dts/overlays/ads1015-overlay.dts | 98 ++ arch/arm/boot/dts/overlays/ads7846-overlay.dts | 89 ++ .../dts/overlays/akkordion-iqdacplus-overlay.dts | 46 + + .../allo-piano-dac-pcm512x-audio-overlay.dts | 54 + arch/arm/boot/dts/overlays/at86rf233-overlay.dts | 57 + .../audioinjector-wm8731-audio-overlay.dts | 39 + + arch/arm/boot/dts/overlays/audremap-overlay.dts | 19 + .../dts/overlays/bmp085_i2c-sensor-overlay.dts | 23 + arch/arm/boot/dts/overlays/dht11-overlay.dts | 39 + .../boot/dts/overlays/dionaudio-loco-overlay.dts | 39 + + arch/arm/boot/dts/overlays/dpi18-overlay.dts | 31 + arch/arm/boot/dts/overlays/dpi24-overlay.dts | 31 + arch/arm/boot/dts/overlays/dwc-otg-overlay.dts | 20 + arch/arm/boot/dts/overlays/dwc2-overlay.dts | 29 + @@ -112535,6 +113111,7 @@ BCM270X_DT: Use clk_core for I2C interfaces .../boot/dts/overlays/hifiberry-dac-overlay.dts | 34 + .../dts/overlays/hifiberry-dacplus-overlay.dts | 56 + .../boot/dts/overlays/hifiberry-digi-overlay.dts | 39 + + .../dts/overlays/hifiberry-digi-pro-overlay.dts | 41 + arch/arm/boot/dts/overlays/hy28a-overlay.dts | 93 ++ arch/arm/boot/dts/overlays/hy28b-overlay.dts | 148 +++ arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts | 43 + @@ -112551,6 +113128,7 @@ BCM270X_DT: Use clk_core for I2C interfaces .../boot/dts/overlays/justboom-digi-overlay.dts | 39 + arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts | 57 + arch/arm/boot/dts/overlays/mcp23017-overlay.dts | 54 + + arch/arm/boot/dts/overlays/mcp23s17-overlay.dts | 732 +++++++++++ .../arm/boot/dts/overlays/mcp2515-can0-overlay.dts | 73 ++ .../arm/boot/dts/overlays/mcp2515-can1-overlay.dts | 73 ++ arch/arm/boot/dts/overlays/mmc-overlay.dts | 38 + @@ -112563,9 +113141,9 @@ BCM270X_DT: Use clk_core for I2C interfaces arch/arm/boot/dts/overlays/pitft22-overlay.dts | 69 ++ .../dts/overlays/pitft28-capacitive-overlay.dts | 91 ++ .../dts/overlays/pitft28-resistive-overlay.dts | 121 ++ - arch/arm/boot/dts/overlays/pps-gpio-overlay.dts | 34 + - arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts | 53 + - arch/arm/boot/dts/overlays/pwm-overlay.dts | 49 + + arch/arm/boot/dts/overlays/pps-gpio-overlay.dts | 35 + + arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts | 47 + + arch/arm/boot/dts/overlays/pwm-overlay.dts | 43 + arch/arm/boot/dts/overlays/qca7000-overlay.dts | 52 + arch/arm/boot/dts/overlays/raspidac3-overlay.dts | 45 + .../boot/dts/overlays/rpi-backlight-overlay.dts | 21 + @@ -112575,6 +113153,7 @@ BCM270X_DT: Use clk_core for I2C interfaces arch/arm/boot/dts/overlays/rpi-proto-overlay.dts | 39 + arch/arm/boot/dts/overlays/rpi-sense-overlay.dts | 47 + .../overlays/rra-digidac1-wm8741-audio-overlay.dts | 81 ++ + .../boot/dts/overlays/sc16is750-i2c-overlay.dts | 37 + .../boot/dts/overlays/sc16is752-spi1-overlay.dts | 61 + arch/arm/boot/dts/overlays/sdhost-overlay.dts | 32 + arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts | 36 + @@ -112594,12 +113173,12 @@ BCM270X_DT: Use clk_core for I2C interfaces arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts | 81 ++ arch/arm/boot/dts/overlays/tinylcd35-overlay.dts | 224 ++++ arch/arm/boot/dts/overlays/uart1-overlay.dts | 38 + - arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts | 136 +++ + arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts | 136 ++ arch/arm/boot/dts/overlays/vga666-overlay.dts | 30 + arch/arm/boot/dts/overlays/w1-gpio-overlay.dts | 39 + .../boot/dts/overlays/w1-gpio-pullup-overlay.dts | 41 + arch/arm/boot/dts/overlays/wittypi-overlay.dts | 44 + - 98 files changed, 7729 insertions(+) + 105 files changed, 8906 insertions(+) create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b.dts create mode 100755 arch/arm/boot/dts/bcm2708-rpi-cm.dts @@ -112609,6 +113188,7 @@ BCM270X_DT: Use clk_core for I2C interfaces create mode 100644 arch/arm/boot/dts/bcm2709-rpi-2-b.dts create mode 100644 arch/arm/boot/dts/bcm2709.dtsi create mode 100644 arch/arm/boot/dts/bcm2710-rpi-3-b.dts + create mode 100644 arch/arm/boot/dts/bcm2710-rpi-cm3.dts create mode 100644 arch/arm/boot/dts/bcm2710.dtsi create mode 100644 arch/arm/boot/dts/bcm2835-rpi-cm.dts create mode 100644 arch/arm/boot/dts/bcm2835-rpi-cm.dtsi @@ -112618,11 +113198,14 @@ BCM270X_DT: Use clk_core for I2C interfaces create mode 100644 arch/arm/boot/dts/overlays/ads1015-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/ads7846-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/at86rf233-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/audremap-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/dht11-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/dpi18-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/dpi24-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/dwc-otg-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/dwc2-overlay.dts @@ -112633,6 +113216,7 @@ BCM270X_DT: Use clk_core for I2C interfaces create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/hy28a-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/hy28b-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts @@ -112649,6 +113233,7 @@ BCM270X_DT: Use clk_core for I2C interfaces create mode 100644 arch/arm/boot/dts/overlays/justboom-digi-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/mcp23017-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/mcp23s17-overlay.dts create mode 100755 arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/mmc-overlay.dts @@ -112673,6 +113258,7 @@ BCM270X_DT: Use clk_core for I2C interfaces create mode 100644 arch/arm/boot/dts/overlays/rpi-proto-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/rpi-sense-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/sdhost-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts @@ -112699,10 +113285,10 @@ BCM270X_DT: Use clk_core for I2C interfaces create mode 100644 arch/arm/boot/dts/overlays/wittypi-overlay.dts diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index 414b42710a366fc0f5708765d4ff0786e53a2b5b..93f2529ccbdfedb4b4e54898abf44911b47d2656 100644 +index faacd52370d24061e705d4e97785c254cf147f8c..71f794ecc710ac533731854bd95961a6a4175b64 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile -@@ -1,5 +1,26 @@ +@@ -1,5 +1,27 @@ ifeq ($(CONFIG_OF),y) +dtb-$(CONFIG_ARCH_BCM2708) += bcm2708-rpi-b.dtb @@ -112711,6 +113297,7 @@ index 414b42710a366fc0f5708765d4ff0786e53a2b5b..93f2529ccbdfedb4b4e54898abf44911 +dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-cm.dtb +dtb-$(CONFIG_ARCH_BCM2709) += bcm2709-rpi-2-b.dtb +dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-3-b.dtb ++dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-cm3.dtb + +# Raspberry Pi +ifeq ($(CONFIG_ARCH_BCM2708),y) @@ -112729,7 +113316,7 @@ index 414b42710a366fc0f5708765d4ff0786e53a2b5b..93f2529ccbdfedb4b4e54898abf44911 dtb-$(CONFIG_ARCH_ALPINE) += \ alpine-db.dtb dtb-$(CONFIG_MACH_ARTPEC6) += \ -@@ -892,10 +913,20 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \ +@@ -919,10 +941,20 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \ dtb-$(CONFIG_ARCH_ZX) += zx296702-ad1.dtb dtb-$(CONFIG_ARCH_ASPEED) += aspeed-bmc-opp-palmetto.dtb \ aspeed-ast2500-evb.dtb @@ -112752,10 +113339,10 @@ index 414b42710a366fc0f5708765d4ff0786e53a2b5b..93f2529ccbdfedb4b4e54898abf44911 +endif diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts new file mode 100644 -index 0000000000000000000000000000000000000000..db2705afa4e2229c961fe88bcae46233a4ce4542 +index 0000000000000000000000000000000000000000..6c16c325cd2887a42c42665273834618c1937918 --- /dev/null +++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts -@@ -0,0 +1,164 @@ +@@ -0,0 +1,162 @@ +/dts-v1/; + +#include "bcm2708.dtsi" @@ -112891,7 +113478,6 @@ index 0000000000000000000000000000000000000000..db2705afa4e2229c961fe88bcae46233 +/ { + __overrides__ { + uart0 = <&uart0>,"status"; -+ uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + uart1 = <&uart1>,"status"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; @@ -112901,7 +113487,6 @@ index 0000000000000000000000000000000000000000..db2705afa4e2229c961fe88bcae46233 + i2c0_baudrate = <&i2c0>,"clock-frequency:0"; + i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -+ core_freq = <&clk_core>,"clock-frequency:0"; + + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; @@ -112922,10 +113507,10 @@ index 0000000000000000000000000000000000000000..db2705afa4e2229c961fe88bcae46233 +}; diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts new file mode 100644 -index 0000000000000000000000000000000000000000..beae0371477cc41f27006ef3f1ef7268839177df +index 0000000000000000000000000000000000000000..7c132437671d43e76445a4bf1184cc9a316b0965 --- /dev/null +++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts -@@ -0,0 +1,154 @@ +@@ -0,0 +1,152 @@ +/dts-v1/; + +#include "bcm2708.dtsi" @@ -113055,7 +113640,6 @@ index 0000000000000000000000000000000000000000..beae0371477cc41f27006ef3f1ef7268 +/ { + __overrides__ { + uart0 = <&uart0>,"status"; -+ uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + uart1 = <&uart1>,"status"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; @@ -113065,7 +113649,6 @@ index 0000000000000000000000000000000000000000..beae0371477cc41f27006ef3f1ef7268 + i2c0_baudrate = <&i2c0>,"clock-frequency:0"; + i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -+ core_freq = <&clk_core>,"clock-frequency:0"; + + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; @@ -113082,10 +113665,10 @@ index 0000000000000000000000000000000000000000..beae0371477cc41f27006ef3f1ef7268 +}; diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dts b/arch/arm/boot/dts/bcm2708-rpi-cm.dts new file mode 100755 -index 0000000000000000000000000000000000000000..cd0e1acc22f8ded801f29d331570828e5582247b +index 0000000000000000000000000000000000000000..ce9f54ff7e4ce76ad25ad0a19cf2ad48ba9df01a --- /dev/null +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts -@@ -0,0 +1,102 @@ +@@ -0,0 +1,106 @@ +/dts-v1/; + +#include "bcm2708-rpi-cm.dtsi" @@ -113123,6 +113706,11 @@ index 0000000000000000000000000000000000000000..cd0e1acc22f8ded801f29d331570828e + brcm,pins = <18 19 20 21>; + brcm,function = <4>; /* alt0 */ + }; ++ ++ audio_pins: audio_pins { ++ brcm,pins; ++ brcm,function; ++ }; +}; + +&spi0 { @@ -113176,7 +113764,6 @@ index 0000000000000000000000000000000000000000..cd0e1acc22f8ded801f29d331570828e +/ { + __overrides__ { + uart0 = <&uart0>,"status"; -+ uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + uart1 = <&uart1>,"status"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; @@ -113190,10 +113777,10 @@ index 0000000000000000000000000000000000000000..cd0e1acc22f8ded801f29d331570828e +}; diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi new file mode 100644 -index 0000000000000000000000000000000000000000..90e330d1978da8624c042d52a38aa5d6d95d2377 +index 0000000000000000000000000000000000000000..d33d462b4090e4a4f967a37212918b9cf500bf76 --- /dev/null +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi -@@ -0,0 +1,52 @@ +@@ -0,0 +1,50 @@ +#include "bcm2708.dtsi" + +&gpio { @@ -113219,9 +113806,9 @@ index 0000000000000000000000000000000000000000..90e330d1978da8624c042d52a38aa5d6 +}; + + -+&mmc { ++&sdhost { + pinctrl-names = "default"; -+ pinctrl-0 = <&mmc_pins>; ++ pinctrl-0 = <&sdhost_pins>; + non-removable; + bus-width = <4>; + status = "okay"; @@ -113234,8 +113821,6 @@ index 0000000000000000000000000000000000000000..90e330d1978da8624c042d52a38aa5d6 + +/ { + __overrides__ { -+ core_freq = <&clk_core>,"clock-frequency:0"; -+ + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; + act_led_trigger = <&act_led>,"linux,default-trigger"; @@ -113294,10 +113879,10 @@ index 0000000000000000000000000000000000000000..f5a44cd4fef0ee221ed6ae1c43ca81da +}; diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi new file mode 100644 -index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa68f750043 +index 0000000000000000000000000000000000000000..6081b2aeb7ab1e1821506bcb93d36de13b5717ef --- /dev/null +++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -0,0 +1,471 @@ +@@ -0,0 +1,436 @@ +#include "dt-bindings/clock/bcm2835.h" +#include +#include "dt-bindings/power/raspberrypi-power.h" @@ -113385,7 +113970,11 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + }; + + intc: interrupt-controller@7e00b200 { ++#ifdef RPI364 ++ compatible = "brcm,bcm2835-armctrl-ic", "brcm,bcm2708-armctrl-ic"; ++#else + compatible = "brcm,bcm2708-armctrl-ic"; ++#endif + reg = <0x7e00b200 0x200>; + interrupt-controller; + #interrupt-cells = <2>; @@ -113413,7 +114002,6 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + * oscillator. + */ + clocks = <&clk_osc>; -+ status = "disabled"; + }; + + random: rng@7e104000 { @@ -113434,11 +114022,12 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + #interrupt-cells = <2>; + }; + -+ uart0: uart@7e201000 { -+ compatible = "arm,pl011", "arm,primecell"; ++ uart0: serial@7e201000 { ++ compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; + reg = <0x7e201000 0x1000>; + interrupts = <2 25>; -+ clocks = <&clk_uart0 &clk_apb_p>; ++ clocks = <&cprman BCM2835_CLOCK_UART>, ++ <&cprman BCM2835_CLOCK_VPU>; + clock-names = "uartclk","apb_pclk"; + arm,primecell-periphid = <0x00241011>; // For an explanation, see + // https://github.com/raspberrypi/linux/commit/13731d862cf5219216533a3b0de052cee4cc5038 @@ -113449,7 +114038,7 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + compatible = "brcm,bcm2835-sdhost"; + reg = <0x7e202000 0x100>; + interrupts = <2 24>; -+ clocks = <&clk_core>; ++ clocks = <&cprman BCM2835_CLOCK_VPU>; + dmas = <&dma 13>; + dma-names = "rx-tx"; + brcm,overclock-50 = <0>; @@ -113460,8 +114049,8 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + i2s: i2s@7e203000 { + compatible = "brcm,bcm2835-i2s"; + #sound-dai-cells = <0>; -+ reg = <0x7e203000 0x24>, -+ <0x7e101098 0x08>; ++ reg = <0x7e203000 0x24>; ++ clocks = <&cprman BCM2835_CLOCK_PCM>; + + dmas = <&dma 2>, <&dma 3>; + dma-names = "tx", "rx"; @@ -113472,7 +114061,7 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + compatible = "brcm,bcm2835-spi"; + reg = <0x7e204000 0x1000>; + interrupts = <2 22>; -+ clocks = <&clk_core>; ++ clocks = <&cprman BCM2835_CLOCK_VPU>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; @@ -113490,7 +114079,7 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + compatible = "brcm,bcm2708-i2c"; + reg = <0x7e205000 0x1000>; + interrupts = <2 21>; -+ clocks = <&clk_core>; ++ clocks = <&cprman BCM2835_CLOCK_VPU>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; @@ -113522,32 +114111,31 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + pwm: pwm@7e20c000 { + compatible = "brcm,bcm2835-pwm"; + reg = <0x7e20c000 0x28>; -+ clocks = <&clk_pwm>; ++ clocks = <&cprman BCM2835_CLOCK_PWM>; ++ assigned-clocks = <&cprman BCM2835_CLOCK_PWM>; ++ assigned-clock-rates = <10000000>; + #pwm-cells = <2>; + status = "disabled"; + }; + -+ aux: aux@0x7e215004 { ++ aux: aux@0x7e215000 { + compatible = "brcm,bcm2835-aux"; + #clock-cells = <1>; + reg = <0x7e215000 0x8>; -+ clocks = <&clk_core>; -+ status = "disabled"; ++ clocks = <&cprman BCM2835_CLOCK_VPU>; + }; + -+ uart1: uart@7e215040 { -+ compatible = "brcm,bcm2835-aux-uart", "ns16550"; ++ uart1: serial@7e215040 { ++ compatible = "brcm,bcm2835-aux-uart"; + reg = <0x7e215040 0x40>; + interrupts = <1 29>; -+ clocks = <&clk_uart1>; -+ reg-shift = <2>; -+ no-loopback-test; ++ clocks = <&aux BCM2835_AUX_CLOCK_UART>; + status = "disabled"; + }; + + spi1: spi@7e215080 { + compatible = "brcm,bcm2835-aux-spi"; -+ reg = <0x7e215080 0x40>, <0x7e215000 0x8>; ++ reg = <0x7e215080 0x40>; + interrupts = <1 29>; + clocks = <&aux BCM2835_AUX_CLOCK_SPI1>; + #address-cells = <1>; @@ -113557,7 +114145,7 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + + spi2: spi@7e2150C0 { + compatible = "brcm,bcm2835-aux-spi"; -+ reg = <0x7e2150C0 0x40>, <0x7e215000 0x8>; ++ reg = <0x7e2150C0 0x40>; + interrupts = <1 29>; + clocks = <&aux BCM2835_AUX_CLOCK_SPI2>; + #address-cells = <1>; @@ -113569,7 +114157,7 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + compatible = "brcm,bcm2835-mmc"; + reg = <0x7e300000 0x100>; + interrupts = <2 30>; -+ clocks = <&clk_mmc>; ++ clocks = <&cprman BCM2835_CLOCK_EMMC>; + dmas = <&dma 11>; + dma-names = "rx-tx"; + brcm,overclock-50 = <0>; @@ -113586,7 +114174,7 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + compatible = "brcm,bcm2708-i2c"; + reg = <0x7e804000 0x1000>; + interrupts = <2 21>; -+ clocks = <&clk_core>; ++ clocks = <&cprman BCM2835_CLOCK_VPU>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; @@ -113599,7 +114187,7 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + compatible = "brcm,bcm2708-i2c"; + reg = <0x7e805000 0x1000>; + interrupts = <2 21>; -+ clocks = <&clk_core>; ++ clocks = <&cprman BCM2835_CLOCK_VPU>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; @@ -113607,10 +114195,11 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + + smi: smi@7e600000 { + compatible = "brcm,bcm2835-smi"; -+ reg = <0x7e600000 0x44>, <0x7e1010b0 0x8>; ++ reg = <0x7e600000 0x100>; + interrupts = <2 16>; -+ brcm,smi-clock-source = <6>; -+ brcm,smi-clock-divisor = <4>; ++ clocks = <&cprman BCM2835_CLOCK_SMI>; ++ assigned-clocks = <&cprman BCM2835_CLOCK_SMI>; ++ assigned-clock-rates = <125000000>; + dmas = <&dma 4>; + dma-names = "rx-tx"; + status = "disabled"; @@ -113635,6 +114224,15 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + status = "disabled"; + }; + ++#ifdef RPI364 ++ usb: usb@7e980000 { ++ compatible = "brcm,bcm2835-usb"; ++ reg = <0x7e980000 0x10000>; ++ interrupts = <1 9>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ }; ++#else + usb: usb@7e980000 { + compatible = "brcm,bcm2708-usb"; + reg = <0x7e980000 0x10000>, @@ -113642,6 +114240,7 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + interrupts = <2 0>, + <1 9>; + }; ++#endif + + v3d: v3d@7ec00000 { + compatible = "brcm,vc4-v3d"; @@ -113706,55 +114305,6 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + #address-cells = <1>; + #size-cells = <0>; + -+ clk_core: clock@0 { -+ compatible = "fixed-clock"; -+ reg = <0>; -+ #clock-cells = <0>; -+ clock-output-names = "core"; -+ clock-frequency = <250000000>; -+ }; -+ -+ clk_mmc: clock@1 { -+ compatible = "fixed-clock"; -+ reg = <1>; -+ #clock-cells = <0>; -+ clock-output-names = "mmc"; -+ clock-frequency = <250000000>; -+ }; -+ -+ clk_uart0: clock@2 { -+ compatible = "fixed-clock"; -+ reg = <2>; -+ #clock-cells = <0>; -+ clock-output-names = "uart0_pclk"; -+ clock-frequency = <3000000>; -+ }; -+ -+ clk_apb_p: clock@3 { -+ compatible = "fixed-clock"; -+ reg = <3>; -+ #clock-cells = <0>; -+ clock-output-names = "apb_pclk"; -+ clock-frequency = <126000000>; -+ }; -+ -+ clk_pwm: clock@4 { -+ compatible = "fixed-clock"; -+ reg = <4>; -+ #clock-cells = <0>; -+ clock-output-names = "pwm"; -+ clock-frequency = <100000000>; -+ }; -+ -+ clk_uart1: clock@5 { -+ compatible = "fixed-factor-clock"; -+ reg = <5>; -+ clocks = <&clk_core>; -+ #clock-cells = <0>; -+ clock-div = <1>; -+ clock-mult = <2>; -+ }; -+ + /* The oscillator is the root of the clock tree. */ + clk_osc: clock@6 { + compatible = "fixed-clock"; @@ -113771,10 +114321,10 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 +}; diff --git a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts new file mode 100644 -index 0000000000000000000000000000000000000000..eca72bd0d6e891b0096ac97b68c2da92199aa851 +index 0000000000000000000000000000000000000000..74fe4cc1d667e9508ca860bcc8c837fed0cbb855 --- /dev/null +++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts -@@ -0,0 +1,164 @@ +@@ -0,0 +1,162 @@ +/dts-v1/; + +#include "bcm2709.dtsi" @@ -113910,7 +114460,6 @@ index 0000000000000000000000000000000000000000..eca72bd0d6e891b0096ac97b68c2da92 +/ { + __overrides__ { + uart0 = <&uart0>,"status"; -+ uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + uart1 = <&uart1>,"status"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; @@ -113920,7 +114469,6 @@ index 0000000000000000000000000000000000000000..eca72bd0d6e891b0096ac97b68c2da92 + i2c0_baudrate = <&i2c0>,"clock-frequency:0"; + i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -+ core_freq = <&clk_core>,"clock-frequency:0"; + + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; @@ -114049,12 +114597,16 @@ index 0000000000000000000000000000000000000000..a8cfd7c4df5bcf7692d13882833c9785 +}; diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts new file mode 100644 -index 0000000000000000000000000000000000000000..a72e6e5a0ac0b2492db3d8034a5196b3e19ae008 +index 0000000000000000000000000000000000000000..d9ae00f95e6261eea582d7a2c6dfbc221f99953d --- /dev/null +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts -@@ -0,0 +1,211 @@ +@@ -0,0 +1,213 @@ +/dts-v1/; + ++#ifdef RPI364 ++/memreserve/ 0x00000000 0x00001000; ++#endif ++ +#include "bcm2710.dtsi" + +/ { @@ -114239,7 +114791,6 @@ index 0000000000000000000000000000000000000000..a72e6e5a0ac0b2492db3d8034a5196b3 +/ { + __overrides__ { + uart0 = <&uart0>,"status"; -+ uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + uart1 = <&uart1>,"status"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; @@ -114249,7 +114800,174 @@ index 0000000000000000000000000000000000000000..a72e6e5a0ac0b2492db3d8034a5196b3 + i2c0_baudrate = <&i2c0>,"clock-frequency:0"; + i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -+ core_freq = <&clk_core>,"clock-frequency:0"; ++ ++ act_led_gpio = <&act_led>,"gpios:4"; ++ act_led_activelow = <&act_led>,"gpios:8"; ++ act_led_trigger = <&act_led>,"linux,default-trigger"; ++ ++ audio = <&audio>,"status"; ++ watchdog = <&watchdog>,"status"; ++ random = <&random>,"status"; ++ sd_overclock = <&sdhost>,"brcm,overclock-50:0"; ++ sd_force_pio = <&sdhost>,"brcm,force-pio?"; ++ sd_pio_limit = <&sdhost>,"brcm,pio-limit:0"; ++ sd_debug = <&sdhost>,"brcm,debug"; ++ }; ++}; +diff --git a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..20388084b98cf942529eb60c55dc540cfea71886 +--- /dev/null ++++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts +@@ -0,0 +1,162 @@ ++/dts-v1/; ++ ++#include "bcm2710.dtsi" ++ ++/ { ++ compatible = "brcm,bcm2710","brcm,bcm2709"; ++ model = "Raspberry Pi Compute Module 3"; ++}; ++ ++&gpio { ++ ++ mmc_pins: mmc_pins { ++ brcm,pins = <48 49 50 51 52 53>; ++ brcm,function = <7>; /* alt3 */ ++ brcm,pull = <0 2 2 2 2 2>; ++ }; ++ ++ spi0_pins: spi0_pins { ++ brcm,pins = <9 10 11>; ++ brcm,function = <4>; /* alt0 */ ++ }; ++ ++ spi0_cs_pins: spi0_cs_pins { ++ brcm,pins = <8 7>; ++ brcm,function = <1>; /* output */ ++ }; ++ ++ i2c0_pins: i2c0 { ++ brcm,pins = <0 1>; ++ brcm,function = <4>; ++ }; ++ ++ i2c1_pins: i2c1 { ++ brcm,pins = <2 3>; ++ brcm,function = <4>; ++ }; ++ ++ i2s_pins: i2s { ++ brcm,pins = <18 19 20 21>; ++ brcm,function = <4>; /* alt0 */ ++ }; ++ ++ audio_pins: audio_pins { ++ brcm,pins; ++ brcm,function; ++ }; ++}; ++ ++&mmc { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc_pins>; ++ non-removable; ++ bus-width = <4>; ++ status = "okay"; ++ brcm,overclock-50 = <0>; ++}; ++ ++&soc { ++ virtgpio: virtgpio { ++ compatible = "brcm,bcm2835-virtgpio"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ firmware = <&firmware>; ++ status = "okay"; ++ }; ++}; ++ ++&fb { ++ status = "okay"; ++}; ++ ++&spi0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&spi0_pins &spi0_cs_pins>; ++ cs-gpios = <&gpio 8 1>, <&gpio 7 1>; ++ ++ spidev0: spidev@0{ ++ compatible = "spidev"; ++ reg = <0>; /* CE0 */ ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spi-max-frequency = <500000>; ++ }; ++ ++ spidev1: spidev@1{ ++ compatible = "spidev"; ++ reg = <1>; /* CE1 */ ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spi-max-frequency = <500000>; ++ }; ++}; ++ ++&i2c0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c0_pins>; ++ clock-frequency = <100000>; ++}; ++ ++&i2c1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c1_pins>; ++ clock-frequency = <100000>; ++}; ++ ++&i2c2 { ++ clock-frequency = <100000>; ++}; ++ ++&i2s { ++ #sound-dai-cells = <0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2s_pins>; ++}; ++ ++&random { ++ status = "okay"; ++}; ++ ++&leds { ++ act_led: act { ++ label = "led0"; ++ linux,default-trigger = "mmc0"; ++ gpios = <&virtgpio 0 0>; ++ }; ++}; ++ ++&hdmi { ++ hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>; ++}; ++ ++&audio { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&audio_pins>; ++}; ++ ++/ { ++ __overrides__ { ++ uart0 = <&uart0>,"status"; ++ uart1 = <&uart1>,"status"; ++ i2s = <&i2s>,"status"; ++ spi = <&spi0>,"status"; ++ i2c0 = <&i2c0>,"status"; ++ i2c1 = <&i2c1>,"status"; ++ i2c2_iknowwhatimdoing = <&i2c2>,"status"; ++ i2c0_baudrate = <&i2c0>,"clock-frequency:0"; ++ i2c1_baudrate = <&i2c1>,"clock-frequency:0"; ++ i2c2_baudrate = <&i2c2>,"clock-frequency:0"; + + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; @@ -114266,10 +114984,10 @@ index 0000000000000000000000000000000000000000..a72e6e5a0ac0b2492db3d8034a5196b3 +}; diff --git a/arch/arm/boot/dts/bcm2710.dtsi b/arch/arm/boot/dts/bcm2710.dtsi new file mode 100644 -index 0000000000000000000000000000000000000000..1a48686a15d44dc6fbdddc569d564779f76ae5d1 +index 0000000000000000000000000000000000000000..223bd9627b3dcaac5458909dc59c877eed751ce4 --- /dev/null +++ b/arch/arm/boot/dts/bcm2710.dtsi -@@ -0,0 +1,102 @@ +@@ -0,0 +1,165 @@ +#include "bcm2708_common.dtsi" + +/ { @@ -114284,6 +115002,9 @@ index 0000000000000000000000000000000000000000..1a48686a15d44dc6fbdddc569d564779 + soc { + ranges = <0x7e000000 0x3f000000 0x01000000>, + <0x40000000 0x40000000 0x00040000>; ++#ifdef RPI364 ++ dma-ranges = <0xc0000000 0x00000000 0x3f000000>; ++#endif + + local_intc: local_intc { + compatible = "brcm,bcm2836-l1-intc"; @@ -114294,7 +115015,11 @@ index 0000000000000000000000000000000000000000..1a48686a15d44dc6fbdddc569d564779 + }; + + arm-pmu { ++#ifdef RPI364 ++ compatible = "arm,armv8-pmuv3", "arm,cortex-a7-pmu"; ++#else + compatible = "arm,cortex-a7-pmu"; ++#endif + interrupt-parent = <&local_intc>; + interrupts = <9>; + }; @@ -114306,7 +115031,11 @@ index 0000000000000000000000000000000000000000..1a48686a15d44dc6fbdddc569d564779 + }; + + timer { ++#ifdef RPI364 ++ compatible = "arm,armv8-timer", "arm,armv7-timer"; ++#else + compatible = "arm,armv7-timer"; ++#endif + clock-frequency = <19200000>; + interrupt-parent = <&local_intc>; + interrupts = <0>, // PHYS_SECURE_PPI @@ -114322,6 +115051,54 @@ index 0000000000000000000000000000000000000000..1a48686a15d44dc6fbdddc569d564779 + }; + }; + ++#ifdef RPI364 ++ cpus: cpus { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ v8_cpu0: cpu@0 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a53", "arm,armv8"; ++ reg = <0x0>; ++ clock-frequency = <1200000000>; ++ }; ++ ++ v8_cpu1: cpu@1 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a53", "arm,armv8"; ++ reg = <0x1>; ++ clock-frequency = <1200000000>; ++ enable-method = "spin-table"; ++ cpu-release-addr = <0x0 0x000000e0>; ++ }; ++ ++ v8_cpu2: cpu@2 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a53", "arm,armv8"; ++ reg = <0x2>; ++ clock-frequency = <1200000000>; ++ enable-method = "spin-table"; ++ cpu-release-addr = <0x0 0x000000e8>; ++ }; ++ ++ v8_cpu3: cpu@3 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a53", "arm,armv8"; ++ reg = <0x3>; ++ clock-frequency = <1200000000>; ++ enable-method = "spin-table"; ++ cpu-release-addr = <0x0 0x000000f0>; ++ }; ++ }; ++ ++ __overrides__ { ++ arm_freq = <&v8_cpu0>, "clock-frequency:0", ++ <&v8_cpu1>, "clock-frequency:0", ++ <&v8_cpu2>, "clock-frequency:0", ++ <&v8_cpu3>, "clock-frequency:0"; ++ }; ++ ++#else + cpus: cpus { + #address-cells = <1>; + #size-cells = <0>; @@ -114361,6 +115138,7 @@ index 0000000000000000000000000000000000000000..1a48686a15d44dc6fbdddc569d564779 + <&v7_cpu2>, "clock-frequency:0", + <&v7_cpu3>, "clock-frequency:0"; + }; ++#endif +}; + +&watchdog { @@ -114368,9 +115146,12 @@ index 0000000000000000000000000000000000000000..1a48686a15d44dc6fbdddc569d564779 +}; + +&intc { -+ compatible = "brcm,bcm2836-armctrl-ic"; -+ interrupt-parent = <&local_intc>; -+ interrupts = <8>; ++ compatible = "brcm,bcm2836-armctrl-ic"; ++#ifdef RPI364 ++ reg = <0x7e00b200 0x200>; ++#endif ++ interrupt-parent = <&local_intc>; ++ interrupts = <8>; +}; diff --git a/arch/arm/boot/dts/bcm2835-rpi-cm.dts b/arch/arm/boot/dts/bcm2835-rpi-cm.dts new file mode 100644 @@ -114509,10 +115290,10 @@ index 0000000000000000000000000000000000000000..9c4000fc686a9882b9ddde24fdcf937d +}; diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile new file mode 100644 -index 0000000000000000000000000000000000000000..e6e2bfb85fbc257ea851c9f2afa5f78a87cdc41d +index 0000000000000000000000000000000000000000..b6ed1a3c06a7a67d1dd79bb7e55421d8eccba492 --- /dev/null +++ b/arch/arm/boot/dts/overlays/Makefile -@@ -0,0 +1,105 @@ +@@ -0,0 +1,111 @@ +ifeq ($(CONFIG_OF),y) + +# Overlays for the Raspberry Pi platform @@ -114531,11 +115312,14 @@ index 0000000000000000000000000000000000000000..e6e2bfb85fbc257ea851c9f2afa5f78a +dtbo-$(RPI_DT_OVERLAYS) += ads1015.dtbo +dtbo-$(RPI_DT_OVERLAYS) += ads7846.dtbo +dtbo-$(RPI_DT_OVERLAYS) += akkordion-iqdacplus.dtbo ++dtbo-$(RPI_DT_OVERLAYS) += allo-piano-dac-pcm512x-audio.dtbo +dtbo-$(RPI_DT_OVERLAYS) += at86rf233.dtbo +dtbo-$(RPI_DT_OVERLAYS) += audioinjector-wm8731-audio.dtbo ++dtbo-$(RPI_DT_OVERLAYS) += audremap.dtbo +dtbo-$(RPI_DT_OVERLAYS) += bmp085_i2c-sensor.dtbo +dtbo-$(RPI_DT_OVERLAYS) += dht11.dtbo +dtbo-$(RPI_DT_OVERLAYS) += dionaudio-loco.dtbo ++dtbo-$(RPI_DT_OVERLAYS) += dpi18.dtbo +dtbo-$(RPI_DT_OVERLAYS) += dpi24.dtbo +dtbo-$(RPI_DT_OVERLAYS) += dwc-otg.dtbo +dtbo-$(RPI_DT_OVERLAYS) += dwc2.dtbo @@ -114546,6 +115330,7 @@ index 0000000000000000000000000000000000000000..e6e2bfb85fbc257ea851c9f2afa5f78a +dtbo-$(RPI_DT_OVERLAYS) += hifiberry-dac.dtbo +dtbo-$(RPI_DT_OVERLAYS) += hifiberry-dacplus.dtbo +dtbo-$(RPI_DT_OVERLAYS) += hifiberry-digi.dtbo ++dtbo-$(RPI_DT_OVERLAYS) += hifiberry-digi-pro.dtbo +dtbo-$(RPI_DT_OVERLAYS) += hy28a.dtbo +dtbo-$(RPI_DT_OVERLAYS) += hy28b.dtbo +dtbo-$(RPI_DT_OVERLAYS) += i2c-gpio.dtbo @@ -114562,6 +115347,7 @@ index 0000000000000000000000000000000000000000..e6e2bfb85fbc257ea851c9f2afa5f78a +dtbo-$(RPI_DT_OVERLAYS) += justboom-digi.dtbo +dtbo-$(RPI_DT_OVERLAYS) += lirc-rpi.dtbo +dtbo-$(RPI_DT_OVERLAYS) += mcp23017.dtbo ++dtbo-$(RPI_DT_OVERLAYS) += mcp23s17.dtbo +dtbo-$(RPI_DT_OVERLAYS) += mcp2515-can0.dtbo +dtbo-$(RPI_DT_OVERLAYS) += mcp2515-can1.dtbo +dtbo-$(RPI_DT_OVERLAYS) += mmc.dtbo @@ -114586,6 +115372,7 @@ index 0000000000000000000000000000000000000000..e6e2bfb85fbc257ea851c9f2afa5f78a +dtbo-$(RPI_DT_OVERLAYS) += rpi-proto.dtbo +dtbo-$(RPI_DT_OVERLAYS) += rpi-sense.dtbo +dtbo-$(RPI_DT_OVERLAYS) += rra-digidac1-wm8741-audio.dtbo ++dtbo-$(RPI_DT_OVERLAYS) += sc16is750-i2c.dtbo +dtbo-$(RPI_DT_OVERLAYS) += sc16is752-spi1.dtbo +dtbo-$(RPI_DT_OVERLAYS) += sdhost.dtbo +dtbo-$(RPI_DT_OVERLAYS) += sdio.dtbo @@ -114620,10 +115407,10 @@ index 0000000000000000000000000000000000000000..e6e2bfb85fbc257ea851c9f2afa5f78a +clean-files := *.dtbo diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README new file mode 100644 -index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26caf255d8 +index 0000000000000000000000000000000000000000..1ebb94c005d68b17792f95bd9792a08679298b26 --- /dev/null +++ b/arch/arm/boot/dts/overlays/README -@@ -0,0 +1,1223 @@ +@@ -0,0 +1,1302 @@ +Introduction +============ + @@ -114861,6 +115648,26 @@ index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26 + that does not result in clipping/distortion!) + + ++Name: allo-piano-dac-pcm512x-audio ++Info: Configures the Allo Piano DAC (2.0/2.1) audio cards. ++ (NB. This initial support is for 2.0 channel audio ONLY! ie. stereo. ++ The subwoofer outputs on the Piano 2.1 are not currently supported!) ++Load: dtoverlay=allo-piano-dac-pcm512x-audio, ++Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec ++ Digital volume control. ++ (The default behaviour is that the Digital ++ volume control is limited to a maximum of ++ 0dB. ie. it can attenuate but not provide ++ gain. For most users, this will be desired ++ as it will prevent clipping. By appending ++ the 24db_digital_gain parameter, the Digital ++ volume control will allow up to 24dB of ++ gain. If this parameter is enabled, it is the ++ responsibility of the user to ensure that ++ the Digital volume control is set to a value ++ that does not result in clipping/distortion!) ++ ++ +Name: at86rf233 +Info: Configures the Atmel AT86RF233 802.15.4 low-power WPAN transceiver, + connected to spi0.0 @@ -114879,6 +115686,15 @@ index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26 +Params: + + ++Name: audremap ++Info: Switches PWM sound output to pins 12 (Right) & 13 (Left) ++Load: dtoverlay=audremap,= ++Params: swap_lr Reverse the channel allocation, which will also ++ swap the audio jack outputs (default off) ++ enable_jack Don't switch off the audio jack output ++ (default off) ++ ++ +Name: bmp085_i2c-sensor +Info: Configures the BMP085/BMP180 digital barometric pressure and temperature + sensors from Bosch Sensortec @@ -114900,6 +115716,14 @@ index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26 +Params: + + ++Name: dpi18 ++Info: Overlay for a generic 18-bit DPI display ++ This uses GPIOs 0-21 (so no I2C, uart etc.), and activates the output ++ 2-3 seconds after the kernel has started. ++Load: dtoverlay=dpi18 ++Params: ++ ++ +Name: dpi24 +Info: Overlay for a generic 24-bit DPI display + This uses GPIOs 0-27 (so no I2C, uart etc.), and activates the output @@ -114957,7 +115781,7 @@ index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26 + + +Name: gpio-poweroff -+Info: Drives a GPIO high or low on reboot ++Info: Drives a GPIO high or low on poweroff (including halt) +Load: dtoverlay=gpio-poweroff,= +Params: gpiopin GPIO for signalling (default 26) + @@ -115003,11 +115827,17 @@ index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26 + + +Name: hifiberry-digi -+Info: Configures the HifiBerry Digi audio card ++Info: Configures the HifiBerry Digi and Digi+ audio card +Load: dtoverlay=hifiberry-digi +Params: + + ++Name: hifiberry-digi-pro ++Info: Configures the HifiBerry Digi+ Pro audio card ++Load: dtoverlay=hifiberry-digi-pro ++Params: ++ ++ +Name: hy28a +Info: HY28A - 2.8" TFT LCD Display Module by HAOYU Electronics + Default values match Texy's display shield @@ -115242,6 +116072,30 @@ index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26 + addr I2C address of the MCP23017 (default: 0x20) + + ++Name: mcp23s17 ++Info: Configures the MCP23S08/17 SPI GPIO expanders. ++ If devices are present on SPI1 or SPI2, those interfaces must be enabled ++ with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays. ++ If interrupts are enabled for a device on a given CS# on a SPI bus, that ++ device must be the only one present on that SPI bus/CS#. ++Load: dtoverlay=mcp23s17,= ++Params: s08-spi--present 4-bit integer, bitmap indicating MCP23S08 ++ devices present on SPI, CS# ++ ++ s17-spi--present 8-bit integer, bitmap indicating MCP23S17 ++ devices present on SPI, CS# ++ ++ s08-spi--int-gpio integer, enables interrupts on a single ++ MCP23S08 device on SPI, CS#, specifies ++ the GPIO pin to which INT output of MCP23S08 ++ is connected. ++ ++ s17-spi--int-gpio integer, enables mirrored interrupts on a ++ single MCP23S17 device on SPI, CS#, ++ specifies the GPIO pin to which either INTA ++ or INTB output of MCP23S17 is connected. ++ ++ +Name: mcp2515-can0 +Info: Configures the MCP2515 CAN controller on spi0.0 +Load: dtoverlay=mcp2515-can0,= @@ -115411,6 +116265,8 @@ index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26 +Info: Configures the pps-gpio (pulse-per-second time signal via GPIO). +Load: dtoverlay=pps-gpio,= +Params: gpiopin Input GPIO (default "18") ++ assert_falling_edge When present, assert is indicated by a falling ++ edge, rather than by a rising edge + + +Name: pwm @@ -115514,6 +116370,16 @@ index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26 +Params: + + ++Name: sc16is750-i2c ++Info: Overlay for the NXP SC16IS750 UART with I2C Interface ++ Enables the chip on I2C1 at 0x48. To select another address, ++ please refer to table 10 in reference manual. ++ ++Load: dtoverlay=sc16is750-i2c,= ++Params: int_pin GPIO used for IRQ (default 24) ++ addr Address (default 0x48) ++ ++ +Name: sc16is752-spi1 +Info: Overlay for the NXP SC16IS752 Dual UART with SPI Interface + Enables the chip on SPI1. @@ -116157,6 +117023,66 @@ index 0000000000000000000000000000000000000000..208849d5c39274ed0aa557f63a19430a + 24db_digital_gain = <&frag2>,"iqaudio,24db_digital_gain?"; + }; +}; +diff --git a/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..a5468d850a911cd509365cf25f8ffa6ad071b90a +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts +@@ -0,0 +1,54 @@ ++/* ++ * Definitions for Allo Piano DAC (2.0/2.1) boards ++ * ++ * NB. The Piano DAC 2.1 board contains 2x TI PCM5142 DAC's. One DAC is stereo ++ * (left/right) and the other provides a subwoofer output, using DSP on the ++ * chip for digital high/low pass crossover. ++ * The initial support for this hardware, that doesn't require any codec driver ++ * modifications, uses only one DAC chip for stereo (left/right) output, the ++ * chip with 0x4c slave address. The other chip at 0x4d is currently ignored! ++ */ ++ ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target = <&i2s>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&i2c1>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ pcm5142@4c { ++ #sound-dai-cells = <0>; ++ compatible = "ti,pcm5142"; ++ reg = <0x4c>; ++ status = "okay"; ++ }; ++ }; ++ }; ++ ++ fragment@2 { ++ target = <&sound>; ++ piano_dac: __overlay__ { ++ compatible = "allo,piano-dac"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ }; ++ }; ++ ++ __overrides__ { ++ 24db_digital_gain = ++ <&piano_dac>,"allo,24db_digital_gain?"; ++ }; ++}; diff --git a/arch/arm/boot/dts/overlays/at86rf233-overlay.dts b/arch/arm/boot/dts/overlays/at86rf233-overlay.dts new file mode 100644 index 0000000000000000000000000000000000000000..880c7539d496fb10672ee573f7c51b8a213cecf7 @@ -116265,6 +117191,31 @@ index 0000000000000000000000000000000000000000..4ed66577fa1d59e7b167ffdfd5a3f0de + }; + }; +}; +diff --git a/arch/arm/boot/dts/overlays/audremap-overlay.dts b/arch/arm/boot/dts/overlays/audremap-overlay.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..9582d6ab31218b4ed7b1d42a9190ca6efe9bd531 +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/audremap-overlay.dts +@@ -0,0 +1,19 @@ ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target = <&audio_pins>; ++ frag0: __overlay__ { ++ brcm,pins = < 12 13 >; ++ brcm,function = < 4 >; /* alt0 alt0 */ ++ }; ++ }; ++ ++ __overrides__ { ++ swap_lr = <&frag0>, "swap_lr?"; ++ enable_jack = <&frag0>, "enable_jack?"; ++ }; ++}; diff --git a/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts b/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts new file mode 100644 index 0000000000000000000000000000000000000000..782b1715467e943c18fe936cc76448f3db960fbc @@ -116384,6 +117335,43 @@ index 0000000000000000000000000000000000000000..3930f412bca4454c6673fb19859e607b + }; + }; +}; +diff --git a/arch/arm/boot/dts/overlays/dpi18-overlay.dts b/arch/arm/boot/dts/overlays/dpi18-overlay.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..8098d5e28a71ffbc717db5c6b88305d2ba6e3175 +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/dpi18-overlay.dts +@@ -0,0 +1,31 @@ ++/dts-v1/; ++/plugin/; ++ ++/{ ++ compatible = "brcm,bcm2708"; ++ ++ // There is no DPI driver module, but we need a platform device ++ // node (that doesn't already use pinctrl) to hang the pinctrl ++ // reference on - leds will do ++ ++ fragment@0 { ++ target = <&leds>; ++ __overlay__ { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&dpi18_pins>; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&gpio>; ++ __overlay__ { ++ dpi18_pins: dpi18_pins { ++ brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11 ++ 12 13 14 15 16 17 18 19 20 ++ 21>; ++ brcm,function = <6>; /* alt2 */ ++ brcm,pull = <0>; /* no pull */ ++ }; ++ }; ++ }; ++}; diff --git a/arch/arm/boot/dts/overlays/dpi24-overlay.dts b/arch/arm/boot/dts/overlays/dpi24-overlay.dts new file mode 100644 index 0000000000000000000000000000000000000000..e4dbe40218a008ef4028c1214740c3d6bc574724 @@ -116823,6 +117811,53 @@ index 0000000000000000000000000000000000000000..f5e41f48ba4fed92194ff5a63d13c70b + }; + }; +}; +diff --git a/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..2a26d9cfffb0f3d7958eb3756ca7c4ba28400e1c +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts +@@ -0,0 +1,41 @@ ++// Definitions for HiFiBerry Digi Pro ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target = <&i2s>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&i2c1>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ wm8804@3b { ++ #sound-dai-cells = <0>; ++ compatible = "wlf,wm8804"; ++ reg = <0x3b>; ++ status = "okay"; ++ }; ++ }; ++ }; ++ ++ fragment@2 { ++ target = <&sound>; ++ __overlay__ { ++ compatible = "hifiberry,hifiberry-digi"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ clock44-gpio = <&gpio 5 0>; ++ clock48-gpio = <&gpio 6 0>; ++ }; ++ }; ++}; diff --git a/arch/arm/boot/dts/overlays/hy28a-overlay.dts b/arch/arm/boot/dts/overlays/hy28a-overlay.dts new file mode 100644 index 0000000000000000000000000000000000000000..ac0f3c28ea855a620dc6a3385d9d15009f26358d @@ -117886,6 +118921,744 @@ index 0000000000000000000000000000000000000000..412f966a3cc0a312771b7182310a7045 + }; +}; + +diff --git a/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..7dcbacb3cd007eb15b2b0f165fd8adc7a7b7c580 +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts +@@ -0,0 +1,732 @@ ++// Overlay for MCP23S08/17 GPIO Extenders from Microchip Semiconductor ++ ++// dtparams: ++// s08-spi--present - 4-bit integer, bitmap indicating MCP23S08 devices present on SPI, CS#. ++// s17-spi--present - 8-bit integer, bitmap indicating MCP23S17 devices present on SPI, CS#. ++// s08-spi--int-gpio - integer, enables interrupts on a single MCP23S08 device on SPI, CS#, specifies the GPIO pin to which INT output is connected. ++// s17-spi--int-gpio - integer, enables mirrored interrupts on a single MCP23S17 device on SPI, CS#, specifies the GPIO pin to which either INTA or INTB output is connected. ++// ++// If devices are present on SPI1 or SPI2, those interfaces must be enabled with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays. ++// If interrupts are enabled for a device on a given CS# on a SPI bus, that device must be the only one present on that SPI bus/CS#. ++// ++// Example 1: A single MCP23S17 device on SPI0, CS#0 with its SPI addr set to 0 and INTA output connected to GPIO25: ++// dtoverlay=mcp23s17:s17-spi0-0-present=1,s17-spi0-0-int-gpio=25 ++// ++// Example 2: Two MCP23S08 devices on SPI1, CS#0 with their addrs set to 2 and 3. Three MCP23S17 devices on SPI1, CS#1 with their addrs set to 0, 1 and 7: ++// dtoverlay=spi1-2cs ++// dtoverlay=mcp23s17:s08-spi1-0-present=12,s17-spi1-1-present=131 ++ ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; ++ ++ // disable spi-dev on spi0.0 ++ fragment@0 { ++ target = <&spidev0>; ++ __dormant__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ // disable spi-dev on spi0.1 ++ fragment@1 { ++ target = <&spidev1>; ++ __dormant__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ // disable spi-dev on spi1.0 ++ fragment@2 { ++ target-path = "spi1/spidev@0"; ++ __dormant__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ // disable spi-dev on spi1.1 ++ fragment@3 { ++ target-path = "spi1/spidev@1"; ++ __dormant__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ // disable spi-dev on spi1.2 ++ fragment@4 { ++ target-path = "spi1/spidev@2"; ++ __dormant__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ // disable spi-dev on spi2.0 ++ fragment@5 { ++ target-path = "spi2/spidev@0"; ++ __dormant__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ // disable spi-dev on spi2.1 ++ fragment@6 { ++ target-path = "spi2/spidev@1"; ++ __dormant__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ // disable spi-dev on spi2.2 ++ fragment@7 { ++ target-path = "spi2/spidev@2"; ++ __dormant__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ // enable one or more mcp23s08s on spi0.0 ++ fragment@8 { ++ target = <&spi0>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s08_00: mcp23s08@0 { ++ compatible = "microchip,mcp23s08"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi0-0-present parameter */ ++ reg = <0>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi0-0-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s08s on spi0.1 ++ fragment@9 { ++ target = <&spi0>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s08_01: mcp23s08@1 { ++ compatible = "microchip,mcp23s08"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi0-1-present parameter */ ++ reg = <1>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi0-1-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s08s on spi1.0 ++ fragment@10 { ++ target = <&spi1>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s08_10: mcp23s08@0 { ++ compatible = "microchip,mcp23s08"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-0-present parameter */ ++ reg = <0>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-0-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s08s on spi1.1 ++ fragment@11 { ++ target = <&spi1>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s08_11: mcp23s08@1 { ++ compatible = "microchip,mcp23s08"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-1-present parameter */ ++ reg = <1>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-1-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s08s on spi1.2 ++ fragment@12 { ++ target = <&spi1>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s08_12: mcp23s08@2 { ++ compatible = "microchip,mcp23s08"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-2-present parameter */ ++ reg = <2>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-2-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s08s on spi2.0 ++ fragment@13 { ++ target = <&spi2>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s08_20: mcp23s08@0 { ++ compatible = "microchip,mcp23s08"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-0-present parameter */ ++ reg = <0>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-0-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s08s on spi2.1 ++ fragment@14 { ++ target = <&spi2>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s08_21: mcp23s08@1 { ++ compatible = "microchip,mcp23s08"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-1-present parameter */ ++ reg = <1>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-1-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s08s on spi2.2 ++ fragment@15 { ++ target = <&spi2>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s08_22: mcp23s08@2 { ++ compatible = "microchip,mcp23s08"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-2-present parameter */ ++ reg = <2>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-2-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s17s on spi0.0 ++ fragment@16 { ++ target = <&spi0>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s17_00: mcp23s17@0 { ++ compatible = "microchip,mcp23s17"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi0-0-present parameter */ ++ reg = <0>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi0-0-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s17s on spi0.1 ++ fragment@17 { ++ target = <&spi0>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s17_01: mcp23s17@1 { ++ compatible = "microchip,mcp23s17"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi0-1-present parameter */ ++ reg = <1>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi0-1-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s17s on spi1.0 ++ fragment@18 { ++ target = <&spi1>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s17_10: mcp23s17@0 { ++ compatible = "microchip,mcp23s17"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-0-present parameter */ ++ reg = <0>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-0-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s17s on spi1.1 ++ fragment@19 { ++ target = <&spi1>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s17_11: mcp23s17@1 { ++ compatible = "microchip,mcp23s17"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-1-present parameter */ ++ reg = <1>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-1-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s17s on spi1.2 ++ fragment@20 { ++ target = <&spi1>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s17_12: mcp23s17@2 { ++ compatible = "microchip,mcp23s17"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-2-present parameter */ ++ reg = <2>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-2-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s17s on spi2.0 ++ fragment@21 { ++ target = <&spi2>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s17_20: mcp23s17@0 { ++ compatible = "microchip,mcp23s17"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-0-present parameter */ ++ reg = <0>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-0-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s17s on spi2.1 ++ fragment@22 { ++ target = <&spi2>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s17_21: mcp23s17@1 { ++ compatible = "microchip,mcp23s17"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-1-present parameter */ ++ reg = <1>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-1-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s17s on spi2.2 ++ fragment@23 { ++ target = <&spi2>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s17_22: mcp23s17@2 { ++ compatible = "microchip,mcp23s17"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-2-present parameter */ ++ reg = <2>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-2-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.0 as a input with no pull-up/down ++ fragment@24 { ++ target = <&gpio>; ++ __dormant__ { ++ spi0_0_int_pins: spi0_0_int_pins { ++ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi0-0-int-gpio parameter */ ++ brcm,function = <0>; ++ brcm,pull = <0>; ++ }; ++ }; ++ }; ++ ++ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.1 as a input with no pull-up/down ++ fragment@25 { ++ target = <&gpio>; ++ __dormant__ { ++ spi0_1_int_pins: spi0_1_int_pins { ++ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi0-1-int-gpio parameter */ ++ brcm,function = <0>; ++ brcm,pull = <0>; ++ }; ++ }; ++ }; ++ ++ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.0 as a input with no pull-up/down ++ fragment@26 { ++ target = <&gpio>; ++ __dormant__ { ++ spi1_0_int_pins: spi1_0_int_pins { ++ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-0-int-gpio parameter */ ++ brcm,function = <0>; ++ brcm,pull = <0>; ++ }; ++ }; ++ }; ++ ++ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.1 as a input with no pull-up/down ++ fragment@27 { ++ target = <&gpio>; ++ __dormant__ { ++ spi1_1_int_pins: spi1_1_int_pins { ++ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-1-int-gpio parameter */ ++ brcm,function = <0>; ++ brcm,pull = <0>; ++ }; ++ }; ++ }; ++ ++ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.2 as a input with no pull-up/down ++ fragment@28 { ++ target = <&gpio>; ++ __dormant__ { ++ spi1_2_int_pins: spi1_2_int_pins { ++ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-2-int-gpio parameter */ ++ brcm,function = <0>; ++ brcm,pull = <0>; ++ }; ++ }; ++ }; ++ ++ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.0 as a input with no pull-up/down ++ fragment@29 { ++ target = <&gpio>; ++ __dormant__ { ++ spi2_0_int_pins: spi2_0_int_pins { ++ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-0-int-gpio parameter */ ++ brcm,function = <0>; ++ brcm,pull = <0>; ++ }; ++ }; ++ }; ++ ++ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.1 as a input with no pull-up/down ++ fragment@30 { ++ target = <&gpio>; ++ __dormant__ { ++ spi2_1_int_pins: spi2_1_int_pins { ++ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-1-int-gpio parameter */ ++ brcm,function = <0>; ++ brcm,pull = <0>; ++ }; ++ }; ++ }; ++ ++ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.2 as a input with no pull-up/down ++ fragment@31 { ++ target = <&gpio>; ++ __dormant__ { ++ spi2_2_int_pins: spi2_2_int_pins { ++ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-2-int-gpio parameter */ ++ brcm,function = <0>; ++ brcm,pull = <0>; ++ }; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s08 on spi0.0. ++ // Use default active low interrupt signalling. ++ fragment@32 { ++ target = <&mcp23s08_00>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s08 on spi0.1. ++ // Use default active low interrupt signalling. ++ fragment@33 { ++ target = <&mcp23s08_01>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s08 on spi1.0. ++ // Use default active low interrupt signalling. ++ fragment@34 { ++ target = <&mcp23s08_10>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s08 on spi1.1. ++ // Use default active low interrupt signalling. ++ fragment@35 { ++ target = <&mcp23s08_11>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s08 on spi1.2. ++ // Use default active low interrupt signalling. ++ fragment@36 { ++ target = <&mcp23s08_12>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s08 on spi2.0. ++ // Use default active low interrupt signalling. ++ fragment@37 { ++ target = <&mcp23s08_20>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s08 on spi2.1. ++ // Use default active low interrupt signalling. ++ fragment@38 { ++ target = <&mcp23s08_21>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s08 on spi2.2. ++ // Use default active low interrupt signalling. ++ fragment@39 { ++ target = <&mcp23s08_22>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s17 on spi0.0. ++ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. ++ // Use default active low interrupt signalling. ++ fragment@40 { ++ target = <&mcp23s17_00>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ microchip,irq-mirror; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s17 on spi0.1. ++ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. ++ // Configure INTA/B outputs of mcp23s08/17 as active low. ++ fragment@41 { ++ target = <&mcp23s17_01>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ microchip,irq-mirror; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s17 on spi1.0. ++ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. ++ // Configure INTA/B outputs of mcp23s08/17 as active low. ++ fragment@42 { ++ target = <&mcp23s17_10>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ microchip,irq-mirror; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s17 on spi1.1. ++ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. ++ // Configure INTA/B outputs of mcp23s08/17 as active low. ++ fragment@43 { ++ target = <&mcp23s17_11>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ microchip,irq-mirror; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s17 on spi1.2. ++ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. ++ // Configure INTA/B outputs of mcp23s08/17 as active low. ++ fragment@44 { ++ target = <&mcp23s17_12>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ microchip,irq-mirror; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s17 on spi2.0. ++ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. ++ // Configure INTA/B outputs of mcp23s08/17 as active low. ++ fragment@45 { ++ target = <&mcp23s17_20>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ microchip,irq-mirror; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s17 on spi2.1. ++ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. ++ // Configure INTA/B outputs of mcp23s08/17 as active low. ++ fragment@46 { ++ target = <&mcp23s17_21>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ microchip,irq-mirror; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s17 on spi2.2. ++ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. ++ // Configure INTA/B outputs of mcp23s08/17 as active low. ++ fragment@47 { ++ target = <&mcp23s17_22>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ microchip,irq-mirror; ++ }; ++ }; ++ ++ __overrides__ { ++ s08-spi0-0-present = <0>,"+0+8", <&mcp23s08_00>,"microchip,spi-present-mask:0"; ++ s08-spi0-1-present = <0>,"+1+9", <&mcp23s08_01>,"microchip,spi-present-mask:0"; ++ s08-spi1-0-present = <0>,"+2+10", <&mcp23s08_10>,"microchip,spi-present-mask:0"; ++ s08-spi1-1-present = <0>,"+3+11", <&mcp23s08_11>,"microchip,spi-present-mask:0"; ++ s08-spi1-2-present = <0>,"+4+12", <&mcp23s08_12>,"microchip,spi-present-mask:0"; ++ s08-spi2-0-present = <0>,"+5+13", <&mcp23s08_20>,"microchip,spi-present-mask:0"; ++ s08-spi2-1-present = <0>,"+6+14", <&mcp23s08_21>,"microchip,spi-present-mask:0"; ++ s08-spi2-2-present = <0>,"+7+15", <&mcp23s08_22>,"microchip,spi-present-mask:0"; ++ s17-spi0-0-present = <0>,"+0+16", <&mcp23s17_00>,"microchip,spi-present-mask:0"; ++ s17-spi0-1-present = <0>,"+1+17", <&mcp23s17_01>,"microchip,spi-present-mask:0"; ++ s17-spi1-0-present = <0>,"+2+18", <&mcp23s17_10>,"microchip,spi-present-mask:0"; ++ s17-spi1-1-present = <0>,"+3+19", <&mcp23s17_11>,"microchip,spi-present-mask:0"; ++ s17-spi1-2-present = <0>,"+4+20", <&mcp23s17_12>,"microchip,spi-present-mask:0"; ++ s17-spi2-0-present = <0>,"+5+21", <&mcp23s17_20>,"microchip,spi-present-mask:0"; ++ s17-spi2-1-present = <0>,"+6+22", <&mcp23s17_21>,"microchip,spi-present-mask:0"; ++ s17-spi2-2-present = <0>,"+7+23", <&mcp23s17_22>,"microchip,spi-present-mask:0"; ++ s08-spi0-0-int-gpio = <0>,"+24+32", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s08_00>,"interrupts:0"; ++ s08-spi0-1-int-gpio = <0>,"+25+33", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s08_01>,"interrupts:0"; ++ s08-spi1-0-int-gpio = <0>,"+26+34", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s08_10>,"interrupts:0"; ++ s08-spi1-1-int-gpio = <0>,"+27+35", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s08_11>,"interrupts:0"; ++ s08-spi1-2-int-gpio = <0>,"+28+36", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s08_12>,"interrupts:0"; ++ s08-spi2-0-int-gpio = <0>,"+29+37", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s08_20>,"interrupts:0"; ++ s08-spi2-1-int-gpio = <0>,"+30+38", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s08_21>,"interrupts:0"; ++ s08-spi2-2-int-gpio = <0>,"+31+39", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s08_22>,"interrupts:0"; ++ s17-spi0-0-int-gpio = <0>,"+24+40", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s17_00>,"interrupts:0"; ++ s17-spi0-1-int-gpio = <0>,"+25+41", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s17_01>,"interrupts:0"; ++ s17-spi1-0-int-gpio = <0>,"+26+42", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s17_10>,"interrupts:0"; ++ s17-spi1-1-int-gpio = <0>,"+27+43", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s17_11>,"interrupts:0"; ++ s17-spi1-2-int-gpio = <0>,"+28+44", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s17_12>,"interrupts:0"; ++ s17-spi2-0-int-gpio = <0>,"+29+45", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s17_20>,"interrupts:0"; ++ s17-spi2-1-int-gpio = <0>,"+30+46", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s17_21>,"interrupts:0"; ++ s17-spi2-2-int-gpio = <0>,"+31+47", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s17_22>,"interrupts:0"; ++ }; ++}; ++ diff --git a/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts b/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts new file mode 100755 index 0000000000000000000000000000000000000000..c96cdae27fb15055c4a6ec55d1ee45644768c392 @@ -118246,7 +120019,7 @@ index 0000000000000000000000000000000000000000..14a59dcf13ca64eb0bdbd34d70690a11 +}; diff --git a/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts b/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts new file mode 100644 -index 0000000000000000000000000000000000000000..68f6069dd24cbf6a2ed11365ac0717e36879abe3 +index 0000000000000000000000000000000000000000..87cf345f9641e62c5ed496c238333716cc5b27e6 --- /dev/null +++ b/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts @@ -0,0 +1,46 @@ @@ -118291,14 +120064,14 @@ index 0000000000000000000000000000000000000000..68f6069dd24cbf6a2ed11365ac0717e3 + fragment@3 { + target-path = "/aliases"; + __overlay__ { -+ serial0 = "/soc/uart@7e201000"; -+ serial1 = "/soc/uart@7e215040"; ++ serial0 = "/soc/serial@7e201000"; ++ serial1 = "/soc/serial@7e215040"; + }; + }; +}; diff --git a/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts b/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts new file mode 100644 -index 0000000000000000000000000000000000000000..17d04cf87195a6ff192e1ddbe4f92b1afa9e5ddb +index 0000000000000000000000000000000000000000..18f77453c38dbbf33f3726a5b4cce15b9f20f390 --- /dev/null +++ b/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts @@ -0,0 +1,64 @@ @@ -118361,8 +120134,8 @@ index 0000000000000000000000000000000000000000..17d04cf87195a6ff192e1ddbe4f92b1a + fragment@4 { + target-path = "/aliases"; + __overlay__ { -+ serial0 = "/soc/uart@7e201000"; -+ serial1 = "/soc/uart@7e215040"; ++ serial0 = "/soc/serial@7e201000"; ++ serial1 = "/soc/serial@7e215040"; + }; + }; +}; @@ -118887,10 +120660,10 @@ index 0000000000000000000000000000000000000000..ed2afc2f7fd6528f4e6d75bb2d534307 +}; diff --git a/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts new file mode 100644 -index 0000000000000000000000000000000000000000..40bf0e11015f5abebd0d4139276da888d728d569 +index 0000000000000000000000000000000000000000..50143a4bb215807ba0a0d0562f5827fa29a04de4 --- /dev/null +++ b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts -@@ -0,0 +1,34 @@ +@@ -0,0 +1,35 @@ +/dts-v1/; +/plugin/; + @@ -118923,14 +120696,15 @@ index 0000000000000000000000000000000000000000..40bf0e11015f5abebd0d4139276da888 + __overrides__ { + gpiopin = <&pps>,"gpios:4", + <&pps_pins>,"brcm,pins:0"; ++ assert_falling_edge = <&pps>,"assert-falling-edge?"; + }; +}; diff --git a/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts new file mode 100644 -index 0000000000000000000000000000000000000000..18e4e4fa9465c87eb96c8d712a9967c4805c7176 +index 0000000000000000000000000000000000000000..abdeddd0f2c873e2b1fffcf6f2b838ee0123768f --- /dev/null +++ b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts -@@ -0,0 +1,53 @@ +@@ -0,0 +1,47 @@ +/dts-v1/; +/plugin/; + @@ -118962,34 +120736,28 @@ index 0000000000000000000000000000000000000000..18e4e4fa9465c87eb96c8d712a9967c4 + + fragment@1 { + target = <&pwm>; -+ __overlay__ { ++ frag1: __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&pwm_pins>; ++ assigned-clock-rates = <100000000>; + status = "okay"; + }; + }; + -+ fragment@2 { -+ target = <&clk_pwm>; -+ frag2: __overlay__ { -+ clock-frequency = <100000000>; -+ }; -+ }; -+ + __overrides__ { + pin = <&pwm_pins>,"brcm,pins:0"; + pin2 = <&pwm_pins>,"brcm,pins:4"; + func = <&pwm_pins>,"brcm,function:0"; + func2 = <&pwm_pins>,"brcm,function:4"; -+ clock = <&frag2>,"clock-frequency:0"; ++ clock = <&frag1>,"assigned-clock-rates:0"; + }; +}; diff --git a/arch/arm/boot/dts/overlays/pwm-overlay.dts b/arch/arm/boot/dts/overlays/pwm-overlay.dts new file mode 100644 -index 0000000000000000000000000000000000000000..bf030a6d1545448faf5e7992a0dc5c505522433e +index 0000000000000000000000000000000000000000..27809e8dc74660a8e922a1aff1bb2ca7186e411c --- /dev/null +++ b/arch/arm/boot/dts/overlays/pwm-overlay.dts -@@ -0,0 +1,49 @@ +@@ -0,0 +1,43 @@ +/dts-v1/; +/plugin/; + @@ -119019,24 +120787,18 @@ index 0000000000000000000000000000000000000000..bf030a6d1545448faf5e7992a0dc5c50 + + fragment@1 { + target = <&pwm>; -+ __overlay__ { ++ frag1: __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&pwm_pins>; ++ assigned-clock-rates = <100000000>; + status = "okay"; + }; + }; + -+ fragment@2 { -+ target = <&clk_pwm>; -+ frag2: __overlay__ { -+ clock-frequency = <100000000>; -+ }; -+ }; -+ + __overrides__ { + pin = <&pwm_pins>,"brcm,pins:0"; + func = <&pwm_pins>,"brcm,function:0"; -+ clock = <&frag2>,"clock-frequency:0"; ++ clock = <&frag1>,"assigned-clock-rates:0"; + }; +}; diff --git a/arch/arm/boot/dts/overlays/qca7000-overlay.dts b/arch/arm/boot/dts/overlays/qca7000-overlay.dts @@ -119518,6 +121280,49 @@ index 0000000000000000000000000000000000000000..16b1247bfa618ff85936ddf78c3aea58 + }; + }; +}; +diff --git a/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..339d0d17c01ff182edd0871de9dc4ea744917ad4 +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts +@@ -0,0 +1,37 @@ ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; ++ ++ fragment@0 { ++ target = <&i2c_arm>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ sc16is750: sc16is750@48 { ++ compatible = "nxp,sc16is750"; ++ reg = <0x48>; /* address */ ++ clocks = <&sc16is750_clk>; ++ interrupt-parent = <&gpio>; ++ interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */ ++ #gpio-cells = <2>; ++ ++ sc16is750_clk: sc16is750_clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <14745600>; ++ }; ++ }; ++ }; ++ }; ++ ++ ++ __overrides__ { ++ int_pin = <&sc16is750>,"interrupts:0"; ++ addr = <&sc16is750>,"reg:0"; ++ }; ++ ++}; diff --git a/arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts b/arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts new file mode 100644 index 0000000000000000000000000000000000000000..d0a9e82dbea143e80249064873d8b9f0b56b2eaa @@ -119880,7 +121685,7 @@ index 0000000000000000000000000000000000000000..095f52c355fd6382233d8a471c3590a4 +}; diff --git a/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts new file mode 100644 -index 0000000000000000000000000000000000000000..9648063d5963f2f6ec8f31038f3af5820a8135a6 +index 0000000000000000000000000000000000000000..49803b309f8643385a3c97f6cdd2015f863d2d34 --- /dev/null +++ b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts @@ -0,0 +1,31 @@ @@ -119904,14 +121709,14 @@ index 0000000000000000000000000000000000000000..9648063d5963f2f6ec8f31038f3af582 + fragment@1 { + target = <&spi0_cs_pins>; + __overlay__ { -+ bcrm,pins = <36 35>; ++ brcm,pins = <36 35>; + }; + }; + + fragment@2 { + target = <&spi0_pins>; + __overlay__ { -+ bcrm,pins = <37 38 39>; ++ brcm,pins = <37 38 39>; + }; + }; +}; @@ -121031,10 +122836,33 @@ index 0000000000000000000000000000000000000000..8498134fdbb3912e9ce18282b53084d8 + +}; -From 6e0a09d770606d1e994d632419d8c926165283e3 Mon Sep 17 00:00:00 2001 +From 7477e3342d98ab2a5ba2b053ec08b233f6cb2716 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 24 Aug 2016 16:28:44 +0100 +Subject: [PATCH 061/132] kbuild: Ignore dtco targets when filtering symbols + +--- + scripts/Kbuild.include | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include +index 179219845dfcdfbeb586d12c5ec1296095d9fbf4..e0743e44f84188667a0c322e8c3d36f18385dcd3 100644 +--- a/scripts/Kbuild.include ++++ b/scripts/Kbuild.include +@@ -284,7 +284,7 @@ ksym_dep_filter = \ + $(CPP) $(call flags_nodeps,c_flags) -D__KSYM_DEPS__ $< ;; \ + as_*_S|cpp_s_S) \ + $(CPP) $(call flags_nodeps,a_flags) -D__KSYM_DEPS__ $< ;; \ +- boot*|build*|*cpp_lds_S|dtc|host*|vdso*) : ;; \ ++ boot*|build*|*cpp_lds_S|dtc*|host*|vdso*) : ;; \ + *) echo "Don't know how to preprocess $(1)" >&2; false ;; \ + esac | tr ";" "\n" | sed -rn 's/^.*=== __KSYM_(.*) ===.*$$/KSYM_\1/p' + + +From 00e56b93428de52f017c603150705a0aed894160 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 13 Mar 2015 20:00:21 +0000 -Subject: [PATCH 052/160] BCM270X_DT: Add a .dtbo target, use for overlays +Subject: [PATCH 062/132] BCM270X_DT: Add a .dtbo target, use for overlays Change the filenames and extensions to keep the pre-DDT style of overlay (-overlay.dtb) distinct from new ones that use a @@ -121096,10 +122924,10 @@ index a1be75d0a5fd3fbf4742e555046896ea6fa6fe65..ad8dc1c93d04bc929b551c5a47f67d24 .PHONY: $(PHONY) diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib -index e7df0f5db7ec273f45b755668815ce96ba1ffe46..8f50f48329b9460b7268322ea4fd99cf764134ec 100644 +index 0a07f9014944ed92a8e2e42983ae43be60b3e471..b1513a7c175885137034b9f7225788c0a7c35027 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib -@@ -311,6 +311,16 @@ cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \ +@@ -312,6 +312,16 @@ cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \ $(obj)/%.dtb: $(src)/%.dts FORCE $(call if_changed_dep,dtc) @@ -121117,10 +122945,10 @@ index e7df0f5db7ec273f45b755668815ce96ba1ffe46..8f50f48329b9460b7268322ea4fd99cf # Bzip2 -From 2edf09289d2a34b13049232e399750abf44be35d Mon Sep 17 00:00:00 2001 +From 1e1759d301aded667d80eeb627445c6b89a2113e Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 8 Apr 2016 17:43:27 +0100 -Subject: [PATCH 053/160] BCM270X_DT: Don't generate "linux,phandle" props +Subject: [PATCH 063/132] BCM270X_DT: Don't generate "linux,phandle" props The EPAPR standard says to use "phandle" properties to store phandles, rather than the deprecated "linux,phandle" version. By default, dtc @@ -121133,10 +122961,10 @@ Signed-off-by: Phil Elwell 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib -index 8f50f48329b9460b7268322ea4fd99cf764134ec..c1c3ceb265a3fd223b8a2a0a548ddad34f88ef4e 100644 +index b1513a7c175885137034b9f7225788c0a7c35027..1d949b7410600dd3b04a3acde8c41cfead15bfa4 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib -@@ -313,7 +313,7 @@ $(obj)/%.dtb: $(src)/%.dts FORCE +@@ -314,7 +314,7 @@ $(obj)/%.dtb: $(src)/%.dts FORCE quiet_cmd_dtco = DTCO $@ cmd_dtco = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ @@ -121146,10 +122974,10 @@ index 8f50f48329b9460b7268322ea4fd99cf764134ec..c1c3ceb265a3fd223b8a2a0a548ddad3 -d $(depfile).dtc.tmp $(dtc-tmp) ; \ cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) -From a91293f6aaffc3eee166d14e32bd5399cd73d315 Mon Sep 17 00:00:00 2001 +From 5590a12b51e0ecd64d1ad41076b4399e6816f426 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 6 Feb 2015 13:50:57 +0000 -Subject: [PATCH 054/160] BCM270x_DT: Add pwr_led, and the required "input" +Subject: [PATCH 064/132] BCM270x_DT: Add pwr_led, and the required "input" trigger The "input" trigger makes the associated GPIO an input. This is to support @@ -121179,7 +123007,7 @@ See: https://github.com/raspberrypi/linux/issues/1064 create mode 100644 drivers/leds/trigger/ledtrig-input.c diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c -index 8229f063b483c77cf993891cb2bc2e7e9239ee6a..7a960e0bc2c7f918c880f724c22c773818f7df23 100644 +index 9b991d46ed848a0de40185eef30d9691c7e07e88..f454881346bbf01ea98aa2662e82f8c66dd11318 100644 --- a/drivers/leds/leds-gpio.c +++ b/drivers/leds/leds-gpio.c @@ -46,8 +46,15 @@ static void gpio_led_set(struct led_classdev *led_cdev, @@ -121223,7 +123051,7 @@ index 8229f063b483c77cf993891cb2bc2e7e9239ee6a..7a960e0bc2c7f918c880f724c22c7738 state = !!gpiod_get_value_cansleep(led_dat->gpiod); else diff --git a/drivers/leds/trigger/Kconfig b/drivers/leds/trigger/Kconfig -index 9893d911390daa4dd77986065ebde50b517d6b72..fbbe765e2fd2a593c2b1b40f71e4cb63d6339d80 100644 +index 3f9ddb9fafa77f1f1fe5535c5e947838761e4f35..c1b6c83f3b63f993452893f136c5da54d0ada8e7 100644 --- a/drivers/leds/trigger/Kconfig +++ b/drivers/leds/trigger/Kconfig @@ -116,6 +116,13 @@ config LEDS_TRIGGER_CAMERA @@ -121241,7 +123069,7 @@ index 9893d911390daa4dd77986065ebde50b517d6b72..fbbe765e2fd2a593c2b1b40f71e4cb63 bool "LED Panic Trigger" depends on LEDS_TRIGGERS diff --git a/drivers/leds/trigger/Makefile b/drivers/leds/trigger/Makefile -index 8cc64a4f4e255c1dd9fafde1ccd72d5a08ccbd5b..9452fe5640fec612f0e5e6a072d1af26d855847d 100644 +index a72c43cffebf43bc7ebfd1eb1103b9ccff73d075..51b90c46890872fd1b148ec748edce0e0ce8fee1 100644 --- a/drivers/leds/trigger/Makefile +++ b/drivers/leds/trigger/Makefile @@ -9,4 +9,5 @@ obj-$(CONFIG_LEDS_TRIGGER_CPU) += ledtrig-cpu.o @@ -121311,7 +123139,7 @@ index 0000000000000000000000000000000000000000..27f8ebea43d86fc51c98db5c953da05b +MODULE_DESCRIPTION("Set LED GPIO to Input \"trigger\""); +MODULE_LICENSE("GPL"); diff --git a/include/linux/leds.h b/include/linux/leds.h -index e5e7f2e80a54dd2f15737a3ef478287458641f6e..68086e559d963ed06a0ceb916f9b1555b213ddf8 100644 +index 8a3b5d29602ffe665cfb26522180f3a696664371..d067976ddc2f34d5476bcd9321856b1c40e17e12 100644 --- a/include/linux/leds.h +++ b/include/linux/leds.h @@ -52,6 +52,9 @@ struct led_classdev { @@ -121325,10 +123153,10 @@ index e5e7f2e80a54dd2f15737a3ef478287458641f6e..68086e559d963ed06a0ceb916f9b1555 /* Set LED brightness level * Must not sleep. Use brightness_set_blocking for drivers -From 770c5750b4704ef9358d31fb40af343e8ba66f72 Mon Sep 17 00:00:00 2001 +From be289b004e57ecf30dd2daa95f73ddedf74f2993 Mon Sep 17 00:00:00 2001 From: Siarhei Siamashka Date: Mon, 17 Jun 2013 13:32:11 +0300 -Subject: [PATCH 055/160] fbdev: add FBIOCOPYAREA ioctl +Subject: [PATCH 065/132] fbdev: add FBIOCOPYAREA ioctl Based on the patch authored by Ali Gholami Rudi at https://lkml.org/lkml/2009/7/13/153 @@ -121338,15 +123166,15 @@ is hardware accelerated (otherwide it does not make any sense). Signed-off-by: Siarhei Siamashka --- - drivers/video/fbdev/core/fbmem.c | 30 ++++++++++++++++++++++++++++++ + drivers/video/fbdev/core/fbmem.c | 36 ++++++++++++++++++++++++++++++++++++ include/uapi/linux/fb.h | 5 +++++ - 2 files changed, 35 insertions(+) + 2 files changed, 41 insertions(+) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c -index 76c1ad96fb37d4f07bbde6462f54825f566acbac..1d3b35ec8e393aac43dca0ec4566f7a7d0d8998a 100644 +index 76c1ad96fb37d4f07bbde6462f54825f566acbac..7bf48e478c056fcd745026902961506d5826615d 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c -@@ -1084,6 +1084,25 @@ fb_blank(struct fb_info *info, int blank) +@@ -1084,6 +1084,31 @@ fb_blank(struct fb_info *info, int blank) } EXPORT_SYMBOL(fb_blank); @@ -121356,7 +123184,13 @@ index 76c1ad96fb37d4f07bbde6462f54825f566acbac..1d3b35ec8e393aac43dca0ec4566f7a7 + int ret = 0; + if (!lock_fb_info(info)) + return -ENODEV; -+ if (copy->dx + copy->width > info->var.xres || ++ if (copy->dx >= info->var.xres || ++ copy->sx >= info->var.xres || ++ copy->width > info->var.xres || ++ copy->dy >= info->var.yres || ++ copy->sy >= info->var.yres || ++ copy->height > info->var.yres || ++ copy->dx + copy->width > info->var.xres || + copy->sx + copy->width > info->var.xres || + copy->dy + copy->height > info->var.yres || + copy->sy + copy->height > info->var.yres) { @@ -121372,7 +123206,7 @@ index 76c1ad96fb37d4f07bbde6462f54825f566acbac..1d3b35ec8e393aac43dca0ec4566f7a7 static long do_fb_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg) { -@@ -1094,6 +1113,7 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd, +@@ -1094,6 +1119,7 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd, struct fb_cmap cmap_from; struct fb_cmap_user cmap; struct fb_event event; @@ -121380,7 +123214,7 @@ index 76c1ad96fb37d4f07bbde6462f54825f566acbac..1d3b35ec8e393aac43dca0ec4566f7a7 void __user *argp = (void __user *)arg; long ret = 0; -@@ -1211,6 +1231,15 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd, +@@ -1211,6 +1237,15 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd, unlock_fb_info(info); console_unlock(); break; @@ -121396,7 +123230,7 @@ index 76c1ad96fb37d4f07bbde6462f54825f566acbac..1d3b35ec8e393aac43dca0ec4566f7a7 default: if (!lock_fb_info(info)) return -ENODEV; -@@ -1365,6 +1394,7 @@ static long fb_compat_ioctl(struct file *file, unsigned int cmd, +@@ -1365,6 +1400,7 @@ static long fb_compat_ioctl(struct file *file, unsigned int cmd, case FBIOPAN_DISPLAY: case FBIOGET_CON2FBMAP: case FBIOPUT_CON2FBMAP: @@ -121421,10 +123255,10 @@ index fb795c3b3c178ad3cd7c9e9e4547ffd492bac181..fa72af0c981710fe80bacf4cf6612f6d #define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */ #define FB_TYPE_PLANES 1 /* Non interleaved planes */ -From 09f78303217c82bcea463be03a7fa78f4fbf2ecf Mon Sep 17 00:00:00 2001 +From f020310cac2f1789749fac6d27a3a57d7914ab3c Mon Sep 17 00:00:00 2001 From: Harm Hanemaaijer Date: Thu, 20 Jun 2013 20:21:39 +0200 -Subject: [PATCH 056/160] Speed up console framebuffer imageblit function +Subject: [PATCH 066/132] Speed up console framebuffer imageblit function Especially on platforms with a slower CPU but a relatively high framebuffer fill bandwidth, like current ARM devices, the existing @@ -121633,10 +123467,10 @@ index a2bb276a8b2463eee98eb237c4647bc00cd93601..436494fba15abecb400ef28688466faf start_index, pitch_index); } else -From 7cd36a36fa32bb664979c11f37815b3ebf77ea57 Mon Sep 17 00:00:00 2001 +From a9bced7271d8d121ddb4e3178063db865d9414ff Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 8 May 2013 11:46:50 +0100 -Subject: [PATCH 057/160] enabling the realtime clock 1-wire chip DS1307 and +Subject: [PATCH 067/132] enabling the realtime clock 1-wire chip DS1307 and 1-wire on GPIO4 (as a module) 1-wire: Add support for configuring pin for w1-gpio kernel module @@ -121886,10 +123720,10 @@ index d58594a3232492e33f1dd4babd3798b03e0f0203..feae94256256316fd9d850c3d83325af unsigned int ext_pullup_enable_pin; unsigned int pullup_duration; -From 4f51b57a1425f129b5ba86caf22ebaf047410f93 Mon Sep 17 00:00:00 2001 +From c9839a81c9fc89a22c7d411993e642b10636b05c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 18 Dec 2013 22:16:19 +0000 -Subject: [PATCH 058/160] config: Enable CONFIG_MEMCG, but leave it disabled +Subject: [PATCH 068/132] config: Enable CONFIG_MEMCG, but leave it disabled (due to memory cost). Enable with cgroup_enable=memory. --- @@ -121897,10 +123731,10 @@ Subject: [PATCH 058/160] config: Enable CONFIG_MEMCG, but leave it disabled 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/kernel/cgroup.c b/kernel/cgroup.c -index 129a7ca5f1590b42e50326ad32e72210ce023c7d..1022c22af38c9ba8aef6551c4bc320f438a3d0af 100644 +index d6b729beba4930bbb1a1ddc4a6a6b8533bbf94e0..69e8d214f663572319f784fe17032b1ef4c588b4 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c -@@ -5592,7 +5592,7 @@ int __init cgroup_init_early(void) +@@ -5609,7 +5609,7 @@ int __init cgroup_init_early(void) return 0; } @@ -121909,7 +123743,7 @@ index 129a7ca5f1590b42e50326ad32e72210ce023c7d..1022c22af38c9ba8aef6551c4bc320f4 /** * cgroup_init - cgroup initialization -@@ -6122,6 +6122,28 @@ static int __init cgroup_no_v1(char *str) +@@ -6139,6 +6139,28 @@ static int __init cgroup_no_v1(char *str) } __setup("cgroup_no_v1=", cgroup_no_v1); @@ -121939,2619 +123773,10 @@ index 129a7ca5f1590b42e50326ad32e72210ce023c7d..1022c22af38c9ba8aef6551c4bc320f4 * css_tryget_online_from_dir - get corresponding css from a cgroup dentry * @dentry: directory dentry of interest -From ead527df060535604ed8b4a62e11b3114594a9d4 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Mon, 13 Apr 2015 17:16:29 +0100 -Subject: [PATCH 059/160] config: Add default configs - ---- - arch/arm/configs/bcm2709_defconfig | 1288 +++++++++++++++++++++++++++++++++++ - arch/arm/configs/bcmrpi_defconfig | 1296 ++++++++++++++++++++++++++++++++++++ - 2 files changed, 2584 insertions(+) - create mode 100644 arch/arm/configs/bcm2709_defconfig - create mode 100644 arch/arm/configs/bcmrpi_defconfig - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -new file mode 100644 -index 0000000000000000000000000000000000000000..af34386096ebc5b3c7d7cf60120e5ad48ba635b8 ---- /dev/null -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -0,0 +1,1288 @@ -+# CONFIG_ARM_PATCH_PHYS_VIRT is not set -+CONFIG_PHYS_OFFSET=0 -+CONFIG_LOCALVERSION="-v7" -+# CONFIG_LOCALVERSION_AUTO is not set -+CONFIG_SYSVIPC=y -+CONFIG_POSIX_MQUEUE=y -+CONFIG_NO_HZ=y -+CONFIG_HIGH_RES_TIMERS=y -+CONFIG_BSD_PROCESS_ACCT=y -+CONFIG_BSD_PROCESS_ACCT_V3=y -+CONFIG_TASKSTATS=y -+CONFIG_TASK_DELAY_ACCT=y -+CONFIG_TASK_XACCT=y -+CONFIG_TASK_IO_ACCOUNTING=y -+CONFIG_IKCONFIG=m -+CONFIG_IKCONFIG_PROC=y -+CONFIG_NMI_LOG_BUF_SHIFT=12 -+CONFIG_MEMCG=y -+CONFIG_BLK_CGROUP=y -+CONFIG_CGROUP_FREEZER=y -+CONFIG_CPUSETS=y -+CONFIG_CGROUP_DEVICE=y -+CONFIG_CGROUP_CPUACCT=y -+CONFIG_NAMESPACES=y -+CONFIG_SCHED_AUTOGROUP=y -+CONFIG_BLK_DEV_INITRD=y -+CONFIG_EMBEDDED=y -+# CONFIG_COMPAT_BRK is not set -+CONFIG_PROFILING=y -+CONFIG_OPROFILE=m -+CONFIG_KPROBES=y -+CONFIG_JUMP_LABEL=y -+CONFIG_MODULES=y -+CONFIG_MODULE_UNLOAD=y -+CONFIG_MODVERSIONS=y -+CONFIG_MODULE_SRCVERSION_ALL=y -+CONFIG_TRIM_UNUSED_KSYMS=y -+CONFIG_BLK_DEV_THROTTLING=y -+CONFIG_PARTITION_ADVANCED=y -+CONFIG_MAC_PARTITION=y -+CONFIG_CFQ_GROUP_IOSCHED=y -+CONFIG_ARCH_BCM2709=y -+# CONFIG_CACHE_L2X0 is not set -+CONFIG_SMP=y -+CONFIG_HAVE_ARM_ARCH_TIMER=y -+CONFIG_VMSPLIT_2G=y -+CONFIG_PREEMPT_VOLUNTARY=y -+CONFIG_AEABI=y -+CONFIG_OABI_COMPAT=y -+# CONFIG_CPU_SW_DOMAIN_PAN is not set -+CONFIG_CLEANCACHE=y -+CONFIG_FRONTSWAP=y -+CONFIG_CMA=y -+CONFIG_ZSMALLOC=m -+CONFIG_PGTABLE_MAPPING=y -+CONFIG_UACCESS_WITH_MEMCPY=y -+CONFIG_SECCOMP=y -+# CONFIG_ATAGS is not set -+CONFIG_ZBOOT_ROM_TEXT=0x0 -+CONFIG_ZBOOT_ROM_BSS=0x0 -+CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" -+CONFIG_CPU_FREQ=y -+CONFIG_CPU_FREQ_STAT=m -+CONFIG_CPU_FREQ_STAT_DETAILS=y -+CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y -+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -+CONFIG_CPU_FREQ_GOV_USERSPACE=y -+CONFIG_CPU_FREQ_GOV_ONDEMAND=y -+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y -+CONFIG_VFP=y -+CONFIG_NEON=y -+CONFIG_KERNEL_MODE_NEON=y -+CONFIG_BINFMT_MISC=m -+# CONFIG_SUSPEND is not set -+CONFIG_PM=y -+CONFIG_NET=y -+CONFIG_PACKET=y -+CONFIG_UNIX=y -+CONFIG_XFRM_USER=y -+CONFIG_NET_KEY=m -+CONFIG_INET=y -+CONFIG_IP_MULTICAST=y -+CONFIG_IP_ADVANCED_ROUTER=y -+CONFIG_IP_MULTIPLE_TABLES=y -+CONFIG_IP_ROUTE_MULTIPATH=y -+CONFIG_IP_ROUTE_VERBOSE=y -+CONFIG_IP_PNP=y -+CONFIG_IP_PNP_DHCP=y -+CONFIG_IP_PNP_RARP=y -+CONFIG_NET_IPIP=m -+CONFIG_NET_IPGRE_DEMUX=m -+CONFIG_NET_IPGRE=m -+CONFIG_IP_MROUTE=y -+CONFIG_IP_MROUTE_MULTIPLE_TABLES=y -+CONFIG_IP_PIMSM_V1=y -+CONFIG_IP_PIMSM_V2=y -+CONFIG_SYN_COOKIES=y -+CONFIG_INET_AH=m -+CONFIG_INET_ESP=m -+CONFIG_INET_IPCOMP=m -+CONFIG_INET_XFRM_MODE_TRANSPORT=m -+CONFIG_INET_XFRM_MODE_TUNNEL=m -+CONFIG_INET_XFRM_MODE_BEET=m -+CONFIG_INET_DIAG=m -+CONFIG_IPV6=m -+CONFIG_IPV6_ROUTER_PREF=y -+CONFIG_INET6_AH=m -+CONFIG_INET6_ESP=m -+CONFIG_INET6_IPCOMP=m -+CONFIG_IPV6_TUNNEL=m -+CONFIG_IPV6_MULTIPLE_TABLES=y -+CONFIG_IPV6_SUBTREES=y -+CONFIG_IPV6_MROUTE=y -+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y -+CONFIG_IPV6_PIMSM_V2=y -+CONFIG_NETFILTER=y -+CONFIG_NF_CONNTRACK=m -+CONFIG_NF_CONNTRACK_ZONES=y -+CONFIG_NF_CONNTRACK_EVENTS=y -+CONFIG_NF_CONNTRACK_TIMESTAMP=y -+CONFIG_NF_CT_PROTO_DCCP=m -+CONFIG_NF_CT_PROTO_UDPLITE=m -+CONFIG_NF_CONNTRACK_AMANDA=m -+CONFIG_NF_CONNTRACK_FTP=m -+CONFIG_NF_CONNTRACK_H323=m -+CONFIG_NF_CONNTRACK_IRC=m -+CONFIG_NF_CONNTRACK_NETBIOS_NS=m -+CONFIG_NF_CONNTRACK_SNMP=m -+CONFIG_NF_CONNTRACK_PPTP=m -+CONFIG_NF_CONNTRACK_SANE=m -+CONFIG_NF_CONNTRACK_SIP=m -+CONFIG_NF_CONNTRACK_TFTP=m -+CONFIG_NF_CT_NETLINK=m -+CONFIG_NETFILTER_XT_SET=m -+CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m -+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -+CONFIG_NETFILTER_XT_TARGET_DSCP=m -+CONFIG_NETFILTER_XT_TARGET_HMARK=m -+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m -+CONFIG_NETFILTER_XT_TARGET_LED=m -+CONFIG_NETFILTER_XT_TARGET_LOG=m -+CONFIG_NETFILTER_XT_TARGET_MARK=m -+CONFIG_NETFILTER_XT_TARGET_NFLOG=m -+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -+CONFIG_NETFILTER_XT_TARGET_TEE=m -+CONFIG_NETFILTER_XT_TARGET_TPROXY=m -+CONFIG_NETFILTER_XT_TARGET_TRACE=m -+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m -+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m -+CONFIG_NETFILTER_XT_MATCH_BPF=m -+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m -+CONFIG_NETFILTER_XT_MATCH_COMMENT=m -+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -+CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m -+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -+CONFIG_NETFILTER_XT_MATCH_CPU=m -+CONFIG_NETFILTER_XT_MATCH_DCCP=m -+CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m -+CONFIG_NETFILTER_XT_MATCH_DSCP=m -+CONFIG_NETFILTER_XT_MATCH_ESP=m -+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -+CONFIG_NETFILTER_XT_MATCH_HELPER=m -+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m -+CONFIG_NETFILTER_XT_MATCH_IPVS=m -+CONFIG_NETFILTER_XT_MATCH_LENGTH=m -+CONFIG_NETFILTER_XT_MATCH_LIMIT=m -+CONFIG_NETFILTER_XT_MATCH_MAC=m -+CONFIG_NETFILTER_XT_MATCH_MARK=m -+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -+CONFIG_NETFILTER_XT_MATCH_NFACCT=m -+CONFIG_NETFILTER_XT_MATCH_OSF=m -+CONFIG_NETFILTER_XT_MATCH_OWNER=m -+CONFIG_NETFILTER_XT_MATCH_POLICY=m -+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m -+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -+CONFIG_NETFILTER_XT_MATCH_QUOTA=m -+CONFIG_NETFILTER_XT_MATCH_RATEEST=m -+CONFIG_NETFILTER_XT_MATCH_REALM=m -+CONFIG_NETFILTER_XT_MATCH_RECENT=m -+CONFIG_NETFILTER_XT_MATCH_SOCKET=m -+CONFIG_NETFILTER_XT_MATCH_STATE=m -+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -+CONFIG_NETFILTER_XT_MATCH_STRING=m -+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -+CONFIG_NETFILTER_XT_MATCH_TIME=m -+CONFIG_NETFILTER_XT_MATCH_U32=m -+CONFIG_IP_SET=m -+CONFIG_IP_SET_BITMAP_IP=m -+CONFIG_IP_SET_BITMAP_IPMAC=m -+CONFIG_IP_SET_BITMAP_PORT=m -+CONFIG_IP_SET_HASH_IP=m -+CONFIG_IP_SET_HASH_IPPORT=m -+CONFIG_IP_SET_HASH_IPPORTIP=m -+CONFIG_IP_SET_HASH_IPPORTNET=m -+CONFIG_IP_SET_HASH_NET=m -+CONFIG_IP_SET_HASH_NETPORT=m -+CONFIG_IP_SET_HASH_NETIFACE=m -+CONFIG_IP_SET_LIST_SET=m -+CONFIG_IP_VS=m -+CONFIG_IP_VS_PROTO_TCP=y -+CONFIG_IP_VS_PROTO_UDP=y -+CONFIG_IP_VS_PROTO_ESP=y -+CONFIG_IP_VS_PROTO_AH=y -+CONFIG_IP_VS_PROTO_SCTP=y -+CONFIG_IP_VS_RR=m -+CONFIG_IP_VS_WRR=m -+CONFIG_IP_VS_LC=m -+CONFIG_IP_VS_WLC=m -+CONFIG_IP_VS_LBLC=m -+CONFIG_IP_VS_LBLCR=m -+CONFIG_IP_VS_DH=m -+CONFIG_IP_VS_SH=m -+CONFIG_IP_VS_SED=m -+CONFIG_IP_VS_NQ=m -+CONFIG_IP_VS_FTP=m -+CONFIG_IP_VS_PE_SIP=m -+CONFIG_NF_CONNTRACK_IPV4=m -+CONFIG_IP_NF_IPTABLES=m -+CONFIG_IP_NF_MATCH_AH=m -+CONFIG_IP_NF_MATCH_ECN=m -+CONFIG_IP_NF_MATCH_RPFILTER=m -+CONFIG_IP_NF_MATCH_TTL=m -+CONFIG_IP_NF_FILTER=m -+CONFIG_IP_NF_TARGET_REJECT=m -+CONFIG_IP_NF_NAT=m -+CONFIG_IP_NF_TARGET_MASQUERADE=m -+CONFIG_IP_NF_TARGET_NETMAP=m -+CONFIG_IP_NF_TARGET_REDIRECT=m -+CONFIG_IP_NF_MANGLE=m -+CONFIG_IP_NF_TARGET_CLUSTERIP=m -+CONFIG_IP_NF_TARGET_ECN=m -+CONFIG_IP_NF_TARGET_TTL=m -+CONFIG_IP_NF_RAW=m -+CONFIG_IP_NF_ARPTABLES=m -+CONFIG_IP_NF_ARPFILTER=m -+CONFIG_IP_NF_ARP_MANGLE=m -+CONFIG_NF_CONNTRACK_IPV6=m -+CONFIG_IP6_NF_IPTABLES=m -+CONFIG_IP6_NF_MATCH_AH=m -+CONFIG_IP6_NF_MATCH_EUI64=m -+CONFIG_IP6_NF_MATCH_FRAG=m -+CONFIG_IP6_NF_MATCH_OPTS=m -+CONFIG_IP6_NF_MATCH_HL=m -+CONFIG_IP6_NF_MATCH_IPV6HEADER=m -+CONFIG_IP6_NF_MATCH_MH=m -+CONFIG_IP6_NF_MATCH_RPFILTER=m -+CONFIG_IP6_NF_MATCH_RT=m -+CONFIG_IP6_NF_TARGET_HL=m -+CONFIG_IP6_NF_FILTER=m -+CONFIG_IP6_NF_TARGET_REJECT=m -+CONFIG_IP6_NF_MANGLE=m -+CONFIG_IP6_NF_RAW=m -+CONFIG_IP6_NF_NAT=m -+CONFIG_IP6_NF_TARGET_MASQUERADE=m -+CONFIG_IP6_NF_TARGET_NPT=m -+CONFIG_BRIDGE_NF_EBTABLES=m -+CONFIG_BRIDGE_EBT_BROUTE=m -+CONFIG_BRIDGE_EBT_T_FILTER=m -+CONFIG_BRIDGE_EBT_T_NAT=m -+CONFIG_BRIDGE_EBT_802_3=m -+CONFIG_BRIDGE_EBT_AMONG=m -+CONFIG_BRIDGE_EBT_ARP=m -+CONFIG_BRIDGE_EBT_IP=m -+CONFIG_BRIDGE_EBT_IP6=m -+CONFIG_BRIDGE_EBT_LIMIT=m -+CONFIG_BRIDGE_EBT_MARK=m -+CONFIG_BRIDGE_EBT_PKTTYPE=m -+CONFIG_BRIDGE_EBT_STP=m -+CONFIG_BRIDGE_EBT_VLAN=m -+CONFIG_BRIDGE_EBT_ARPREPLY=m -+CONFIG_BRIDGE_EBT_DNAT=m -+CONFIG_BRIDGE_EBT_MARK_T=m -+CONFIG_BRIDGE_EBT_REDIRECT=m -+CONFIG_BRIDGE_EBT_SNAT=m -+CONFIG_BRIDGE_EBT_LOG=m -+CONFIG_BRIDGE_EBT_NFLOG=m -+CONFIG_SCTP_COOKIE_HMAC_SHA1=y -+CONFIG_ATM=m -+CONFIG_L2TP=m -+CONFIG_L2TP_V3=y -+CONFIG_L2TP_IP=m -+CONFIG_L2TP_ETH=m -+CONFIG_BRIDGE=m -+CONFIG_VLAN_8021Q=m -+CONFIG_VLAN_8021Q_GVRP=y -+CONFIG_ATALK=m -+CONFIG_6LOWPAN=m -+CONFIG_IEEE802154=m -+CONFIG_IEEE802154_6LOWPAN=m -+CONFIG_MAC802154=m -+CONFIG_NET_SCHED=y -+CONFIG_NET_SCH_CBQ=m -+CONFIG_NET_SCH_HTB=m -+CONFIG_NET_SCH_HFSC=m -+CONFIG_NET_SCH_PRIO=m -+CONFIG_NET_SCH_MULTIQ=m -+CONFIG_NET_SCH_RED=m -+CONFIG_NET_SCH_SFB=m -+CONFIG_NET_SCH_SFQ=m -+CONFIG_NET_SCH_TEQL=m -+CONFIG_NET_SCH_TBF=m -+CONFIG_NET_SCH_GRED=m -+CONFIG_NET_SCH_DSMARK=m -+CONFIG_NET_SCH_NETEM=m -+CONFIG_NET_SCH_DRR=m -+CONFIG_NET_SCH_MQPRIO=m -+CONFIG_NET_SCH_CHOKE=m -+CONFIG_NET_SCH_QFQ=m -+CONFIG_NET_SCH_CODEL=m -+CONFIG_NET_SCH_FQ_CODEL=m -+CONFIG_NET_SCH_INGRESS=m -+CONFIG_NET_SCH_PLUG=m -+CONFIG_NET_CLS_BASIC=m -+CONFIG_NET_CLS_TCINDEX=m -+CONFIG_NET_CLS_ROUTE4=m -+CONFIG_NET_CLS_FW=m -+CONFIG_NET_CLS_U32=m -+CONFIG_CLS_U32_MARK=y -+CONFIG_NET_CLS_RSVP=m -+CONFIG_NET_CLS_RSVP6=m -+CONFIG_NET_CLS_FLOW=m -+CONFIG_NET_CLS_CGROUP=m -+CONFIG_NET_EMATCH=y -+CONFIG_NET_EMATCH_CMP=m -+CONFIG_NET_EMATCH_NBYTE=m -+CONFIG_NET_EMATCH_U32=m -+CONFIG_NET_EMATCH_META=m -+CONFIG_NET_EMATCH_TEXT=m -+CONFIG_NET_EMATCH_IPSET=m -+CONFIG_NET_CLS_ACT=y -+CONFIG_NET_ACT_POLICE=m -+CONFIG_NET_ACT_GACT=m -+CONFIG_GACT_PROB=y -+CONFIG_NET_ACT_MIRRED=m -+CONFIG_NET_ACT_IPT=m -+CONFIG_NET_ACT_NAT=m -+CONFIG_NET_ACT_PEDIT=m -+CONFIG_NET_ACT_SIMP=m -+CONFIG_NET_ACT_SKBEDIT=m -+CONFIG_NET_ACT_CSUM=m -+CONFIG_BATMAN_ADV=m -+CONFIG_OPENVSWITCH=m -+CONFIG_NET_PKTGEN=m -+CONFIG_HAMRADIO=y -+CONFIG_AX25=m -+CONFIG_NETROM=m -+CONFIG_ROSE=m -+CONFIG_MKISS=m -+CONFIG_6PACK=m -+CONFIG_BPQETHER=m -+CONFIG_BAYCOM_SER_FDX=m -+CONFIG_BAYCOM_SER_HDX=m -+CONFIG_YAM=m -+CONFIG_CAN=m -+CONFIG_CAN_VCAN=m -+CONFIG_CAN_MCP251X=m -+CONFIG_IRDA=m -+CONFIG_IRLAN=m -+CONFIG_IRNET=m -+CONFIG_IRCOMM=m -+CONFIG_IRDA_ULTRA=y -+CONFIG_IRDA_CACHE_LAST_LSAP=y -+CONFIG_IRDA_FAST_RR=y -+CONFIG_IRTTY_SIR=m -+CONFIG_KINGSUN_DONGLE=m -+CONFIG_KSDAZZLE_DONGLE=m -+CONFIG_KS959_DONGLE=m -+CONFIG_USB_IRDA=m -+CONFIG_SIGMATEL_FIR=m -+CONFIG_MCS_FIR=m -+CONFIG_BT=m -+CONFIG_BT_RFCOMM=m -+CONFIG_BT_RFCOMM_TTY=y -+CONFIG_BT_BNEP=m -+CONFIG_BT_BNEP_MC_FILTER=y -+CONFIG_BT_BNEP_PROTO_FILTER=y -+CONFIG_BT_HIDP=m -+CONFIG_BT_6LOWPAN=m -+CONFIG_BT_HCIBTUSB=m -+CONFIG_BT_HCIUART=m -+CONFIG_BT_HCIUART_3WIRE=y -+CONFIG_BT_HCIUART_BCM=y -+CONFIG_BT_HCIBCM203X=m -+CONFIG_BT_HCIBPA10X=m -+CONFIG_BT_HCIBFUSB=m -+CONFIG_BT_HCIVHCI=m -+CONFIG_BT_MRVL=m -+CONFIG_BT_MRVL_SDIO=m -+CONFIG_BT_ATH3K=m -+CONFIG_BT_WILINK=m -+CONFIG_MAC80211=m -+CONFIG_MAC80211_MESH=y -+CONFIG_WIMAX=m -+CONFIG_RFKILL=m -+CONFIG_RFKILL_INPUT=y -+CONFIG_NET_9P=m -+CONFIG_NFC=m -+CONFIG_DEVTMPFS=y -+CONFIG_DEVTMPFS_MOUNT=y -+CONFIG_DMA_CMA=y -+CONFIG_CMA_SIZE_MBYTES=5 -+CONFIG_MTD=m -+CONFIG_MTD_BLOCK=m -+CONFIG_MTD_NAND=m -+CONFIG_MTD_UBI=m -+CONFIG_OF_CONFIGFS=y -+CONFIG_ZRAM=m -+CONFIG_ZRAM_LZ4_COMPRESS=y -+CONFIG_BLK_DEV_LOOP=y -+CONFIG_BLK_DEV_CRYPTOLOOP=m -+CONFIG_BLK_DEV_DRBD=m -+CONFIG_BLK_DEV_NBD=m -+CONFIG_BLK_DEV_RAM=y -+CONFIG_CDROM_PKTCDVD=m -+CONFIG_ATA_OVER_ETH=m -+CONFIG_EEPROM_AT24=m -+CONFIG_TI_ST=m -+CONFIG_SCSI=y -+# CONFIG_SCSI_PROC_FS is not set -+CONFIG_BLK_DEV_SD=y -+CONFIG_CHR_DEV_ST=m -+CONFIG_CHR_DEV_OSST=m -+CONFIG_BLK_DEV_SR=m -+CONFIG_CHR_DEV_SG=m -+CONFIG_SCSI_ISCSI_ATTRS=y -+CONFIG_ISCSI_TCP=m -+CONFIG_ISCSI_BOOT_SYSFS=m -+CONFIG_MD=y -+CONFIG_MD_LINEAR=m -+CONFIG_MD_RAID0=m -+CONFIG_BLK_DEV_DM=m -+CONFIG_DM_CRYPT=m -+CONFIG_DM_SNAPSHOT=m -+CONFIG_DM_THIN_PROVISIONING=m -+CONFIG_DM_MIRROR=m -+CONFIG_DM_LOG_USERSPACE=m -+CONFIG_DM_RAID=m -+CONFIG_DM_ZERO=m -+CONFIG_DM_DELAY=m -+CONFIG_NETDEVICES=y -+CONFIG_BONDING=m -+CONFIG_DUMMY=m -+CONFIG_IFB=m -+CONFIG_MACVLAN=m -+CONFIG_NETCONSOLE=m -+CONFIG_TUN=m -+CONFIG_VETH=m -+CONFIG_ENC28J60=m -+CONFIG_QCA7000=m -+CONFIG_MDIO_BITBANG=m -+CONFIG_PPP=m -+CONFIG_PPP_BSDCOMP=m -+CONFIG_PPP_DEFLATE=m -+CONFIG_PPP_FILTER=y -+CONFIG_PPP_MPPE=m -+CONFIG_PPP_MULTILINK=y -+CONFIG_PPPOATM=m -+CONFIG_PPPOE=m -+CONFIG_PPPOL2TP=m -+CONFIG_PPP_ASYNC=m -+CONFIG_PPP_SYNC_TTY=m -+CONFIG_SLIP=m -+CONFIG_SLIP_COMPRESSED=y -+CONFIG_SLIP_SMART=y -+CONFIG_USB_CATC=m -+CONFIG_USB_KAWETH=m -+CONFIG_USB_PEGASUS=m -+CONFIG_USB_RTL8150=m -+CONFIG_USB_RTL8152=m -+CONFIG_USB_USBNET=y -+CONFIG_USB_NET_AX8817X=m -+CONFIG_USB_NET_AX88179_178A=m -+CONFIG_USB_NET_CDCETHER=m -+CONFIG_USB_NET_CDC_EEM=m -+CONFIG_USB_NET_CDC_NCM=m -+CONFIG_USB_NET_HUAWEI_CDC_NCM=m -+CONFIG_USB_NET_CDC_MBIM=m -+CONFIG_USB_NET_DM9601=m -+CONFIG_USB_NET_SR9700=m -+CONFIG_USB_NET_SR9800=m -+CONFIG_USB_NET_SMSC75XX=m -+CONFIG_USB_NET_SMSC95XX=y -+CONFIG_USB_NET_GL620A=m -+CONFIG_USB_NET_NET1080=m -+CONFIG_USB_NET_PLUSB=m -+CONFIG_USB_NET_MCS7830=m -+CONFIG_USB_NET_CDC_SUBSET=m -+CONFIG_USB_ALI_M5632=y -+CONFIG_USB_AN2720=y -+CONFIG_USB_EPSON2888=y -+CONFIG_USB_KC2190=y -+CONFIG_USB_NET_ZAURUS=m -+CONFIG_USB_NET_CX82310_ETH=m -+CONFIG_USB_NET_KALMIA=m -+CONFIG_USB_NET_QMI_WWAN=m -+CONFIG_USB_HSO=m -+CONFIG_USB_NET_INT51X1=m -+CONFIG_USB_IPHETH=m -+CONFIG_USB_SIERRA_NET=m -+CONFIG_USB_VL600=m -+CONFIG_ATH9K=m -+CONFIG_ATH9K_HTC=m -+CONFIG_CARL9170=m -+CONFIG_ATH6KL=m -+CONFIG_ATH6KL_USB=m -+CONFIG_AR5523=m -+CONFIG_AT76C50X_USB=m -+CONFIG_B43=m -+# CONFIG_B43_PHY_N is not set -+CONFIG_B43LEGACY=m -+CONFIG_BRCMFMAC=m -+CONFIG_BRCMFMAC_USB=y -+CONFIG_HOSTAP=m -+CONFIG_P54_COMMON=m -+CONFIG_P54_USB=m -+CONFIG_LIBERTAS=m -+CONFIG_LIBERTAS_USB=m -+CONFIG_LIBERTAS_SDIO=m -+CONFIG_LIBERTAS_THINFIRM=m -+CONFIG_LIBERTAS_THINFIRM_USB=m -+CONFIG_MWIFIEX=m -+CONFIG_MWIFIEX_SDIO=m -+CONFIG_MT7601U=m -+CONFIG_RT2X00=m -+CONFIG_RT2500USB=m -+CONFIG_RT73USB=m -+CONFIG_RT2800USB=m -+CONFIG_RT2800USB_RT3573=y -+CONFIG_RT2800USB_RT53XX=y -+CONFIG_RT2800USB_RT55XX=y -+CONFIG_RT2800USB_UNKNOWN=y -+CONFIG_RTL8187=m -+CONFIG_RTL8192CU=m -+CONFIG_USB_ZD1201=m -+CONFIG_ZD1211RW=m -+CONFIG_MAC80211_HWSIM=m -+CONFIG_USB_NET_RNDIS_WLAN=m -+CONFIG_WIMAX_I2400M_USB=m -+CONFIG_IEEE802154_AT86RF230=m -+CONFIG_IEEE802154_MRF24J40=m -+CONFIG_IEEE802154_CC2520=m -+CONFIG_INPUT_POLLDEV=m -+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -+CONFIG_INPUT_JOYDEV=m -+CONFIG_INPUT_EVDEV=m -+# CONFIG_KEYBOARD_ATKBD is not set -+CONFIG_KEYBOARD_GPIO=m -+# CONFIG_INPUT_MOUSE is not set -+CONFIG_INPUT_JOYSTICK=y -+CONFIG_JOYSTICK_IFORCE=m -+CONFIG_JOYSTICK_IFORCE_USB=y -+CONFIG_JOYSTICK_XPAD=m -+CONFIG_JOYSTICK_XPAD_FF=y -+CONFIG_JOYSTICK_XPAD_LEDS=y -+CONFIG_JOYSTICK_RPISENSE=m -+CONFIG_INPUT_TOUCHSCREEN=y -+CONFIG_TOUCHSCREEN_ADS7846=m -+CONFIG_TOUCHSCREEN_EGALAX=m -+CONFIG_TOUCHSCREEN_FT6236=m -+CONFIG_TOUCHSCREEN_RPI_FT5406=m -+CONFIG_TOUCHSCREEN_USB_COMPOSITE=m -+CONFIG_TOUCHSCREEN_STMPE=m -+CONFIG_INPUT_MISC=y -+CONFIG_INPUT_AD714X=m -+CONFIG_INPUT_ATI_REMOTE2=m -+CONFIG_INPUT_KEYSPAN_REMOTE=m -+CONFIG_INPUT_POWERMATE=m -+CONFIG_INPUT_YEALINK=m -+CONFIG_INPUT_CM109=m -+CONFIG_INPUT_UINPUT=m -+CONFIG_INPUT_GPIO_ROTARY_ENCODER=m -+CONFIG_INPUT_ADXL34X=m -+CONFIG_INPUT_CMA3000=m -+CONFIG_SERIO=m -+CONFIG_SERIO_RAW=m -+CONFIG_GAMEPORT=m -+CONFIG_GAMEPORT_NS558=m -+CONFIG_GAMEPORT_L4=m -+CONFIG_BRCM_CHAR_DRIVERS=y -+CONFIG_BCM_VC_CMA=y -+CONFIG_BCM_VCIO=y -+CONFIG_BCM_VC_SM=y -+CONFIG_DEVPTS_MULTIPLE_INSTANCES=y -+# CONFIG_LEGACY_PTYS is not set -+# CONFIG_DEVKMEM is not set -+CONFIG_SERIAL_8250=y -+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set -+CONFIG_SERIAL_8250_CONSOLE=y -+# CONFIG_SERIAL_8250_DMA is not set -+CONFIG_SERIAL_8250_NR_UARTS=1 -+CONFIG_SERIAL_8250_RUNTIME_UARTS=0 -+CONFIG_SERIAL_OF_PLATFORM=y -+CONFIG_SERIAL_AMBA_PL011=y -+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -+CONFIG_TTY_PRINTK=y -+CONFIG_HW_RANDOM=y -+CONFIG_RAW_DRIVER=y -+CONFIG_I2C=y -+CONFIG_I2C_CHARDEV=m -+CONFIG_I2C_MUX_PCA954x=m -+CONFIG_I2C_BCM2708=m -+CONFIG_I2C_GPIO=m -+CONFIG_SPI=y -+CONFIG_SPI_BCM2835=m -+CONFIG_SPI_BCM2835AUX=m -+CONFIG_SPI_SPIDEV=y -+CONFIG_PPS=m -+CONFIG_PPS_CLIENT_LDISC=m -+CONFIG_PPS_CLIENT_GPIO=m -+CONFIG_GPIO_SYSFS=y -+CONFIG_GPIO_BCM_VIRT=y -+CONFIG_GPIO_ARIZONA=m -+CONFIG_GPIO_STMPE=y -+CONFIG_GPIO_MCP23S08=m -+CONFIG_W1=m -+CONFIG_W1_MASTER_DS2490=m -+CONFIG_W1_MASTER_DS2482=m -+CONFIG_W1_MASTER_DS1WM=m -+CONFIG_W1_MASTER_GPIO=m -+CONFIG_W1_SLAVE_THERM=m -+CONFIG_W1_SLAVE_SMEM=m -+CONFIG_W1_SLAVE_DS2408=m -+CONFIG_W1_SLAVE_DS2413=m -+CONFIG_W1_SLAVE_DS2406=m -+CONFIG_W1_SLAVE_DS2423=m -+CONFIG_W1_SLAVE_DS2431=m -+CONFIG_W1_SLAVE_DS2433=m -+CONFIG_W1_SLAVE_DS2760=m -+CONFIG_W1_SLAVE_DS2780=m -+CONFIG_W1_SLAVE_DS2781=m -+CONFIG_W1_SLAVE_DS28E04=m -+CONFIG_W1_SLAVE_BQ27000=m -+CONFIG_BATTERY_DS2760=m -+CONFIG_POWER_RESET=y -+CONFIG_POWER_RESET_GPIO=y -+CONFIG_HWMON=m -+CONFIG_SENSORS_SHT21=m -+CONFIG_SENSORS_SHTC1=m -+CONFIG_THERMAL=y -+CONFIG_THERMAL_BCM2835=y -+CONFIG_WATCHDOG=y -+CONFIG_BCM2835_WDT=m -+CONFIG_UCB1400_CORE=m -+CONFIG_MFD_STMPE=y -+CONFIG_STMPE_SPI=y -+CONFIG_MFD_ARIZONA_I2C=m -+CONFIG_MFD_ARIZONA_SPI=m -+CONFIG_MFD_WM5102=y -+CONFIG_MEDIA_SUPPORT=m -+CONFIG_MEDIA_CAMERA_SUPPORT=y -+CONFIG_MEDIA_ANALOG_TV_SUPPORT=y -+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y -+CONFIG_MEDIA_RADIO_SUPPORT=y -+CONFIG_MEDIA_RC_SUPPORT=y -+CONFIG_MEDIA_CONTROLLER=y -+CONFIG_LIRC=m -+CONFIG_RC_DEVICES=y -+CONFIG_RC_ATI_REMOTE=m -+CONFIG_IR_IMON=m -+CONFIG_IR_MCEUSB=m -+CONFIG_IR_REDRAT3=m -+CONFIG_IR_STREAMZAP=m -+CONFIG_IR_IGUANA=m -+CONFIG_IR_TTUSBIR=m -+CONFIG_RC_LOOPBACK=m -+CONFIG_IR_GPIO_CIR=m -+CONFIG_MEDIA_USB_SUPPORT=y -+CONFIG_USB_VIDEO_CLASS=m -+CONFIG_USB_M5602=m -+CONFIG_USB_STV06XX=m -+CONFIG_USB_GL860=m -+CONFIG_USB_GSPCA_BENQ=m -+CONFIG_USB_GSPCA_CONEX=m -+CONFIG_USB_GSPCA_CPIA1=m -+CONFIG_USB_GSPCA_DTCS033=m -+CONFIG_USB_GSPCA_ETOMS=m -+CONFIG_USB_GSPCA_FINEPIX=m -+CONFIG_USB_GSPCA_JEILINJ=m -+CONFIG_USB_GSPCA_JL2005BCD=m -+CONFIG_USB_GSPCA_KINECT=m -+CONFIG_USB_GSPCA_KONICA=m -+CONFIG_USB_GSPCA_MARS=m -+CONFIG_USB_GSPCA_MR97310A=m -+CONFIG_USB_GSPCA_NW80X=m -+CONFIG_USB_GSPCA_OV519=m -+CONFIG_USB_GSPCA_OV534=m -+CONFIG_USB_GSPCA_OV534_9=m -+CONFIG_USB_GSPCA_PAC207=m -+CONFIG_USB_GSPCA_PAC7302=m -+CONFIG_USB_GSPCA_PAC7311=m -+CONFIG_USB_GSPCA_SE401=m -+CONFIG_USB_GSPCA_SN9C2028=m -+CONFIG_USB_GSPCA_SN9C20X=m -+CONFIG_USB_GSPCA_SONIXB=m -+CONFIG_USB_GSPCA_SONIXJ=m -+CONFIG_USB_GSPCA_SPCA500=m -+CONFIG_USB_GSPCA_SPCA501=m -+CONFIG_USB_GSPCA_SPCA505=m -+CONFIG_USB_GSPCA_SPCA506=m -+CONFIG_USB_GSPCA_SPCA508=m -+CONFIG_USB_GSPCA_SPCA561=m -+CONFIG_USB_GSPCA_SPCA1528=m -+CONFIG_USB_GSPCA_SQ905=m -+CONFIG_USB_GSPCA_SQ905C=m -+CONFIG_USB_GSPCA_SQ930X=m -+CONFIG_USB_GSPCA_STK014=m -+CONFIG_USB_GSPCA_STK1135=m -+CONFIG_USB_GSPCA_STV0680=m -+CONFIG_USB_GSPCA_SUNPLUS=m -+CONFIG_USB_GSPCA_T613=m -+CONFIG_USB_GSPCA_TOPRO=m -+CONFIG_USB_GSPCA_TV8532=m -+CONFIG_USB_GSPCA_VC032X=m -+CONFIG_USB_GSPCA_VICAM=m -+CONFIG_USB_GSPCA_XIRLINK_CIT=m -+CONFIG_USB_GSPCA_ZC3XX=m -+CONFIG_USB_PWC=m -+CONFIG_VIDEO_CPIA2=m -+CONFIG_USB_ZR364XX=m -+CONFIG_USB_STKWEBCAM=m -+CONFIG_USB_S2255=m -+CONFIG_VIDEO_USBTV=m -+CONFIG_VIDEO_PVRUSB2=m -+CONFIG_VIDEO_HDPVR=m -+CONFIG_VIDEO_USBVISION=m -+CONFIG_VIDEO_STK1160_COMMON=m -+CONFIG_VIDEO_STK1160_AC97=y -+CONFIG_VIDEO_GO7007=m -+CONFIG_VIDEO_GO7007_USB=m -+CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m -+CONFIG_VIDEO_AU0828=m -+CONFIG_VIDEO_AU0828_RC=y -+CONFIG_VIDEO_CX231XX=m -+CONFIG_VIDEO_CX231XX_ALSA=m -+CONFIG_VIDEO_CX231XX_DVB=m -+CONFIG_VIDEO_TM6000=m -+CONFIG_VIDEO_TM6000_ALSA=m -+CONFIG_VIDEO_TM6000_DVB=m -+CONFIG_DVB_USB=m -+CONFIG_DVB_USB_A800=m -+CONFIG_DVB_USB_DIBUSB_MB=m -+CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y -+CONFIG_DVB_USB_DIBUSB_MC=m -+CONFIG_DVB_USB_DIB0700=m -+CONFIG_DVB_USB_UMT_010=m -+CONFIG_DVB_USB_CXUSB=m -+CONFIG_DVB_USB_M920X=m -+CONFIG_DVB_USB_DIGITV=m -+CONFIG_DVB_USB_VP7045=m -+CONFIG_DVB_USB_VP702X=m -+CONFIG_DVB_USB_GP8PSK=m -+CONFIG_DVB_USB_NOVA_T_USB2=m -+CONFIG_DVB_USB_TTUSB2=m -+CONFIG_DVB_USB_DTT200U=m -+CONFIG_DVB_USB_OPERA1=m -+CONFIG_DVB_USB_AF9005=m -+CONFIG_DVB_USB_AF9005_REMOTE=m -+CONFIG_DVB_USB_PCTV452E=m -+CONFIG_DVB_USB_DW2102=m -+CONFIG_DVB_USB_CINERGY_T2=m -+CONFIG_DVB_USB_DTV5100=m -+CONFIG_DVB_USB_FRIIO=m -+CONFIG_DVB_USB_AZ6027=m -+CONFIG_DVB_USB_TECHNISAT_USB2=m -+CONFIG_DVB_USB_V2=m -+CONFIG_DVB_USB_AF9015=m -+CONFIG_DVB_USB_AF9035=m -+CONFIG_DVB_USB_ANYSEE=m -+CONFIG_DVB_USB_AU6610=m -+CONFIG_DVB_USB_AZ6007=m -+CONFIG_DVB_USB_CE6230=m -+CONFIG_DVB_USB_EC168=m -+CONFIG_DVB_USB_GL861=m -+CONFIG_DVB_USB_LME2510=m -+CONFIG_DVB_USB_MXL111SF=m -+CONFIG_DVB_USB_RTL28XXU=m -+CONFIG_DVB_USB_DVBSKY=m -+CONFIG_SMS_USB_DRV=m -+CONFIG_DVB_B2C2_FLEXCOP_USB=m -+CONFIG_DVB_AS102=m -+CONFIG_VIDEO_EM28XX=m -+CONFIG_VIDEO_EM28XX_V4L2=m -+CONFIG_VIDEO_EM28XX_ALSA=m -+CONFIG_VIDEO_EM28XX_DVB=m -+CONFIG_V4L_PLATFORM_DRIVERS=y -+CONFIG_VIDEO_BCM2835=y -+CONFIG_VIDEO_BCM2835_MMAL=m -+CONFIG_RADIO_SI470X=y -+CONFIG_USB_SI470X=m -+CONFIG_I2C_SI470X=m -+CONFIG_RADIO_SI4713=m -+CONFIG_I2C_SI4713=m -+CONFIG_USB_MR800=m -+CONFIG_USB_DSBR=m -+CONFIG_RADIO_SHARK=m -+CONFIG_RADIO_SHARK2=m -+CONFIG_USB_KEENE=m -+CONFIG_USB_MA901=m -+CONFIG_RADIO_TEA5764=m -+CONFIG_RADIO_SAA7706H=m -+CONFIG_RADIO_TEF6862=m -+CONFIG_RADIO_WL1273=m -+CONFIG_RADIO_WL128X=m -+# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set -+CONFIG_VIDEO_UDA1342=m -+CONFIG_VIDEO_SONY_BTF_MPX=m -+CONFIG_VIDEO_TVP5150=m -+CONFIG_VIDEO_TW2804=m -+CONFIG_VIDEO_TW9903=m -+CONFIG_VIDEO_TW9906=m -+CONFIG_VIDEO_OV7640=m -+CONFIG_VIDEO_MT9V011=m -+CONFIG_DRM=m -+CONFIG_DRM_LOAD_EDID_FIRMWARE=y -+CONFIG_DRM_UDL=m -+CONFIG_DRM_VC4=m -+CONFIG_FB=y -+CONFIG_FB_BCM2708=y -+CONFIG_FB_UDL=m -+CONFIG_FB_SSD1307=m -+CONFIG_FB_RPISENSE=m -+# CONFIG_BACKLIGHT_GENERIC is not set -+CONFIG_BACKLIGHT_RPI=m -+CONFIG_BACKLIGHT_GPIO=m -+CONFIG_FRAMEBUFFER_CONSOLE=y -+CONFIG_LOGO=y -+# CONFIG_LOGO_LINUX_MONO is not set -+# CONFIG_LOGO_LINUX_VGA16 is not set -+CONFIG_SOUND=y -+CONFIG_SND=m -+CONFIG_SND_SEQUENCER=m -+CONFIG_SND_SEQ_DUMMY=m -+CONFIG_SND_MIXER_OSS=m -+CONFIG_SND_PCM_OSS=m -+CONFIG_SND_SEQUENCER_OSS=y -+CONFIG_SND_HRTIMER=m -+CONFIG_SND_DUMMY=m -+CONFIG_SND_ALOOP=m -+CONFIG_SND_VIRMIDI=m -+CONFIG_SND_MTPAV=m -+CONFIG_SND_SERIAL_U16550=m -+CONFIG_SND_MPU401=m -+CONFIG_SND_BCM2835=m -+CONFIG_SND_USB_AUDIO=m -+CONFIG_SND_USB_UA101=m -+CONFIG_SND_USB_CAIAQ=m -+CONFIG_SND_USB_CAIAQ_INPUT=y -+CONFIG_SND_USB_6FIRE=m -+CONFIG_SND_SOC=m -+CONFIG_SND_BCM2835_SOC_I2S=m -+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m -+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m -+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m -+CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m -+CONFIG_SND_BCM2708_SOC_RPI_DAC=m -+CONFIG_SND_BCM2708_SOC_RPI_PROTO=m -+CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m -+CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m -+CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m -+CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m -+CONFIG_SND_BCM2708_SOC_RASPIDAC3=m -+CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m -+CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m -+CONFIG_SND_DIGIDAC1_SOUNDCARD=m -+CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m -+CONFIG_SND_SOC_ADAU1701=m -+CONFIG_SND_SOC_WM8804_I2C=m -+CONFIG_SND_SIMPLE_CARD=m -+CONFIG_SOUND_PRIME=m -+CONFIG_HIDRAW=y -+CONFIG_UHID=m -+CONFIG_HID_A4TECH=m -+CONFIG_HID_ACRUX=m -+CONFIG_HID_APPLE=m -+CONFIG_HID_BELKIN=m -+CONFIG_HID_BETOP_FF=m -+CONFIG_HID_CHERRY=m -+CONFIG_HID_CHICONY=m -+CONFIG_HID_CYPRESS=m -+CONFIG_HID_DRAGONRISE=m -+CONFIG_HID_EMS_FF=m -+CONFIG_HID_ELECOM=m -+CONFIG_HID_ELO=m -+CONFIG_HID_EZKEY=m -+CONFIG_HID_HOLTEK=m -+CONFIG_HID_KEYTOUCH=m -+CONFIG_HID_KYE=m -+CONFIG_HID_UCLOGIC=m -+CONFIG_HID_WALTOP=m -+CONFIG_HID_GYRATION=m -+CONFIG_HID_TWINHAN=m -+CONFIG_HID_KENSINGTON=m -+CONFIG_HID_LCPOWER=m -+CONFIG_HID_LOGITECH=m -+CONFIG_HID_LOGITECH_DJ=m -+CONFIG_LOGITECH_FF=y -+CONFIG_LOGIRUMBLEPAD2_FF=y -+CONFIG_LOGIG940_FF=y -+CONFIG_HID_MAGICMOUSE=m -+CONFIG_HID_MICROSOFT=m -+CONFIG_HID_MONTEREY=m -+CONFIG_HID_MULTITOUCH=m -+CONFIG_HID_NTRIG=m -+CONFIG_HID_ORTEK=m -+CONFIG_HID_PANTHERLORD=m -+CONFIG_HID_PETALYNX=m -+CONFIG_HID_PICOLCD=m -+CONFIG_HID_ROCCAT=m -+CONFIG_HID_SAMSUNG=m -+CONFIG_HID_SONY=m -+CONFIG_HID_SPEEDLINK=m -+CONFIG_HID_SUNPLUS=m -+CONFIG_HID_GREENASIA=m -+CONFIG_HID_SMARTJOYPLUS=m -+CONFIG_HID_TOPSEED=m -+CONFIG_HID_THINGM=m -+CONFIG_HID_THRUSTMASTER=m -+CONFIG_HID_WACOM=m -+CONFIG_HID_WIIMOTE=m -+CONFIG_HID_XINMO=m -+CONFIG_HID_ZEROPLUS=m -+CONFIG_HID_ZYDACRON=m -+CONFIG_HID_PID=y -+CONFIG_USB_HIDDEV=y -+CONFIG_USB=y -+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -+CONFIG_USB_MON=m -+CONFIG_USB_DWCOTG=y -+CONFIG_USB_PRINTER=m -+CONFIG_USB_STORAGE=y -+CONFIG_USB_STORAGE_REALTEK=m -+CONFIG_USB_STORAGE_DATAFAB=m -+CONFIG_USB_STORAGE_FREECOM=m -+CONFIG_USB_STORAGE_ISD200=m -+CONFIG_USB_STORAGE_USBAT=m -+CONFIG_USB_STORAGE_SDDR09=m -+CONFIG_USB_STORAGE_SDDR55=m -+CONFIG_USB_STORAGE_JUMPSHOT=m -+CONFIG_USB_STORAGE_ALAUDA=m -+CONFIG_USB_STORAGE_ONETOUCH=m -+CONFIG_USB_STORAGE_KARMA=m -+CONFIG_USB_STORAGE_CYPRESS_ATACB=m -+CONFIG_USB_STORAGE_ENE_UB6250=m -+CONFIG_USB_MDC800=m -+CONFIG_USB_MICROTEK=m -+CONFIG_USBIP_CORE=m -+CONFIG_USBIP_VHCI_HCD=m -+CONFIG_USBIP_HOST=m -+CONFIG_USB_SERIAL=m -+CONFIG_USB_SERIAL_GENERIC=y -+CONFIG_USB_SERIAL_AIRCABLE=m -+CONFIG_USB_SERIAL_ARK3116=m -+CONFIG_USB_SERIAL_BELKIN=m -+CONFIG_USB_SERIAL_CH341=m -+CONFIG_USB_SERIAL_WHITEHEAT=m -+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m -+CONFIG_USB_SERIAL_CP210X=m -+CONFIG_USB_SERIAL_CYPRESS_M8=m -+CONFIG_USB_SERIAL_EMPEG=m -+CONFIG_USB_SERIAL_FTDI_SIO=m -+CONFIG_USB_SERIAL_VISOR=m -+CONFIG_USB_SERIAL_IPAQ=m -+CONFIG_USB_SERIAL_IR=m -+CONFIG_USB_SERIAL_EDGEPORT=m -+CONFIG_USB_SERIAL_EDGEPORT_TI=m -+CONFIG_USB_SERIAL_F81232=m -+CONFIG_USB_SERIAL_GARMIN=m -+CONFIG_USB_SERIAL_IPW=m -+CONFIG_USB_SERIAL_IUU=m -+CONFIG_USB_SERIAL_KEYSPAN_PDA=m -+CONFIG_USB_SERIAL_KEYSPAN=m -+CONFIG_USB_SERIAL_KLSI=m -+CONFIG_USB_SERIAL_KOBIL_SCT=m -+CONFIG_USB_SERIAL_MCT_U232=m -+CONFIG_USB_SERIAL_METRO=m -+CONFIG_USB_SERIAL_MOS7720=m -+CONFIG_USB_SERIAL_MOS7840=m -+CONFIG_USB_SERIAL_NAVMAN=m -+CONFIG_USB_SERIAL_PL2303=m -+CONFIG_USB_SERIAL_OTI6858=m -+CONFIG_USB_SERIAL_QCAUX=m -+CONFIG_USB_SERIAL_QUALCOMM=m -+CONFIG_USB_SERIAL_SPCP8X5=m -+CONFIG_USB_SERIAL_SAFE=m -+CONFIG_USB_SERIAL_SIERRAWIRELESS=m -+CONFIG_USB_SERIAL_SYMBOL=m -+CONFIG_USB_SERIAL_TI=m -+CONFIG_USB_SERIAL_CYBERJACK=m -+CONFIG_USB_SERIAL_XIRCOM=m -+CONFIG_USB_SERIAL_OPTION=m -+CONFIG_USB_SERIAL_OMNINET=m -+CONFIG_USB_SERIAL_OPTICON=m -+CONFIG_USB_SERIAL_XSENS_MT=m -+CONFIG_USB_SERIAL_WISHBONE=m -+CONFIG_USB_SERIAL_SSU100=m -+CONFIG_USB_SERIAL_QT2=m -+CONFIG_USB_SERIAL_DEBUG=m -+CONFIG_USB_EMI62=m -+CONFIG_USB_EMI26=m -+CONFIG_USB_ADUTUX=m -+CONFIG_USB_SEVSEG=m -+CONFIG_USB_RIO500=m -+CONFIG_USB_LEGOTOWER=m -+CONFIG_USB_LCD=m -+CONFIG_USB_LED=m -+CONFIG_USB_CYPRESS_CY7C63=m -+CONFIG_USB_CYTHERM=m -+CONFIG_USB_IDMOUSE=m -+CONFIG_USB_FTDI_ELAN=m -+CONFIG_USB_APPLEDISPLAY=m -+CONFIG_USB_LD=m -+CONFIG_USB_TRANCEVIBRATOR=m -+CONFIG_USB_IOWARRIOR=m -+CONFIG_USB_TEST=m -+CONFIG_USB_ISIGHTFW=m -+CONFIG_USB_YUREX=m -+CONFIG_USB_ATM=m -+CONFIG_USB_SPEEDTOUCH=m -+CONFIG_USB_CXACRU=m -+CONFIG_USB_UEAGLEATM=m -+CONFIG_USB_XUSBATM=m -+CONFIG_MMC=y -+CONFIG_MMC_BLOCK_MINORS=32 -+CONFIG_MMC_BCM2835=y -+CONFIG_MMC_BCM2835_DMA=y -+CONFIG_MMC_BCM2835_SDHOST=y -+CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_PLTFM=y -+CONFIG_MMC_SPI=m -+CONFIG_LEDS_CLASS=y -+CONFIG_LEDS_GPIO=y -+CONFIG_LEDS_TRIGGER_TIMER=y -+CONFIG_LEDS_TRIGGER_ONESHOT=y -+CONFIG_LEDS_TRIGGER_HEARTBEAT=y -+CONFIG_LEDS_TRIGGER_BACKLIGHT=y -+CONFIG_LEDS_TRIGGER_CPU=y -+CONFIG_LEDS_TRIGGER_GPIO=y -+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y -+CONFIG_LEDS_TRIGGER_TRANSIENT=m -+CONFIG_LEDS_TRIGGER_CAMERA=m -+CONFIG_LEDS_TRIGGER_INPUT=y -+CONFIG_LEDS_TRIGGER_PANIC=y -+CONFIG_RTC_CLASS=y -+# CONFIG_RTC_HCTOSYS is not set -+CONFIG_RTC_DRV_DS1307=m -+CONFIG_RTC_DRV_DS1374=m -+CONFIG_RTC_DRV_DS1672=m -+CONFIG_RTC_DRV_MAX6900=m -+CONFIG_RTC_DRV_RS5C372=m -+CONFIG_RTC_DRV_ISL1208=m -+CONFIG_RTC_DRV_ISL12022=m -+CONFIG_RTC_DRV_ISL12057=m -+CONFIG_RTC_DRV_X1205=m -+CONFIG_RTC_DRV_PCF8523=m -+CONFIG_RTC_DRV_PCF8563=m -+CONFIG_RTC_DRV_PCF8583=m -+CONFIG_RTC_DRV_M41T80=m -+CONFIG_RTC_DRV_BQ32K=m -+CONFIG_RTC_DRV_S35390A=m -+CONFIG_RTC_DRV_FM3130=m -+CONFIG_RTC_DRV_RX8581=m -+CONFIG_RTC_DRV_RX8025=m -+CONFIG_RTC_DRV_EM3027=m -+CONFIG_RTC_DRV_M41T93=m -+CONFIG_RTC_DRV_M41T94=m -+CONFIG_RTC_DRV_DS1302=m -+CONFIG_RTC_DRV_DS1305=m -+CONFIG_RTC_DRV_DS1390=m -+CONFIG_RTC_DRV_R9701=m -+CONFIG_RTC_DRV_RX4581=m -+CONFIG_RTC_DRV_RS5C348=m -+CONFIG_RTC_DRV_MAX6902=m -+CONFIG_RTC_DRV_PCF2123=m -+CONFIG_RTC_DRV_DS3232=m -+CONFIG_RTC_DRV_PCF2127=m -+CONFIG_RTC_DRV_RV3029C2=m -+CONFIG_DMADEVICES=y -+CONFIG_DMA_BCM2835=y -+CONFIG_DMA_BCM2708=y -+CONFIG_UIO=m -+CONFIG_UIO_PDRV_GENIRQ=m -+CONFIG_STAGING=y -+CONFIG_PRISM2_USB=m -+CONFIG_R8712U=m -+CONFIG_R8188EU=m -+CONFIG_R8723AU=m -+CONFIG_VT6656=m -+CONFIG_SPEAKUP=m -+CONFIG_SPEAKUP_SYNTH_SOFT=m -+CONFIG_STAGING_MEDIA=y -+CONFIG_LIRC_STAGING=y -+CONFIG_LIRC_IMON=m -+CONFIG_LIRC_RPI=m -+CONFIG_LIRC_SASEM=m -+CONFIG_LIRC_SERIAL=m -+CONFIG_FB_TFT=m -+CONFIG_FB_TFT_AGM1264K_FL=m -+CONFIG_FB_TFT_BD663474=m -+CONFIG_FB_TFT_HX8340BN=m -+CONFIG_FB_TFT_HX8347D=m -+CONFIG_FB_TFT_HX8353D=m -+CONFIG_FB_TFT_ILI9163=m -+CONFIG_FB_TFT_ILI9320=m -+CONFIG_FB_TFT_ILI9325=m -+CONFIG_FB_TFT_ILI9340=m -+CONFIG_FB_TFT_ILI9341=m -+CONFIG_FB_TFT_ILI9481=m -+CONFIG_FB_TFT_ILI9486=m -+CONFIG_FB_TFT_PCD8544=m -+CONFIG_FB_TFT_RA8875=m -+CONFIG_FB_TFT_S6D02A1=m -+CONFIG_FB_TFT_S6D1121=m -+CONFIG_FB_TFT_SSD1289=m -+CONFIG_FB_TFT_SSD1306=m -+CONFIG_FB_TFT_SSD1331=m -+CONFIG_FB_TFT_SSD1351=m -+CONFIG_FB_TFT_ST7735R=m -+CONFIG_FB_TFT_TINYLCD=m -+CONFIG_FB_TFT_TLS8204=m -+CONFIG_FB_TFT_UC1701=m -+CONFIG_FB_TFT_UPD161704=m -+CONFIG_FB_TFT_WATTEROTT=m -+CONFIG_FB_FLEX=m -+CONFIG_FB_TFT_FBTFT_DEVICE=m -+CONFIG_MAILBOX=y -+CONFIG_BCM2835_MBOX=y -+# CONFIG_IOMMU_SUPPORT is not set -+CONFIG_RASPBERRYPI_POWER=y -+CONFIG_EXTCON=m -+CONFIG_EXTCON_ARIZONA=m -+CONFIG_IIO=m -+CONFIG_IIO_BUFFER=y -+CONFIG_IIO_BUFFER_CB=m -+CONFIG_IIO_KFIFO_BUF=m -+CONFIG_MCP320X=m -+CONFIG_MCP3422=m -+CONFIG_DHT11=m -+CONFIG_PWM_BCM2835=m -+CONFIG_PWM_PCA9685=m -+CONFIG_RASPBERRYPI_FIRMWARE=y -+CONFIG_EXT4_FS=y -+CONFIG_EXT4_FS_POSIX_ACL=y -+CONFIG_EXT4_FS_SECURITY=y -+CONFIG_REISERFS_FS=m -+CONFIG_REISERFS_FS_XATTR=y -+CONFIG_REISERFS_FS_POSIX_ACL=y -+CONFIG_REISERFS_FS_SECURITY=y -+CONFIG_JFS_FS=m -+CONFIG_JFS_POSIX_ACL=y -+CONFIG_JFS_SECURITY=y -+CONFIG_JFS_STATISTICS=y -+CONFIG_XFS_FS=m -+CONFIG_XFS_QUOTA=y -+CONFIG_XFS_POSIX_ACL=y -+CONFIG_XFS_RT=y -+CONFIG_GFS2_FS=m -+CONFIG_OCFS2_FS=m -+CONFIG_BTRFS_FS=m -+CONFIG_BTRFS_FS_POSIX_ACL=y -+CONFIG_NILFS2_FS=m -+CONFIG_F2FS_FS=y -+CONFIG_FANOTIFY=y -+CONFIG_QFMT_V1=m -+CONFIG_QFMT_V2=m -+CONFIG_AUTOFS4_FS=y -+CONFIG_FUSE_FS=m -+CONFIG_CUSE=m -+CONFIG_OVERLAY_FS=m -+CONFIG_FSCACHE=y -+CONFIG_FSCACHE_STATS=y -+CONFIG_FSCACHE_HISTOGRAM=y -+CONFIG_CACHEFILES=y -+CONFIG_ISO9660_FS=m -+CONFIG_JOLIET=y -+CONFIG_ZISOFS=y -+CONFIG_UDF_FS=m -+CONFIG_MSDOS_FS=y -+CONFIG_VFAT_FS=y -+CONFIG_FAT_DEFAULT_IOCHARSET="ascii" -+CONFIG_NTFS_FS=m -+CONFIG_NTFS_RW=y -+CONFIG_TMPFS=y -+CONFIG_TMPFS_POSIX_ACL=y -+CONFIG_ECRYPT_FS=m -+CONFIG_HFS_FS=m -+CONFIG_HFSPLUS_FS=m -+CONFIG_JFFS2_FS=m -+CONFIG_JFFS2_SUMMARY=y -+CONFIG_UBIFS_FS=m -+CONFIG_SQUASHFS=m -+CONFIG_SQUASHFS_XATTR=y -+CONFIG_SQUASHFS_LZO=y -+CONFIG_SQUASHFS_XZ=y -+CONFIG_NFS_FS=y -+CONFIG_NFS_V3_ACL=y -+CONFIG_NFS_V4=y -+CONFIG_NFS_SWAP=y -+CONFIG_ROOT_NFS=y -+CONFIG_NFS_FSCACHE=y -+CONFIG_NFSD=m -+CONFIG_NFSD_V3_ACL=y -+CONFIG_NFSD_V4=y -+CONFIG_CIFS=m -+CONFIG_CIFS_WEAK_PW_HASH=y -+CONFIG_CIFS_UPCALL=y -+CONFIG_CIFS_XATTR=y -+CONFIG_CIFS_POSIX=y -+CONFIG_CIFS_ACL=y -+CONFIG_CIFS_DFS_UPCALL=y -+CONFIG_CIFS_SMB2=y -+CONFIG_CIFS_FSCACHE=y -+CONFIG_9P_FS=m -+CONFIG_9P_FS_POSIX_ACL=y -+CONFIG_NLS_DEFAULT="utf8" -+CONFIG_NLS_CODEPAGE_437=y -+CONFIG_NLS_CODEPAGE_737=m -+CONFIG_NLS_CODEPAGE_775=m -+CONFIG_NLS_CODEPAGE_850=m -+CONFIG_NLS_CODEPAGE_852=m -+CONFIG_NLS_CODEPAGE_855=m -+CONFIG_NLS_CODEPAGE_857=m -+CONFIG_NLS_CODEPAGE_860=m -+CONFIG_NLS_CODEPAGE_861=m -+CONFIG_NLS_CODEPAGE_862=m -+CONFIG_NLS_CODEPAGE_863=m -+CONFIG_NLS_CODEPAGE_864=m -+CONFIG_NLS_CODEPAGE_865=m -+CONFIG_NLS_CODEPAGE_866=m -+CONFIG_NLS_CODEPAGE_869=m -+CONFIG_NLS_CODEPAGE_936=m -+CONFIG_NLS_CODEPAGE_950=m -+CONFIG_NLS_CODEPAGE_932=m -+CONFIG_NLS_CODEPAGE_949=m -+CONFIG_NLS_CODEPAGE_874=m -+CONFIG_NLS_ISO8859_8=m -+CONFIG_NLS_CODEPAGE_1250=m -+CONFIG_NLS_CODEPAGE_1251=m -+CONFIG_NLS_ASCII=y -+CONFIG_NLS_ISO8859_1=m -+CONFIG_NLS_ISO8859_2=m -+CONFIG_NLS_ISO8859_3=m -+CONFIG_NLS_ISO8859_4=m -+CONFIG_NLS_ISO8859_5=m -+CONFIG_NLS_ISO8859_6=m -+CONFIG_NLS_ISO8859_7=m -+CONFIG_NLS_ISO8859_9=m -+CONFIG_NLS_ISO8859_13=m -+CONFIG_NLS_ISO8859_14=m -+CONFIG_NLS_ISO8859_15=m -+CONFIG_NLS_KOI8_R=m -+CONFIG_NLS_KOI8_U=m -+CONFIG_DLM=m -+CONFIG_PRINTK_TIME=y -+CONFIG_BOOT_PRINTK_DELAY=y -+CONFIG_DEBUG_MEMORY_INIT=y -+CONFIG_DETECT_HUNG_TASK=y -+CONFIG_TIMER_STATS=y -+CONFIG_IRQSOFF_TRACER=y -+CONFIG_SCHED_TRACER=y -+CONFIG_STACK_TRACER=y -+CONFIG_BLK_DEV_IO_TRACE=y -+# CONFIG_KPROBE_EVENT is not set -+CONFIG_FUNCTION_PROFILER=y -+CONFIG_KGDB=y -+CONFIG_KGDB_KDB=y -+CONFIG_KDB_KEYBOARD=y -+CONFIG_CRYPTO_USER=m -+CONFIG_CRYPTO_CBC=y -+CONFIG_CRYPTO_CTS=m -+CONFIG_CRYPTO_XTS=m -+CONFIG_CRYPTO_XCBC=m -+CONFIG_CRYPTO_TGR192=m -+CONFIG_CRYPTO_WP512=m -+CONFIG_CRYPTO_CAST5=m -+CONFIG_CRYPTO_DES=y -+CONFIG_CRYPTO_USER_API_SKCIPHER=m -+# CONFIG_CRYPTO_HW is not set -+CONFIG_ARM_CRYPTO=y -+CONFIG_CRYPTO_SHA1_ARM_NEON=m -+CONFIG_CRYPTO_AES_ARM_BS=m -+CONFIG_CRC_ITU_T=y -+CONFIG_LIBCRC32C=y -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -new file mode 100644 -index 0000000000000000000000000000000000000000..da2df3d30e15a55a34b45d3ebbf98e906da6379c ---- /dev/null -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -0,0 +1,1296 @@ -+# CONFIG_ARM_PATCH_PHYS_VIRT is not set -+CONFIG_PHYS_OFFSET=0 -+# CONFIG_LOCALVERSION_AUTO is not set -+CONFIG_SYSVIPC=y -+CONFIG_POSIX_MQUEUE=y -+CONFIG_NO_HZ=y -+CONFIG_HIGH_RES_TIMERS=y -+CONFIG_BSD_PROCESS_ACCT=y -+CONFIG_BSD_PROCESS_ACCT_V3=y -+CONFIG_TASKSTATS=y -+CONFIG_TASK_DELAY_ACCT=y -+CONFIG_TASK_XACCT=y -+CONFIG_TASK_IO_ACCOUNTING=y -+CONFIG_IKCONFIG=m -+CONFIG_IKCONFIG_PROC=y -+CONFIG_NMI_LOG_BUF_SHIFT=12 -+CONFIG_MEMCG=y -+CONFIG_BLK_CGROUP=y -+CONFIG_CGROUP_FREEZER=y -+CONFIG_CPUSETS=y -+CONFIG_CGROUP_DEVICE=y -+CONFIG_CGROUP_CPUACCT=y -+CONFIG_NAMESPACES=y -+CONFIG_SCHED_AUTOGROUP=y -+CONFIG_BLK_DEV_INITRD=y -+CONFIG_EMBEDDED=y -+# CONFIG_COMPAT_BRK is not set -+CONFIG_PROFILING=y -+CONFIG_OPROFILE=m -+CONFIG_KPROBES=y -+CONFIG_JUMP_LABEL=y -+CONFIG_MODULES=y -+CONFIG_MODULE_UNLOAD=y -+CONFIG_MODVERSIONS=y -+CONFIG_MODULE_SRCVERSION_ALL=y -+CONFIG_TRIM_UNUSED_KSYMS=y -+CONFIG_BLK_DEV_THROTTLING=y -+CONFIG_PARTITION_ADVANCED=y -+CONFIG_MAC_PARTITION=y -+CONFIG_CFQ_GROUP_IOSCHED=y -+CONFIG_ARCH_BCM2708=y -+CONFIG_PREEMPT_VOLUNTARY=y -+CONFIG_AEABI=y -+CONFIG_OABI_COMPAT=y -+# CONFIG_CPU_SW_DOMAIN_PAN is not set -+CONFIG_CLEANCACHE=y -+CONFIG_FRONTSWAP=y -+CONFIG_CMA=y -+CONFIG_ZSMALLOC=m -+CONFIG_PGTABLE_MAPPING=y -+CONFIG_UACCESS_WITH_MEMCPY=y -+CONFIG_SECCOMP=y -+# CONFIG_ATAGS is not set -+CONFIG_ZBOOT_ROM_TEXT=0x0 -+CONFIG_ZBOOT_ROM_BSS=0x0 -+CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" -+CONFIG_CPU_FREQ=y -+CONFIG_CPU_FREQ_STAT=m -+CONFIG_CPU_FREQ_STAT_DETAILS=y -+CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y -+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -+CONFIG_CPU_FREQ_GOV_USERSPACE=y -+CONFIG_CPU_FREQ_GOV_ONDEMAND=y -+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -+CONFIG_VFP=y -+CONFIG_BINFMT_MISC=m -+# CONFIG_SUSPEND is not set -+CONFIG_PM=y -+CONFIG_NET=y -+CONFIG_PACKET=y -+CONFIG_UNIX=y -+CONFIG_XFRM_USER=y -+CONFIG_NET_KEY=m -+CONFIG_INET=y -+CONFIG_IP_MULTICAST=y -+CONFIG_IP_ADVANCED_ROUTER=y -+CONFIG_IP_MULTIPLE_TABLES=y -+CONFIG_IP_ROUTE_MULTIPATH=y -+CONFIG_IP_ROUTE_VERBOSE=y -+CONFIG_IP_PNP=y -+CONFIG_IP_PNP_DHCP=y -+CONFIG_IP_PNP_RARP=y -+CONFIG_NET_IPIP=m -+CONFIG_NET_IPGRE_DEMUX=m -+CONFIG_NET_IPGRE=m -+CONFIG_IP_MROUTE=y -+CONFIG_IP_MROUTE_MULTIPLE_TABLES=y -+CONFIG_IP_PIMSM_V1=y -+CONFIG_IP_PIMSM_V2=y -+CONFIG_SYN_COOKIES=y -+CONFIG_INET_AH=m -+CONFIG_INET_ESP=m -+CONFIG_INET_IPCOMP=m -+CONFIG_INET_XFRM_MODE_TRANSPORT=m -+CONFIG_INET_XFRM_MODE_TUNNEL=m -+CONFIG_INET_XFRM_MODE_BEET=m -+CONFIG_INET_DIAG=m -+CONFIG_IPV6=m -+CONFIG_IPV6_ROUTER_PREF=y -+CONFIG_INET6_AH=m -+CONFIG_INET6_ESP=m -+CONFIG_INET6_IPCOMP=m -+CONFIG_IPV6_TUNNEL=m -+CONFIG_IPV6_MULTIPLE_TABLES=y -+CONFIG_IPV6_SUBTREES=y -+CONFIG_IPV6_MROUTE=y -+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y -+CONFIG_IPV6_PIMSM_V2=y -+CONFIG_NETFILTER=y -+CONFIG_NF_CONNTRACK=m -+CONFIG_NF_CONNTRACK_ZONES=y -+CONFIG_NF_CONNTRACK_EVENTS=y -+CONFIG_NF_CONNTRACK_TIMESTAMP=y -+CONFIG_NF_CT_PROTO_DCCP=m -+CONFIG_NF_CT_PROTO_UDPLITE=m -+CONFIG_NF_CONNTRACK_AMANDA=m -+CONFIG_NF_CONNTRACK_FTP=m -+CONFIG_NF_CONNTRACK_H323=m -+CONFIG_NF_CONNTRACK_IRC=m -+CONFIG_NF_CONNTRACK_NETBIOS_NS=m -+CONFIG_NF_CONNTRACK_SNMP=m -+CONFIG_NF_CONNTRACK_PPTP=m -+CONFIG_NF_CONNTRACK_SANE=m -+CONFIG_NF_CONNTRACK_SIP=m -+CONFIG_NF_CONNTRACK_TFTP=m -+CONFIG_NF_CT_NETLINK=m -+CONFIG_NETFILTER_XT_SET=m -+CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m -+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -+CONFIG_NETFILTER_XT_TARGET_DSCP=m -+CONFIG_NETFILTER_XT_TARGET_HMARK=m -+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m -+CONFIG_NETFILTER_XT_TARGET_LED=m -+CONFIG_NETFILTER_XT_TARGET_LOG=m -+CONFIG_NETFILTER_XT_TARGET_MARK=m -+CONFIG_NETFILTER_XT_TARGET_NFLOG=m -+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -+CONFIG_NETFILTER_XT_TARGET_TEE=m -+CONFIG_NETFILTER_XT_TARGET_TPROXY=m -+CONFIG_NETFILTER_XT_TARGET_TRACE=m -+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m -+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m -+CONFIG_NETFILTER_XT_MATCH_BPF=m -+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m -+CONFIG_NETFILTER_XT_MATCH_COMMENT=m -+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -+CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m -+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -+CONFIG_NETFILTER_XT_MATCH_CPU=m -+CONFIG_NETFILTER_XT_MATCH_DCCP=m -+CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m -+CONFIG_NETFILTER_XT_MATCH_DSCP=m -+CONFIG_NETFILTER_XT_MATCH_ESP=m -+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -+CONFIG_NETFILTER_XT_MATCH_HELPER=m -+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m -+CONFIG_NETFILTER_XT_MATCH_IPVS=m -+CONFIG_NETFILTER_XT_MATCH_LENGTH=m -+CONFIG_NETFILTER_XT_MATCH_LIMIT=m -+CONFIG_NETFILTER_XT_MATCH_MAC=m -+CONFIG_NETFILTER_XT_MATCH_MARK=m -+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -+CONFIG_NETFILTER_XT_MATCH_NFACCT=m -+CONFIG_NETFILTER_XT_MATCH_OSF=m -+CONFIG_NETFILTER_XT_MATCH_OWNER=m -+CONFIG_NETFILTER_XT_MATCH_POLICY=m -+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m -+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -+CONFIG_NETFILTER_XT_MATCH_QUOTA=m -+CONFIG_NETFILTER_XT_MATCH_RATEEST=m -+CONFIG_NETFILTER_XT_MATCH_REALM=m -+CONFIG_NETFILTER_XT_MATCH_RECENT=m -+CONFIG_NETFILTER_XT_MATCH_SOCKET=m -+CONFIG_NETFILTER_XT_MATCH_STATE=m -+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -+CONFIG_NETFILTER_XT_MATCH_STRING=m -+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -+CONFIG_NETFILTER_XT_MATCH_TIME=m -+CONFIG_NETFILTER_XT_MATCH_U32=m -+CONFIG_IP_SET=m -+CONFIG_IP_SET_BITMAP_IP=m -+CONFIG_IP_SET_BITMAP_IPMAC=m -+CONFIG_IP_SET_BITMAP_PORT=m -+CONFIG_IP_SET_HASH_IP=m -+CONFIG_IP_SET_HASH_IPPORT=m -+CONFIG_IP_SET_HASH_IPPORTIP=m -+CONFIG_IP_SET_HASH_IPPORTNET=m -+CONFIG_IP_SET_HASH_NET=m -+CONFIG_IP_SET_HASH_NETPORT=m -+CONFIG_IP_SET_HASH_NETIFACE=m -+CONFIG_IP_SET_LIST_SET=m -+CONFIG_IP_VS=m -+CONFIG_IP_VS_PROTO_TCP=y -+CONFIG_IP_VS_PROTO_UDP=y -+CONFIG_IP_VS_PROTO_ESP=y -+CONFIG_IP_VS_PROTO_AH=y -+CONFIG_IP_VS_PROTO_SCTP=y -+CONFIG_IP_VS_RR=m -+CONFIG_IP_VS_WRR=m -+CONFIG_IP_VS_LC=m -+CONFIG_IP_VS_WLC=m -+CONFIG_IP_VS_LBLC=m -+CONFIG_IP_VS_LBLCR=m -+CONFIG_IP_VS_DH=m -+CONFIG_IP_VS_SH=m -+CONFIG_IP_VS_SED=m -+CONFIG_IP_VS_NQ=m -+CONFIG_IP_VS_FTP=m -+CONFIG_IP_VS_PE_SIP=m -+CONFIG_NF_CONNTRACK_IPV4=m -+CONFIG_IP_NF_IPTABLES=m -+CONFIG_IP_NF_MATCH_AH=m -+CONFIG_IP_NF_MATCH_ECN=m -+CONFIG_IP_NF_MATCH_RPFILTER=m -+CONFIG_IP_NF_MATCH_TTL=m -+CONFIG_IP_NF_FILTER=m -+CONFIG_IP_NF_TARGET_REJECT=m -+CONFIG_IP_NF_NAT=m -+CONFIG_IP_NF_TARGET_MASQUERADE=m -+CONFIG_IP_NF_TARGET_NETMAP=m -+CONFIG_IP_NF_TARGET_REDIRECT=m -+CONFIG_IP_NF_MANGLE=m -+CONFIG_IP_NF_TARGET_CLUSTERIP=m -+CONFIG_IP_NF_TARGET_ECN=m -+CONFIG_IP_NF_TARGET_TTL=m -+CONFIG_IP_NF_RAW=m -+CONFIG_IP_NF_ARPTABLES=m -+CONFIG_IP_NF_ARPFILTER=m -+CONFIG_IP_NF_ARP_MANGLE=m -+CONFIG_NF_CONNTRACK_IPV6=m -+CONFIG_IP6_NF_IPTABLES=m -+CONFIG_IP6_NF_MATCH_AH=m -+CONFIG_IP6_NF_MATCH_EUI64=m -+CONFIG_IP6_NF_MATCH_FRAG=m -+CONFIG_IP6_NF_MATCH_OPTS=m -+CONFIG_IP6_NF_MATCH_HL=m -+CONFIG_IP6_NF_MATCH_IPV6HEADER=m -+CONFIG_IP6_NF_MATCH_MH=m -+CONFIG_IP6_NF_MATCH_RPFILTER=m -+CONFIG_IP6_NF_MATCH_RT=m -+CONFIG_IP6_NF_TARGET_HL=m -+CONFIG_IP6_NF_FILTER=m -+CONFIG_IP6_NF_TARGET_REJECT=m -+CONFIG_IP6_NF_MANGLE=m -+CONFIG_IP6_NF_RAW=m -+CONFIG_IP6_NF_NAT=m -+CONFIG_IP6_NF_TARGET_MASQUERADE=m -+CONFIG_IP6_NF_TARGET_NPT=m -+CONFIG_BRIDGE_NF_EBTABLES=m -+CONFIG_BRIDGE_EBT_BROUTE=m -+CONFIG_BRIDGE_EBT_T_FILTER=m -+CONFIG_BRIDGE_EBT_T_NAT=m -+CONFIG_BRIDGE_EBT_802_3=m -+CONFIG_BRIDGE_EBT_AMONG=m -+CONFIG_BRIDGE_EBT_ARP=m -+CONFIG_BRIDGE_EBT_IP=m -+CONFIG_BRIDGE_EBT_IP6=m -+CONFIG_BRIDGE_EBT_LIMIT=m -+CONFIG_BRIDGE_EBT_MARK=m -+CONFIG_BRIDGE_EBT_PKTTYPE=m -+CONFIG_BRIDGE_EBT_STP=m -+CONFIG_BRIDGE_EBT_VLAN=m -+CONFIG_BRIDGE_EBT_ARPREPLY=m -+CONFIG_BRIDGE_EBT_DNAT=m -+CONFIG_BRIDGE_EBT_MARK_T=m -+CONFIG_BRIDGE_EBT_REDIRECT=m -+CONFIG_BRIDGE_EBT_SNAT=m -+CONFIG_BRIDGE_EBT_LOG=m -+CONFIG_BRIDGE_EBT_NFLOG=m -+CONFIG_SCTP_COOKIE_HMAC_SHA1=y -+CONFIG_ATM=m -+CONFIG_L2TP=m -+CONFIG_L2TP_V3=y -+CONFIG_L2TP_IP=m -+CONFIG_L2TP_ETH=m -+CONFIG_BRIDGE=m -+CONFIG_VLAN_8021Q=m -+CONFIG_VLAN_8021Q_GVRP=y -+CONFIG_ATALK=m -+CONFIG_6LOWPAN=m -+CONFIG_IEEE802154=m -+CONFIG_IEEE802154_6LOWPAN=m -+CONFIG_MAC802154=m -+CONFIG_NET_SCHED=y -+CONFIG_NET_SCH_CBQ=m -+CONFIG_NET_SCH_HTB=m -+CONFIG_NET_SCH_HFSC=m -+CONFIG_NET_SCH_PRIO=m -+CONFIG_NET_SCH_MULTIQ=m -+CONFIG_NET_SCH_RED=m -+CONFIG_NET_SCH_SFB=m -+CONFIG_NET_SCH_SFQ=m -+CONFIG_NET_SCH_TEQL=m -+CONFIG_NET_SCH_TBF=m -+CONFIG_NET_SCH_GRED=m -+CONFIG_NET_SCH_DSMARK=m -+CONFIG_NET_SCH_NETEM=m -+CONFIG_NET_SCH_DRR=m -+CONFIG_NET_SCH_MQPRIO=m -+CONFIG_NET_SCH_CHOKE=m -+CONFIG_NET_SCH_QFQ=m -+CONFIG_NET_SCH_CODEL=m -+CONFIG_NET_SCH_FQ_CODEL=m -+CONFIG_NET_SCH_INGRESS=m -+CONFIG_NET_SCH_PLUG=m -+CONFIG_NET_CLS_BASIC=m -+CONFIG_NET_CLS_TCINDEX=m -+CONFIG_NET_CLS_ROUTE4=m -+CONFIG_NET_CLS_FW=m -+CONFIG_NET_CLS_U32=m -+CONFIG_CLS_U32_MARK=y -+CONFIG_NET_CLS_RSVP=m -+CONFIG_NET_CLS_RSVP6=m -+CONFIG_NET_CLS_FLOW=m -+CONFIG_NET_CLS_CGROUP=m -+CONFIG_NET_EMATCH=y -+CONFIG_NET_EMATCH_CMP=m -+CONFIG_NET_EMATCH_NBYTE=m -+CONFIG_NET_EMATCH_U32=m -+CONFIG_NET_EMATCH_META=m -+CONFIG_NET_EMATCH_TEXT=m -+CONFIG_NET_EMATCH_IPSET=m -+CONFIG_NET_CLS_ACT=y -+CONFIG_NET_ACT_POLICE=m -+CONFIG_NET_ACT_GACT=m -+CONFIG_GACT_PROB=y -+CONFIG_NET_ACT_MIRRED=m -+CONFIG_NET_ACT_IPT=m -+CONFIG_NET_ACT_NAT=m -+CONFIG_NET_ACT_PEDIT=m -+CONFIG_NET_ACT_SIMP=m -+CONFIG_NET_ACT_SKBEDIT=m -+CONFIG_NET_ACT_CSUM=m -+CONFIG_BATMAN_ADV=m -+CONFIG_OPENVSWITCH=m -+CONFIG_NET_PKTGEN=m -+CONFIG_HAMRADIO=y -+CONFIG_AX25=m -+CONFIG_NETROM=m -+CONFIG_ROSE=m -+CONFIG_MKISS=m -+CONFIG_6PACK=m -+CONFIG_BPQETHER=m -+CONFIG_BAYCOM_SER_FDX=m -+CONFIG_BAYCOM_SER_HDX=m -+CONFIG_YAM=m -+CONFIG_CAN=m -+CONFIG_CAN_VCAN=m -+CONFIG_CAN_MCP251X=m -+CONFIG_IRDA=m -+CONFIG_IRLAN=m -+CONFIG_IRNET=m -+CONFIG_IRCOMM=m -+CONFIG_IRDA_ULTRA=y -+CONFIG_IRDA_CACHE_LAST_LSAP=y -+CONFIG_IRDA_FAST_RR=y -+CONFIG_IRTTY_SIR=m -+CONFIG_KINGSUN_DONGLE=m -+CONFIG_KSDAZZLE_DONGLE=m -+CONFIG_KS959_DONGLE=m -+CONFIG_USB_IRDA=m -+CONFIG_SIGMATEL_FIR=m -+CONFIG_MCS_FIR=m -+CONFIG_BT=m -+CONFIG_BT_RFCOMM=m -+CONFIG_BT_RFCOMM_TTY=y -+CONFIG_BT_BNEP=m -+CONFIG_BT_BNEP_MC_FILTER=y -+CONFIG_BT_BNEP_PROTO_FILTER=y -+CONFIG_BT_HIDP=m -+CONFIG_BT_6LOWPAN=m -+CONFIG_BT_HCIBTUSB=m -+CONFIG_BT_HCIUART=m -+CONFIG_BT_HCIUART_3WIRE=y -+CONFIG_BT_HCIUART_BCM=y -+CONFIG_BT_HCIBCM203X=m -+CONFIG_BT_HCIBPA10X=m -+CONFIG_BT_HCIBFUSB=m -+CONFIG_BT_HCIVHCI=m -+CONFIG_BT_MRVL=m -+CONFIG_BT_MRVL_SDIO=m -+CONFIG_BT_ATH3K=m -+CONFIG_BT_WILINK=m -+CONFIG_MAC80211=m -+CONFIG_MAC80211_MESH=y -+CONFIG_WIMAX=m -+CONFIG_RFKILL=m -+CONFIG_RFKILL_INPUT=y -+CONFIG_NET_9P=m -+CONFIG_NFC=m -+CONFIG_DEVTMPFS=y -+CONFIG_DEVTMPFS_MOUNT=y -+CONFIG_DMA_CMA=y -+CONFIG_CMA_SIZE_MBYTES=5 -+CONFIG_MTD=m -+CONFIG_MTD_BLOCK=m -+CONFIG_MTD_NAND=m -+CONFIG_MTD_UBI=m -+CONFIG_OF_CONFIGFS=y -+CONFIG_ZRAM=m -+CONFIG_ZRAM_LZ4_COMPRESS=y -+CONFIG_BLK_DEV_LOOP=y -+CONFIG_BLK_DEV_CRYPTOLOOP=m -+CONFIG_BLK_DEV_DRBD=m -+CONFIG_BLK_DEV_NBD=m -+CONFIG_BLK_DEV_RAM=y -+CONFIG_CDROM_PKTCDVD=m -+CONFIG_ATA_OVER_ETH=m -+CONFIG_EEPROM_AT24=m -+CONFIG_TI_ST=m -+CONFIG_SCSI=y -+# CONFIG_SCSI_PROC_FS is not set -+CONFIG_BLK_DEV_SD=y -+CONFIG_CHR_DEV_ST=m -+CONFIG_CHR_DEV_OSST=m -+CONFIG_BLK_DEV_SR=m -+CONFIG_CHR_DEV_SG=m -+CONFIG_SCSI_ISCSI_ATTRS=y -+CONFIG_ISCSI_TCP=m -+CONFIG_ISCSI_BOOT_SYSFS=m -+CONFIG_MD=y -+CONFIG_MD_LINEAR=m -+CONFIG_MD_RAID0=m -+CONFIG_BLK_DEV_DM=m -+CONFIG_DM_CRYPT=m -+CONFIG_DM_SNAPSHOT=m -+CONFIG_DM_THIN_PROVISIONING=m -+CONFIG_DM_MIRROR=m -+CONFIG_DM_LOG_USERSPACE=m -+CONFIG_DM_RAID=m -+CONFIG_DM_ZERO=m -+CONFIG_DM_DELAY=m -+CONFIG_NETDEVICES=y -+CONFIG_BONDING=m -+CONFIG_DUMMY=m -+CONFIG_IFB=m -+CONFIG_MACVLAN=m -+CONFIG_NETCONSOLE=m -+CONFIG_TUN=m -+CONFIG_VETH=m -+CONFIG_ENC28J60=m -+CONFIG_QCA7000=m -+CONFIG_MDIO_BITBANG=m -+CONFIG_PPP=m -+CONFIG_PPP_BSDCOMP=m -+CONFIG_PPP_DEFLATE=m -+CONFIG_PPP_FILTER=y -+CONFIG_PPP_MPPE=m -+CONFIG_PPP_MULTILINK=y -+CONFIG_PPPOATM=m -+CONFIG_PPPOE=m -+CONFIG_PPPOL2TP=m -+CONFIG_PPP_ASYNC=m -+CONFIG_PPP_SYNC_TTY=m -+CONFIG_SLIP=m -+CONFIG_SLIP_COMPRESSED=y -+CONFIG_SLIP_SMART=y -+CONFIG_USB_CATC=m -+CONFIG_USB_KAWETH=m -+CONFIG_USB_PEGASUS=m -+CONFIG_USB_RTL8150=m -+CONFIG_USB_RTL8152=m -+CONFIG_USB_USBNET=y -+CONFIG_USB_NET_AX8817X=m -+CONFIG_USB_NET_AX88179_178A=m -+CONFIG_USB_NET_CDCETHER=m -+CONFIG_USB_NET_CDC_EEM=m -+CONFIG_USB_NET_CDC_NCM=m -+CONFIG_USB_NET_HUAWEI_CDC_NCM=m -+CONFIG_USB_NET_CDC_MBIM=m -+CONFIG_USB_NET_DM9601=m -+CONFIG_USB_NET_SR9700=m -+CONFIG_USB_NET_SR9800=m -+CONFIG_USB_NET_SMSC75XX=m -+CONFIG_USB_NET_SMSC95XX=y -+CONFIG_USB_NET_GL620A=m -+CONFIG_USB_NET_NET1080=m -+CONFIG_USB_NET_PLUSB=m -+CONFIG_USB_NET_MCS7830=m -+CONFIG_USB_NET_CDC_SUBSET=m -+CONFIG_USB_ALI_M5632=y -+CONFIG_USB_AN2720=y -+CONFIG_USB_EPSON2888=y -+CONFIG_USB_KC2190=y -+CONFIG_USB_NET_ZAURUS=m -+CONFIG_USB_NET_CX82310_ETH=m -+CONFIG_USB_NET_KALMIA=m -+CONFIG_USB_NET_QMI_WWAN=m -+CONFIG_USB_HSO=m -+CONFIG_USB_NET_INT51X1=m -+CONFIG_USB_IPHETH=m -+CONFIG_USB_SIERRA_NET=m -+CONFIG_USB_VL600=m -+CONFIG_ATH9K=m -+CONFIG_ATH9K_HTC=m -+CONFIG_CARL9170=m -+CONFIG_ATH6KL=m -+CONFIG_ATH6KL_USB=m -+CONFIG_AR5523=m -+CONFIG_AT76C50X_USB=m -+CONFIG_B43=m -+# CONFIG_B43_PHY_N is not set -+CONFIG_B43LEGACY=m -+CONFIG_BRCMFMAC=m -+CONFIG_BRCMFMAC_USB=y -+CONFIG_HOSTAP=m -+CONFIG_P54_COMMON=m -+CONFIG_P54_USB=m -+CONFIG_LIBERTAS=m -+CONFIG_LIBERTAS_USB=m -+CONFIG_LIBERTAS_SDIO=m -+CONFIG_LIBERTAS_THINFIRM=m -+CONFIG_LIBERTAS_THINFIRM_USB=m -+CONFIG_MWIFIEX=m -+CONFIG_MWIFIEX_SDIO=m -+CONFIG_MT7601U=m -+CONFIG_RT2X00=m -+CONFIG_RT2500USB=m -+CONFIG_RT73USB=m -+CONFIG_RT2800USB=m -+CONFIG_RT2800USB_RT3573=y -+CONFIG_RT2800USB_RT53XX=y -+CONFIG_RT2800USB_RT55XX=y -+CONFIG_RT2800USB_UNKNOWN=y -+CONFIG_RTL8187=m -+CONFIG_RTL8192CU=m -+CONFIG_USB_ZD1201=m -+CONFIG_ZD1211RW=m -+CONFIG_MAC80211_HWSIM=m -+CONFIG_USB_NET_RNDIS_WLAN=m -+CONFIG_WIMAX_I2400M_USB=m -+CONFIG_IEEE802154_AT86RF230=m -+CONFIG_IEEE802154_MRF24J40=m -+CONFIG_IEEE802154_CC2520=m -+CONFIG_INPUT_POLLDEV=m -+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -+CONFIG_INPUT_JOYDEV=m -+CONFIG_INPUT_EVDEV=m -+# CONFIG_KEYBOARD_ATKBD is not set -+CONFIG_KEYBOARD_GPIO=m -+# CONFIG_INPUT_MOUSE is not set -+CONFIG_INPUT_JOYSTICK=y -+CONFIG_JOYSTICK_IFORCE=m -+CONFIG_JOYSTICK_IFORCE_USB=y -+CONFIG_JOYSTICK_XPAD=m -+CONFIG_JOYSTICK_XPAD_FF=y -+CONFIG_JOYSTICK_XPAD_LEDS=y -+CONFIG_JOYSTICK_RPISENSE=m -+CONFIG_INPUT_TOUCHSCREEN=y -+CONFIG_TOUCHSCREEN_ADS7846=m -+CONFIG_TOUCHSCREEN_EGALAX=m -+CONFIG_TOUCHSCREEN_FT6236=m -+CONFIG_TOUCHSCREEN_RPI_FT5406=m -+CONFIG_TOUCHSCREEN_USB_COMPOSITE=m -+CONFIG_TOUCHSCREEN_STMPE=m -+CONFIG_INPUT_MISC=y -+CONFIG_INPUT_AD714X=m -+CONFIG_INPUT_ATI_REMOTE2=m -+CONFIG_INPUT_KEYSPAN_REMOTE=m -+CONFIG_INPUT_POWERMATE=m -+CONFIG_INPUT_YEALINK=m -+CONFIG_INPUT_CM109=m -+CONFIG_INPUT_UINPUT=m -+CONFIG_INPUT_GPIO_ROTARY_ENCODER=m -+CONFIG_INPUT_ADXL34X=m -+CONFIG_INPUT_CMA3000=m -+CONFIG_SERIO=m -+CONFIG_SERIO_RAW=m -+CONFIG_GAMEPORT=m -+CONFIG_GAMEPORT_NS558=m -+CONFIG_GAMEPORT_L4=m -+CONFIG_BRCM_CHAR_DRIVERS=y -+CONFIG_BCM_VC_CMA=y -+CONFIG_BCM_VCIO=y -+CONFIG_BCM_VC_SM=y -+# CONFIG_LEGACY_PTYS is not set -+# CONFIG_DEVKMEM is not set -+CONFIG_SERIAL_8250=y -+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set -+CONFIG_SERIAL_8250_CONSOLE=y -+# CONFIG_SERIAL_8250_DMA is not set -+CONFIG_SERIAL_8250_NR_UARTS=1 -+CONFIG_SERIAL_8250_RUNTIME_UARTS=0 -+CONFIG_SERIAL_OF_PLATFORM=y -+CONFIG_SERIAL_AMBA_PL011=y -+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -+CONFIG_TTY_PRINTK=y -+CONFIG_HW_RANDOM=y -+CONFIG_RAW_DRIVER=y -+CONFIG_I2C=y -+CONFIG_I2C_CHARDEV=m -+CONFIG_I2C_MUX_PCA954x=m -+CONFIG_I2C_BCM2708=m -+CONFIG_I2C_GPIO=m -+CONFIG_SPI=y -+CONFIG_SPI_BCM2835=m -+CONFIG_SPI_BCM2835AUX=m -+CONFIG_SPI_SPIDEV=y -+CONFIG_PPS=m -+CONFIG_PPS_CLIENT_LDISC=m -+CONFIG_PPS_CLIENT_GPIO=m -+CONFIG_GPIO_SYSFS=y -+CONFIG_GPIO_ARIZONA=m -+CONFIG_GPIO_STMPE=y -+CONFIG_GPIO_MCP23S08=m -+CONFIG_W1=m -+CONFIG_W1_MASTER_DS2490=m -+CONFIG_W1_MASTER_DS2482=m -+CONFIG_W1_MASTER_DS1WM=m -+CONFIG_W1_MASTER_GPIO=m -+CONFIG_W1_SLAVE_THERM=m -+CONFIG_W1_SLAVE_SMEM=m -+CONFIG_W1_SLAVE_DS2408=m -+CONFIG_W1_SLAVE_DS2413=m -+CONFIG_W1_SLAVE_DS2406=m -+CONFIG_W1_SLAVE_DS2423=m -+CONFIG_W1_SLAVE_DS2431=m -+CONFIG_W1_SLAVE_DS2433=m -+CONFIG_W1_SLAVE_DS2760=m -+CONFIG_W1_SLAVE_DS2780=m -+CONFIG_W1_SLAVE_DS2781=m -+CONFIG_W1_SLAVE_DS28E04=m -+CONFIG_W1_SLAVE_BQ27000=m -+CONFIG_BATTERY_DS2760=m -+CONFIG_POWER_RESET=y -+CONFIG_POWER_RESET_GPIO=y -+CONFIG_HWMON=m -+CONFIG_SENSORS_SHT21=m -+CONFIG_SENSORS_SHTC1=m -+CONFIG_THERMAL=y -+CONFIG_THERMAL_BCM2835=y -+CONFIG_WATCHDOG=y -+CONFIG_BCM2835_WDT=m -+CONFIG_UCB1400_CORE=m -+CONFIG_MFD_STMPE=y -+CONFIG_STMPE_SPI=y -+CONFIG_MFD_ARIZONA_I2C=m -+CONFIG_MFD_ARIZONA_SPI=m -+CONFIG_MFD_WM5102=y -+CONFIG_MEDIA_SUPPORT=m -+CONFIG_MEDIA_CAMERA_SUPPORT=y -+CONFIG_MEDIA_ANALOG_TV_SUPPORT=y -+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y -+CONFIG_MEDIA_RADIO_SUPPORT=y -+CONFIG_MEDIA_RC_SUPPORT=y -+CONFIG_MEDIA_CONTROLLER=y -+CONFIG_LIRC=m -+CONFIG_RC_DEVICES=y -+CONFIG_RC_ATI_REMOTE=m -+CONFIG_IR_IMON=m -+CONFIG_IR_MCEUSB=m -+CONFIG_IR_REDRAT3=m -+CONFIG_IR_STREAMZAP=m -+CONFIG_IR_IGUANA=m -+CONFIG_IR_TTUSBIR=m -+CONFIG_RC_LOOPBACK=m -+CONFIG_IR_GPIO_CIR=m -+CONFIG_MEDIA_USB_SUPPORT=y -+CONFIG_USB_VIDEO_CLASS=m -+CONFIG_USB_M5602=m -+CONFIG_USB_STV06XX=m -+CONFIG_USB_GL860=m -+CONFIG_USB_GSPCA_BENQ=m -+CONFIG_USB_GSPCA_CONEX=m -+CONFIG_USB_GSPCA_CPIA1=m -+CONFIG_USB_GSPCA_DTCS033=m -+CONFIG_USB_GSPCA_ETOMS=m -+CONFIG_USB_GSPCA_FINEPIX=m -+CONFIG_USB_GSPCA_JEILINJ=m -+CONFIG_USB_GSPCA_JL2005BCD=m -+CONFIG_USB_GSPCA_KINECT=m -+CONFIG_USB_GSPCA_KONICA=m -+CONFIG_USB_GSPCA_MARS=m -+CONFIG_USB_GSPCA_MR97310A=m -+CONFIG_USB_GSPCA_NW80X=m -+CONFIG_USB_GSPCA_OV519=m -+CONFIG_USB_GSPCA_OV534=m -+CONFIG_USB_GSPCA_OV534_9=m -+CONFIG_USB_GSPCA_PAC207=m -+CONFIG_USB_GSPCA_PAC7302=m -+CONFIG_USB_GSPCA_PAC7311=m -+CONFIG_USB_GSPCA_SE401=m -+CONFIG_USB_GSPCA_SN9C2028=m -+CONFIG_USB_GSPCA_SN9C20X=m -+CONFIG_USB_GSPCA_SONIXB=m -+CONFIG_USB_GSPCA_SONIXJ=m -+CONFIG_USB_GSPCA_SPCA500=m -+CONFIG_USB_GSPCA_SPCA501=m -+CONFIG_USB_GSPCA_SPCA505=m -+CONFIG_USB_GSPCA_SPCA506=m -+CONFIG_USB_GSPCA_SPCA508=m -+CONFIG_USB_GSPCA_SPCA561=m -+CONFIG_USB_GSPCA_SPCA1528=m -+CONFIG_USB_GSPCA_SQ905=m -+CONFIG_USB_GSPCA_SQ905C=m -+CONFIG_USB_GSPCA_SQ930X=m -+CONFIG_USB_GSPCA_STK014=m -+CONFIG_USB_GSPCA_STK1135=m -+CONFIG_USB_GSPCA_STV0680=m -+CONFIG_USB_GSPCA_SUNPLUS=m -+CONFIG_USB_GSPCA_T613=m -+CONFIG_USB_GSPCA_TOPRO=m -+CONFIG_USB_GSPCA_TV8532=m -+CONFIG_USB_GSPCA_VC032X=m -+CONFIG_USB_GSPCA_VICAM=m -+CONFIG_USB_GSPCA_XIRLINK_CIT=m -+CONFIG_USB_GSPCA_ZC3XX=m -+CONFIG_USB_PWC=m -+CONFIG_VIDEO_CPIA2=m -+CONFIG_USB_ZR364XX=m -+CONFIG_USB_STKWEBCAM=m -+CONFIG_USB_S2255=m -+CONFIG_VIDEO_USBTV=m -+CONFIG_VIDEO_PVRUSB2=m -+CONFIG_VIDEO_HDPVR=m -+CONFIG_VIDEO_USBVISION=m -+CONFIG_VIDEO_STK1160_COMMON=m -+CONFIG_VIDEO_STK1160_AC97=y -+CONFIG_VIDEO_GO7007=m -+CONFIG_VIDEO_GO7007_USB=m -+CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m -+CONFIG_VIDEO_AU0828=m -+CONFIG_VIDEO_AU0828_RC=y -+CONFIG_VIDEO_CX231XX=m -+CONFIG_VIDEO_CX231XX_ALSA=m -+CONFIG_VIDEO_CX231XX_DVB=m -+CONFIG_VIDEO_TM6000=m -+CONFIG_VIDEO_TM6000_ALSA=m -+CONFIG_VIDEO_TM6000_DVB=m -+CONFIG_DVB_USB=m -+CONFIG_DVB_USB_A800=m -+CONFIG_DVB_USB_DIBUSB_MB=m -+CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y -+CONFIG_DVB_USB_DIBUSB_MC=m -+CONFIG_DVB_USB_DIB0700=m -+CONFIG_DVB_USB_UMT_010=m -+CONFIG_DVB_USB_CXUSB=m -+CONFIG_DVB_USB_M920X=m -+CONFIG_DVB_USB_DIGITV=m -+CONFIG_DVB_USB_VP7045=m -+CONFIG_DVB_USB_VP702X=m -+CONFIG_DVB_USB_GP8PSK=m -+CONFIG_DVB_USB_NOVA_T_USB2=m -+CONFIG_DVB_USB_TTUSB2=m -+CONFIG_DVB_USB_DTT200U=m -+CONFIG_DVB_USB_OPERA1=m -+CONFIG_DVB_USB_AF9005=m -+CONFIG_DVB_USB_AF9005_REMOTE=m -+CONFIG_DVB_USB_PCTV452E=m -+CONFIG_DVB_USB_DW2102=m -+CONFIG_DVB_USB_CINERGY_T2=m -+CONFIG_DVB_USB_DTV5100=m -+CONFIG_DVB_USB_FRIIO=m -+CONFIG_DVB_USB_AZ6027=m -+CONFIG_DVB_USB_TECHNISAT_USB2=m -+CONFIG_DVB_USB_V2=m -+CONFIG_DVB_USB_AF9015=m -+CONFIG_DVB_USB_AF9035=m -+CONFIG_DVB_USB_ANYSEE=m -+CONFIG_DVB_USB_AU6610=m -+CONFIG_DVB_USB_AZ6007=m -+CONFIG_DVB_USB_CE6230=m -+CONFIG_DVB_USB_EC168=m -+CONFIG_DVB_USB_GL861=m -+CONFIG_DVB_USB_LME2510=m -+CONFIG_DVB_USB_MXL111SF=m -+CONFIG_DVB_USB_RTL28XXU=m -+CONFIG_DVB_USB_DVBSKY=m -+CONFIG_SMS_USB_DRV=m -+CONFIG_DVB_B2C2_FLEXCOP_USB=m -+CONFIG_DVB_AS102=m -+CONFIG_VIDEO_EM28XX=m -+CONFIG_VIDEO_EM28XX_V4L2=m -+CONFIG_VIDEO_EM28XX_ALSA=m -+CONFIG_VIDEO_EM28XX_DVB=m -+CONFIG_V4L_PLATFORM_DRIVERS=y -+CONFIG_VIDEO_BCM2835=y -+CONFIG_VIDEO_BCM2835_MMAL=m -+CONFIG_RADIO_SI470X=y -+CONFIG_USB_SI470X=m -+CONFIG_I2C_SI470X=m -+CONFIG_RADIO_SI4713=m -+CONFIG_I2C_SI4713=m -+CONFIG_USB_MR800=m -+CONFIG_USB_DSBR=m -+CONFIG_RADIO_SHARK=m -+CONFIG_RADIO_SHARK2=m -+CONFIG_USB_KEENE=m -+CONFIG_USB_MA901=m -+CONFIG_RADIO_TEA5764=m -+CONFIG_RADIO_SAA7706H=m -+CONFIG_RADIO_TEF6862=m -+CONFIG_RADIO_WL1273=m -+CONFIG_RADIO_WL128X=m -+# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set -+CONFIG_VIDEO_UDA1342=m -+CONFIG_VIDEO_SONY_BTF_MPX=m -+CONFIG_VIDEO_TVP5150=m -+CONFIG_VIDEO_TW2804=m -+CONFIG_VIDEO_TW9903=m -+CONFIG_VIDEO_TW9906=m -+CONFIG_VIDEO_OV7640=m -+CONFIG_VIDEO_MT9V011=m -+CONFIG_DRM=m -+CONFIG_DRM_LOAD_EDID_FIRMWARE=y -+CONFIG_DRM_UDL=m -+CONFIG_DRM_VC4=m -+CONFIG_FB=y -+CONFIG_FB_BCM2708=y -+CONFIG_FB_UDL=m -+CONFIG_FB_SSD1307=m -+CONFIG_FB_RPISENSE=m -+# CONFIG_BACKLIGHT_GENERIC is not set -+CONFIG_BACKLIGHT_RPI=m -+CONFIG_BACKLIGHT_GPIO=m -+CONFIG_FRAMEBUFFER_CONSOLE=y -+CONFIG_LOGO=y -+# CONFIG_LOGO_LINUX_MONO is not set -+# CONFIG_LOGO_LINUX_VGA16 is not set -+CONFIG_SOUND=y -+CONFIG_SND=m -+CONFIG_SND_SEQUENCER=m -+CONFIG_SND_SEQ_DUMMY=m -+CONFIG_SND_MIXER_OSS=m -+CONFIG_SND_PCM_OSS=m -+CONFIG_SND_SEQUENCER_OSS=y -+CONFIG_SND_HRTIMER=m -+CONFIG_SND_DUMMY=m -+CONFIG_SND_ALOOP=m -+CONFIG_SND_VIRMIDI=m -+CONFIG_SND_MTPAV=m -+CONFIG_SND_SERIAL_U16550=m -+CONFIG_SND_MPU401=m -+CONFIG_SND_BCM2835=m -+CONFIG_SND_USB_AUDIO=m -+CONFIG_SND_USB_UA101=m -+CONFIG_SND_USB_CAIAQ=m -+CONFIG_SND_USB_CAIAQ_INPUT=y -+CONFIG_SND_USB_6FIRE=m -+CONFIG_SND_SOC=m -+CONFIG_SND_BCM2835_SOC_I2S=m -+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m -+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m -+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m -+CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m -+CONFIG_SND_BCM2708_SOC_RPI_DAC=m -+CONFIG_SND_BCM2708_SOC_RPI_PROTO=m -+CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m -+CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m -+CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m -+CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m -+CONFIG_SND_BCM2708_SOC_RASPIDAC3=m -+CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m -+CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m -+CONFIG_SND_DIGIDAC1_SOUNDCARD=m -+CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m -+CONFIG_SND_SOC_ADAU1701=m -+CONFIG_SND_SOC_WM8804_I2C=m -+CONFIG_SND_SIMPLE_CARD=m -+CONFIG_SOUND_PRIME=m -+CONFIG_HIDRAW=y -+CONFIG_UHID=m -+CONFIG_HID_A4TECH=m -+CONFIG_HID_ACRUX=m -+CONFIG_HID_APPLE=m -+CONFIG_HID_BELKIN=m -+CONFIG_HID_BETOP_FF=m -+CONFIG_HID_CHERRY=m -+CONFIG_HID_CHICONY=m -+CONFIG_HID_CYPRESS=m -+CONFIG_HID_DRAGONRISE=m -+CONFIG_HID_EMS_FF=m -+CONFIG_HID_ELECOM=m -+CONFIG_HID_ELO=m -+CONFIG_HID_EZKEY=m -+CONFIG_HID_HOLTEK=m -+CONFIG_HID_KEYTOUCH=m -+CONFIG_HID_KYE=m -+CONFIG_HID_UCLOGIC=m -+CONFIG_HID_WALTOP=m -+CONFIG_HID_GYRATION=m -+CONFIG_HID_TWINHAN=m -+CONFIG_HID_KENSINGTON=m -+CONFIG_HID_LCPOWER=m -+CONFIG_HID_LOGITECH=m -+CONFIG_HID_LOGITECH_DJ=m -+CONFIG_LOGITECH_FF=y -+CONFIG_LOGIRUMBLEPAD2_FF=y -+CONFIG_LOGIG940_FF=y -+CONFIG_HID_MAGICMOUSE=m -+CONFIG_HID_MICROSOFT=m -+CONFIG_HID_MONTEREY=m -+CONFIG_HID_MULTITOUCH=m -+CONFIG_HID_NTRIG=m -+CONFIG_HID_ORTEK=m -+CONFIG_HID_PANTHERLORD=m -+CONFIG_HID_PETALYNX=m -+CONFIG_HID_PICOLCD=m -+CONFIG_HID_ROCCAT=m -+CONFIG_HID_SAMSUNG=m -+CONFIG_HID_SONY=m -+CONFIG_HID_SPEEDLINK=m -+CONFIG_HID_SUNPLUS=m -+CONFIG_HID_GREENASIA=m -+CONFIG_HID_SMARTJOYPLUS=m -+CONFIG_HID_TOPSEED=m -+CONFIG_HID_THINGM=m -+CONFIG_HID_THRUSTMASTER=m -+CONFIG_HID_WACOM=m -+CONFIG_HID_WIIMOTE=m -+CONFIG_HID_XINMO=m -+CONFIG_HID_ZEROPLUS=m -+CONFIG_HID_ZYDACRON=m -+CONFIG_HID_PID=y -+CONFIG_USB_HIDDEV=y -+CONFIG_USB=y -+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -+CONFIG_USB_MON=m -+CONFIG_USB_DWCOTG=y -+CONFIG_USB_PRINTER=m -+CONFIG_USB_STORAGE=y -+CONFIG_USB_STORAGE_REALTEK=m -+CONFIG_USB_STORAGE_DATAFAB=m -+CONFIG_USB_STORAGE_FREECOM=m -+CONFIG_USB_STORAGE_ISD200=m -+CONFIG_USB_STORAGE_USBAT=m -+CONFIG_USB_STORAGE_SDDR09=m -+CONFIG_USB_STORAGE_SDDR55=m -+CONFIG_USB_STORAGE_JUMPSHOT=m -+CONFIG_USB_STORAGE_ALAUDA=m -+CONFIG_USB_STORAGE_ONETOUCH=m -+CONFIG_USB_STORAGE_KARMA=m -+CONFIG_USB_STORAGE_CYPRESS_ATACB=m -+CONFIG_USB_STORAGE_ENE_UB6250=m -+CONFIG_USB_MDC800=m -+CONFIG_USB_MICROTEK=m -+CONFIG_USBIP_CORE=m -+CONFIG_USBIP_VHCI_HCD=m -+CONFIG_USBIP_HOST=m -+CONFIG_USB_DWC2=m -+CONFIG_USB_SERIAL=m -+CONFIG_USB_SERIAL_GENERIC=y -+CONFIG_USB_SERIAL_AIRCABLE=m -+CONFIG_USB_SERIAL_ARK3116=m -+CONFIG_USB_SERIAL_BELKIN=m -+CONFIG_USB_SERIAL_CH341=m -+CONFIG_USB_SERIAL_WHITEHEAT=m -+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m -+CONFIG_USB_SERIAL_CP210X=m -+CONFIG_USB_SERIAL_CYPRESS_M8=m -+CONFIG_USB_SERIAL_EMPEG=m -+CONFIG_USB_SERIAL_FTDI_SIO=m -+CONFIG_USB_SERIAL_VISOR=m -+CONFIG_USB_SERIAL_IPAQ=m -+CONFIG_USB_SERIAL_IR=m -+CONFIG_USB_SERIAL_EDGEPORT=m -+CONFIG_USB_SERIAL_EDGEPORT_TI=m -+CONFIG_USB_SERIAL_F81232=m -+CONFIG_USB_SERIAL_GARMIN=m -+CONFIG_USB_SERIAL_IPW=m -+CONFIG_USB_SERIAL_IUU=m -+CONFIG_USB_SERIAL_KEYSPAN_PDA=m -+CONFIG_USB_SERIAL_KEYSPAN=m -+CONFIG_USB_SERIAL_KLSI=m -+CONFIG_USB_SERIAL_KOBIL_SCT=m -+CONFIG_USB_SERIAL_MCT_U232=m -+CONFIG_USB_SERIAL_METRO=m -+CONFIG_USB_SERIAL_MOS7720=m -+CONFIG_USB_SERIAL_MOS7840=m -+CONFIG_USB_SERIAL_NAVMAN=m -+CONFIG_USB_SERIAL_PL2303=m -+CONFIG_USB_SERIAL_OTI6858=m -+CONFIG_USB_SERIAL_QCAUX=m -+CONFIG_USB_SERIAL_QUALCOMM=m -+CONFIG_USB_SERIAL_SPCP8X5=m -+CONFIG_USB_SERIAL_SAFE=m -+CONFIG_USB_SERIAL_SIERRAWIRELESS=m -+CONFIG_USB_SERIAL_SYMBOL=m -+CONFIG_USB_SERIAL_TI=m -+CONFIG_USB_SERIAL_CYBERJACK=m -+CONFIG_USB_SERIAL_XIRCOM=m -+CONFIG_USB_SERIAL_OPTION=m -+CONFIG_USB_SERIAL_OMNINET=m -+CONFIG_USB_SERIAL_OPTICON=m -+CONFIG_USB_SERIAL_XSENS_MT=m -+CONFIG_USB_SERIAL_WISHBONE=m -+CONFIG_USB_SERIAL_SSU100=m -+CONFIG_USB_SERIAL_QT2=m -+CONFIG_USB_SERIAL_DEBUG=m -+CONFIG_USB_EMI62=m -+CONFIG_USB_EMI26=m -+CONFIG_USB_ADUTUX=m -+CONFIG_USB_SEVSEG=m -+CONFIG_USB_RIO500=m -+CONFIG_USB_LEGOTOWER=m -+CONFIG_USB_LCD=m -+CONFIG_USB_LED=m -+CONFIG_USB_CYPRESS_CY7C63=m -+CONFIG_USB_CYTHERM=m -+CONFIG_USB_IDMOUSE=m -+CONFIG_USB_FTDI_ELAN=m -+CONFIG_USB_APPLEDISPLAY=m -+CONFIG_USB_LD=m -+CONFIG_USB_TRANCEVIBRATOR=m -+CONFIG_USB_IOWARRIOR=m -+CONFIG_USB_TEST=m -+CONFIG_USB_ISIGHTFW=m -+CONFIG_USB_YUREX=m -+CONFIG_USB_ATM=m -+CONFIG_USB_SPEEDTOUCH=m -+CONFIG_USB_CXACRU=m -+CONFIG_USB_UEAGLEATM=m -+CONFIG_USB_XUSBATM=m -+CONFIG_USB_GADGET=m -+CONFIG_USB_ZERO=m -+CONFIG_USB_AUDIO=m -+CONFIG_USB_ETH=m -+CONFIG_USB_GADGETFS=m -+CONFIG_USB_MASS_STORAGE=m -+CONFIG_USB_G_SERIAL=m -+CONFIG_USB_MIDI_GADGET=m -+CONFIG_USB_G_PRINTER=m -+CONFIG_USB_CDC_COMPOSITE=m -+CONFIG_USB_G_ACM_MS=m -+CONFIG_USB_G_MULTI=m -+CONFIG_USB_G_HID=m -+CONFIG_USB_G_WEBCAM=m -+CONFIG_MMC=y -+CONFIG_MMC_BLOCK_MINORS=32 -+CONFIG_MMC_BCM2835=y -+CONFIG_MMC_BCM2835_DMA=y -+CONFIG_MMC_BCM2835_SDHOST=y -+CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_PLTFM=y -+CONFIG_MMC_SPI=m -+CONFIG_LEDS_CLASS=y -+CONFIG_LEDS_GPIO=y -+CONFIG_LEDS_TRIGGER_TIMER=y -+CONFIG_LEDS_TRIGGER_ONESHOT=y -+CONFIG_LEDS_TRIGGER_HEARTBEAT=y -+CONFIG_LEDS_TRIGGER_BACKLIGHT=y -+CONFIG_LEDS_TRIGGER_CPU=y -+CONFIG_LEDS_TRIGGER_GPIO=y -+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y -+CONFIG_LEDS_TRIGGER_TRANSIENT=m -+CONFIG_LEDS_TRIGGER_CAMERA=m -+CONFIG_LEDS_TRIGGER_INPUT=y -+CONFIG_LEDS_TRIGGER_PANIC=y -+CONFIG_RTC_CLASS=y -+# CONFIG_RTC_HCTOSYS is not set -+CONFIG_RTC_DRV_DS1307=m -+CONFIG_RTC_DRV_DS1374=m -+CONFIG_RTC_DRV_DS1672=m -+CONFIG_RTC_DRV_MAX6900=m -+CONFIG_RTC_DRV_RS5C372=m -+CONFIG_RTC_DRV_ISL1208=m -+CONFIG_RTC_DRV_ISL12022=m -+CONFIG_RTC_DRV_ISL12057=m -+CONFIG_RTC_DRV_X1205=m -+CONFIG_RTC_DRV_PCF8523=m -+CONFIG_RTC_DRV_PCF8563=m -+CONFIG_RTC_DRV_PCF8583=m -+CONFIG_RTC_DRV_M41T80=m -+CONFIG_RTC_DRV_BQ32K=m -+CONFIG_RTC_DRV_S35390A=m -+CONFIG_RTC_DRV_FM3130=m -+CONFIG_RTC_DRV_RX8581=m -+CONFIG_RTC_DRV_RX8025=m -+CONFIG_RTC_DRV_EM3027=m -+CONFIG_RTC_DRV_M41T93=m -+CONFIG_RTC_DRV_M41T94=m -+CONFIG_RTC_DRV_DS1302=m -+CONFIG_RTC_DRV_DS1305=m -+CONFIG_RTC_DRV_DS1390=m -+CONFIG_RTC_DRV_R9701=m -+CONFIG_RTC_DRV_RX4581=m -+CONFIG_RTC_DRV_RS5C348=m -+CONFIG_RTC_DRV_MAX6902=m -+CONFIG_RTC_DRV_PCF2123=m -+CONFIG_RTC_DRV_DS3232=m -+CONFIG_RTC_DRV_PCF2127=m -+CONFIG_RTC_DRV_RV3029C2=m -+CONFIG_DMADEVICES=y -+CONFIG_DMA_BCM2835=y -+CONFIG_DMA_BCM2708=y -+CONFIG_UIO=m -+CONFIG_UIO_PDRV_GENIRQ=m -+CONFIG_STAGING=y -+CONFIG_PRISM2_USB=m -+CONFIG_R8712U=m -+CONFIG_R8188EU=m -+CONFIG_R8723AU=m -+CONFIG_VT6656=m -+CONFIG_SPEAKUP=m -+CONFIG_SPEAKUP_SYNTH_SOFT=m -+CONFIG_STAGING_MEDIA=y -+CONFIG_LIRC_STAGING=y -+CONFIG_LIRC_IMON=m -+CONFIG_LIRC_RPI=m -+CONFIG_LIRC_SASEM=m -+CONFIG_LIRC_SERIAL=m -+CONFIG_FB_TFT=m -+CONFIG_FB_TFT_AGM1264K_FL=m -+CONFIG_FB_TFT_BD663474=m -+CONFIG_FB_TFT_HX8340BN=m -+CONFIG_FB_TFT_HX8347D=m -+CONFIG_FB_TFT_HX8353D=m -+CONFIG_FB_TFT_ILI9163=m -+CONFIG_FB_TFT_ILI9320=m -+CONFIG_FB_TFT_ILI9325=m -+CONFIG_FB_TFT_ILI9340=m -+CONFIG_FB_TFT_ILI9341=m -+CONFIG_FB_TFT_ILI9481=m -+CONFIG_FB_TFT_ILI9486=m -+CONFIG_FB_TFT_PCD8544=m -+CONFIG_FB_TFT_RA8875=m -+CONFIG_FB_TFT_S6D02A1=m -+CONFIG_FB_TFT_S6D1121=m -+CONFIG_FB_TFT_SSD1289=m -+CONFIG_FB_TFT_SSD1306=m -+CONFIG_FB_TFT_SSD1331=m -+CONFIG_FB_TFT_SSD1351=m -+CONFIG_FB_TFT_ST7735R=m -+CONFIG_FB_TFT_TINYLCD=m -+CONFIG_FB_TFT_TLS8204=m -+CONFIG_FB_TFT_UC1701=m -+CONFIG_FB_TFT_UPD161704=m -+CONFIG_FB_TFT_WATTEROTT=m -+CONFIG_FB_FLEX=m -+CONFIG_FB_TFT_FBTFT_DEVICE=m -+CONFIG_MAILBOX=y -+CONFIG_BCM2835_MBOX=y -+# CONFIG_IOMMU_SUPPORT is not set -+CONFIG_RASPBERRYPI_POWER=y -+CONFIG_EXTCON=m -+CONFIG_EXTCON_ARIZONA=m -+CONFIG_IIO=m -+CONFIG_IIO_BUFFER=y -+CONFIG_IIO_BUFFER_CB=m -+CONFIG_IIO_KFIFO_BUF=m -+CONFIG_MCP320X=m -+CONFIG_MCP3422=m -+CONFIG_DHT11=m -+CONFIG_PWM_BCM2835=m -+CONFIG_PWM_PCA9685=m -+CONFIG_RASPBERRYPI_FIRMWARE=y -+CONFIG_EXT4_FS=y -+CONFIG_EXT4_FS_POSIX_ACL=y -+CONFIG_EXT4_FS_SECURITY=y -+CONFIG_REISERFS_FS=m -+CONFIG_REISERFS_FS_XATTR=y -+CONFIG_REISERFS_FS_POSIX_ACL=y -+CONFIG_REISERFS_FS_SECURITY=y -+CONFIG_JFS_FS=m -+CONFIG_JFS_POSIX_ACL=y -+CONFIG_JFS_SECURITY=y -+CONFIG_JFS_STATISTICS=y -+CONFIG_XFS_FS=m -+CONFIG_XFS_QUOTA=y -+CONFIG_XFS_POSIX_ACL=y -+CONFIG_XFS_RT=y -+CONFIG_GFS2_FS=m -+CONFIG_OCFS2_FS=m -+CONFIG_BTRFS_FS=m -+CONFIG_BTRFS_FS_POSIX_ACL=y -+CONFIG_NILFS2_FS=m -+CONFIG_F2FS_FS=y -+CONFIG_FANOTIFY=y -+CONFIG_QFMT_V1=m -+CONFIG_QFMT_V2=m -+CONFIG_AUTOFS4_FS=y -+CONFIG_FUSE_FS=m -+CONFIG_CUSE=m -+CONFIG_OVERLAY_FS=m -+CONFIG_FSCACHE=y -+CONFIG_FSCACHE_STATS=y -+CONFIG_FSCACHE_HISTOGRAM=y -+CONFIG_CACHEFILES=y -+CONFIG_ISO9660_FS=m -+CONFIG_JOLIET=y -+CONFIG_ZISOFS=y -+CONFIG_UDF_FS=m -+CONFIG_MSDOS_FS=y -+CONFIG_VFAT_FS=y -+CONFIG_FAT_DEFAULT_IOCHARSET="ascii" -+CONFIG_NTFS_FS=m -+CONFIG_NTFS_RW=y -+CONFIG_TMPFS=y -+CONFIG_TMPFS_POSIX_ACL=y -+CONFIG_ECRYPT_FS=m -+CONFIG_HFS_FS=m -+CONFIG_HFSPLUS_FS=m -+CONFIG_JFFS2_FS=m -+CONFIG_JFFS2_SUMMARY=y -+CONFIG_UBIFS_FS=m -+CONFIG_SQUASHFS=m -+CONFIG_SQUASHFS_XATTR=y -+CONFIG_SQUASHFS_LZO=y -+CONFIG_SQUASHFS_XZ=y -+CONFIG_NFS_FS=y -+CONFIG_NFS_V3_ACL=y -+CONFIG_NFS_V4=y -+CONFIG_NFS_SWAP=y -+CONFIG_ROOT_NFS=y -+CONFIG_NFS_FSCACHE=y -+CONFIG_NFSD=m -+CONFIG_NFSD_V3_ACL=y -+CONFIG_NFSD_V4=y -+CONFIG_CIFS=m -+CONFIG_CIFS_WEAK_PW_HASH=y -+CONFIG_CIFS_UPCALL=y -+CONFIG_CIFS_XATTR=y -+CONFIG_CIFS_POSIX=y -+CONFIG_CIFS_ACL=y -+CONFIG_CIFS_DFS_UPCALL=y -+CONFIG_CIFS_SMB2=y -+CONFIG_CIFS_FSCACHE=y -+CONFIG_9P_FS=m -+CONFIG_9P_FS_POSIX_ACL=y -+CONFIG_NLS_DEFAULT="utf8" -+CONFIG_NLS_CODEPAGE_437=y -+CONFIG_NLS_CODEPAGE_737=m -+CONFIG_NLS_CODEPAGE_775=m -+CONFIG_NLS_CODEPAGE_850=m -+CONFIG_NLS_CODEPAGE_852=m -+CONFIG_NLS_CODEPAGE_855=m -+CONFIG_NLS_CODEPAGE_857=m -+CONFIG_NLS_CODEPAGE_860=m -+CONFIG_NLS_CODEPAGE_861=m -+CONFIG_NLS_CODEPAGE_862=m -+CONFIG_NLS_CODEPAGE_863=m -+CONFIG_NLS_CODEPAGE_864=m -+CONFIG_NLS_CODEPAGE_865=m -+CONFIG_NLS_CODEPAGE_866=m -+CONFIG_NLS_CODEPAGE_869=m -+CONFIG_NLS_CODEPAGE_936=m -+CONFIG_NLS_CODEPAGE_950=m -+CONFIG_NLS_CODEPAGE_932=m -+CONFIG_NLS_CODEPAGE_949=m -+CONFIG_NLS_CODEPAGE_874=m -+CONFIG_NLS_ISO8859_8=m -+CONFIG_NLS_CODEPAGE_1250=m -+CONFIG_NLS_CODEPAGE_1251=m -+CONFIG_NLS_ASCII=y -+CONFIG_NLS_ISO8859_1=m -+CONFIG_NLS_ISO8859_2=m -+CONFIG_NLS_ISO8859_3=m -+CONFIG_NLS_ISO8859_4=m -+CONFIG_NLS_ISO8859_5=m -+CONFIG_NLS_ISO8859_6=m -+CONFIG_NLS_ISO8859_7=m -+CONFIG_NLS_ISO8859_9=m -+CONFIG_NLS_ISO8859_13=m -+CONFIG_NLS_ISO8859_14=m -+CONFIG_NLS_ISO8859_15=m -+CONFIG_NLS_KOI8_R=m -+CONFIG_NLS_KOI8_U=m -+CONFIG_DLM=m -+CONFIG_PRINTK_TIME=y -+CONFIG_BOOT_PRINTK_DELAY=y -+CONFIG_DEBUG_MEMORY_INIT=y -+CONFIG_DETECT_HUNG_TASK=y -+CONFIG_TIMER_STATS=y -+CONFIG_LATENCYTOP=y -+CONFIG_IRQSOFF_TRACER=y -+CONFIG_SCHED_TRACER=y -+CONFIG_STACK_TRACER=y -+CONFIG_BLK_DEV_IO_TRACE=y -+# CONFIG_KPROBE_EVENT is not set -+CONFIG_FUNCTION_PROFILER=y -+CONFIG_KGDB=y -+CONFIG_KGDB_KDB=y -+CONFIG_KDB_KEYBOARD=y -+CONFIG_CRYPTO_USER=m -+CONFIG_CRYPTO_CRYPTD=m -+CONFIG_CRYPTO_CBC=y -+CONFIG_CRYPTO_CTS=m -+CONFIG_CRYPTO_XTS=m -+CONFIG_CRYPTO_XCBC=m -+CONFIG_CRYPTO_SHA512=m -+CONFIG_CRYPTO_TGR192=m -+CONFIG_CRYPTO_WP512=m -+CONFIG_CRYPTO_CAST5=m -+CONFIG_CRYPTO_DES=y -+CONFIG_CRYPTO_USER_API_SKCIPHER=m -+# CONFIG_CRYPTO_HW is not set -+CONFIG_ARM_CRYPTO=y -+CONFIG_CRYPTO_SHA1_ARM=m -+CONFIG_CRYPTO_AES_ARM=m -+CONFIG_CRC_ITU_T=y -+CONFIG_LIBCRC32C=y - -From c9be7ac6056fe07e3ab84240f94d92206d3f4881 Mon Sep 17 00:00:00 2001 +From dc368908f8fcfb41839bb91331830dc83e941716 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 14 Jul 2014 22:02:09 +0100 -Subject: [PATCH 060/160] hid: Reduce default mouse polling interval to 60Hz +Subject: [PATCH 069/132] hid: Reduce default mouse polling interval to 60Hz Reduces overhead when using X --- @@ -124587,10 +123812,10 @@ index ae83af649a607f67239f1a64bf45dd4b5770cc7d..4a7af9d0b910f59d17421ce14138400d ret = -ENOMEM; if (usb_endpoint_dir_in(endpoint)) { -From e0958c670c72e29f0bd64823c374cb390fa66448 Mon Sep 17 00:00:00 2001 +From 0d492c154d455c8b31d7f62d45c518b78d37a974 Mon Sep 17 00:00:00 2001 From: Gordon Hollingworth Date: Tue, 12 May 2015 14:47:56 +0100 -Subject: [PATCH 061/160] rpi-ft5406: Add touchscreen driver for pi LCD display +Subject: [PATCH 070/132] rpi-ft5406: Add touchscreen driver for pi LCD display Fix driver detection failure Check that the buffer response is non-zero meaning the touchscreen was detected @@ -124603,7 +123828,7 @@ rpi-ft5406: Use firmware API create mode 100644 drivers/input/touchscreen/rpi-ft5406.c diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig -index 8ecdc38fd489c0dfe8eb383a81259983a99d7d96..1e4e7a005b58dc9eee1c4e7034d6652a30151827 100644 +index 2fb1f430a4318fcddf65a85a813aae96861da09c..f43fc4561170d1649d77e5b4918ca56ec48e95e8 100644 --- a/drivers/input/touchscreen/Kconfig +++ b/drivers/input/touchscreen/Kconfig @@ -630,6 +630,13 @@ config TOUCHSCREEN_EDT_FT5X06 @@ -124619,9 +123844,9 @@ index 8ecdc38fd489c0dfe8eb383a81259983a99d7d96..1e4e7a005b58dc9eee1c4e7034d6652a + config TOUCHSCREEN_MIGOR tristate "Renesas MIGO-R touchscreen" - depends on SH_MIGOR && I2C + depends on (SH_MIGOR || COMPILE_TEST) && I2C diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile -index f42975e719e07205081f08d4e4cd882a792518dc..92590b30828b5c5a5411c2f3510bcb28a7f69afd 100644 +index b4373d6be4021687c1f4fc4b4bc0faa054141ec0..9665772864cff27a33c0533e5147f29656e791bd 100644 --- a/drivers/input/touchscreen/Makefile +++ b/drivers/input/touchscreen/Makefile @@ -29,6 +29,7 @@ obj-$(CONFIG_TOUCHSCREEN_DA9034) += da9034-ts.o @@ -124885,10 +124110,10 @@ index 0000000000000000000000000000000000000000..b27dbee8f56773dbd2a5503dc864747d +MODULE_DESCRIPTION("Touchscreen driver for memory based FT5406"); +MODULE_LICENSE("GPL"); -From 21ff858d132f5514ec1802961c725f8c8ea5c356 Mon Sep 17 00:00:00 2001 +From 3e8caf58c5bb19c589d5312b8087eea832d87491 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 13 Oct 2014 11:47:53 +0100 -Subject: [PATCH 062/160] Improve __copy_to_user and __copy_from_user +Subject: [PATCH 071/132] Improve __copy_to_user and __copy_from_user performance Provide a __copy_from_user that uses memcpy. On BCM2708, use @@ -124945,10 +124170,10 @@ index cf4f3aad0fc1c2154c6cf3839ff21bb1c46d6499..9fe7780002ce1847b9009ff9b741b56f #define memset(p,v,n) \ diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h -index 35c9db857ebe9c7d53715ec42518a6e9fbe1dc6e..52d3401ae932b565f732294e5ef2f7a4c184f0ed 100644 +index a93c0f99acf7767c680158cf96acef87d1f0da51..cbad0e035c6b8f39463007071539797da586e620 100644 --- a/arch/arm/include/asm/uaccess.h +++ b/arch/arm/include/asm/uaccess.h -@@ -493,6 +493,9 @@ do { \ +@@ -477,6 +477,9 @@ do { \ extern unsigned long __must_check arm_copy_from_user(void *to, const void __user *from, unsigned long n); @@ -124959,7 +124184,7 @@ index 35c9db857ebe9c7d53715ec42518a6e9fbe1dc6e..52d3401ae932b565f732294e5ef2f7a4 __copy_from_user(void *to, const void __user *from, unsigned long n) { diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile -index d8a780799506b59bc2edd3f6a513021bcb45ebc0..9c7dc5bc616311a5181a11c479da7cee64208f58 100644 +index 27f4d96258a2e66193d6a3701bb4cf9a44399aad..5235717443bd221df0b190adeb7d90231a5e5693 100644 --- a/arch/arm/lib/Makefile +++ b/arch/arm/lib/Makefile @@ -6,9 +6,8 @@ @@ -126444,10 +125669,10 @@ index 6bd1089b07e0960830ed6bd6a8345202b7efd8b0..cd17dd11ebe7bbe00089e70cd2ccea74 static unsigned long noinline __clear_user_memset(void __user *addr, unsigned long n) -From 031f0b6d975ca80b44ba8b8f29d9b918007762cf Mon Sep 17 00:00:00 2001 +From 41b0f618231c4e858944cfc0924e9669732d4e9a Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 25 Jun 2015 12:16:11 +0100 -Subject: [PATCH 063/160] gpio-poweroff: Allow it to work on Raspberry Pi +Subject: [PATCH 072/132] gpio-poweroff: Allow it to work on Raspberry Pi The Raspberry Pi firmware manages the power-down and reboot process. To do this it installs a pm_power_off handler, causing @@ -126482,17 +125707,17 @@ index be3d81ff51cc3f510d85e4eed7a52960e51e7bc1..a030ae9fb1fca325061c093696e82186 "%s: pm_power_off function already registered", __func__); -From da8934b960150acfa1f626edb90b308ff51545e3 Mon Sep 17 00:00:00 2001 +From d86bf4db3160515144406a4910973e9236667d95 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 14 Jul 2015 14:32:47 +0100 -Subject: [PATCH 064/160] mfd: Add Raspberry Pi Sense HAT core driver +Subject: [PATCH 073/132] mfd: Add Raspberry Pi Sense HAT core driver --- drivers/input/joystick/Kconfig | 8 + drivers/input/joystick/Makefile | 1 + drivers/input/joystick/rpisense-js.c | 153 ++++++++++++++++ drivers/mfd/Kconfig | 8 + - drivers/mfd/Makefile | 2 + + drivers/mfd/Makefile | 1 + drivers/mfd/rpisense-core.c | 157 +++++++++++++++++ drivers/video/fbdev/Kconfig | 13 ++ drivers/video/fbdev/Makefile | 1 + @@ -126500,7 +125725,7 @@ Subject: [PATCH 064/160] mfd: Add Raspberry Pi Sense HAT core driver include/linux/mfd/rpisense/core.h | 47 +++++ include/linux/mfd/rpisense/framebuffer.h | 32 ++++ include/linux/mfd/rpisense/joystick.h | 35 ++++ - 12 files changed, 750 insertions(+) + 12 files changed, 749 insertions(+) create mode 100644 drivers/input/joystick/rpisense-js.c create mode 100644 drivers/mfd/rpisense-core.c create mode 100644 drivers/video/fbdev/rpisense-fb.c @@ -126695,7 +125920,7 @@ index 0000000000000000000000000000000000000000..6a416769065d2198344792eb02d8e38d +MODULE_AUTHOR("Serge Schneider "); +MODULE_LICENSE("GPL"); diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig -index 1bcf601de5bcea35c6844362811213bfd9b406c7..c264e883b54f4538a64db1536e9583193b322014 100644 +index 2d1fb64205924de8ab87e14608004fc169557cea..7c78a0dca1fd4048aac9e2c9317c39da2abeed08 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -10,6 +10,14 @@ config MFD_CORE @@ -126714,14 +125939,13 @@ index 1bcf601de5bcea35c6844362811213bfd9b406c7..c264e883b54f4538a64db1536e958319 tristate "AMD CS5535 and CS5536 southbridge core functions" select MFD_CORE diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile -index 42a66e19e191da93b5036cd9fd8bb9e1cb1340bd..8806f37c52ec1a378804acdf4184ef6729aa815a 100644 +index 2ba3ba35f745309de62050ab8442cea87a0edb2e..6f2b1d39e4a5c7860dcf971c47096759c578b6fc 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile -@@ -205,3 +205,5 @@ intel-soc-pmic-objs := intel_soc_pmic_core.o intel_soc_pmic_crc.o - intel-soc-pmic-$(CONFIG_INTEL_PMC_IPC) += intel_soc_pmic_bxtwc.o - obj-$(CONFIG_INTEL_SOC_PMIC) += intel-soc-pmic.o +@@ -207,3 +207,4 @@ obj-$(CONFIG_INTEL_SOC_PMIC) += intel-soc-pmic.o obj-$(CONFIG_MFD_MT6397) += mt6397-core.o -+ + + obj-$(CONFIG_MFD_ALTERA_A10SR) += altera-a10sr.o +obj-$(CONFIG_MFD_RPISENSE_CORE) += rpisense-core.o diff --git a/drivers/mfd/rpisense-core.c b/drivers/mfd/rpisense-core.c new file mode 100644 @@ -127351,10 +126575,10 @@ index 0000000000000000000000000000000000000000..56196dc2af10e464a1e3f98b028dca1c + +#endif -From 42604d2d20e4618c60a9cb6e0eddf7ee28fe2891 Mon Sep 17 00:00:00 2001 +From 0e9373ce2fc58deb517e817386b9816e4dc2771b Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 19:19:08 +0100 -Subject: [PATCH 065/160] ASoC: Add support for HifiBerry DAC +Subject: [PATCH 074/132] ASoC: Add support for HifiBerry DAC This adds a machine driver for the HifiBerry DAC. It is a sound card that can @@ -127362,20 +126586,23 @@ be stacked onto the Raspberry Pi. Signed-off-by: Florian Meier --- - sound/soc/bcm/Kconfig | 7 +++ + sound/soc/bcm/Kconfig | 9 +++- sound/soc/bcm/Makefile | 4 ++ sound/soc/bcm/hifiberry_dac.c | 123 ++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 134 insertions(+) + 3 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 sound/soc/bcm/hifiberry_dac.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index c5070aec5996aafb2d9daaf75163e16a29bc6892..ce81f14a88d08c90fb565cf3d60321a9b9a1fcee 100644 +index 03a303e52d5fe57bbdd8769d24bca59067c54c65..42e1358aa1e0f67a08912af7ea17b8756ab06b1c 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -7,3 +7,10 @@ config SND_BCM2835_SOC_I2S - Say Y or M if you want to add support for codecs attached to - the BCM2835 I2S interface. You will also need - to select the audio interfaces to support below. +@@ -15,4 +15,11 @@ config SND_SOC_CYGNUS + Say Y if you want to add support for ASoC audio on Broadcom + Cygnus chips (bcm958300, bcm958305, bcm911360) + +- If you don't know what to do here, say N. +\ No newline at end of file ++ If you don't know what to do here, say N. + +config SND_BCM2708_SOC_HIFIBERRY_DAC + tristate "Support for HifiBerry DAC" @@ -127384,12 +126611,12 @@ index c5070aec5996aafb2d9daaf75163e16a29bc6892..ce81f14a88d08c90fb565cf3d60321a9 + help + Say Y or M if you want to add support for HifiBerry DAC. diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index bc816b71e5a40958953bf7bf7e7bd08342e87738..b877d386363d935deefda3664089a4ae5b33b889 100644 +index fc739d0078842680802389500dea19334da8fb7b..be80079de3cefbd52f4b78db20ee9a5d554b04c6 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -3,3 +3,7 @@ snd-soc-bcm2835-i2s-objs := bcm2835-i2s.o +@@ -8,3 +8,7 @@ snd-soc-cygnus-objs := cygnus-pcm.o cygnus-ssp.o - obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o + obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o +# BCM2708 Machine Support +snd-soc-hifiberry-dac-objs := hifiberry_dac.o @@ -127525,10 +126752,10 @@ index 0000000000000000000000000000000000000000..29ecc08a227cdd4b3c6141935d0c5d21 +MODULE_DESCRIPTION("ASoC Driver for HifiBerry DAC"); +MODULE_LICENSE("GPL v2"); -From ee783716b27484b9b0c4903a2afaca2cf2f4eb44 Mon Sep 17 00:00:00 2001 +From 01e252694eb7b4252c959cdafbbcd237c602f864 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Mon, 25 Jan 2016 15:48:59 +0000 -Subject: [PATCH 066/160] ASoC: Add support for Rpi-DAC +Subject: [PATCH 075/132] ASoC: Add support for Rpi-DAC --- sound/soc/bcm/Kconfig | 7 +++ @@ -127542,10 +126769,10 @@ Subject: [PATCH 066/160] ASoC: Add support for Rpi-DAC create mode 100644 sound/soc/codecs/pcm1794a.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index ce81f14a88d08c90fb565cf3d60321a9b9a1fcee..900de22369a66758bbe49861238b647bd2ca037e 100644 +index 42e1358aa1e0f67a08912af7ea17b8756ab06b1c..8c1e353458a3460f2c3fe26991498ee16f19ecd1 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -14,3 +14,10 @@ config SND_BCM2708_SOC_HIFIBERRY_DAC +@@ -23,3 +23,10 @@ config SND_BCM2708_SOC_HIFIBERRY_DAC select SND_SOC_PCM5102A help Say Y or M if you want to add support for HifiBerry DAC. @@ -127557,10 +126784,10 @@ index ce81f14a88d08c90fb565cf3d60321a9b9a1fcee..900de22369a66758bbe49861238b647b + help + Say Y or M if you want to add support for RPi-DAC. diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index b877d386363d935deefda3664089a4ae5b33b889..99c96b4c41e46c17c38c8691e7a8a33b1bc7b3bb 100644 +index be80079de3cefbd52f4b78db20ee9a5d554b04c6..09501910f8152b8d516e098433339b5fc2640d0f 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -5,5 +5,7 @@ obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o +@@ -10,5 +10,7 @@ obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o # BCM2708 Machine Support snd-soc-hifiberry-dac-objs := hifiberry_dac.o @@ -127694,10 +126921,10 @@ index 0000000000000000000000000000000000000000..59dc89ecabc082c0a1ed8adacdc4f0f1 +MODULE_DESCRIPTION("ASoC Driver for RPi-DAC"); +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig -index f3fb98f0a995bb41dd473ccc4443164e404c9883..4a53fa058a6837b93d2e66b15fda7183cf355058 100644 +index 1cd6ab344d67def61db455d956ac2d7075a1f6d8..9a51aad8c267f08ce568b2eb23da0951b1dc246e 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig -@@ -93,6 +93,7 @@ config SND_SOC_ALL_CODECS +@@ -97,6 +97,7 @@ config SND_SOC_ALL_CODECS select SND_SOC_PCM1681 if I2C select SND_SOC_PCM179X_I2C if I2C select SND_SOC_PCM179X_SPI if SPI_MASTER @@ -127705,7 +126932,7 @@ index f3fb98f0a995bb41dd473ccc4443164e404c9883..4a53fa058a6837b93d2e66b15fda7183 select SND_SOC_PCM3008 select SND_SOC_PCM3168A_I2C if I2C select SND_SOC_PCM3168A_SPI if SPI_MASTER -@@ -648,6 +649,10 @@ config SND_SOC_RT5616 +@@ -681,6 +682,10 @@ config SND_SOC_RT5616 tristate "Realtek RT5616 CODEC" depends on I2C @@ -127717,10 +126944,10 @@ index f3fb98f0a995bb41dd473ccc4443164e404c9883..4a53fa058a6837b93d2e66b15fda7183 tristate "Realtek ALC5631/RT5631 CODEC" depends on I2C diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile -index 0f548fd34ca3fd9e8a1b080cd2d38a480c3c5212..96b312249d197b2083b157d1c07eb106bc34ba7f 100644 +index 58036af2c7d9837b347ea2b6cdccaad72a711a53..d781f6c90383b3865ae2cc6516e7581bde004d9b 100644 --- a/sound/soc/codecs/Makefile +++ b/sound/soc/codecs/Makefile -@@ -87,6 +87,7 @@ snd-soc-pcm1681-objs := pcm1681.o +@@ -92,6 +92,7 @@ snd-soc-pcm1681-objs := pcm1681.o snd-soc-pcm179x-codec-objs := pcm179x.o snd-soc-pcm179x-i2c-objs := pcm179x-i2c.o snd-soc-pcm179x-spi-objs := pcm179x-spi.o @@ -127728,7 +126955,7 @@ index 0f548fd34ca3fd9e8a1b080cd2d38a480c3c5212..96b312249d197b2083b157d1c07eb106 snd-soc-pcm3008-objs := pcm3008.o snd-soc-pcm3168a-objs := pcm3168a.o snd-soc-pcm3168a-i2c-objs := pcm3168a-i2c.o -@@ -309,6 +310,7 @@ obj-$(CONFIG_SND_SOC_PCM5102A) += snd-soc-pcm5102a.o +@@ -321,6 +322,7 @@ obj-$(CONFIG_SND_SOC_PCM5102A) += snd-soc-pcm5102a.o obj-$(CONFIG_SND_SOC_PCM512x) += snd-soc-pcm512x.o obj-$(CONFIG_SND_SOC_PCM512x_I2C) += snd-soc-pcm512x-i2c.o obj-$(CONFIG_SND_SOC_PCM512x_SPI) += snd-soc-pcm512x-spi.o @@ -127812,10 +127039,10 @@ index 0000000000000000000000000000000000000000..afe1b419582aa40c4b2729d242bb13cd +MODULE_AUTHOR("Florian Meier "); +MODULE_LICENSE("GPL v2"); -From 8a2c53c5e980ba38e40796f4e22e40d50d31f641 Mon Sep 17 00:00:00 2001 +From 3f384f61e5c62914e50dfc10714d3004a4a6c8fd Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Wed, 15 Jan 2014 21:41:23 +0100 -Subject: [PATCH 067/160] ASoC: wm8804: Implement MCLK configuration options, +Subject: [PATCH 076/132] ASoC: wm8804: Implement MCLK configuration options, add 32bit support WM8804 can run with PLL frequencies of 256xfs and 128xfs for most sample rates. At 192kHz only 128xfs is supported. The existing driver selects 128xfs automatically for some lower samples rates. By using an @@ -127864,10 +127091,10 @@ index 8d914702cae4a3fe2c0ca0599cd1ec79f7322c83..c846716b4ed1027ade5512e8be90801d .dapm_widgets = wm8804_dapm_widgets, .num_dapm_widgets = ARRAY_SIZE(wm8804_dapm_widgets), -From 27e13ac032f7dff2ef29b05d6dd5ff1ee5154d0f Mon Sep 17 00:00:00 2001 +From 1f118ca6d879769d9b244f6b993577bf1d5eb224 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Wed, 15 Jan 2014 21:42:08 +0100 -Subject: [PATCH 068/160] ASoC: BCM:Add support for HiFiBerry Digi. Driver is +Subject: [PATCH 077/132] ASoC: BCM:Add support for HiFiBerry Digi. Driver is based on the patched WM8804 driver. Signed-off-by: Daniel Matuschek @@ -127893,10 +127120,10 @@ adds the sample rate bits in the SPDIF status block. create mode 100644 sound/soc/bcm/hifiberry_digi.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 900de22369a66758bbe49861238b647bd2ca037e..a34aff27bb3010f58773edb942adccc193ea0d26 100644 +index 8c1e353458a3460f2c3fe26991498ee16f19ecd1..ac1fbf74b808789641aa53b0418632bfee858e79 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -15,6 +15,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DAC +@@ -24,6 +24,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DAC help Say Y or M if you want to add support for HifiBerry DAC. @@ -127911,10 +127138,10 @@ index 900de22369a66758bbe49861238b647bd2ca037e..a34aff27bb3010f58773edb942adccc1 tristate "Support for RPi-DAC" depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 99c96b4c41e46c17c38c8691e7a8a33b1bc7b3bb..4d53c58dc6ba41116d1fa210b6ba08ee75526dd2 100644 +index 09501910f8152b8d516e098433339b5fc2640d0f..862f00fb43bfb0b8dc75d577df47ea4e8336d00a 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -5,7 +5,9 @@ obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o +@@ -10,7 +10,9 @@ obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o # BCM2708 Machine Support snd-soc-hifiberry-dac-objs := hifiberry_dac.o @@ -128155,10 +127382,10 @@ index 0000000000000000000000000000000000000000..9840e15d3e2be6396bc3ce6e74749408 +MODULE_DESCRIPTION("ASoC Driver for HifiBerry Digi"); +MODULE_LICENSE("GPL v2"); -From ba6309554cc58b901538be9b4bbe8c37b089abe6 Mon Sep 17 00:00:00 2001 +From fdceac66c456c3eb1981a87ff951f2f041ea5d7e Mon Sep 17 00:00:00 2001 From: Gordon Garrity Date: Sat, 8 Mar 2014 16:56:57 +0000 -Subject: [PATCH 069/160] Add IQaudIO Sound Card support for Raspberry Pi +Subject: [PATCH 078/132] Add IQaudIO Sound Card support for Raspberry Pi Set a limit of 0dB on Digital Volume Control @@ -128219,10 +127446,10 @@ Signed-off-by: DigitalDreamtime create mode 100644 sound/soc/bcm/iqaudio-dac.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index a34aff27bb3010f58773edb942adccc193ea0d26..38dcdd975b406b9308e151f5d3a80dbca5163be5 100644 +index ac1fbf74b808789641aa53b0418632bfee858e79..fa4a8fd28bb977edc66dd4e9bd5ebc8ce5e47916 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -28,3 +28,10 @@ config SND_BCM2708_SOC_RPI_DAC +@@ -37,3 +37,10 @@ config SND_BCM2708_SOC_RPI_DAC select SND_SOC_PCM1794A help Say Y or M if you want to add support for RPi-DAC. @@ -128234,10 +127461,10 @@ index a34aff27bb3010f58773edb942adccc193ea0d26..38dcdd975b406b9308e151f5d3a80dbc + help + Say Y or M if you want to add support for IQaudIO-DAC. diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 4d53c58dc6ba41116d1fa210b6ba08ee75526dd2..08e4dc55757855fedec6845b82fc5f9f91f1584b 100644 +index 862f00fb43bfb0b8dc75d577df47ea4e8336d00a..fcac518ca9b46ab2074fc859b8d2f1ff850ebc19 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -7,7 +7,9 @@ obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o +@@ -12,7 +12,9 @@ obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o snd-soc-hifiberry-dac-objs := hifiberry_dac.o snd-soc-hifiberry-digi-objs := hifiberry_digi.o snd-soc-rpi-dac-objs := rpi-dac.o @@ -128488,10 +127715,10 @@ index 0000000000000000000000000000000000000000..4e8e6dec14bcf4a1ff286c43742d4097 +MODULE_DESCRIPTION("ASoC Driver for IQAudio DAC"); +MODULE_LICENSE("GPL v2"); -From ffcbd40bc8a2ed4d2ce7381e2007697ca993b17c Mon Sep 17 00:00:00 2001 +From 177df4583e9dacd9bba08970a0f7156bba7fb1b1 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 25 Jul 2016 17:06:50 +0100 -Subject: [PATCH 070/160] iqaudio-dac: Compile fix - untested +Subject: [PATCH 079/132] iqaudio-dac: Compile fix - untested --- sound/soc/bcm/iqaudio-dac.c | 6 +++++- @@ -128515,10 +127742,10 @@ index 4e8e6dec14bcf4a1ff286c43742d4097249d6777..aa15bc4b49ca95edec905fddd8fd0a6d if (dapm->dev != codec_dai->dev) return 0; -From ee0f5fb9901c80371cdf31b9ef7b656ef69a7a70 Mon Sep 17 00:00:00 2001 +From 5cba13f62442fe19faa0f3f92fbbe106dfb5b663 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Mon, 4 Aug 2014 10:06:56 +0200 -Subject: [PATCH 071/160] Added support for HiFiBerry DAC+ +Subject: [PATCH 080/132] Added support for HiFiBerry DAC+ The driver is based on the HiFiBerry DAC driver. However HiFiBerry DAC+ uses a different codec chip (PCM5122), therefore a new driver is necessary. @@ -128555,11 +127782,11 @@ Signed-off-by: DigitalDreamtime create mode 100644 sound/soc/bcm/hifiberry_dacplus.c diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile -index dcc5e698ff6dd4d61255dd274dafadb1af239161..1f7a766d4edb9c6115486b8ec4d9017b5f87b074 100644 +index 3b6f9cf3464aaddca0a54886aa575a108c21b7ca..698a88576e9d760feaf824683edf4c9adcbe7c49 100644 --- a/drivers/clk/Makefile +++ b/drivers/clk/Makefile -@@ -25,6 +25,7 @@ obj-$(CONFIG_COMMON_CLK_CS2000_CP) += clk-cs2000-cp.o - obj-$(CONFIG_ARCH_CLPS711X) += clk-clps711x.o +@@ -26,6 +26,7 @@ obj-$(CONFIG_ARCH_CLPS711X) += clk-clps711x.o + obj-$(CONFIG_COMMON_CLK_CS2000_CP) += clk-cs2000-cp.o obj-$(CONFIG_ARCH_EFM32) += clk-efm32gg.o obj-$(CONFIG_ARCH_HIGHBANK) += clk-highbank.o +obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += clk-hifiberry-dacpro.o @@ -128733,10 +127960,10 @@ index 0000000000000000000000000000000000000000..99cee2b1706c43170b4fc35c0023349b +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:clk-hifiberry-dacpro"); diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 38dcdd975b406b9308e151f5d3a80dbca5163be5..8c338b5803042ad3834ee46a8dc93f53c53953f6 100644 +index fa4a8fd28bb977edc66dd4e9bd5ebc8ce5e47916..3477304b789c87ebe75fde3876cb4a3a572b1bb8 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -15,6 +15,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DAC +@@ -24,6 +24,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DAC help Say Y or M if you want to add support for HifiBerry DAC. @@ -128751,10 +127978,10 @@ index 38dcdd975b406b9308e151f5d3a80dbca5163be5..8c338b5803042ad3834ee46a8dc93f53 tristate "Support for HifiBerry Digi" depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 08e4dc55757855fedec6845b82fc5f9f91f1584b..a29538e56b62ef6e7098b81b81e1389a22beeafa 100644 +index fcac518ca9b46ab2074fc859b8d2f1ff850ebc19..203afc03167acbcad15e836209956bc5ab151157 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -5,11 +5,13 @@ obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o +@@ -10,11 +10,13 @@ obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o # BCM2708 Machine Support snd-soc-hifiberry-dac-objs := hifiberry_dac.o @@ -129147,10 +128374,10 @@ index 047c48953a20cd4075000ac294a17fe59baedcde..090fe0ee08e8765f9edbb62777413bb6 dev_err(dev, "No LRCLK?\n"); return -EINVAL; -From 71404fa18b3b3d09e4909ee90e77054e0ff17c2c Mon Sep 17 00:00:00 2001 +From 1170ce69019f41099281c740ca16debdc345f351 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Mon, 4 Aug 2014 11:09:58 +0200 -Subject: [PATCH 072/160] Added driver for HiFiBerry Amp amplifier add-on board +Subject: [PATCH 081/132] Added driver for HiFiBerry Amp amplifier add-on board The driver contains a low-level hardware driver for the TAS5713 and the drivers for the Raspberry Pi I2S subsystem. @@ -129179,10 +128406,10 @@ Some code to load the driver based on device-tree-overlays was missing. This is create mode 100644 sound/soc/codecs/tas5713.h diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 8c338b5803042ad3834ee46a8dc93f53c53953f6..7677c898773e6dd87c3ef385e380aa42c85e66d8 100644 +index 3477304b789c87ebe75fde3876cb4a3a572b1bb8..f764110b86b790a2b639cc66b965e187d9f52ce3 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -29,6 +29,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DIGI +@@ -38,6 +38,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DIGI help Say Y or M if you want to add support for HifiBerry Digi S/PDIF output board. @@ -129197,10 +128424,10 @@ index 8c338b5803042ad3834ee46a8dc93f53c53953f6..7677c898773e6dd87c3ef385e380aa42 tristate "Support for RPi-DAC" depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index a29538e56b62ef6e7098b81b81e1389a22beeafa..30db4951129c2d853c5cf631f4cd1263926692d0 100644 +index 203afc03167acbcad15e836209956bc5ab151157..a4838e2cf8e93c9285836f95f4151daea33e1bd1 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -7,11 +7,13 @@ obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o +@@ -12,11 +12,13 @@ obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o snd-soc-hifiberry-dac-objs := hifiberry_dac.o snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o snd-soc-hifiberry-digi-objs := hifiberry_digi.o @@ -129349,10 +128576,10 @@ index 0000000000000000000000000000000000000000..0bb12e4761ce60d3364c66b2bd0f8f7d +MODULE_DESCRIPTION("ASoC driver for HiFiBerry-AMP"); +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig -index 4a53fa058a6837b93d2e66b15fda7183cf355058..010fd5f0338988fd58095cf7d2bfbad82aa62b2c 100644 +index 9a51aad8c267f08ce568b2eb23da0951b1dc246e..37674869e4ef2dc33b59ace8ef36e404d5a809a2 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig -@@ -132,6 +132,7 @@ config SND_SOC_ALL_CODECS +@@ -136,6 +136,7 @@ config SND_SOC_ALL_CODECS select SND_SOC_TFA9879 if I2C select SND_SOC_TLV320AIC23_I2C if I2C select SND_SOC_TLV320AIC23_SPI if SPI_MASTER @@ -129360,7 +128587,7 @@ index 4a53fa058a6837b93d2e66b15fda7183cf355058..010fd5f0338988fd58095cf7d2bfbad8 select SND_SOC_TLV320AIC26 if SPI_MASTER select SND_SOC_TLV320AIC31XX if I2C select SND_SOC_TLV320AIC32X4_I2C if I2C -@@ -774,6 +775,9 @@ config SND_SOC_TFA9879 +@@ -807,6 +808,9 @@ config SND_SOC_TFA9879 tristate "NXP Semiconductors TFA9879 amplifier" depends on I2C @@ -129371,10 +128598,10 @@ index 4a53fa058a6837b93d2e66b15fda7183cf355058..010fd5f0338988fd58095cf7d2bfbad8 tristate diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile -index 96b312249d197b2083b157d1c07eb106bc34ba7f..2f39e6b9d488ea5341ba40282eef12dac899e6af 100644 +index d781f6c90383b3865ae2cc6516e7581bde004d9b..c21145c8a55a9a25e6a37d6e06c1ab5d37ddf603 100644 --- a/sound/soc/codecs/Makefile +++ b/sound/soc/codecs/Makefile -@@ -135,6 +135,7 @@ snd-soc-tas5086-objs := tas5086.o +@@ -141,6 +141,7 @@ snd-soc-tas5086-objs := tas5086.o snd-soc-tas571x-objs := tas571x.o snd-soc-tas5720-objs := tas5720.o snd-soc-tfa9879-objs := tfa9879.o @@ -129382,7 +128609,7 @@ index 96b312249d197b2083b157d1c07eb106bc34ba7f..2f39e6b9d488ea5341ba40282eef12da snd-soc-tlv320aic23-objs := tlv320aic23.o snd-soc-tlv320aic23-i2c-objs := tlv320aic23-i2c.o snd-soc-tlv320aic23-spi-objs := tlv320aic23-spi.o -@@ -347,6 +348,7 @@ obj-$(CONFIG_SND_SOC_TAS5086) += snd-soc-tas5086.o +@@ -360,6 +361,7 @@ obj-$(CONFIG_SND_SOC_TAS5086) += snd-soc-tas5086.o obj-$(CONFIG_SND_SOC_TAS571X) += snd-soc-tas571x.o obj-$(CONFIG_SND_SOC_TAS5720) += snd-soc-tas5720.o obj-$(CONFIG_SND_SOC_TFA9879) += snd-soc-tfa9879.o @@ -129982,102 +129209,16 @@ index 0000000000000000000000000000000000000000..8f019e04898754d2f87e9630137be9e8 + +#endif /* _TAS5713_H */ -From 36a6d992a8d76bee9a3140bbb2324736d21d9224 Mon Sep 17 00:00:00 2001 +From 9520aaed4fbc1e0875305b0adfc6ce98edecf72a Mon Sep 17 00:00:00 2001 From: "Daniel Matuschek (HiFiBerry)" Date: Tue, 26 Jul 2016 19:16:25 +0200 -Subject: [PATCH 073/160] Added HiFiBerry Digi+ Pro driver +Subject: [PATCH 082/132] Added HiFiBerry Digi+ Pro driver Signed-off-by: Daniel Matuschek --- - arch/arm/boot/dts/overlays/Makefile | 1 + - arch/arm/boot/dts/overlays/README | 8 +++- - .../dts/overlays/hifiberry-digi-pro-overlay.dts | 41 +++++++++++++++++ - sound/soc/bcm/hifiberry_digi.c | 51 ++++++++++++++++++++++ - 4 files changed, 100 insertions(+), 1 deletion(-) - create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts + sound/soc/bcm/hifiberry_digi.c | 51 ++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 51 insertions(+) -diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile -index e6e2bfb85fbc257ea851c9f2afa5f78a87cdc41d..68832129f46b9c8320d0d2634c780bdb330314c9 100644 ---- a/arch/arm/boot/dts/overlays/Makefile -+++ b/arch/arm/boot/dts/overlays/Makefile -@@ -31,6 +31,7 @@ dtbo-$(RPI_DT_OVERLAYS) += hifiberry-amp.dtbo - dtbo-$(RPI_DT_OVERLAYS) += hifiberry-dac.dtbo - dtbo-$(RPI_DT_OVERLAYS) += hifiberry-dacplus.dtbo - dtbo-$(RPI_DT_OVERLAYS) += hifiberry-digi.dtbo -+dtbo-$(RPI_DT_OVERLAYS) += hifiberry-digi-pro.dtbo - dtbo-$(RPI_DT_OVERLAYS) += hy28a.dtbo - dtbo-$(RPI_DT_OVERLAYS) += hy28b.dtbo - dtbo-$(RPI_DT_OVERLAYS) += i2c-gpio.dtbo -diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index 3cc6560de2000480294688ec80bc8b26caf255d8..b32bca8ada3b10aa40a5c718a1823e1fa4f7f5b2 100644 ---- a/arch/arm/boot/dts/overlays/README -+++ b/arch/arm/boot/dts/overlays/README -@@ -377,11 +377,17 @@ Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec - - - Name: hifiberry-digi --Info: Configures the HifiBerry Digi audio card -+Info: Configures the HifiBerry Digi and Digi+ audio card - Load: dtoverlay=hifiberry-digi - Params: - - -+Name: hifiberry-digi-pro -+Info: Configures the HifiBerry Digi+ Pro audio card -+Load: dtoverlay=hifiberry-digi-pro -+Params: -+ -+ - Name: hy28a - Info: HY28A - 2.8" TFT LCD Display Module by HAOYU Electronics - Default values match Texy's display shield -diff --git a/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts -new file mode 100644 -index 0000000000000000000000000000000000000000..2a26d9cfffb0f3d7958eb3756ca7c4ba28400e1c ---- /dev/null -+++ b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts -@@ -0,0 +1,41 @@ -+// Definitions for HiFiBerry Digi Pro -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "brcm,bcm2708"; -+ -+ fragment@0 { -+ target = <&i2s>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "okay"; -+ -+ wm8804@3b { -+ #sound-dai-cells = <0>; -+ compatible = "wlf,wm8804"; -+ reg = <0x3b>; -+ status = "okay"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&sound>; -+ __overlay__ { -+ compatible = "hifiberry,hifiberry-digi"; -+ i2s-controller = <&i2s>; -+ status = "okay"; -+ clock44-gpio = <&gpio 5 0>; -+ clock48-gpio = <&gpio 6 0>; -+ }; -+ }; -+}; diff --git a/sound/soc/bcm/hifiberry_digi.c b/sound/soc/bcm/hifiberry_digi.c index 9840e15d3e2be6396bc3ce6e74749408cc28c333..52ab9dea2e724c4238986ca53c59c8492f64e345 100644 --- a/sound/soc/bcm/hifiberry_digi.c @@ -130179,10 +129320,10 @@ index 9840e15d3e2be6396bc3ce6e74749408cc28c333..52ab9dea2e724c4238986ca53c59c849 ret = snd_soc_register_card(&snd_rpi_hifiberry_digi); -From 0e46362eb887897ca852e0028b8246f4f3aa3ffd Mon Sep 17 00:00:00 2001 +From 85d6e88a7e8d605e6ecc9508a31e814a847aa1c5 Mon Sep 17 00:00:00 2001 From: Ryan Coe Date: Sat, 31 Jan 2015 18:25:49 -0700 -Subject: [PATCH 074/160] Update ds1307 driver for device-tree support +Subject: [PATCH 083/132] Update ds1307 driver for device-tree support Signed-off-by: Ryan Coe --- @@ -130190,10 +129331,10 @@ Signed-off-by: Ryan Coe 1 file changed, 8 insertions(+) diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c -index f25f7dce6e1fb29c51c0e0be734a6337244b8fc1..1d1751c524ddd326ef593e0ff1b20483383d040c 100644 +index 8e1c5cb6ece6f60619e5cafcea4271e056d96778..f9536679b270a39a4d9639fdbd3420fecbf1d169 100644 --- a/drivers/rtc/rtc-ds1307.c +++ b/drivers/rtc/rtc-ds1307.c -@@ -1636,6 +1636,14 @@ static int ds1307_remove(struct i2c_client *client) +@@ -1631,6 +1631,14 @@ static int ds1307_remove(struct i2c_client *client) return 0; } @@ -130209,10 +129350,10 @@ index f25f7dce6e1fb29c51c0e0be734a6337244b8fc1..1d1751c524ddd326ef593e0ff1b20483 .driver = { .name = "rtc-ds1307", -From 173867b34518ca0066d757c9bcef7f650c3f4ec7 Mon Sep 17 00:00:00 2001 +From 16d6dfd2cf096ce0f03ef1b4071c8b2dfae7f20b Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Wed, 25 Mar 2015 09:26:17 +0100 -Subject: [PATCH 075/160] Add driver for rpi-proto +Subject: [PATCH 084/132] Add driver for rpi-proto Forward port of 3.10.x driver from https://github.com/koalo We are using a custom board and would like to use rpi 3.18.x @@ -130232,10 +129373,10 @@ Signed-off-by: Waldemar Brodkorb create mode 100644 sound/soc/bcm/rpi-proto.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 7677c898773e6dd87c3ef385e380aa42c85e66d8..8669a9ac9734c465c7dc3f40c864f71b68a6de75 100644 +index f764110b86b790a2b639cc66b965e187d9f52ce3..5b08c4dfb71597d6f6381146c4ce79e57f551b9c 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -43,6 +43,13 @@ config SND_BCM2708_SOC_RPI_DAC +@@ -52,6 +52,13 @@ config SND_BCM2708_SOC_RPI_DAC help Say Y or M if you want to add support for RPi-DAC. @@ -130250,10 +129391,10 @@ index 7677c898773e6dd87c3ef385e380aa42c85e66d8..8669a9ac9734c465c7dc3f40c864f71b tristate "Support for IQaudIO-DAC" depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 30db4951129c2d853c5cf631f4cd1263926692d0..4f5ab1fa4414e64a164eaa4575ffaa06d1cbf332 100644 +index a4838e2cf8e93c9285836f95f4151daea33e1bd1..680d1b6d5e16819094fbfaa6c42b458267b54819 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -9,6 +9,7 @@ snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o +@@ -14,6 +14,7 @@ snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o snd-soc-hifiberry-digi-objs := hifiberry_digi.o snd-soc-hifiberry-amp-objs := hifiberry_amp.o snd-soc-rpi-dac-objs := rpi-dac.o @@ -130261,7 +129402,7 @@ index 30db4951129c2d853c5cf631f4cd1263926692d0..4f5ab1fa4414e64a164eaa4575ffaa06 snd-soc-iqaudio-dac-objs := iqaudio-dac.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o -@@ -16,4 +17,5 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o +@@ -21,4 +22,5 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) += snd-soc-hifiberry-digi.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o @@ -130428,10 +129569,10 @@ index 0000000000000000000000000000000000000000..9db678e885efd63d84d60a098a84ed67 +MODULE_DESCRIPTION("ASoC Driver for Raspberry Pi connected to PROTO board (WM8731)"); +MODULE_LICENSE("GPL"); -From e94da4ada1e1e6e792a0fd9f778e88e89bff1457 Mon Sep 17 00:00:00 2001 +From 0370e991cf8e3bc2656bad03ebee88efca6f2483 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Mon, 24 Aug 2015 16:03:47 +0100 -Subject: [PATCH 076/160] RaspiDAC3 support +Subject: [PATCH 085/132] RaspiDAC3 support Signed-off-by: Jan Grulich @@ -130444,15 +129585,15 @@ Signed-off-by: Matthias Reichl --- sound/soc/bcm/Kconfig | 8 ++ sound/soc/bcm/Makefile | 2 + - sound/soc/bcm/raspidac3.c | 192 ++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 202 insertions(+) + sound/soc/bcm/raspidac3.c | 186 ++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 196 insertions(+) create mode 100644 sound/soc/bcm/raspidac3.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 8669a9ac9734c465c7dc3f40c864f71b68a6de75..1a3f8264403d64690fef60d41df38d21d3eb6030 100644 +index 5b08c4dfb71597d6f6381146c4ce79e57f551b9c..e07f8b74497fe3b271290cc4e6a1c49a2e84c29c 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -56,3 +56,11 @@ config SND_BCM2708_SOC_IQAUDIO_DAC +@@ -65,3 +65,11 @@ config SND_BCM2708_SOC_IQAUDIO_DAC select SND_SOC_PCM512x_I2C help Say Y or M if you want to add support for IQaudIO-DAC. @@ -130465,10 +129606,10 @@ index 8669a9ac9734c465c7dc3f40c864f71b68a6de75..1a3f8264403d64690fef60d41df38d21 + help + Say Y or M if you want to add support for RaspiDAC Rev.3x. diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 4f5ab1fa4414e64a164eaa4575ffaa06d1cbf332..b21e11ee36e17a29bfae9c4eda78f73ca9c23d48 100644 +index 680d1b6d5e16819094fbfaa6c42b458267b54819..18253b39addf831780fefe85578e72007c0d51d9 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -11,6 +11,7 @@ snd-soc-hifiberry-amp-objs := hifiberry_amp.o +@@ -16,6 +16,7 @@ snd-soc-hifiberry-amp-objs := hifiberry_amp.o snd-soc-rpi-dac-objs := rpi-dac.o snd-soc-rpi-proto-objs := rpi-proto.o snd-soc-iqaudio-dac-objs := iqaudio-dac.o @@ -130476,17 +129617,17 @@ index 4f5ab1fa4414e64a164eaa4575ffaa06d1cbf332..b21e11ee36e17a29bfae9c4eda78f73c obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o -@@ -19,3 +20,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o +@@ -24,3 +25,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o obj-$(CONFIG_SND_BCM2708_SOC_RPI_PROTO) += snd-soc-rpi-proto.o obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o +obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o diff --git a/sound/soc/bcm/raspidac3.c b/sound/soc/bcm/raspidac3.c new file mode 100644 -index 0000000000000000000000000000000000000000..e7422e2dd3d70622a48ab3b2e192986931235764 +index 0000000000000000000000000000000000000000..dd9eeea2af0382307f437e6db09d15468c1a470a --- /dev/null +++ b/sound/soc/bcm/raspidac3.c -@@ -0,0 +1,192 @@ +@@ -0,0 +1,186 @@ +/* + * ASoC Driver for RaspiDAC v3 + * @@ -130534,10 +129675,6 @@ index 0000000000000000000000000000000000000000..e7422e2dd3d70622a48ab3b2e1929869 + else { + struct snd_kcontrol *kctl; + -+ ret = tpa6130a2_add_controls(codec); -+ if (ret < 0) -+ dev_warn(card->dev, "Failed to add TPA6130A2 controls: %d\n", -+ ret); + ret = snd_soc_limit_volume(card, + "TPA6130A2 Headphone Playback Volume", + 54); @@ -130579,7 +129716,6 @@ index 0000000000000000000000000000000000000000..e7422e2dd3d70622a48ab3b2e1929869 + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_codec *codec = rtd->codec; + snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08,0x08); -+ tpa6130a2_stereo_enable(codec, 1); + return 0; +} + @@ -130588,7 +129724,6 @@ index 0000000000000000000000000000000000000000..e7422e2dd3d70622a48ab3b2e1929869 + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_codec *codec = rtd->codec; + snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08,0x00); -+ tpa6130a2_stereo_enable(codec, 0); +} + +/* machine stream operations */ @@ -130680,18 +129815,18 @@ index 0000000000000000000000000000000000000000..e7422e2dd3d70622a48ab3b2e1929869 +MODULE_DESCRIPTION("ASoC Driver for RaspiDAC Rev.3x"); +MODULE_LICENSE("GPL v2"); -From b9705ca1098e28ebbd6220aebd196e41267d53bb Mon Sep 17 00:00:00 2001 -From: Jan Grulich -Date: Mon, 24 Aug 2015 16:02:34 +0100 -Subject: [PATCH 077/160] tpa6130a2: Add headphone switch control +From 17c6235ccbac2cab84022d62da2ac617dc63f974 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Tue, 9 Aug 2016 14:49:23 +0100 +Subject: [PATCH 086/132] tpa6130a2: Add headphone switch control Signed-off-by: Jan Grulich --- - sound/soc/codecs/tpa6130a2.c | 29 ++++++++++++++++++++++++++--- - 1 file changed, 26 insertions(+), 3 deletions(-) + sound/soc/codecs/tpa6130a2.c | 60 ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 60 insertions(+) diff --git a/sound/soc/codecs/tpa6130a2.c b/sound/soc/codecs/tpa6130a2.c -index 11d85c5c787addb8d8add7fc2b52ab91cc49b63d..3caaa17e28e91e995d6781ca7f88b747da542e9b 100644 +index f1ea052a822e1f584eb55cbc876b8e079e813ccd..3bf0163956c5665683d7950798df527fa1b57b59 100644 --- a/sound/soc/codecs/tpa6130a2.c +++ b/sound/soc/codecs/tpa6130a2.c @@ -4,6 +4,7 @@ @@ -130702,39 +129837,21 @@ index 11d85c5c787addb8d8add7fc2b52ab91cc49b63d..3caaa17e28e91e995d6781ca7f88b747 * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License -@@ -52,6 +53,8 @@ struct tpa6130a2_data { +@@ -50,6 +51,8 @@ struct tpa6130a2_data { enum tpa_model id; }; +static void tpa6130a2_channel_enable(u8 channel, int enable); + - static int tpa6130a2_i2c_read(int reg) + static int tpa6130a2_power(struct tpa6130a2_data *data, bool enable) { - struct tpa6130a2_data *data; -@@ -189,7 +192,7 @@ exit: - } - - static int tpa6130a2_get_volsw(struct snd_kcontrol *kcontrol, -- struct snd_ctl_elem_value *ucontrol) -+ struct snd_ctl_elem_value *ucontrol) - { - struct soc_mixer_control *mc = - (struct soc_mixer_control *)kcontrol->private_value; -@@ -218,7 +221,7 @@ static int tpa6130a2_get_volsw(struct snd_kcontrol *kcontrol, - } - - static int tpa6130a2_put_volsw(struct snd_kcontrol *kcontrol, -- struct snd_ctl_elem_value *ucontrol) -+ struct snd_ctl_elem_value *ucontrol) - { - struct soc_mixer_control *mc = - (struct soc_mixer_control *)kcontrol->private_value; -@@ -255,8 +258,22 @@ static int tpa6130a2_put_volsw(struct snd_kcontrol *kcontrol, - return 1; + int ret; +@@ -109,6 +112,20 @@ static int tpa6130a2_power_event(struct snd_soc_dapm_widget *w, + return 0; } +static int tpa6130a2_put_hp_sw(struct snd_kcontrol *kcontrol, -+ struct snd_ctl_elem_value *ucontrol) ++ struct snd_ctl_elem_value *ucontrol) +{ + int enable = ucontrol->value.integer.value[0]; + unsigned int state; @@ -130748,14 +129865,11 @@ index 11d85c5c787addb8d8add7fc2b52ab91cc49b63d..3caaa17e28e91e995d6781ca7f88b747 +} + /* -- * TPA6130 volume. From -59.5 to 4 dB with increasing step size when going -+ * TPA6130 volume. From -59.5 to +4.0 dB with increasing step size when going + * TPA6130 volume. From -59.5 to 4 dB with increasing step size when going * down in gain. - */ - static const DECLARE_TLV_DB_RANGE(tpa6130_tlv, -@@ -277,6 +294,9 @@ static const struct snd_kcontrol_new tpa6130a2_controls[] = { +@@ -130,6 +147,9 @@ static const struct snd_kcontrol_new tpa6130a2_controls[] = { + SOC_SINGLE_TLV("Headphone Playback Volume", TPA6130A2_REG_VOL_MUTE, 0, 0x3f, 0, - tpa6130a2_get_volsw, tpa6130a2_put_volsw, tpa6130_tlv), + SOC_SINGLE_EXT("TPA6130A2 Headphone Playback Switch", + TPA6130A2_REG_VOL_MUTE, 7, 1, 1, @@ -130763,21 +129877,172 @@ index 11d85c5c787addb8d8add7fc2b52ab91cc49b63d..3caaa17e28e91e995d6781ca7f88b747 }; static const DECLARE_TLV_DB_RANGE(tpa6140_tlv, -@@ -290,6 +310,9 @@ static const struct snd_kcontrol_new tpa6140a2_controls[] = { +@@ -142,8 +162,48 @@ static const struct snd_kcontrol_new tpa6140a2_controls[] = { + SOC_SINGLE_TLV("Headphone Playback Volume", TPA6130A2_REG_VOL_MUTE, 1, 0x1f, 0, - tpa6130a2_get_volsw, tpa6130a2_put_volsw, tpa6140_tlv), + SOC_SINGLE_EXT("TPA6140A2 Headphone Playback Switch", + TPA6130A2_REG_VOL_MUTE, 7, 1, 1, + tpa6130a2_get_volsw, tpa6130a2_put_hp_sw), }; - /* ++/* ++ * Enable or disable channel (left or right) ++ * The bit number for mute and amplifier are the same per channel: ++ * bit 6: Right channel ++ * bit 7: Left channel ++ * in both registers. ++ */ ++static void tpa6130a2_channel_enable(u8 channel, int enable) ++{ ++ u8 val; ++ ++ if (enable) { ++ /* Enable channel */ ++ /* Enable amplifier */ ++ val = tpa6130a2_read(TPA6130A2_REG_CONTROL); ++ val |= channel; ++ val &= ~TPA6130A2_SWS; ++ tpa6130a2_i2c_write(TPA6130A2_REG_CONTROL, val); ++ ++ /* Unmute channel */ ++ val = tpa6130a2_read(TPA6130A2_REG_VOL_MUTE); ++ val &= ~channel; ++ tpa6130a2_i2c_write(TPA6130A2_REG_VOL_MUTE, val); ++ } else { ++ /* Disable channel */ ++ /* Mute channel */ ++ val = tpa6130a2_read(TPA6130A2_REG_VOL_MUTE); ++ val |= channel; ++ tpa6130a2_i2c_write(TPA6130A2_REG_VOL_MUTE, val); ++ ++ /* Disable amplifier */ ++ val = tpa6130a2_read(TPA6130A2_REG_CONTROL); ++ val &= ~channel; ++ tpa6130a2_i2c_write(TPA6130A2_REG_CONTROL, val); ++ } ++} ++ + static int tpa6130a2_component_probe(struct snd_soc_component *component) + { + struct tpa6130a2_data *data = snd_soc_component_get_drvdata(component); -From d89a32bef1e441fa9e1a2eb9dfa75b85369be999 Mon Sep 17 00:00:00 2001 +From 4c8998e9cbfacc80e915ab8d998d384b0f62d752 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Tue, 9 Aug 2016 14:49:29 +0100 +Subject: [PATCH 087/132] Revert "tpa6130a2: Add headphone switch control" + +This reverts commit 860574af506a7a28782ca373feb880e7846943f9. +--- + sound/soc/codecs/tpa6130a2.c | 60 -------------------------------------------- + 1 file changed, 60 deletions(-) + +diff --git a/sound/soc/codecs/tpa6130a2.c b/sound/soc/codecs/tpa6130a2.c +index 3bf0163956c5665683d7950798df527fa1b57b59..f1ea052a822e1f584eb55cbc876b8e079e813ccd 100644 +--- a/sound/soc/codecs/tpa6130a2.c ++++ b/sound/soc/codecs/tpa6130a2.c +@@ -4,7 +4,6 @@ + * Copyright (C) Nokia Corporation + * + * Author: Peter Ujfalusi +- * Modified: Jan Grulich + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License +@@ -51,8 +50,6 @@ struct tpa6130a2_data { + enum tpa_model id; + }; + +-static void tpa6130a2_channel_enable(u8 channel, int enable); +- + static int tpa6130a2_power(struct tpa6130a2_data *data, bool enable) + { + int ret; +@@ -112,20 +109,6 @@ static int tpa6130a2_power_event(struct snd_soc_dapm_widget *w, + return 0; + } + +-static int tpa6130a2_put_hp_sw(struct snd_kcontrol *kcontrol, +- struct snd_ctl_elem_value *ucontrol) +-{ +- int enable = ucontrol->value.integer.value[0]; +- unsigned int state; +- +- state = (tpa6130a2_read(TPA6130A2_REG_VOL_MUTE) & 0x80) == 0; +- if (state == enable) +- return 0; /* No change */ +- +- tpa6130a2_channel_enable(TPA6130A2_HP_EN_R | TPA6130A2_HP_EN_L, enable); +- return 1; /* Changed */ +-} +- + /* + * TPA6130 volume. From -59.5 to 4 dB with increasing step size when going + * down in gain. +@@ -147,9 +130,6 @@ static const struct snd_kcontrol_new tpa6130a2_controls[] = { + SOC_SINGLE_TLV("Headphone Playback Volume", + TPA6130A2_REG_VOL_MUTE, 0, 0x3f, 0, + tpa6130_tlv), +- SOC_SINGLE_EXT("TPA6130A2 Headphone Playback Switch", +- TPA6130A2_REG_VOL_MUTE, 7, 1, 1, +- tpa6130a2_get_volsw, tpa6130a2_put_hp_sw), + }; + + static const DECLARE_TLV_DB_RANGE(tpa6140_tlv, +@@ -162,48 +142,8 @@ static const struct snd_kcontrol_new tpa6140a2_controls[] = { + SOC_SINGLE_TLV("Headphone Playback Volume", + TPA6130A2_REG_VOL_MUTE, 1, 0x1f, 0, + tpa6140_tlv), +- SOC_SINGLE_EXT("TPA6140A2 Headphone Playback Switch", +- TPA6130A2_REG_VOL_MUTE, 7, 1, 1, +- tpa6130a2_get_volsw, tpa6130a2_put_hp_sw), + }; + +-/* +- * Enable or disable channel (left or right) +- * The bit number for mute and amplifier are the same per channel: +- * bit 6: Right channel +- * bit 7: Left channel +- * in both registers. +- */ +-static void tpa6130a2_channel_enable(u8 channel, int enable) +-{ +- u8 val; +- +- if (enable) { +- /* Enable channel */ +- /* Enable amplifier */ +- val = tpa6130a2_read(TPA6130A2_REG_CONTROL); +- val |= channel; +- val &= ~TPA6130A2_SWS; +- tpa6130a2_i2c_write(TPA6130A2_REG_CONTROL, val); +- +- /* Unmute channel */ +- val = tpa6130a2_read(TPA6130A2_REG_VOL_MUTE); +- val &= ~channel; +- tpa6130a2_i2c_write(TPA6130A2_REG_VOL_MUTE, val); +- } else { +- /* Disable channel */ +- /* Mute channel */ +- val = tpa6130a2_read(TPA6130A2_REG_VOL_MUTE); +- val |= channel; +- tpa6130a2_i2c_write(TPA6130A2_REG_VOL_MUTE, val); +- +- /* Disable amplifier */ +- val = tpa6130a2_read(TPA6130A2_REG_CONTROL); +- val &= ~channel; +- tpa6130a2_i2c_write(TPA6130A2_REG_CONTROL, val); +- } +-} +- + static int tpa6130a2_component_probe(struct snd_soc_component *component) + { + struct tpa6130a2_data *data = snd_soc_component_get_drvdata(component); + +From f1e74deb9cc5a67e30e7efdfd54f628b20bd3ba9 Mon Sep 17 00:00:00 2001 From: Aaron Shaw Date: Thu, 7 Apr 2016 21:26:21 +0100 -Subject: [PATCH 078/160] Add Support for JustBoom Audio boards +Subject: [PATCH 088/132] Add Support for JustBoom Audio boards justboom-dac: Adjust for ALSA API change @@ -130795,10 +130060,10 @@ Signed-off-by: Phil Elwell create mode 100644 sound/soc/bcm/justboom-digi.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 1a3f8264403d64690fef60d41df38d21d3eb6030..e2e2782a2f8af27c1782993bd63747b620f26e1e 100644 +index e07f8b74497fe3b271290cc4e6a1c49a2e84c29c..b8fcd82f1e9ccabaae307b07fa17bdec57c173a1 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -50,6 +50,20 @@ config SND_BCM2708_SOC_RPI_PROTO +@@ -59,6 +59,20 @@ config SND_BCM2708_SOC_RPI_PROTO help Say Y or M if you want to add support for Audio Codec Board PROTO (WM8731). @@ -130820,10 +130085,10 @@ index 1a3f8264403d64690fef60d41df38d21d3eb6030..e2e2782a2f8af27c1782993bd63747b6 tristate "Support for IQaudIO-DAC" depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index b21e11ee36e17a29bfae9c4eda78f73ca9c23d48..6c9714c377375b38c2210ac98be8f3759224e76c 100644 +index 18253b39addf831780fefe85578e72007c0d51d9..ddffe5d69f29878afb4f286abe69c2c787cf169e 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -8,6 +8,8 @@ snd-soc-hifiberry-dac-objs := hifiberry_dac.o +@@ -13,6 +13,8 @@ snd-soc-hifiberry-dac-objs := hifiberry_dac.o snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o snd-soc-hifiberry-digi-objs := hifiberry_digi.o snd-soc-hifiberry-amp-objs := hifiberry_amp.o @@ -130832,7 +130097,7 @@ index b21e11ee36e17a29bfae9c4eda78f73ca9c23d48..6c9714c377375b38c2210ac98be8f375 snd-soc-rpi-dac-objs := rpi-dac.o snd-soc-rpi-proto-objs := rpi-proto.o snd-soc-iqaudio-dac-objs := iqaudio-dac.o -@@ -17,6 +19,8 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o +@@ -22,6 +24,8 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) += snd-soc-hifiberry-digi.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o @@ -131231,10 +130496,10 @@ index 0000000000000000000000000000000000000000..91acb666380faa3c0deb2230f8a0f8bb +MODULE_DESCRIPTION("ASoC Driver for JustBoom PI Digi HAT Sound Card"); +MODULE_LICENSE("GPL v2"); -From 790a707552d5a921f43dec1bf75eb3a4bb226c8d Mon Sep 17 00:00:00 2001 +From b49176f288664983a1cd5b8e2f2cba3d165b51e6 Mon Sep 17 00:00:00 2001 From: Andrey Grodzovsky Date: Tue, 3 May 2016 22:10:59 -0400 -Subject: [PATCH 079/160] ARM: adau1977-adc: Add basic machine driver for +Subject: [PATCH 089/132] ARM: adau1977-adc: Add basic machine driver for adau1977 codec driver. This commit adds basic support for the codec usage including: Device tree overlay, @@ -131250,10 +130515,10 @@ Signed-off-by: Andrey Grodzovsky create mode 100644 sound/soc/bcm/adau1977-adc.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index e2e2782a2f8af27c1782993bd63747b620f26e1e..59890cc0d6b531021e20d8117b0e3fa26a5343ee 100644 +index b8fcd82f1e9ccabaae307b07fa17bdec57c173a1..cacc10431c5b82b000f5b71b1c1256f19073dc16 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -78,3 +78,10 @@ config SND_BCM2708_SOC_RASPIDAC3 +@@ -87,3 +87,10 @@ config SND_BCM2708_SOC_RASPIDAC3 select SND_SOC_TPA6130A2 help Say Y or M if you want to add support for RaspiDAC Rev.3x. @@ -131265,18 +130530,18 @@ index e2e2782a2f8af27c1782993bd63747b620f26e1e..59890cc0d6b531021e20d8117b0e3fa2 + help + Say Y or M if you want to add support for ADAU1977 ADC. diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 6c9714c377375b38c2210ac98be8f3759224e76c..d3124f579475524a739ced533f6dff69394eee1c 100644 +index ddffe5d69f29878afb4f286abe69c2c787cf169e..63584bc364ed266b8e9eb30afab0a631b97b145c 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -4,6 +4,7 @@ snd-soc-bcm2835-i2s-objs := bcm2835-i2s.o - obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o +@@ -9,6 +9,7 @@ snd-soc-cygnus-objs := cygnus-pcm.o cygnus-ssp.o + obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o # BCM2708 Machine Support +snd-soc-adau1977-adc-objs := adau1977-adc.o snd-soc-hifiberry-dac-objs := hifiberry_dac.o snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o snd-soc-hifiberry-digi-objs := hifiberry_digi.o -@@ -15,6 +16,7 @@ snd-soc-rpi-proto-objs := rpi-proto.o +@@ -20,6 +21,7 @@ snd-soc-rpi-proto-objs := rpi-proto.o snd-soc-iqaudio-dac-objs := iqaudio-dac.o snd-soc-raspidac3-objs := raspidac3.o @@ -131416,10 +130681,10 @@ index 0000000000000000000000000000000000000000..6e2ee027926ee63c89222f75ceb89e3d +MODULE_DESCRIPTION("ASoC Driver for ADAU1977 ADC"); +MODULE_LICENSE("GPL v2"); -From c7ed387f541489099022f5463d48d7d4479de1d9 Mon Sep 17 00:00:00 2001 +From 2ab9f6e38fd5027df4b6e61506723de9144d69f8 Mon Sep 17 00:00:00 2001 From: Matt Flax Date: Mon, 16 May 2016 21:36:31 +1000 -Subject: [PATCH 080/160] New AudioInjector.net Pi soundcard with low jitter +Subject: [PATCH 090/132] New AudioInjector.net Pi soundcard with low jitter audio in and out. Contains the sound/soc/bcm ALSA machine driver and necessary alterations to the Kconfig and Makefile. @@ -131438,10 +130703,10 @@ This patch adds headphone and microphone capability to the Audio Injector sound create mode 100644 sound/soc/bcm/audioinjector-pi-soundcard.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 59890cc0d6b531021e20d8117b0e3fa26a5343ee..e2e40eda90f447a4700767071715e263bfa9a6e7 100644 +index cacc10431c5b82b000f5b71b1c1256f19073dc16..214aa1314ef97dff7422a4743024ddb4ae114912 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -85,3 +85,10 @@ config SND_BCM2708_SOC_ADAU1977_ADC +@@ -94,3 +94,10 @@ config SND_BCM2708_SOC_ADAU1977_ADC select SND_SOC_ADAU1977_I2C help Say Y or M if you want to add support for ADAU1977 ADC. @@ -131453,10 +130718,10 @@ index 59890cc0d6b531021e20d8117b0e3fa26a5343ee..e2e40eda90f447a4700767071715e263 + help + Say Y or M if you want to add support for audioinjector.net Pi Hat diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index d3124f579475524a739ced533f6dff69394eee1c..3353192be30394bd595423dccec17838e3054a1d 100644 +index 63584bc364ed266b8e9eb30afab0a631b97b145c..eb21e3baff008959ba41b5c816ecaff4462900ed 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -15,6 +15,7 @@ snd-soc-rpi-dac-objs := rpi-dac.o +@@ -20,6 +20,7 @@ snd-soc-rpi-dac-objs := rpi-dac.o snd-soc-rpi-proto-objs := rpi-proto.o snd-soc-iqaudio-dac-objs := iqaudio-dac.o snd-soc-raspidac3-objs := raspidac3.o @@ -131464,7 +130729,7 @@ index d3124f579475524a739ced533f6dff69394eee1c..3353192be30394bd595423dccec17838 obj-$(CONFIG_SND_BCM2708_SOC_ADAU1977_ADC) += snd-soc-adau1977-adc.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o -@@ -27,3 +28,5 @@ obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o +@@ -32,3 +33,5 @@ obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o obj-$(CONFIG_SND_BCM2708_SOC_RPI_PROTO) += snd-soc-rpi-proto.o obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o @@ -131668,10 +130933,10 @@ index 0000000000000000000000000000000000000000..5ff0985e07efb96b95634a65995f09f7 +MODULE_ALIAS("platform:audioinjector-pi-soundcard"); + -From 723981ea784a59717a05dd7c7c76f2204bf670df Mon Sep 17 00:00:00 2001 +From bbe8e1c22742ea605d30e21fc8b7551a2ad2bd7d Mon Sep 17 00:00:00 2001 From: DigitalDreamtime Date: Thu, 30 Jun 2016 18:38:42 +0100 -Subject: [PATCH 081/160] Add IQAudIO Digi WM8804 board support +Subject: [PATCH 091/132] Add IQAudIO Digi WM8804 board support Support IQAudIO Digi board with iqaudio_digi machine driver and iqaudio-digi-wm8804-audio overlay. @@ -131688,10 +130953,10 @@ Signed-off-by: DigitalDreamtime create mode 100644 sound/soc/bcm/iqaudio_digi.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index e2e40eda90f447a4700767071715e263bfa9a6e7..616f47e72a2300df0ed79f082c67ba0af13067ee 100644 +index 214aa1314ef97dff7422a4743024ddb4ae114912..f85c6b1e8835e1a76bfa5be1bee69aaeec631a70 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -71,6 +71,13 @@ config SND_BCM2708_SOC_IQAUDIO_DAC +@@ -80,6 +80,13 @@ config SND_BCM2708_SOC_IQAUDIO_DAC help Say Y or M if you want to add support for IQaudIO-DAC. @@ -131706,10 +130971,10 @@ index e2e40eda90f447a4700767071715e263bfa9a6e7..616f47e72a2300df0ed79f082c67ba0a tristate "Support for RaspiDAC Rev.3x" depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 3353192be30394bd595423dccec17838e3054a1d..fb3e44d2668bda0494751d4e6c925f34a5ce2bc3 100644 +index eb21e3baff008959ba41b5c816ecaff4462900ed..0316dcaa3148dc60dfe9d10dabb6b4d0b0eea875 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -14,6 +14,7 @@ snd-soc-justboom-digi-objs := justboom-digi.o +@@ -19,6 +19,7 @@ snd-soc-justboom-digi-objs := justboom-digi.o snd-soc-rpi-dac-objs := rpi-dac.o snd-soc-rpi-proto-objs := rpi-proto.o snd-soc-iqaudio-dac-objs := iqaudio-dac.o @@ -131717,7 +130982,7 @@ index 3353192be30394bd595423dccec17838e3054a1d..fb3e44d2668bda0494751d4e6c925f34 snd-soc-raspidac3-objs := raspidac3.o snd-soc-audioinjector-pi-soundcard-objs := audioinjector-pi-soundcard.o -@@ -27,6 +28,7 @@ obj-$(CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI) += snd-soc-justboom-digi.o +@@ -32,6 +33,7 @@ obj-$(CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI) += snd-soc-justboom-digi.o obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o obj-$(CONFIG_SND_BCM2708_SOC_RPI_PROTO) += snd-soc-rpi-proto.o obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o @@ -131971,10 +131236,10 @@ index 0000000000000000000000000000000000000000..9b6e829bcb5b1762a853775e78163196 +MODULE_DESCRIPTION("ASoC Driver for IQAudIO WM8804 Digi"); +MODULE_LICENSE("GPL v2"); -From cfcaed0a9a8b1fde8e4abf0bb0f8e252bf8cdfbe Mon Sep 17 00:00:00 2001 +From 147e07a5a396c806eec79762799782afe7825878 Mon Sep 17 00:00:00 2001 From: escalator2015 Date: Tue, 24 May 2016 16:20:09 +0100 -Subject: [PATCH 082/160] New driver for RRA DigiDAC1 soundcard using WM8741 + +Subject: [PATCH 092/132] New driver for RRA DigiDAC1 soundcard using WM8741 + WM8804 --- @@ -131985,10 +131250,10 @@ Subject: [PATCH 082/160] New driver for RRA DigiDAC1 soundcard using WM8741 + create mode 100644 sound/soc/bcm/digidac1-soundcard.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 616f47e72a2300df0ed79f082c67ba0af13067ee..a7e4e25ccf2de23f7a3793af66f795825e69fbb8 100644 +index f85c6b1e8835e1a76bfa5be1bee69aaeec631a70..04edcfdbb6ce5910a0704e6f1d1edd6fd97631e3 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -99,3 +99,11 @@ config SND_AUDIOINJECTOR_PI_SOUNDCARD +@@ -108,3 +108,11 @@ config SND_AUDIOINJECTOR_PI_SOUNDCARD select SND_SOC_WM8731 help Say Y or M if you want to add support for audioinjector.net Pi Hat @@ -132001,10 +131266,10 @@ index 616f47e72a2300df0ed79f082c67ba0af13067ee..a7e4e25ccf2de23f7a3793af66f79582 + help + Say Y or M if you want to add support for Red Rocks Audio DigiDAC1 board. diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index fb3e44d2668bda0494751d4e6c925f34a5ce2bc3..781037a9e323834ba62ec55c6cf28a95c769c2cb 100644 +index 0316dcaa3148dc60dfe9d10dabb6b4d0b0eea875..b407091a168af15062df7bc6410e48e3f92acd49 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -17,6 +17,7 @@ snd-soc-iqaudio-dac-objs := iqaudio-dac.o +@@ -22,6 +22,7 @@ snd-soc-iqaudio-dac-objs := iqaudio-dac.o snd-soc-iqaudio-digi-objs := iqaudio_digi.o snd-soc-raspidac3-objs := raspidac3.o snd-soc-audioinjector-pi-soundcard-objs := audioinjector-pi-soundcard.o @@ -132012,7 +131277,7 @@ index fb3e44d2668bda0494751d4e6c925f34a5ce2bc3..781037a9e323834ba62ec55c6cf28a95 obj-$(CONFIG_SND_BCM2708_SOC_ADAU1977_ADC) += snd-soc-adau1977-adc.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o -@@ -31,4 +32,5 @@ obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o +@@ -36,4 +37,5 @@ obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI) += snd-soc-iqaudio-digi.o obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o obj-$(CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD) += snd-soc-audioinjector-pi-soundcard.o @@ -132447,10 +131712,10 @@ index 0000000000000000000000000000000000000000..446796e7e4c14a7d95b2f2a01211d9a0 +MODULE_DESCRIPTION("ASoC Driver for RRA DigiDAC1"); +MODULE_LICENSE("GPL v2"); -From 8ef6e8e835cd2537dc7dfa652ed4dc7bb073d9ee Mon Sep 17 00:00:00 2001 +From 44dcde3a72f00896f48d3260014320d10a5daa7a Mon Sep 17 00:00:00 2001 From: DigitalDreamtime Date: Sat, 2 Jul 2016 16:26:19 +0100 -Subject: [PATCH 083/160] Add support for Dion Audio LOCO DAC-AMP HAT +Subject: [PATCH 093/132] Add support for Dion Audio LOCO DAC-AMP HAT Using dedicated machine driver and pcm5102a codec driver. @@ -132463,10 +131728,10 @@ Signed-off-by: DigitalDreamtime create mode 100644 sound/soc/bcm/dionaudio_loco.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index a7e4e25ccf2de23f7a3793af66f795825e69fbb8..8873fd8adce1d17cb543251f5cdc6ac8f4bf523d 100644 +index 04edcfdbb6ce5910a0704e6f1d1edd6fd97631e3..7eafe2c62d716d490df87f9c6fd92bf3b9100124 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -107,3 +107,10 @@ config SND_DIGIDAC1_SOUNDCARD +@@ -116,3 +116,10 @@ config SND_DIGIDAC1_SOUNDCARD select SND_SOC_WM8741 help Say Y or M if you want to add support for Red Rocks Audio DigiDAC1 board. @@ -132478,10 +131743,10 @@ index a7e4e25ccf2de23f7a3793af66f795825e69fbb8..8873fd8adce1d17cb543251f5cdc6ac8 + help + Say Y or M if you want to add support for Dion Audio LOCO. diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 781037a9e323834ba62ec55c6cf28a95c769c2cb..17f70f951322239696623c2347e5d846bbef2369 100644 +index b407091a168af15062df7bc6410e48e3f92acd49..2c233080c40938c38f11bed79304830fda851ae4 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -18,6 +18,7 @@ snd-soc-iqaudio-digi-objs := iqaudio_digi.o +@@ -23,6 +23,7 @@ snd-soc-iqaudio-digi-objs := iqaudio_digi.o snd-soc-raspidac3-objs := raspidac3.o snd-soc-audioinjector-pi-soundcard-objs := audioinjector-pi-soundcard.o snd-soc-digidac1-soundcard-objs := digidac1-soundcard.o @@ -132489,7 +131754,7 @@ index 781037a9e323834ba62ec55c6cf28a95c769c2cb..17f70f951322239696623c2347e5d846 obj-$(CONFIG_SND_BCM2708_SOC_ADAU1977_ADC) += snd-soc-adau1977-adc.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o -@@ -33,4 +34,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI) += snd-soc-iqaudio-digi.o +@@ -38,4 +39,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI) += snd-soc-iqaudio-digi.o obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o obj-$(CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD) += snd-soc-audioinjector-pi-soundcard.o obj-$(CONFIG_SND_DIGIDAC1_SOUNDCARD) += snd-soc-digidac1-soundcard.o @@ -132623,52 +131888,220 @@ index 0000000000000000000000000000000000000000..89e65317512bc774453ac8d0d5b0ff98 +MODULE_DESCRIPTION("ASoC Driver for DionAudio LOCO"); +MODULE_LICENSE("GPL v2"); -From 48c75118c6d99cc04e97cd9cd312b0cc9eb0a5f0 Mon Sep 17 00:00:00 2001 -From: Matt Flax -Date: Fri, 17 Jun 2016 14:48:16 +1000 -Subject: [PATCH 084/160] ASoc: wm8731: add 32bit mode. +From 7bf2d8d29d92a03713da62a89d41202fe9c29d16 Mon Sep 17 00:00:00 2001 +From: Clive Messer +Date: Mon, 19 Sep 2016 14:01:04 +0100 +Subject: [PATCH 094/132] Allo Piano DAC boards: Initial 2 channel (stereo) + support (#1645) -commit cf5ef3a299ba32f6ac24c3c6ba18c1b7f1b5475f upstream. +Add initial 2 channel (stereo) support for Allo Piano DAC (2.0/2.1) boards, +using allo-piano-dac-pcm512x-audio overlay and allo-piano-dac ALSA ASoC +machine driver. -This patch adds 32 bit word capability to the wm8731 driver. The wm8731 -codec is capable of handling 32 bit word sizes, however that has not -previously been activated in the codec driver. +NB. The initial support is 2 channel (stereo) ONLY! +(The Piano DAC 2.1 will only support 2 channel (stereo) left/right output, + pending an update to the upstream pcm512x codec driver, which will have + to be submitted via upstream. With the initial downstream support, + provided by this patch, the Piano DAC 2.1 subwoofer outputs will + not function.) -Signed-off-by: Matt Flax -Acked-by: Charles Keepax -Signed-off-by: Mark Brown +Signed-off-by: Baswaraj K +Signed-off-by: Clive Messer +Tested-by: Clive Messer --- - sound/soc/codecs/wm8731.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) + sound/soc/bcm/Kconfig | 7 ++ + sound/soc/bcm/Makefile | 2 + + sound/soc/bcm/allo-piano-dac.c | 144 +++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 153 insertions(+) + create mode 100644 sound/soc/bcm/allo-piano-dac.c -diff --git a/sound/soc/codecs/wm8731.c b/sound/soc/codecs/wm8731.c -index 4bcf5f8ece50f3681948a9fbc47b85400d9a8b51..d18261a442560cd2c108c34295bd5b1776a6ebf4 100644 ---- a/sound/soc/codecs/wm8731.c -+++ b/sound/soc/codecs/wm8731.c -@@ -358,6 +358,9 @@ static int wm8731_hw_params(struct snd_pcm_substream *substream, - case 24: - iface |= 0x0008; - break; -+ case 32: -+ iface |= 0x000c; -+ break; - } +diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig +index 7eafe2c62d716d490df87f9c6fd92bf3b9100124..4ccaba67a887432afe7f527569c4e2865925734b 100644 +--- a/sound/soc/bcm/Kconfig ++++ b/sound/soc/bcm/Kconfig +@@ -123,3 +123,10 @@ config SND_BCM2708_SOC_DIONAUDIO_LOCO + select SND_SOC_PCM5102a + help + Say Y or M if you want to add support for Dion Audio LOCO. ++ ++config SND_BCM2708_SOC_ALLO_PIANO_DAC ++ tristate "Support for Allo Piano DAC" ++ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S ++ select SND_SOC_PCM512x_I2C ++ help ++ Say Y or M if you want to add support for Allo Piano DAC. +diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile +index 2c233080c40938c38f11bed79304830fda851ae4..b9f98f0bcf3ee0d6b490e1bb185ba0de8f0f9701 100644 +--- a/sound/soc/bcm/Makefile ++++ b/sound/soc/bcm/Makefile +@@ -24,6 +24,7 @@ snd-soc-raspidac3-objs := raspidac3.o + snd-soc-audioinjector-pi-soundcard-objs := audioinjector-pi-soundcard.o + snd-soc-digidac1-soundcard-objs := digidac1-soundcard.o + snd-soc-dionaudio-loco-objs := dionaudio_loco.o ++snd-soc-allo-piano-dac-objs := allo-piano-dac.o - wm8731_set_deemph(codec); -@@ -541,7 +544,7 @@ static int wm8731_startup(struct snd_pcm_substream *substream, - #define WM8731_RATES SNDRV_PCM_RATE_8000_96000 - - #define WM8731_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\ -- SNDRV_PCM_FMTBIT_S24_LE) -+ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) - - static const struct snd_soc_dai_ops wm8731_dai_ops = { - .startup = wm8731_startup, + obj-$(CONFIG_SND_BCM2708_SOC_ADAU1977_ADC) += snd-soc-adau1977-adc.o + obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o +@@ -40,3 +41,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o + obj-$(CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD) += snd-soc-audioinjector-pi-soundcard.o + obj-$(CONFIG_SND_DIGIDAC1_SOUNDCARD) += snd-soc-digidac1-soundcard.o + obj-$(CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO) += snd-soc-dionaudio-loco.o ++obj-$(CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC) += snd-soc-allo-piano-dac.o +diff --git a/sound/soc/bcm/allo-piano-dac.c b/sound/soc/bcm/allo-piano-dac.c +new file mode 100644 +index 0000000000000000000000000000000000000000..8e8e62e5a36a279b425ed4655cfbac99ecd7e4cf +--- /dev/null ++++ b/sound/soc/bcm/allo-piano-dac.c +@@ -0,0 +1,144 @@ ++/* ++ * ALSA ASoC Machine Driver for Allo Piano DAC ++ * ++ * Author: Baswaraj K ++ * Copyright 2016 ++ * based on code by Daniel Matuschek ++ * based on code by Florian Meier ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * version 2 as published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, but ++ * WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * General Public License for more details. ++ */ ++ ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++static bool digital_gain_0db_limit = true; ++ ++static int snd_allo_piano_dac_init(struct snd_soc_pcm_runtime *rtd) ++{ ++ if (digital_gain_0db_limit) { ++ int ret; ++ struct snd_soc_card *card = rtd->card; ++ ++ ret = snd_soc_limit_volume(card, "Digital Playback Volume", ++ 207); ++ if (ret < 0) ++ dev_warn(card->dev, "Failed to set volume limit: %d\n", ++ ret); ++ } ++ ++ return 0; ++} ++ ++static int snd_allo_piano_dac_hw_params( ++ struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) ++{ ++ struct snd_soc_pcm_runtime *rtd = substream->private_data; ++ struct snd_soc_dai *cpu_dai = rtd->cpu_dai; ++ ++ unsigned int sample_bits = ++ snd_pcm_format_physical_width(params_format(params)); ++ ++ return snd_soc_dai_set_bclk_ratio(cpu_dai, sample_bits * 2); ++} ++ ++/* machine stream operations */ ++static struct snd_soc_ops snd_allo_piano_dac_ops = { ++ .hw_params = snd_allo_piano_dac_hw_params, ++}; ++ ++static struct snd_soc_dai_link snd_allo_piano_dac_dai[] = { ++{ ++ .name = "Piano DAC", ++ .stream_name = "Piano DAC HiFi", ++ .cpu_dai_name = "bcm2708-i2s.0", ++ .codec_dai_name = "pcm512x-hifi", ++ .platform_name = "bcm2708-i2s.0", ++ .codec_name = "pcm512x.1-004c", ++ .dai_fmt = SND_SOC_DAIFMT_I2S | ++ SND_SOC_DAIFMT_NB_NF | ++ SND_SOC_DAIFMT_CBS_CFS, ++ .ops = &snd_allo_piano_dac_ops, ++ .init = snd_allo_piano_dac_init, ++}, ++}; ++ ++/* audio machine driver */ ++static struct snd_soc_card snd_allo_piano_dac = { ++ .name = "PianoDAC", ++ .owner = THIS_MODULE, ++ .dai_link = snd_allo_piano_dac_dai, ++ .num_links = ARRAY_SIZE(snd_allo_piano_dac_dai), ++}; ++ ++static int snd_allo_piano_dac_probe(struct platform_device *pdev) ++{ ++ int ret = 0; ++ ++ snd_allo_piano_dac.dev = &pdev->dev; ++ ++ if (pdev->dev.of_node) { ++ struct device_node *i2s_node; ++ struct snd_soc_dai_link *dai; ++ ++ dai = &snd_allo_piano_dac_dai[0]; ++ i2s_node = of_parse_phandle(pdev->dev.of_node, ++ "i2s-controller", 0); ++ ++ if (i2s_node) { ++ dai->cpu_dai_name = NULL; ++ dai->cpu_of_node = i2s_node; ++ dai->platform_name = NULL; ++ dai->platform_of_node = i2s_node; ++ } ++ ++ digital_gain_0db_limit = !of_property_read_bool( ++ pdev->dev.of_node, "allo,24db_digital_gain"); ++ } ++ ++ ret = snd_soc_register_card(&snd_allo_piano_dac); ++ if (ret) ++ dev_err(&pdev->dev, ++ "snd_soc_register_card() failed: %d\n", ret); ++ ++ return ret; ++} ++ ++static int snd_allo_piano_dac_remove(struct platform_device *pdev) ++{ ++ return snd_soc_unregister_card(&snd_allo_piano_dac); ++} ++ ++static const struct of_device_id snd_allo_piano_dac_of_match[] = { ++ { .compatible = "allo,piano-dac", }, ++ { /* sentinel */ }, ++}; ++MODULE_DEVICE_TABLE(of, snd_allo_piano_dac_of_match); ++ ++static struct platform_driver snd_allo_piano_dac_driver = { ++ .driver = { ++ .name = "snd-allo-piano-dac", ++ .owner = THIS_MODULE, ++ .of_match_table = snd_allo_piano_dac_of_match, ++ }, ++ .probe = snd_allo_piano_dac_probe, ++ .remove = snd_allo_piano_dac_remove, ++}; ++ ++module_platform_driver(snd_allo_piano_dac_driver); ++ ++MODULE_AUTHOR("Baswaraj K "); ++MODULE_DESCRIPTION("ALSA ASoC Machine Driver for Allo Piano DAC"); ++MODULE_LICENSE("GPL v2"); -From 72d595d2182adfdc41ec8830fff9aa8c5fda7a60 Mon Sep 17 00:00:00 2001 +From 809a407805f599d485e09df4639298503b304d64 Mon Sep 17 00:00:00 2001 From: P33M Date: Wed, 21 Oct 2015 14:55:21 +0100 -Subject: [PATCH 085/160] rpi_display: add backlight driver and overlay +Subject: [PATCH 095/132] rpi_display: add backlight driver and overlay Add a mailbox-driven backlight controller for the Raspberry Pi DSI touchscreen display. Requires updated GPU firmware to recognise the @@ -132837,10 +132270,10 @@ index 0000000000000000000000000000000000000000..14a0d9b037395497c1fdae2961feccd5 +MODULE_DESCRIPTION("Raspberry Pi mailbox based Backlight Driver"); +MODULE_LICENSE("GPL"); -From c84b856fb00c5bd6867bf8d5b45f0c2ce9f81f7a Mon Sep 17 00:00:00 2001 +From fe57ea2b39063f2dc50066949ccfb25eeb9c9272 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 23 Feb 2016 19:56:04 +0000 -Subject: [PATCH 086/160] bcm2835-virtgpio: Virtual GPIO driver +Subject: [PATCH 096/132] bcm2835-virtgpio: Virtual GPIO driver Add a virtual GPIO driver that uses the firmware mailbox interface to request that the VPU toggles LEDs. @@ -132852,7 +132285,7 @@ request that the VPU toggles LEDs. create mode 100644 drivers/gpio/gpio-bcm-virt.c diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig -index 5d457ff613259b5921e96eb1e3fab22bc5dd0d42..3f4fa61d2213c2996e5ac8fb9bbab977ebfbb2ac 100644 +index 24caedb00a7a34f141bced4062f07a8d72439a63..343adff44f82b78d0a09d41518a2890c602fc83d 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -144,6 +144,12 @@ config GPIO_BCM_KONA @@ -132869,7 +132302,7 @@ index 5d457ff613259b5921e96eb1e3fab22bc5dd0d42..3f4fa61d2213c2996e5ac8fb9bbab977 tristate "BRCMSTB GPIO support" default y if (ARCH_BRCMSTB || BMIPS_GENERIC) diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile -index 991598ea3fba09ee9e5724a11f41666d5a95f085..281648f98f5e65baa293719fd48e3f01e62926f0 100644 +index 2a035ed8f168196ec7596d303685b439b2c2938e..e6ccf796193b93a9e3d9bb190316c6a152f5eb9f 100644 --- a/drivers/gpio/Makefile +++ b/drivers/gpio/Makefile @@ -29,6 +29,7 @@ obj-$(CONFIG_GPIO_AMDPT) += gpio-amdpt.o @@ -133066,10 +132499,10 @@ index 0000000000000000000000000000000000000000..f3e0f1620b979e4fa3c7e556eb785ac2 +MODULE_DESCRIPTION("brcmvirt GPIO driver"); +MODULE_ALIAS("platform:brcmvirt-gpio"); -From 51228330d8b829e050750967eccaef413d9702ad Mon Sep 17 00:00:00 2001 +From fa89892be9127b8a994dd2d11fa1752a4e1c3932 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 4 Mar 2016 12:49:09 +0000 -Subject: [PATCH 087/160] DRM_VC4: Allow to be built for ARCH_BCM270x +Subject: [PATCH 097/132] DRM_VC4: Allow to be built for ARCH_BCM270x --- drivers/gpu/drm/vc4/Kconfig | 2 +- @@ -133088,10 +132521,10 @@ index e53df59cb139f25f8e6ae916bca93abf0c49e063..f6e938208b73512f20eab46a383ca91b select DRM_KMS_HELPER select DRM_KMS_CMA_HELPER -From 9dd0b8c6915f3760b0402a980f6cc9a6fd97dc70 Mon Sep 17 00:00:00 2001 +From 6176494514c32fc50941d25cc699294bcef80be2 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 23 Feb 2016 17:26:48 +0000 -Subject: [PATCH 088/160] amba_pl011: Don't use DT aliases for numbering +Subject: [PATCH 098/132] amba_pl011: Don't use DT aliases for numbering The pl011 driver looks for DT aliases of the form "serial", and if found uses as the device ID. This can cause @@ -133103,7 +132536,7 @@ use the same logic. 1 file changed, 5 insertions(+) diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c -index 1b7331e40d795e1ec5482d6a82871bd5ce050b60..a04d27ef682792808301ac2d2bfb67d5802fd7e3 100644 +index 8a9e213387a79fcc335caad27520a68edf03f446..4a5a1c5cf9b345e255f4d79714a7ae461728fce0 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c @@ -2414,7 +2414,12 @@ static int pl011_setup_port(struct device *dev, struct uart_amba_port *uap, @@ -133120,10 +132553,10 @@ index 1b7331e40d795e1ec5482d6a82871bd5ce050b60..a04d27ef682792808301ac2d2bfb67d5 uap->old_cr = 0; uap->port.dev = dev; -From 1bed4ae1aaefffbe3b2d281d1d5c9fdf95db3f16 Mon Sep 17 00:00:00 2001 +From 9393f652240ffbaf01bd959a6b0eba633e7f8459 Mon Sep 17 00:00:00 2001 From: Pantelis Antoniou Date: Wed, 3 Dec 2014 13:23:28 +0200 -Subject: [PATCH 089/160] OF: DT-Overlay configfs interface +Subject: [PATCH 099/132] OF: DT-Overlay configfs interface This is a port of Pantelis Antoniou's v3 port that makes use of the new upstreamed configfs support for binary attributes. @@ -133212,10 +132645,10 @@ index 0000000000000000000000000000000000000000..5fa43e0643072c7963daddc18cec7772 +intended to be used by hardware managers in the kernel, while the copy interface +make sense for developers (since it avoids problems with namespaces). diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig -index b3bec3aaa45d8a34dd206593fec0c13271034b07..4d9a6ba4c8bed537b41a4ff80600c89d775a1e29 100644 +index bc07ad30c9bfa91fe0fcb0b544f2f07412a26680..f0fa9639d98a99bf7ac209f5b62283ed56a102f7 100644 --- a/drivers/of/Kconfig +++ b/drivers/of/Kconfig -@@ -115,4 +115,11 @@ config OF_OVERLAY +@@ -116,4 +116,11 @@ config OF_OVERLAY config OF_NUMA bool @@ -133555,10 +132988,10 @@ index 0000000000000000000000000000000000000000..0037e6868a6cda8706c88194c6a4454b +} +late_initcall(of_cfs_init); -From 8e9f62d59ada79fe62941f58e72546caf41bc8a6 Mon Sep 17 00:00:00 2001 +From 08841d9fecbdb8e294cbdf4adf1bc42170cea3ac Mon Sep 17 00:00:00 2001 From: Cheong2K Date: Fri, 26 Feb 2016 18:20:10 +0800 -Subject: [PATCH 090/160] brcm: adds support for BCM43341 wifi +Subject: [PATCH 100/132] brcm: adds support for BCM43341 wifi --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 ++ @@ -133566,7 +132999,7 @@ Subject: [PATCH 090/160] brcm: adds support for BCM43341 wifi 2 files changed, 3 insertions(+) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -index 67e69bff2545f442c95d80726cbe6ed16584e80d..ea66454a3d7444f51827964aea01bf7573f2b473 100644 +index 68ab3ac156500864fbe27187311541986334ff3a..a008d3c264730e1611ce817b5a4a788b872c886c 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -603,6 +603,7 @@ BRCMF_FW_NVRAM_DEF(4329, "brcmfmac4329-sdio.bin", "brcmfmac4329-sdio.txt"); @@ -133586,7 +133019,7 @@ index 67e69bff2545f442c95d80726cbe6ed16584e80d..ea66454a3d7444f51827964aea01bf75 BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFFFFFE, 43362), BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4339_CHIP_ID, 0xFFFFFFFF, 4339), diff --git a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h -index 699f2c2782ee9d898a25c95e0c5d45744d0777ff..15598b3687a213d8c00d45965a6b9351759f47fc 100644 +index 3cc42bef6245529c37320f0ec6ab5e7b77f1d2f6..2ae9d0c9dbaaab6bc16610ac012039cd04886ada 100644 --- a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h +++ b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h @@ -35,6 +35,7 @@ @@ -133598,10 +133031,10 @@ index 699f2c2782ee9d898a25c95e0c5d45744d0777ff..15598b3687a213d8c00d45965a6b9351 #define BRCM_CC_4335_CHIP_ID 0x4335 #define BRCM_CC_4339_CHIP_ID 0x4339 -From 5ac878636a9fc12795b5439858b0c49631232ea1 Mon Sep 17 00:00:00 2001 +From 1810a52ac0184f4e960d8e28da9f261b5641576e Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 9 Mar 2016 17:25:59 +0000 -Subject: [PATCH 091/160] brcmfmac: Disable power management +Subject: [PATCH 101/132] brcmfmac: Disable power management Disable wireless power saving in the brcmfmac WLAN driver. This is a temporary measure until the connectivity loss resulting from power @@ -133613,10 +133046,10 @@ Signed-off-by: Phil Elwell 1 file changed, 2 insertions(+) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -index 121baba7acb194c4bba69fb78526f80e19223b65..541d07591218bff5809b6122c623b2e5ce47230b 100644 +index b8aec5e5ef93e28dfb70c95557d7388fd9b67bef..a13351c4f8401263c04ae1f2dd81e84f28303c12 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -2699,6 +2699,8 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, +@@ -2759,6 +2759,8 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, * preference in cfg struct to apply this to * FW later while initializing the dongle */ @@ -133626,10 +133059,10 @@ index 121baba7acb194c4bba69fb78526f80e19223b65..541d07591218bff5809b6122c623b2e5 if (!check_vif_up(ifp->vif)) { -From 1ae4fbf1c8f1b8f707cc87f95b0dd9754875c438 Mon Sep 17 00:00:00 2001 +From 12808ddd2f37500e83c87f594d0b27a150dfd2c7 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 28 Apr 2016 17:13:47 +0100 -Subject: [PATCH 092/160] brcmfmac: Use original country code as a fallback +Subject: [PATCH 102/132] brcmfmac: Use original country code as a fallback Commit 73345fd212980d2e28a5c6d83801c903bd773680: @@ -133645,10 +133078,10 @@ Signed-off-by: Phil Elwell 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -index 541d07591218bff5809b6122c623b2e5ce47230b..14d84a0975bbad24a04dc026824092514932d7c8 100644 +index a13351c4f8401263c04ae1f2dd81e84f28303c12..25efa073602397780e308bf00416e949c60ab678 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -6597,12 +6597,18 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], +@@ -6737,12 +6737,18 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], struct brcmfmac_pd_cc *country_codes; struct brcmfmac_pd_cc_entry *cc; s32 found_index; @@ -133669,7 +133102,7 @@ index 541d07591218bff5809b6122c623b2e5ce47230b..14d84a0975bbad24a04dc02682409251 } if ((alpha2[0] == ccreq->country_abbrev[0]) && -@@ -6626,10 +6632,14 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], +@@ -6766,10 +6772,14 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], brcmf_dbg(TRACE, "No country code match found\n"); return -EINVAL; } @@ -133688,10 +133121,10 @@ index 541d07591218bff5809b6122c623b2e5ce47230b..14d84a0975bbad24a04dc02682409251 ccreq->country_abbrev[1] = alpha2[1]; ccreq->country_abbrev[2] = 0; -From efe911c9fdbc8480c0e6b84adbdd057d3337c710 Mon Sep 17 00:00:00 2001 +From 8916cf63474b87d1d0f87ff04f618b85dc778dd0 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 19 May 2016 15:36:09 +0100 -Subject: [PATCH 093/160] brcmfmac: Plug memory leak in brcmf_fill_bss_param +Subject: [PATCH 103/132] brcmfmac: Plug memory leak in brcmf_fill_bss_param See: https://github.com/raspberrypi/linux/issues/1471 @@ -133701,10 +133134,10 @@ Signed-off-by: Phil Elwell 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -index 14d84a0975bbad24a04dc026824092514932d7c8..4a9a636d85b29eb379fa477dfbc7af80ec380dab 100644 +index 25efa073602397780e308bf00416e949c60ab678..9f50ef00a8823011a806a2b86775abb8d5f9de54 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -2473,7 +2473,7 @@ static void brcmf_fill_bss_param(struct brcmf_if *ifp, struct station_info *si) +@@ -2533,7 +2533,7 @@ static void brcmf_fill_bss_param(struct brcmf_if *ifp, struct station_info *si) WL_BSS_INFO_MAX); if (err) { brcmf_err("Failed to get bss info (%d)\n", err); @@ -133713,7 +133146,7 @@ index 14d84a0975bbad24a04dc026824092514932d7c8..4a9a636d85b29eb379fa477dfbc7af80 } si->filled |= BIT(NL80211_STA_INFO_BSS_PARAM); si->bss_param.beacon_interval = le16_to_cpu(buf->bss_le.beacon_period); -@@ -2485,6 +2485,9 @@ static void brcmf_fill_bss_param(struct brcmf_if *ifp, struct station_info *si) +@@ -2545,6 +2545,9 @@ static void brcmf_fill_bss_param(struct brcmf_if *ifp, struct station_info *si) si->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_PREAMBLE; if (capability & WLAN_CAPABILITY_SHORT_SLOT_TIME) si->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_SLOT_TIME; @@ -133724,10 +133157,73 @@ index 14d84a0975bbad24a04dc026824092514932d7c8..4a9a636d85b29eb379fa477dfbc7af80 static s32 -From de58cf9827cd5b1d6545259d5147d4c9243371fd Mon Sep 17 00:00:00 2001 +From 4a9b7eb4d9a127c5e9a3b312b155aca8759b2e89 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Tue, 13 Sep 2016 16:32:37 +0100 +Subject: [PATCH 104/132] brcmfmac: do not use internal roaming engine by + default + +Some evidence of curing disconnects with this disabled, so make it a default. +Can be overridden with module parameter roamoff=0 +See: http://projectable.me/optimize-my-pi-wi-fi/ +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c +index 3e15d64c64813513bc22202dd9e468588699abb0..4051780f64f44a5ce522babe6c371a1beb79a824 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c +@@ -69,7 +69,7 @@ static int brcmf_fcmode; + module_param_named(fcmode, brcmf_fcmode, int, 0); + MODULE_PARM_DESC(fcmode, "Mode of firmware signalled flow control"); + +-static int brcmf_roamoff; ++static int brcmf_roamoff = 1; + module_param_named(roamoff, brcmf_roamoff, int, S_IRUSR); + MODULE_PARM_DESC(roamoff, "Do not use internal roaming engine"); + + +From 06babc46e3a8a0e535ccccbc5c04e6c9bad0bbaf Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 31 Aug 2016 17:10:09 +0100 +Subject: [PATCH 105/132] brcmfmac: Change stop_ap sequence + +Patch from Broadcom/Cypress to resolve a customer error + +Signed-off-by: Phil Elwell +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +index 9f50ef00a8823011a806a2b86775abb8d5f9de54..b3ef2bb5642ce3ff0b74c5bab97114f7a9c219dc 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +@@ -4750,12 +4750,15 @@ static int brcmf_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev) + err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_DOWN, 1); + if (err < 0) + brcmf_err("BRCMF_C_DOWN error %d\n", err); +- err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_AP, 0); +- if (err < 0) +- brcmf_err("setting AP mode failed %d\n", err); ++ + err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_INFRA, 0); + if (err < 0) + brcmf_err("setting INFRA mode failed %d\n", err); ++ ++ err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_AP, 0); ++ if (err < 0) ++ brcmf_err("setting AP mode failed %d\n", err); ++ + if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS)) + brcmf_fil_iovar_int_set(ifp, "mbss", 0); + err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_REGULATORY, + +From 37879fec89021edae1356d5100c35ef8fb181b26 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 17 Dec 2015 13:37:07 +0000 -Subject: [PATCH 094/160] hci_h5: Don't send conf_req when ACTIVE +Subject: [PATCH 106/132] hci_h5: Don't send conf_req when ACTIVE Without this patch, a modem and kernel can continuously bombard each other with conf_req and conf_rsp messages, in a demented game of tag. @@ -133750,10 +133246,10 @@ index 0879d64b1caf58afb6e5d494c07d9ab7e7cdf983..5161ab30fd533d50f516bb93d5b9f402 if (H5_HDR_LEN(hdr) > 2) h5->tx_win = (data[2] & 0x07); -From 0dccfd3648a06cc947898ab255d34fa977c0301c Mon Sep 17 00:00:00 2001 +From c6c7dff9121eabb02205027177beb97ce7707986 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 22 Jan 2016 13:06:39 -0800 -Subject: [PATCH 095/160] drm/vc4: Add a debugfs node for tracking execution +Subject: [PATCH 107/132] drm/vc4: Add a debugfs node for tracking execution state. Signed-off-by: Eric Anholt @@ -133776,10 +133272,10 @@ index 245115d49c46a1244ef3e460a03fde397f763de8..94f2154c3685255e2e67d225f77dea37 {"hvs_regs", vc4_hvs_debugfs_regs, 0}, {"crtc0_regs", vc4_crtc_debugfs_regs, 0, (void *)(uintptr_t)0}, diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h -index 2e24616cd84a1c187bbe7ccb9327f4c69aa1c4c5..417461826ca927dd3226576e013ca98b6663a150 100644 +index 428e24919ef11919a027b67225f7145173430d98..3874b838102886dd4111830ce12254ae6c798f4c 100644 --- a/drivers/gpu/drm/vc4/vc4_drv.h +++ b/drivers/gpu/drm/vc4/vc4_drv.h -@@ -454,6 +454,7 @@ void vc4_job_handle_completed(struct vc4_dev *vc4); +@@ -464,6 +464,7 @@ void vc4_job_handle_completed(struct vc4_dev *vc4); int vc4_queue_seqno_cb(struct drm_device *dev, struct vc4_seqno_cb *cb, uint64_t seqno, void (*func)(struct vc4_seqno_cb *cb)); @@ -133788,7 +133284,7 @@ index 2e24616cd84a1c187bbe7ccb9327f4c69aa1c4c5..417461826ca927dd3226576e013ca98b /* vc4_hdmi.c */ extern struct platform_driver vc4_hdmi_driver; diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c -index 78ab08e8f87eb064e3eeec761b26c19f11c1f4e5..be22d00baa43dedd80f49045bed89f74589a0edf 100644 +index b262c5c26f109702572ed613fa0965f06a993ef9..27f42023fa49c7e62e643dc007e9e121efa930f5 100644 --- a/drivers/gpu/drm/vc4/vc4_gem.c +++ b/drivers/gpu/drm/vc4/vc4_gem.c @@ -32,6 +32,20 @@ @@ -133813,10 +133309,10 @@ index 78ab08e8f87eb064e3eeec761b26c19f11c1f4e5..be22d00baa43dedd80f49045bed89f74 vc4_queue_hangcheck(struct drm_device *dev) { -From 93e1ba3d50740bcb6cf0023b17d85033c250bd7d Mon Sep 17 00:00:00 2001 +From 07bfab04d29dbdea5e0a652b5f09340593f13c3a Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 25 Jan 2016 13:03:33 -0800 -Subject: [PATCH 096/160] drm/vc4: Include vc4_drm.h in uapi in downstream +Subject: [PATCH 108/132] drm/vc4: Include vc4_drm.h in uapi in downstream build. Signed-off-by: Eric Anholt @@ -133837,44 +133333,10 @@ index 9355dd8eff3ba39401dfe37e7fbf7737f0397f11..68828bf586f05a8d9b0a6ab409ee91a7 header-y += vmwgfx_drm.h header-y += msm_drm.h -From e639e422bb452d499a1d65706e8c9e7891c1244f Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Wed, 30 Mar 2016 17:23:15 +0100 -Subject: [PATCH 097/160] cpufreq: Temporarily ignore io_is_busy=1 - -To speed testing of the new sdhost driver that adapts to changes in -core_freq, hack the on-demand governor to treat io_is_busy=1 as -io_is_busy=0. The io_is_busy feature can still be forced using -io_is_busy=2. - -Signed-off-by: Phil Elwell ---- - drivers/cpufreq/cpufreq_ondemand.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c -index 300163430516766d56b842d8d12dc33175eee66b..9ab7b40005cb7ddfafc3917dc874eea8bdd5ad04 100644 ---- a/drivers/cpufreq/cpufreq_ondemand.c -+++ b/drivers/cpufreq/cpufreq_ondemand.c -@@ -217,7 +217,12 @@ static ssize_t store_io_is_busy(struct gov_attr_set *attr_set, const char *buf, - ret = sscanf(buf, "%u", &input); - if (ret != 1) - return -EINVAL; -- dbs_data->io_is_busy = !!input; -+ // XXX temporary hack -+ if (input > 1) -+ input = 1; -+ else -+ input = 0; -+ dbs_data->io_is_busy = input; - - /* we need to re-evaluate prev_cpu_idle */ - gov_update_cpu_data(dbs_data); - -From 8cd66366c78e069988cea2a8cc9ece14d9f6ad9a Mon Sep 17 00:00:00 2001 +From 11f6f5ab0528f97e9da3f199f55f32240d00153a Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 14 Oct 2015 11:32:14 -0700 -Subject: [PATCH 098/160] drm/vc4: Force HDMI to connected. +Subject: [PATCH 109/132] drm/vc4: Force HDMI to connected. For some reason on the downstream tree, the HPD GPIO isn't working. @@ -133884,7 +133346,7 @@ Signed-off-by: Eric Anholt 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c -index fd2644d231ff867a4409840eba7f8234a4a1faba..ed9c5274d06a215331aee44da1f7214a0e1f6e28 100644 +index 4452f3631cacea37bbd5dc8a594367631e308adc..3a622f70a077c2ebe214830f5d700cd8fe16e442 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -166,6 +166,8 @@ vc4_hdmi_connector_detect(struct drm_connector *connector, bool force) @@ -133897,1875 +133359,7561 @@ index fd2644d231ff867a4409840eba7f8234a4a1faba..ed9c5274d06a215331aee44da1f7214a if (gpio_get_value_cansleep(vc4->hdmi->hpd_gpio) ^ vc4->hdmi->hpd_active_low) -From 74827eeb2029fa6546fc20170ed424a78e19d7bf Mon Sep 17 00:00:00 2001 -From: Eric Anholt -Date: Tue, 19 Apr 2016 15:55:02 -0700 -Subject: [PATCH 099/160] ARM: bcm2708: Enable building power domain driver. +From 3eb321b6925776b8d6784a7bec7893cee9991993 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Mon, 13 Apr 2015 17:16:29 +0100 +Subject: [PATCH 110/132] config: Add default configs -Signed-off-by: Eric Anholt --- - drivers/soc/bcm/Kconfig | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + arch/arm/configs/bcm2709_defconfig | 1294 +++++++++++++++++++++++++++++++++++ + arch/arm/configs/bcmrpi_defconfig | 1303 ++++++++++++++++++++++++++++++++++++ + 2 files changed, 2597 insertions(+) + create mode 100644 arch/arm/configs/bcm2709_defconfig + create mode 100644 arch/arm/configs/bcmrpi_defconfig -diff --git a/drivers/soc/bcm/Kconfig b/drivers/soc/bcm/Kconfig -index 3066edea184d765a670ded0cead470597654abc1..e23518142ceac6651641cc30c327d60dded319d5 100644 ---- a/drivers/soc/bcm/Kconfig -+++ b/drivers/soc/bcm/Kconfig -@@ -1,6 +1,6 @@ - config RASPBERRYPI_POWER - bool "Raspberry Pi power domain driver" -- depends on ARCH_BCM2835 || COMPILE_TEST -+ depends on ARCH_BCM2835 || ARCH_BCM2708 || ARCH_BCM2709 || COMPILE_TEST - depends on RASPBERRYPI_FIRMWARE=y - select PM_GENERIC_DOMAINS if PM - select PM_GENERIC_DOMAINS_OF if PM +diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig +new file mode 100644 +index 0000000000000000000000000000000000000000..dfbb3406e38b50bf38db84071f82c3a556da8057 +--- /dev/null ++++ b/arch/arm/configs/bcm2709_defconfig +@@ -0,0 +1,1294 @@ ++# CONFIG_ARM_PATCH_PHYS_VIRT is not set ++CONFIG_PHYS_OFFSET=0 ++CONFIG_LOCALVERSION="-v7" ++# CONFIG_LOCALVERSION_AUTO is not set ++CONFIG_SYSVIPC=y ++CONFIG_POSIX_MQUEUE=y ++CONFIG_NO_HZ=y ++CONFIG_HIGH_RES_TIMERS=y ++CONFIG_BSD_PROCESS_ACCT=y ++CONFIG_BSD_PROCESS_ACCT_V3=y ++CONFIG_TASKSTATS=y ++CONFIG_TASK_DELAY_ACCT=y ++CONFIG_TASK_XACCT=y ++CONFIG_TASK_IO_ACCOUNTING=y ++CONFIG_IKCONFIG=m ++CONFIG_IKCONFIG_PROC=y ++CONFIG_NMI_LOG_BUF_SHIFT=12 ++CONFIG_MEMCG=y ++CONFIG_BLK_CGROUP=y ++CONFIG_CGROUP_FREEZER=y ++CONFIG_CPUSETS=y ++CONFIG_CGROUP_DEVICE=y ++CONFIG_CGROUP_CPUACCT=y ++CONFIG_NAMESPACES=y ++CONFIG_USER_NS=y ++CONFIG_SCHED_AUTOGROUP=y ++CONFIG_BLK_DEV_INITRD=y ++CONFIG_EMBEDDED=y ++# CONFIG_COMPAT_BRK is not set ++CONFIG_PROFILING=y ++CONFIG_OPROFILE=m ++CONFIG_KPROBES=y ++CONFIG_JUMP_LABEL=y ++CONFIG_MODULES=y ++CONFIG_MODULE_UNLOAD=y ++CONFIG_MODVERSIONS=y ++CONFIG_MODULE_SRCVERSION_ALL=y ++CONFIG_BLK_DEV_THROTTLING=y ++CONFIG_PARTITION_ADVANCED=y ++CONFIG_MAC_PARTITION=y ++CONFIG_CFQ_GROUP_IOSCHED=y ++CONFIG_ARCH_BCM2709=y ++# CONFIG_CACHE_L2X0 is not set ++CONFIG_SMP=y ++CONFIG_HAVE_ARM_ARCH_TIMER=y ++CONFIG_VMSPLIT_2G=y ++CONFIG_PREEMPT_VOLUNTARY=y ++CONFIG_AEABI=y ++CONFIG_OABI_COMPAT=y ++# CONFIG_CPU_SW_DOMAIN_PAN is not set ++CONFIG_CLEANCACHE=y ++CONFIG_FRONTSWAP=y ++CONFIG_CMA=y ++CONFIG_ZSMALLOC=m ++CONFIG_PGTABLE_MAPPING=y ++CONFIG_UACCESS_WITH_MEMCPY=y ++CONFIG_SECCOMP=y ++# CONFIG_ATAGS is not set ++CONFIG_ZBOOT_ROM_TEXT=0x0 ++CONFIG_ZBOOT_ROM_BSS=0x0 ++CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" ++CONFIG_CPU_FREQ=y ++CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y ++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y ++CONFIG_CPU_FREQ_GOV_USERSPACE=y ++CONFIG_CPU_FREQ_GOV_ONDEMAND=y ++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y ++CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y ++CONFIG_VFP=y ++CONFIG_NEON=y ++CONFIG_KERNEL_MODE_NEON=y ++CONFIG_BINFMT_MISC=m ++# CONFIG_SUSPEND is not set ++CONFIG_PM=y ++CONFIG_NET=y ++CONFIG_PACKET=y ++CONFIG_UNIX=y ++CONFIG_XFRM_USER=y ++CONFIG_NET_KEY=m ++CONFIG_INET=y ++CONFIG_IP_MULTICAST=y ++CONFIG_IP_ADVANCED_ROUTER=y ++CONFIG_IP_MULTIPLE_TABLES=y ++CONFIG_IP_ROUTE_MULTIPATH=y ++CONFIG_IP_ROUTE_VERBOSE=y ++CONFIG_IP_PNP=y ++CONFIG_IP_PNP_DHCP=y ++CONFIG_IP_PNP_RARP=y ++CONFIG_NET_IPIP=m ++CONFIG_NET_IPGRE_DEMUX=m ++CONFIG_NET_IPGRE=m ++CONFIG_IP_MROUTE=y ++CONFIG_IP_MROUTE_MULTIPLE_TABLES=y ++CONFIG_IP_PIMSM_V1=y ++CONFIG_IP_PIMSM_V2=y ++CONFIG_SYN_COOKIES=y ++CONFIG_INET_AH=m ++CONFIG_INET_ESP=m ++CONFIG_INET_IPCOMP=m ++CONFIG_INET_XFRM_MODE_TRANSPORT=m ++CONFIG_INET_XFRM_MODE_TUNNEL=m ++CONFIG_INET_XFRM_MODE_BEET=m ++CONFIG_INET_DIAG=m ++CONFIG_IPV6=m ++CONFIG_IPV6_ROUTER_PREF=y ++CONFIG_INET6_AH=m ++CONFIG_INET6_ESP=m ++CONFIG_INET6_IPCOMP=m ++CONFIG_IPV6_TUNNEL=m ++CONFIG_IPV6_MULTIPLE_TABLES=y ++CONFIG_IPV6_SUBTREES=y ++CONFIG_IPV6_MROUTE=y ++CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y ++CONFIG_IPV6_PIMSM_V2=y ++CONFIG_NETFILTER=y ++CONFIG_NF_CONNTRACK=m ++CONFIG_NF_CONNTRACK_ZONES=y ++CONFIG_NF_CONNTRACK_EVENTS=y ++CONFIG_NF_CONNTRACK_TIMESTAMP=y ++CONFIG_NF_CT_PROTO_DCCP=m ++CONFIG_NF_CT_PROTO_UDPLITE=m ++CONFIG_NF_CONNTRACK_AMANDA=m ++CONFIG_NF_CONNTRACK_FTP=m ++CONFIG_NF_CONNTRACK_H323=m ++CONFIG_NF_CONNTRACK_IRC=m ++CONFIG_NF_CONNTRACK_NETBIOS_NS=m ++CONFIG_NF_CONNTRACK_SNMP=m ++CONFIG_NF_CONNTRACK_PPTP=m ++CONFIG_NF_CONNTRACK_SANE=m ++CONFIG_NF_CONNTRACK_SIP=m ++CONFIG_NF_CONNTRACK_TFTP=m ++CONFIG_NF_CT_NETLINK=m ++CONFIG_NETFILTER_XT_SET=m ++CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m ++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m ++CONFIG_NETFILTER_XT_TARGET_CONNMARK=m ++CONFIG_NETFILTER_XT_TARGET_DSCP=m ++CONFIG_NETFILTER_XT_TARGET_HMARK=m ++CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m ++CONFIG_NETFILTER_XT_TARGET_LED=m ++CONFIG_NETFILTER_XT_TARGET_LOG=m ++CONFIG_NETFILTER_XT_TARGET_MARK=m ++CONFIG_NETFILTER_XT_TARGET_NFLOG=m ++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m ++CONFIG_NETFILTER_XT_TARGET_NOTRACK=m ++CONFIG_NETFILTER_XT_TARGET_TEE=m ++CONFIG_NETFILTER_XT_TARGET_TPROXY=m ++CONFIG_NETFILTER_XT_TARGET_TRACE=m ++CONFIG_NETFILTER_XT_TARGET_TCPMSS=m ++CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m ++CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m ++CONFIG_NETFILTER_XT_MATCH_BPF=m ++CONFIG_NETFILTER_XT_MATCH_CLUSTER=m ++CONFIG_NETFILTER_XT_MATCH_COMMENT=m ++CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m ++CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m ++CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_CONNMARK=m ++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m ++CONFIG_NETFILTER_XT_MATCH_CPU=m ++CONFIG_NETFILTER_XT_MATCH_DCCP=m ++CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m ++CONFIG_NETFILTER_XT_MATCH_DSCP=m ++CONFIG_NETFILTER_XT_MATCH_ESP=m ++CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_HELPER=m ++CONFIG_NETFILTER_XT_MATCH_IPRANGE=m ++CONFIG_NETFILTER_XT_MATCH_IPVS=m ++CONFIG_NETFILTER_XT_MATCH_LENGTH=m ++CONFIG_NETFILTER_XT_MATCH_LIMIT=m ++CONFIG_NETFILTER_XT_MATCH_MAC=m ++CONFIG_NETFILTER_XT_MATCH_MARK=m ++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m ++CONFIG_NETFILTER_XT_MATCH_NFACCT=m ++CONFIG_NETFILTER_XT_MATCH_OSF=m ++CONFIG_NETFILTER_XT_MATCH_OWNER=m ++CONFIG_NETFILTER_XT_MATCH_POLICY=m ++CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m ++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m ++CONFIG_NETFILTER_XT_MATCH_QUOTA=m ++CONFIG_NETFILTER_XT_MATCH_RATEEST=m ++CONFIG_NETFILTER_XT_MATCH_REALM=m ++CONFIG_NETFILTER_XT_MATCH_RECENT=m ++CONFIG_NETFILTER_XT_MATCH_SOCKET=m ++CONFIG_NETFILTER_XT_MATCH_STATE=m ++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m ++CONFIG_NETFILTER_XT_MATCH_STRING=m ++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m ++CONFIG_NETFILTER_XT_MATCH_TIME=m ++CONFIG_NETFILTER_XT_MATCH_U32=m ++CONFIG_IP_SET=m ++CONFIG_IP_SET_BITMAP_IP=m ++CONFIG_IP_SET_BITMAP_IPMAC=m ++CONFIG_IP_SET_BITMAP_PORT=m ++CONFIG_IP_SET_HASH_IP=m ++CONFIG_IP_SET_HASH_IPPORT=m ++CONFIG_IP_SET_HASH_IPPORTIP=m ++CONFIG_IP_SET_HASH_IPPORTNET=m ++CONFIG_IP_SET_HASH_NET=m ++CONFIG_IP_SET_HASH_NETPORT=m ++CONFIG_IP_SET_HASH_NETIFACE=m ++CONFIG_IP_SET_LIST_SET=m ++CONFIG_IP_VS=m ++CONFIG_IP_VS_PROTO_TCP=y ++CONFIG_IP_VS_PROTO_UDP=y ++CONFIG_IP_VS_PROTO_ESP=y ++CONFIG_IP_VS_PROTO_AH=y ++CONFIG_IP_VS_PROTO_SCTP=y ++CONFIG_IP_VS_RR=m ++CONFIG_IP_VS_WRR=m ++CONFIG_IP_VS_LC=m ++CONFIG_IP_VS_WLC=m ++CONFIG_IP_VS_LBLC=m ++CONFIG_IP_VS_LBLCR=m ++CONFIG_IP_VS_DH=m ++CONFIG_IP_VS_SH=m ++CONFIG_IP_VS_SED=m ++CONFIG_IP_VS_NQ=m ++CONFIG_IP_VS_FTP=m ++CONFIG_IP_VS_PE_SIP=m ++CONFIG_NF_CONNTRACK_IPV4=m ++CONFIG_IP_NF_IPTABLES=m ++CONFIG_IP_NF_MATCH_AH=m ++CONFIG_IP_NF_MATCH_ECN=m ++CONFIG_IP_NF_MATCH_RPFILTER=m ++CONFIG_IP_NF_MATCH_TTL=m ++CONFIG_IP_NF_FILTER=m ++CONFIG_IP_NF_TARGET_REJECT=m ++CONFIG_IP_NF_NAT=m ++CONFIG_IP_NF_TARGET_MASQUERADE=m ++CONFIG_IP_NF_TARGET_NETMAP=m ++CONFIG_IP_NF_TARGET_REDIRECT=m ++CONFIG_IP_NF_MANGLE=m ++CONFIG_IP_NF_TARGET_CLUSTERIP=m ++CONFIG_IP_NF_TARGET_ECN=m ++CONFIG_IP_NF_TARGET_TTL=m ++CONFIG_IP_NF_RAW=m ++CONFIG_IP_NF_ARPTABLES=m ++CONFIG_IP_NF_ARPFILTER=m ++CONFIG_IP_NF_ARP_MANGLE=m ++CONFIG_NF_CONNTRACK_IPV6=m ++CONFIG_IP6_NF_IPTABLES=m ++CONFIG_IP6_NF_MATCH_AH=m ++CONFIG_IP6_NF_MATCH_EUI64=m ++CONFIG_IP6_NF_MATCH_FRAG=m ++CONFIG_IP6_NF_MATCH_OPTS=m ++CONFIG_IP6_NF_MATCH_HL=m ++CONFIG_IP6_NF_MATCH_IPV6HEADER=m ++CONFIG_IP6_NF_MATCH_MH=m ++CONFIG_IP6_NF_MATCH_RPFILTER=m ++CONFIG_IP6_NF_MATCH_RT=m ++CONFIG_IP6_NF_TARGET_HL=m ++CONFIG_IP6_NF_FILTER=m ++CONFIG_IP6_NF_TARGET_REJECT=m ++CONFIG_IP6_NF_MANGLE=m ++CONFIG_IP6_NF_RAW=m ++CONFIG_IP6_NF_NAT=m ++CONFIG_IP6_NF_TARGET_MASQUERADE=m ++CONFIG_IP6_NF_TARGET_NPT=m ++CONFIG_BRIDGE_NF_EBTABLES=m ++CONFIG_BRIDGE_EBT_BROUTE=m ++CONFIG_BRIDGE_EBT_T_FILTER=m ++CONFIG_BRIDGE_EBT_T_NAT=m ++CONFIG_BRIDGE_EBT_802_3=m ++CONFIG_BRIDGE_EBT_AMONG=m ++CONFIG_BRIDGE_EBT_ARP=m ++CONFIG_BRIDGE_EBT_IP=m ++CONFIG_BRIDGE_EBT_IP6=m ++CONFIG_BRIDGE_EBT_LIMIT=m ++CONFIG_BRIDGE_EBT_MARK=m ++CONFIG_BRIDGE_EBT_PKTTYPE=m ++CONFIG_BRIDGE_EBT_STP=m ++CONFIG_BRIDGE_EBT_VLAN=m ++CONFIG_BRIDGE_EBT_ARPREPLY=m ++CONFIG_BRIDGE_EBT_DNAT=m ++CONFIG_BRIDGE_EBT_MARK_T=m ++CONFIG_BRIDGE_EBT_REDIRECT=m ++CONFIG_BRIDGE_EBT_SNAT=m ++CONFIG_BRIDGE_EBT_LOG=m ++CONFIG_BRIDGE_EBT_NFLOG=m ++CONFIG_SCTP_COOKIE_HMAC_SHA1=y ++CONFIG_ATM=m ++CONFIG_L2TP=m ++CONFIG_L2TP_V3=y ++CONFIG_L2TP_IP=m ++CONFIG_L2TP_ETH=m ++CONFIG_BRIDGE=m ++CONFIG_VLAN_8021Q=m ++CONFIG_VLAN_8021Q_GVRP=y ++CONFIG_ATALK=m ++CONFIG_6LOWPAN=m ++CONFIG_IEEE802154=m ++CONFIG_IEEE802154_6LOWPAN=m ++CONFIG_MAC802154=m ++CONFIG_NET_SCHED=y ++CONFIG_NET_SCH_CBQ=m ++CONFIG_NET_SCH_HTB=m ++CONFIG_NET_SCH_HFSC=m ++CONFIG_NET_SCH_PRIO=m ++CONFIG_NET_SCH_MULTIQ=m ++CONFIG_NET_SCH_RED=m ++CONFIG_NET_SCH_SFB=m ++CONFIG_NET_SCH_SFQ=m ++CONFIG_NET_SCH_TEQL=m ++CONFIG_NET_SCH_TBF=m ++CONFIG_NET_SCH_GRED=m ++CONFIG_NET_SCH_DSMARK=m ++CONFIG_NET_SCH_NETEM=m ++CONFIG_NET_SCH_DRR=m ++CONFIG_NET_SCH_MQPRIO=m ++CONFIG_NET_SCH_CHOKE=m ++CONFIG_NET_SCH_QFQ=m ++CONFIG_NET_SCH_CODEL=m ++CONFIG_NET_SCH_FQ_CODEL=m ++CONFIG_NET_SCH_INGRESS=m ++CONFIG_NET_SCH_PLUG=m ++CONFIG_NET_CLS_BASIC=m ++CONFIG_NET_CLS_TCINDEX=m ++CONFIG_NET_CLS_ROUTE4=m ++CONFIG_NET_CLS_FW=m ++CONFIG_NET_CLS_U32=m ++CONFIG_CLS_U32_MARK=y ++CONFIG_NET_CLS_RSVP=m ++CONFIG_NET_CLS_RSVP6=m ++CONFIG_NET_CLS_FLOW=m ++CONFIG_NET_CLS_CGROUP=m ++CONFIG_NET_EMATCH=y ++CONFIG_NET_EMATCH_CMP=m ++CONFIG_NET_EMATCH_NBYTE=m ++CONFIG_NET_EMATCH_U32=m ++CONFIG_NET_EMATCH_META=m ++CONFIG_NET_EMATCH_TEXT=m ++CONFIG_NET_EMATCH_IPSET=m ++CONFIG_NET_CLS_ACT=y ++CONFIG_NET_ACT_POLICE=m ++CONFIG_NET_ACT_GACT=m ++CONFIG_GACT_PROB=y ++CONFIG_NET_ACT_MIRRED=m ++CONFIG_NET_ACT_IPT=m ++CONFIG_NET_ACT_NAT=m ++CONFIG_NET_ACT_PEDIT=m ++CONFIG_NET_ACT_SIMP=m ++CONFIG_NET_ACT_SKBEDIT=m ++CONFIG_NET_ACT_CSUM=m ++CONFIG_BATMAN_ADV=m ++CONFIG_OPENVSWITCH=m ++CONFIG_NET_PKTGEN=m ++CONFIG_HAMRADIO=y ++CONFIG_AX25=m ++CONFIG_NETROM=m ++CONFIG_ROSE=m ++CONFIG_MKISS=m ++CONFIG_6PACK=m ++CONFIG_BPQETHER=m ++CONFIG_BAYCOM_SER_FDX=m ++CONFIG_BAYCOM_SER_HDX=m ++CONFIG_YAM=m ++CONFIG_CAN=m ++CONFIG_CAN_VCAN=m ++CONFIG_CAN_MCP251X=m ++CONFIG_IRDA=m ++CONFIG_IRLAN=m ++CONFIG_IRNET=m ++CONFIG_IRCOMM=m ++CONFIG_IRDA_ULTRA=y ++CONFIG_IRDA_CACHE_LAST_LSAP=y ++CONFIG_IRDA_FAST_RR=y ++CONFIG_IRTTY_SIR=m ++CONFIG_KINGSUN_DONGLE=m ++CONFIG_KSDAZZLE_DONGLE=m ++CONFIG_KS959_DONGLE=m ++CONFIG_USB_IRDA=m ++CONFIG_SIGMATEL_FIR=m ++CONFIG_MCS_FIR=m ++CONFIG_BT=m ++CONFIG_BT_RFCOMM=m ++CONFIG_BT_RFCOMM_TTY=y ++CONFIG_BT_BNEP=m ++CONFIG_BT_BNEP_MC_FILTER=y ++CONFIG_BT_BNEP_PROTO_FILTER=y ++CONFIG_BT_HIDP=m ++CONFIG_BT_6LOWPAN=m ++CONFIG_BT_HCIBTUSB=m ++CONFIG_BT_HCIUART=m ++CONFIG_BT_HCIUART_3WIRE=y ++CONFIG_BT_HCIUART_BCM=y ++CONFIG_BT_HCIBCM203X=m ++CONFIG_BT_HCIBPA10X=m ++CONFIG_BT_HCIBFUSB=m ++CONFIG_BT_HCIVHCI=m ++CONFIG_BT_MRVL=m ++CONFIG_BT_MRVL_SDIO=m ++CONFIG_BT_ATH3K=m ++CONFIG_BT_WILINK=m ++CONFIG_MAC80211=m ++CONFIG_MAC80211_MESH=y ++CONFIG_WIMAX=m ++CONFIG_RFKILL=m ++CONFIG_RFKILL_INPUT=y ++CONFIG_NET_9P=m ++CONFIG_NFC=m ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y ++CONFIG_DMA_CMA=y ++CONFIG_CMA_SIZE_MBYTES=5 ++CONFIG_MTD=m ++CONFIG_MTD_BLOCK=m ++CONFIG_MTD_NAND=m ++CONFIG_MTD_UBI=m ++CONFIG_OF_CONFIGFS=y ++CONFIG_ZRAM=m ++CONFIG_BLK_DEV_LOOP=y ++CONFIG_BLK_DEV_CRYPTOLOOP=m ++CONFIG_BLK_DEV_DRBD=m ++CONFIG_BLK_DEV_NBD=m ++CONFIG_BLK_DEV_RAM=y ++CONFIG_CDROM_PKTCDVD=m ++CONFIG_ATA_OVER_ETH=m ++CONFIG_EEPROM_AT24=m ++CONFIG_TI_ST=m ++CONFIG_SCSI=y ++# CONFIG_SCSI_PROC_FS is not set ++CONFIG_BLK_DEV_SD=y ++CONFIG_CHR_DEV_ST=m ++CONFIG_CHR_DEV_OSST=m ++CONFIG_BLK_DEV_SR=m ++CONFIG_CHR_DEV_SG=m ++CONFIG_SCSI_ISCSI_ATTRS=y ++CONFIG_ISCSI_TCP=m ++CONFIG_ISCSI_BOOT_SYSFS=m ++CONFIG_MD=y ++CONFIG_MD_LINEAR=m ++CONFIG_MD_RAID0=m ++CONFIG_BLK_DEV_DM=m ++CONFIG_DM_CRYPT=m ++CONFIG_DM_SNAPSHOT=m ++CONFIG_DM_THIN_PROVISIONING=m ++CONFIG_DM_MIRROR=m ++CONFIG_DM_LOG_USERSPACE=m ++CONFIG_DM_RAID=m ++CONFIG_DM_ZERO=m ++CONFIG_DM_DELAY=m ++CONFIG_NETDEVICES=y ++CONFIG_BONDING=m ++CONFIG_DUMMY=m ++CONFIG_IFB=m ++CONFIG_MACVLAN=m ++CONFIG_IPVLAN=m ++CONFIG_VXLAN=m ++CONFIG_NETCONSOLE=m ++CONFIG_TUN=m ++CONFIG_VETH=m ++CONFIG_ENC28J60=m ++CONFIG_QCA7000=m ++CONFIG_MDIO_BITBANG=m ++CONFIG_PPP=m ++CONFIG_PPP_BSDCOMP=m ++CONFIG_PPP_DEFLATE=m ++CONFIG_PPP_FILTER=y ++CONFIG_PPP_MPPE=m ++CONFIG_PPP_MULTILINK=y ++CONFIG_PPPOATM=m ++CONFIG_PPPOE=m ++CONFIG_PPPOL2TP=m ++CONFIG_PPP_ASYNC=m ++CONFIG_PPP_SYNC_TTY=m ++CONFIG_SLIP=m ++CONFIG_SLIP_COMPRESSED=y ++CONFIG_SLIP_SMART=y ++CONFIG_USB_CATC=m ++CONFIG_USB_KAWETH=m ++CONFIG_USB_PEGASUS=m ++CONFIG_USB_RTL8150=m ++CONFIG_USB_RTL8152=m ++CONFIG_USB_USBNET=y ++CONFIG_USB_NET_AX8817X=m ++CONFIG_USB_NET_AX88179_178A=m ++CONFIG_USB_NET_CDCETHER=m ++CONFIG_USB_NET_CDC_EEM=m ++CONFIG_USB_NET_CDC_NCM=m ++CONFIG_USB_NET_HUAWEI_CDC_NCM=m ++CONFIG_USB_NET_CDC_MBIM=m ++CONFIG_USB_NET_DM9601=m ++CONFIG_USB_NET_SR9700=m ++CONFIG_USB_NET_SR9800=m ++CONFIG_USB_NET_SMSC75XX=m ++CONFIG_USB_NET_SMSC95XX=y ++CONFIG_USB_NET_GL620A=m ++CONFIG_USB_NET_NET1080=m ++CONFIG_USB_NET_PLUSB=m ++CONFIG_USB_NET_MCS7830=m ++CONFIG_USB_NET_CDC_SUBSET=m ++CONFIG_USB_ALI_M5632=y ++CONFIG_USB_AN2720=y ++CONFIG_USB_EPSON2888=y ++CONFIG_USB_KC2190=y ++CONFIG_USB_NET_ZAURUS=m ++CONFIG_USB_NET_CX82310_ETH=m ++CONFIG_USB_NET_KALMIA=m ++CONFIG_USB_NET_QMI_WWAN=m ++CONFIG_USB_HSO=m ++CONFIG_USB_NET_INT51X1=m ++CONFIG_USB_IPHETH=m ++CONFIG_USB_SIERRA_NET=m ++CONFIG_USB_VL600=m ++CONFIG_ATH9K=m ++CONFIG_ATH9K_HTC=m ++CONFIG_CARL9170=m ++CONFIG_ATH6KL=m ++CONFIG_ATH6KL_USB=m ++CONFIG_AR5523=m ++CONFIG_AT76C50X_USB=m ++CONFIG_B43=m ++# CONFIG_B43_PHY_N is not set ++CONFIG_B43LEGACY=m ++CONFIG_BRCMFMAC=m ++CONFIG_BRCMFMAC_USB=y ++CONFIG_HOSTAP=m ++CONFIG_P54_COMMON=m ++CONFIG_P54_USB=m ++CONFIG_LIBERTAS=m ++CONFIG_LIBERTAS_USB=m ++CONFIG_LIBERTAS_SDIO=m ++CONFIG_LIBERTAS_THINFIRM=m ++CONFIG_LIBERTAS_THINFIRM_USB=m ++CONFIG_MWIFIEX=m ++CONFIG_MWIFIEX_SDIO=m ++CONFIG_MT7601U=m ++CONFIG_RT2X00=m ++CONFIG_RT2500USB=m ++CONFIG_RT73USB=m ++CONFIG_RT2800USB=m ++CONFIG_RT2800USB_RT3573=y ++CONFIG_RT2800USB_RT53XX=y ++CONFIG_RT2800USB_RT55XX=y ++CONFIG_RT2800USB_UNKNOWN=y ++CONFIG_RTL8187=m ++CONFIG_RTL8192CU=m ++CONFIG_USB_ZD1201=m ++CONFIG_ZD1211RW=m ++CONFIG_MAC80211_HWSIM=m ++CONFIG_USB_NET_RNDIS_WLAN=m ++CONFIG_WIMAX_I2400M_USB=m ++CONFIG_IEEE802154_AT86RF230=m ++CONFIG_IEEE802154_MRF24J40=m ++CONFIG_IEEE802154_CC2520=m ++CONFIG_INPUT_POLLDEV=m ++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set ++CONFIG_INPUT_JOYDEV=m ++CONFIG_INPUT_EVDEV=m ++# CONFIG_KEYBOARD_ATKBD is not set ++CONFIG_KEYBOARD_GPIO=m ++# CONFIG_INPUT_MOUSE is not set ++CONFIG_INPUT_JOYSTICK=y ++CONFIG_JOYSTICK_IFORCE=m ++CONFIG_JOYSTICK_IFORCE_USB=y ++CONFIG_JOYSTICK_XPAD=m ++CONFIG_JOYSTICK_XPAD_FF=y ++CONFIG_JOYSTICK_XPAD_LEDS=y ++CONFIG_JOYSTICK_RPISENSE=m ++CONFIG_INPUT_TOUCHSCREEN=y ++CONFIG_TOUCHSCREEN_ADS7846=m ++CONFIG_TOUCHSCREEN_EGALAX=m ++CONFIG_TOUCHSCREEN_FT6236=m ++CONFIG_TOUCHSCREEN_RPI_FT5406=m ++CONFIG_TOUCHSCREEN_USB_COMPOSITE=m ++CONFIG_TOUCHSCREEN_STMPE=m ++CONFIG_INPUT_MISC=y ++CONFIG_INPUT_AD714X=m ++CONFIG_INPUT_ATI_REMOTE2=m ++CONFIG_INPUT_KEYSPAN_REMOTE=m ++CONFIG_INPUT_POWERMATE=m ++CONFIG_INPUT_YEALINK=m ++CONFIG_INPUT_CM109=m ++CONFIG_INPUT_UINPUT=m ++CONFIG_INPUT_GPIO_ROTARY_ENCODER=m ++CONFIG_INPUT_ADXL34X=m ++CONFIG_INPUT_CMA3000=m ++CONFIG_SERIO=m ++CONFIG_SERIO_RAW=m ++CONFIG_GAMEPORT=m ++CONFIG_GAMEPORT_NS558=m ++CONFIG_GAMEPORT_L4=m ++CONFIG_BRCM_CHAR_DRIVERS=y ++CONFIG_BCM_VC_CMA=y ++CONFIG_BCM_VCIO=y ++CONFIG_BCM_VC_SM=y ++# CONFIG_LEGACY_PTYS is not set ++# CONFIG_DEVKMEM is not set ++CONFIG_SERIAL_8250=y ++# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set ++CONFIG_SERIAL_8250_CONSOLE=y ++# CONFIG_SERIAL_8250_DMA is not set ++CONFIG_SERIAL_8250_NR_UARTS=1 ++CONFIG_SERIAL_8250_RUNTIME_UARTS=0 ++CONFIG_SERIAL_8250_EXTENDED=y ++CONFIG_SERIAL_8250_SHARE_IRQ=y ++CONFIG_SERIAL_8250_BCM2835AUX=y ++CONFIG_SERIAL_OF_PLATFORM=y ++CONFIG_SERIAL_AMBA_PL011=y ++CONFIG_SERIAL_AMBA_PL011_CONSOLE=y ++CONFIG_SERIAL_SC16IS7XX=m ++CONFIG_SERIAL_SC16IS7XX_SPI=y ++CONFIG_TTY_PRINTK=y ++CONFIG_HW_RANDOM=y ++CONFIG_RAW_DRIVER=y ++CONFIG_I2C=y ++CONFIG_I2C_CHARDEV=m ++CONFIG_I2C_MUX_PCA954x=m ++CONFIG_I2C_BCM2708=m ++CONFIG_I2C_GPIO=m ++CONFIG_SPI=y ++CONFIG_SPI_BCM2835=m ++CONFIG_SPI_BCM2835AUX=m ++CONFIG_SPI_SPIDEV=y ++CONFIG_PPS=m ++CONFIG_PPS_CLIENT_LDISC=m ++CONFIG_PPS_CLIENT_GPIO=m ++CONFIG_GPIO_SYSFS=y ++CONFIG_GPIO_BCM_VIRT=y ++CONFIG_GPIO_ARIZONA=m ++CONFIG_GPIO_STMPE=y ++CONFIG_GPIO_MCP23S08=m ++CONFIG_W1=m ++CONFIG_W1_MASTER_DS2490=m ++CONFIG_W1_MASTER_DS2482=m ++CONFIG_W1_MASTER_DS1WM=m ++CONFIG_W1_MASTER_GPIO=m ++CONFIG_W1_SLAVE_THERM=m ++CONFIG_W1_SLAVE_SMEM=m ++CONFIG_W1_SLAVE_DS2408=m ++CONFIG_W1_SLAVE_DS2413=m ++CONFIG_W1_SLAVE_DS2406=m ++CONFIG_W1_SLAVE_DS2423=m ++CONFIG_W1_SLAVE_DS2431=m ++CONFIG_W1_SLAVE_DS2433=m ++CONFIG_W1_SLAVE_DS2760=m ++CONFIG_W1_SLAVE_DS2780=m ++CONFIG_W1_SLAVE_DS2781=m ++CONFIG_W1_SLAVE_DS28E04=m ++CONFIG_W1_SLAVE_BQ27000=m ++CONFIG_BATTERY_DS2760=m ++CONFIG_POWER_RESET=y ++CONFIG_POWER_RESET_GPIO=y ++CONFIG_HWMON=m ++CONFIG_SENSORS_LM75=m ++CONFIG_SENSORS_SHT21=m ++CONFIG_SENSORS_SHTC1=m ++CONFIG_SENSORS_INA2XX=m ++CONFIG_THERMAL=y ++CONFIG_THERMAL_BCM2835=y ++CONFIG_WATCHDOG=y ++CONFIG_BCM2835_WDT=m ++CONFIG_UCB1400_CORE=m ++CONFIG_MFD_STMPE=y ++CONFIG_STMPE_SPI=y ++CONFIG_MFD_ARIZONA_I2C=m ++CONFIG_MFD_ARIZONA_SPI=m ++CONFIG_MFD_WM5102=y ++CONFIG_MEDIA_SUPPORT=m ++CONFIG_MEDIA_CAMERA_SUPPORT=y ++CONFIG_MEDIA_ANALOG_TV_SUPPORT=y ++CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y ++CONFIG_MEDIA_RADIO_SUPPORT=y ++CONFIG_MEDIA_RC_SUPPORT=y ++CONFIG_MEDIA_CONTROLLER=y ++CONFIG_LIRC=m ++CONFIG_RC_DEVICES=y ++CONFIG_RC_ATI_REMOTE=m ++CONFIG_IR_IMON=m ++CONFIG_IR_MCEUSB=m ++CONFIG_IR_REDRAT3=m ++CONFIG_IR_STREAMZAP=m ++CONFIG_IR_IGUANA=m ++CONFIG_IR_TTUSBIR=m ++CONFIG_RC_LOOPBACK=m ++CONFIG_IR_GPIO_CIR=m ++CONFIG_MEDIA_USB_SUPPORT=y ++CONFIG_USB_VIDEO_CLASS=m ++CONFIG_USB_M5602=m ++CONFIG_USB_STV06XX=m ++CONFIG_USB_GL860=m ++CONFIG_USB_GSPCA_BENQ=m ++CONFIG_USB_GSPCA_CONEX=m ++CONFIG_USB_GSPCA_CPIA1=m ++CONFIG_USB_GSPCA_DTCS033=m ++CONFIG_USB_GSPCA_ETOMS=m ++CONFIG_USB_GSPCA_FINEPIX=m ++CONFIG_USB_GSPCA_JEILINJ=m ++CONFIG_USB_GSPCA_JL2005BCD=m ++CONFIG_USB_GSPCA_KINECT=m ++CONFIG_USB_GSPCA_KONICA=m ++CONFIG_USB_GSPCA_MARS=m ++CONFIG_USB_GSPCA_MR97310A=m ++CONFIG_USB_GSPCA_NW80X=m ++CONFIG_USB_GSPCA_OV519=m ++CONFIG_USB_GSPCA_OV534=m ++CONFIG_USB_GSPCA_OV534_9=m ++CONFIG_USB_GSPCA_PAC207=m ++CONFIG_USB_GSPCA_PAC7302=m ++CONFIG_USB_GSPCA_PAC7311=m ++CONFIG_USB_GSPCA_SE401=m ++CONFIG_USB_GSPCA_SN9C2028=m ++CONFIG_USB_GSPCA_SN9C20X=m ++CONFIG_USB_GSPCA_SONIXB=m ++CONFIG_USB_GSPCA_SONIXJ=m ++CONFIG_USB_GSPCA_SPCA500=m ++CONFIG_USB_GSPCA_SPCA501=m ++CONFIG_USB_GSPCA_SPCA505=m ++CONFIG_USB_GSPCA_SPCA506=m ++CONFIG_USB_GSPCA_SPCA508=m ++CONFIG_USB_GSPCA_SPCA561=m ++CONFIG_USB_GSPCA_SPCA1528=m ++CONFIG_USB_GSPCA_SQ905=m ++CONFIG_USB_GSPCA_SQ905C=m ++CONFIG_USB_GSPCA_SQ930X=m ++CONFIG_USB_GSPCA_STK014=m ++CONFIG_USB_GSPCA_STK1135=m ++CONFIG_USB_GSPCA_STV0680=m ++CONFIG_USB_GSPCA_SUNPLUS=m ++CONFIG_USB_GSPCA_T613=m ++CONFIG_USB_GSPCA_TOPRO=m ++CONFIG_USB_GSPCA_TV8532=m ++CONFIG_USB_GSPCA_VC032X=m ++CONFIG_USB_GSPCA_VICAM=m ++CONFIG_USB_GSPCA_XIRLINK_CIT=m ++CONFIG_USB_GSPCA_ZC3XX=m ++CONFIG_USB_PWC=m ++CONFIG_VIDEO_CPIA2=m ++CONFIG_USB_ZR364XX=m ++CONFIG_USB_STKWEBCAM=m ++CONFIG_USB_S2255=m ++CONFIG_VIDEO_USBTV=m ++CONFIG_VIDEO_PVRUSB2=m ++CONFIG_VIDEO_HDPVR=m ++CONFIG_VIDEO_USBVISION=m ++CONFIG_VIDEO_STK1160_COMMON=m ++CONFIG_VIDEO_STK1160_AC97=y ++CONFIG_VIDEO_GO7007=m ++CONFIG_VIDEO_GO7007_USB=m ++CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m ++CONFIG_VIDEO_AU0828=m ++CONFIG_VIDEO_AU0828_RC=y ++CONFIG_VIDEO_CX231XX=m ++CONFIG_VIDEO_CX231XX_ALSA=m ++CONFIG_VIDEO_CX231XX_DVB=m ++CONFIG_VIDEO_TM6000=m ++CONFIG_VIDEO_TM6000_ALSA=m ++CONFIG_VIDEO_TM6000_DVB=m ++CONFIG_DVB_USB=m ++CONFIG_DVB_USB_A800=m ++CONFIG_DVB_USB_DIBUSB_MB=m ++CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y ++CONFIG_DVB_USB_DIBUSB_MC=m ++CONFIG_DVB_USB_DIB0700=m ++CONFIG_DVB_USB_UMT_010=m ++CONFIG_DVB_USB_CXUSB=m ++CONFIG_DVB_USB_M920X=m ++CONFIG_DVB_USB_DIGITV=m ++CONFIG_DVB_USB_VP7045=m ++CONFIG_DVB_USB_VP702X=m ++CONFIG_DVB_USB_GP8PSK=m ++CONFIG_DVB_USB_NOVA_T_USB2=m ++CONFIG_DVB_USB_TTUSB2=m ++CONFIG_DVB_USB_DTT200U=m ++CONFIG_DVB_USB_OPERA1=m ++CONFIG_DVB_USB_AF9005=m ++CONFIG_DVB_USB_AF9005_REMOTE=m ++CONFIG_DVB_USB_PCTV452E=m ++CONFIG_DVB_USB_DW2102=m ++CONFIG_DVB_USB_CINERGY_T2=m ++CONFIG_DVB_USB_DTV5100=m ++CONFIG_DVB_USB_FRIIO=m ++CONFIG_DVB_USB_AZ6027=m ++CONFIG_DVB_USB_TECHNISAT_USB2=m ++CONFIG_DVB_USB_V2=m ++CONFIG_DVB_USB_AF9015=m ++CONFIG_DVB_USB_AF9035=m ++CONFIG_DVB_USB_ANYSEE=m ++CONFIG_DVB_USB_AU6610=m ++CONFIG_DVB_USB_AZ6007=m ++CONFIG_DVB_USB_CE6230=m ++CONFIG_DVB_USB_EC168=m ++CONFIG_DVB_USB_GL861=m ++CONFIG_DVB_USB_LME2510=m ++CONFIG_DVB_USB_MXL111SF=m ++CONFIG_DVB_USB_RTL28XXU=m ++CONFIG_DVB_USB_DVBSKY=m ++CONFIG_SMS_USB_DRV=m ++CONFIG_DVB_B2C2_FLEXCOP_USB=m ++CONFIG_DVB_AS102=m ++CONFIG_VIDEO_EM28XX=m ++CONFIG_VIDEO_EM28XX_V4L2=m ++CONFIG_VIDEO_EM28XX_ALSA=m ++CONFIG_VIDEO_EM28XX_DVB=m ++CONFIG_V4L_PLATFORM_DRIVERS=y ++CONFIG_VIDEO_BCM2835=y ++CONFIG_VIDEO_BCM2835_MMAL=m ++CONFIG_RADIO_SI470X=y ++CONFIG_USB_SI470X=m ++CONFIG_I2C_SI470X=m ++CONFIG_RADIO_SI4713=m ++CONFIG_I2C_SI4713=m ++CONFIG_USB_MR800=m ++CONFIG_USB_DSBR=m ++CONFIG_RADIO_SHARK=m ++CONFIG_RADIO_SHARK2=m ++CONFIG_USB_KEENE=m ++CONFIG_USB_MA901=m ++CONFIG_RADIO_TEA5764=m ++CONFIG_RADIO_SAA7706H=m ++CONFIG_RADIO_TEF6862=m ++CONFIG_RADIO_WL1273=m ++CONFIG_RADIO_WL128X=m ++# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set ++CONFIG_VIDEO_UDA1342=m ++CONFIG_VIDEO_SONY_BTF_MPX=m ++CONFIG_VIDEO_TVP5150=m ++CONFIG_VIDEO_TW2804=m ++CONFIG_VIDEO_TW9903=m ++CONFIG_VIDEO_TW9906=m ++CONFIG_VIDEO_OV7640=m ++CONFIG_VIDEO_MT9V011=m ++CONFIG_DRM=m ++CONFIG_DRM_LOAD_EDID_FIRMWARE=y ++CONFIG_DRM_UDL=m ++CONFIG_DRM_VC4=m ++CONFIG_FB=y ++CONFIG_FB_BCM2708=y ++CONFIG_FB_UDL=m ++CONFIG_FB_SSD1307=m ++CONFIG_FB_RPISENSE=m ++# CONFIG_BACKLIGHT_GENERIC is not set ++CONFIG_BACKLIGHT_RPI=m ++CONFIG_BACKLIGHT_GPIO=m ++CONFIG_FRAMEBUFFER_CONSOLE=y ++CONFIG_LOGO=y ++# CONFIG_LOGO_LINUX_MONO is not set ++# CONFIG_LOGO_LINUX_VGA16 is not set ++CONFIG_SOUND=y ++CONFIG_SND=m ++CONFIG_SND_SEQUENCER=m ++CONFIG_SND_SEQ_DUMMY=m ++CONFIG_SND_MIXER_OSS=m ++CONFIG_SND_PCM_OSS=m ++CONFIG_SND_SEQUENCER_OSS=y ++CONFIG_SND_HRTIMER=m ++CONFIG_SND_DUMMY=m ++CONFIG_SND_ALOOP=m ++CONFIG_SND_VIRMIDI=m ++CONFIG_SND_MTPAV=m ++CONFIG_SND_SERIAL_U16550=m ++CONFIG_SND_MPU401=m ++CONFIG_SND_BCM2835=m ++CONFIG_SND_USB_AUDIO=m ++CONFIG_SND_USB_UA101=m ++CONFIG_SND_USB_CAIAQ=m ++CONFIG_SND_USB_CAIAQ_INPUT=y ++CONFIG_SND_USB_6FIRE=m ++CONFIG_SND_SOC=m ++CONFIG_SND_BCM2835_SOC_I2S=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m ++CONFIG_SND_BCM2708_SOC_RPI_DAC=m ++CONFIG_SND_BCM2708_SOC_RPI_PROTO=m ++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m ++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m ++CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m ++CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m ++CONFIG_SND_BCM2708_SOC_RASPIDAC3=m ++CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m ++CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m ++CONFIG_SND_DIGIDAC1_SOUNDCARD=m ++CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m ++CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC=m ++CONFIG_SND_SOC_ADAU1701=m ++CONFIG_SND_SOC_WM8804_I2C=m ++CONFIG_SND_SIMPLE_CARD=m ++CONFIG_SOUND_PRIME=m ++CONFIG_HIDRAW=y ++CONFIG_UHID=m ++CONFIG_HID_A4TECH=m ++CONFIG_HID_ACRUX=m ++CONFIG_HID_APPLE=m ++CONFIG_HID_BELKIN=m ++CONFIG_HID_BETOP_FF=m ++CONFIG_HID_CHERRY=m ++CONFIG_HID_CHICONY=m ++CONFIG_HID_CYPRESS=m ++CONFIG_HID_DRAGONRISE=m ++CONFIG_HID_EMS_FF=m ++CONFIG_HID_ELECOM=m ++CONFIG_HID_ELO=m ++CONFIG_HID_EZKEY=m ++CONFIG_HID_GEMBIRD=m ++CONFIG_HID_HOLTEK=m ++CONFIG_HID_KEYTOUCH=m ++CONFIG_HID_KYE=m ++CONFIG_HID_UCLOGIC=m ++CONFIG_HID_WALTOP=m ++CONFIG_HID_GYRATION=m ++CONFIG_HID_TWINHAN=m ++CONFIG_HID_KENSINGTON=m ++CONFIG_HID_LCPOWER=m ++CONFIG_HID_LOGITECH=m ++CONFIG_HID_LOGITECH_DJ=m ++CONFIG_LOGITECH_FF=y ++CONFIG_LOGIRUMBLEPAD2_FF=y ++CONFIG_LOGIG940_FF=y ++CONFIG_HID_MAGICMOUSE=m ++CONFIG_HID_MICROSOFT=m ++CONFIG_HID_MONTEREY=m ++CONFIG_HID_MULTITOUCH=m ++CONFIG_HID_NTRIG=m ++CONFIG_HID_ORTEK=m ++CONFIG_HID_PANTHERLORD=m ++CONFIG_HID_PETALYNX=m ++CONFIG_HID_PICOLCD=m ++CONFIG_HID_ROCCAT=m ++CONFIG_HID_SAMSUNG=m ++CONFIG_HID_SONY=m ++CONFIG_HID_SPEEDLINK=m ++CONFIG_HID_SUNPLUS=m ++CONFIG_HID_GREENASIA=m ++CONFIG_HID_SMARTJOYPLUS=m ++CONFIG_HID_TOPSEED=m ++CONFIG_HID_THINGM=m ++CONFIG_HID_THRUSTMASTER=m ++CONFIG_HID_WACOM=m ++CONFIG_HID_WIIMOTE=m ++CONFIG_HID_XINMO=m ++CONFIG_HID_ZEROPLUS=m ++CONFIG_HID_ZYDACRON=m ++CONFIG_HID_PID=y ++CONFIG_USB_HIDDEV=y ++CONFIG_USB=y ++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y ++CONFIG_USB_MON=m ++CONFIG_USB_DWCOTG=y ++CONFIG_USB_PRINTER=m ++CONFIG_USB_STORAGE=y ++CONFIG_USB_STORAGE_REALTEK=m ++CONFIG_USB_STORAGE_DATAFAB=m ++CONFIG_USB_STORAGE_FREECOM=m ++CONFIG_USB_STORAGE_ISD200=m ++CONFIG_USB_STORAGE_USBAT=m ++CONFIG_USB_STORAGE_SDDR09=m ++CONFIG_USB_STORAGE_SDDR55=m ++CONFIG_USB_STORAGE_JUMPSHOT=m ++CONFIG_USB_STORAGE_ALAUDA=m ++CONFIG_USB_STORAGE_ONETOUCH=m ++CONFIG_USB_STORAGE_KARMA=m ++CONFIG_USB_STORAGE_CYPRESS_ATACB=m ++CONFIG_USB_STORAGE_ENE_UB6250=m ++CONFIG_USB_MDC800=m ++CONFIG_USB_MICROTEK=m ++CONFIG_USBIP_CORE=m ++CONFIG_USBIP_VHCI_HCD=m ++CONFIG_USBIP_HOST=m ++CONFIG_USB_SERIAL=m ++CONFIG_USB_SERIAL_GENERIC=y ++CONFIG_USB_SERIAL_AIRCABLE=m ++CONFIG_USB_SERIAL_ARK3116=m ++CONFIG_USB_SERIAL_BELKIN=m ++CONFIG_USB_SERIAL_CH341=m ++CONFIG_USB_SERIAL_WHITEHEAT=m ++CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m ++CONFIG_USB_SERIAL_CP210X=m ++CONFIG_USB_SERIAL_CYPRESS_M8=m ++CONFIG_USB_SERIAL_EMPEG=m ++CONFIG_USB_SERIAL_FTDI_SIO=m ++CONFIG_USB_SERIAL_VISOR=m ++CONFIG_USB_SERIAL_IPAQ=m ++CONFIG_USB_SERIAL_IR=m ++CONFIG_USB_SERIAL_EDGEPORT=m ++CONFIG_USB_SERIAL_EDGEPORT_TI=m ++CONFIG_USB_SERIAL_F81232=m ++CONFIG_USB_SERIAL_GARMIN=m ++CONFIG_USB_SERIAL_IPW=m ++CONFIG_USB_SERIAL_IUU=m ++CONFIG_USB_SERIAL_KEYSPAN_PDA=m ++CONFIG_USB_SERIAL_KEYSPAN=m ++CONFIG_USB_SERIAL_KLSI=m ++CONFIG_USB_SERIAL_KOBIL_SCT=m ++CONFIG_USB_SERIAL_MCT_U232=m ++CONFIG_USB_SERIAL_METRO=m ++CONFIG_USB_SERIAL_MOS7720=m ++CONFIG_USB_SERIAL_MOS7840=m ++CONFIG_USB_SERIAL_NAVMAN=m ++CONFIG_USB_SERIAL_PL2303=m ++CONFIG_USB_SERIAL_OTI6858=m ++CONFIG_USB_SERIAL_QCAUX=m ++CONFIG_USB_SERIAL_QUALCOMM=m ++CONFIG_USB_SERIAL_SPCP8X5=m ++CONFIG_USB_SERIAL_SAFE=m ++CONFIG_USB_SERIAL_SIERRAWIRELESS=m ++CONFIG_USB_SERIAL_SYMBOL=m ++CONFIG_USB_SERIAL_TI=m ++CONFIG_USB_SERIAL_CYBERJACK=m ++CONFIG_USB_SERIAL_XIRCOM=m ++CONFIG_USB_SERIAL_OPTION=m ++CONFIG_USB_SERIAL_OMNINET=m ++CONFIG_USB_SERIAL_OPTICON=m ++CONFIG_USB_SERIAL_XSENS_MT=m ++CONFIG_USB_SERIAL_WISHBONE=m ++CONFIG_USB_SERIAL_SSU100=m ++CONFIG_USB_SERIAL_QT2=m ++CONFIG_USB_SERIAL_DEBUG=m ++CONFIG_USB_EMI62=m ++CONFIG_USB_EMI26=m ++CONFIG_USB_ADUTUX=m ++CONFIG_USB_SEVSEG=m ++CONFIG_USB_RIO500=m ++CONFIG_USB_LEGOTOWER=m ++CONFIG_USB_LCD=m ++CONFIG_USB_CYPRESS_CY7C63=m ++CONFIG_USB_CYTHERM=m ++CONFIG_USB_IDMOUSE=m ++CONFIG_USB_FTDI_ELAN=m ++CONFIG_USB_APPLEDISPLAY=m ++CONFIG_USB_LD=m ++CONFIG_USB_TRANCEVIBRATOR=m ++CONFIG_USB_IOWARRIOR=m ++CONFIG_USB_TEST=m ++CONFIG_USB_ISIGHTFW=m ++CONFIG_USB_YUREX=m ++CONFIG_USB_ATM=m ++CONFIG_USB_SPEEDTOUCH=m ++CONFIG_USB_CXACRU=m ++CONFIG_USB_UEAGLEATM=m ++CONFIG_USB_XUSBATM=m ++CONFIG_MMC=y ++CONFIG_MMC_BLOCK_MINORS=32 ++CONFIG_MMC_BCM2835=y ++CONFIG_MMC_BCM2835_DMA=y ++CONFIG_MMC_BCM2835_SDHOST=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_PLTFM=y ++CONFIG_MMC_SPI=m ++CONFIG_LEDS_CLASS=y ++CONFIG_LEDS_GPIO=y ++CONFIG_LEDS_TRIGGER_TIMER=y ++CONFIG_LEDS_TRIGGER_ONESHOT=y ++CONFIG_LEDS_TRIGGER_HEARTBEAT=y ++CONFIG_LEDS_TRIGGER_BACKLIGHT=y ++CONFIG_LEDS_TRIGGER_CPU=y ++CONFIG_LEDS_TRIGGER_GPIO=y ++CONFIG_LEDS_TRIGGER_DEFAULT_ON=y ++CONFIG_LEDS_TRIGGER_TRANSIENT=m ++CONFIG_LEDS_TRIGGER_CAMERA=m ++CONFIG_LEDS_TRIGGER_INPUT=y ++CONFIG_LEDS_TRIGGER_PANIC=y ++CONFIG_RTC_CLASS=y ++# CONFIG_RTC_HCTOSYS is not set ++CONFIG_RTC_DRV_DS1307=m ++CONFIG_RTC_DRV_DS1374=m ++CONFIG_RTC_DRV_DS1672=m ++CONFIG_RTC_DRV_MAX6900=m ++CONFIG_RTC_DRV_RS5C372=m ++CONFIG_RTC_DRV_ISL1208=m ++CONFIG_RTC_DRV_ISL12022=m ++CONFIG_RTC_DRV_ISL12057=m ++CONFIG_RTC_DRV_X1205=m ++CONFIG_RTC_DRV_PCF8523=m ++CONFIG_RTC_DRV_PCF8563=m ++CONFIG_RTC_DRV_PCF8583=m ++CONFIG_RTC_DRV_M41T80=m ++CONFIG_RTC_DRV_BQ32K=m ++CONFIG_RTC_DRV_S35390A=m ++CONFIG_RTC_DRV_FM3130=m ++CONFIG_RTC_DRV_RX8581=m ++CONFIG_RTC_DRV_RX8025=m ++CONFIG_RTC_DRV_EM3027=m ++CONFIG_RTC_DRV_M41T93=m ++CONFIG_RTC_DRV_M41T94=m ++CONFIG_RTC_DRV_DS1302=m ++CONFIG_RTC_DRV_DS1305=m ++CONFIG_RTC_DRV_DS1390=m ++CONFIG_RTC_DRV_R9701=m ++CONFIG_RTC_DRV_RX4581=m ++CONFIG_RTC_DRV_RS5C348=m ++CONFIG_RTC_DRV_MAX6902=m ++CONFIG_RTC_DRV_PCF2123=m ++CONFIG_RTC_DRV_DS3232=m ++CONFIG_RTC_DRV_PCF2127=m ++CONFIG_RTC_DRV_RV3029C2=m ++CONFIG_DMADEVICES=y ++CONFIG_DMA_BCM2835=y ++CONFIG_DMA_BCM2708=y ++CONFIG_UIO=m ++CONFIG_UIO_PDRV_GENIRQ=m ++CONFIG_STAGING=y ++CONFIG_PRISM2_USB=m ++CONFIG_R8712U=m ++CONFIG_R8188EU=m ++CONFIG_R8723AU=m ++CONFIG_VT6656=m ++CONFIG_SPEAKUP=m ++CONFIG_SPEAKUP_SYNTH_SOFT=m ++CONFIG_STAGING_MEDIA=y ++CONFIG_LIRC_STAGING=y ++CONFIG_LIRC_IMON=m ++CONFIG_LIRC_RPI=m ++CONFIG_LIRC_SASEM=m ++CONFIG_LIRC_SERIAL=m ++CONFIG_FB_TFT=m ++CONFIG_FB_TFT_AGM1264K_FL=m ++CONFIG_FB_TFT_BD663474=m ++CONFIG_FB_TFT_HX8340BN=m ++CONFIG_FB_TFT_HX8347D=m ++CONFIG_FB_TFT_HX8353D=m ++CONFIG_FB_TFT_ILI9163=m ++CONFIG_FB_TFT_ILI9320=m ++CONFIG_FB_TFT_ILI9325=m ++CONFIG_FB_TFT_ILI9340=m ++CONFIG_FB_TFT_ILI9341=m ++CONFIG_FB_TFT_ILI9481=m ++CONFIG_FB_TFT_ILI9486=m ++CONFIG_FB_TFT_PCD8544=m ++CONFIG_FB_TFT_RA8875=m ++CONFIG_FB_TFT_S6D02A1=m ++CONFIG_FB_TFT_S6D1121=m ++CONFIG_FB_TFT_SSD1289=m ++CONFIG_FB_TFT_SSD1306=m ++CONFIG_FB_TFT_SSD1331=m ++CONFIG_FB_TFT_SSD1351=m ++CONFIG_FB_TFT_ST7735R=m ++CONFIG_FB_TFT_TINYLCD=m ++CONFIG_FB_TFT_TLS8204=m ++CONFIG_FB_TFT_UC1701=m ++CONFIG_FB_TFT_UPD161704=m ++CONFIG_FB_TFT_WATTEROTT=m ++CONFIG_FB_FLEX=m ++CONFIG_FB_TFT_FBTFT_DEVICE=m ++CONFIG_MAILBOX=y ++CONFIG_BCM2835_MBOX=y ++# CONFIG_IOMMU_SUPPORT is not set ++CONFIG_RASPBERRYPI_POWER=y ++CONFIG_EXTCON=m ++CONFIG_EXTCON_ARIZONA=m ++CONFIG_IIO=m ++CONFIG_IIO_BUFFER=y ++CONFIG_IIO_BUFFER_CB=m ++CONFIG_IIO_KFIFO_BUF=m ++CONFIG_MCP320X=m ++CONFIG_MCP3422=m ++CONFIG_DHT11=m ++CONFIG_PWM_BCM2835=m ++CONFIG_PWM_PCA9685=m ++CONFIG_RASPBERRYPI_FIRMWARE=y ++CONFIG_EXT4_FS=y ++CONFIG_EXT4_FS_POSIX_ACL=y ++CONFIG_EXT4_FS_SECURITY=y ++CONFIG_REISERFS_FS=m ++CONFIG_REISERFS_FS_XATTR=y ++CONFIG_REISERFS_FS_POSIX_ACL=y ++CONFIG_REISERFS_FS_SECURITY=y ++CONFIG_JFS_FS=m ++CONFIG_JFS_POSIX_ACL=y ++CONFIG_JFS_SECURITY=y ++CONFIG_JFS_STATISTICS=y ++CONFIG_XFS_FS=m ++CONFIG_XFS_QUOTA=y ++CONFIG_XFS_POSIX_ACL=y ++CONFIG_XFS_RT=y ++CONFIG_GFS2_FS=m ++CONFIG_OCFS2_FS=m ++CONFIG_BTRFS_FS=m ++CONFIG_BTRFS_FS_POSIX_ACL=y ++CONFIG_NILFS2_FS=m ++CONFIG_F2FS_FS=y ++CONFIG_FANOTIFY=y ++CONFIG_QFMT_V1=m ++CONFIG_QFMT_V2=m ++CONFIG_AUTOFS4_FS=y ++CONFIG_FUSE_FS=m ++CONFIG_CUSE=m ++CONFIG_OVERLAY_FS=m ++CONFIG_FSCACHE=y ++CONFIG_FSCACHE_STATS=y ++CONFIG_FSCACHE_HISTOGRAM=y ++CONFIG_CACHEFILES=y ++CONFIG_ISO9660_FS=m ++CONFIG_JOLIET=y ++CONFIG_ZISOFS=y ++CONFIG_UDF_FS=m ++CONFIG_MSDOS_FS=y ++CONFIG_VFAT_FS=y ++CONFIG_FAT_DEFAULT_IOCHARSET="ascii" ++CONFIG_NTFS_FS=m ++CONFIG_NTFS_RW=y ++CONFIG_TMPFS=y ++CONFIG_TMPFS_POSIX_ACL=y ++CONFIG_ECRYPT_FS=m ++CONFIG_HFS_FS=m ++CONFIG_HFSPLUS_FS=m ++CONFIG_JFFS2_FS=m ++CONFIG_JFFS2_SUMMARY=y ++CONFIG_UBIFS_FS=m ++CONFIG_SQUASHFS=m ++CONFIG_SQUASHFS_XATTR=y ++CONFIG_SQUASHFS_LZO=y ++CONFIG_SQUASHFS_XZ=y ++CONFIG_NFS_FS=y ++CONFIG_NFS_V3_ACL=y ++CONFIG_NFS_V4=y ++CONFIG_NFS_SWAP=y ++CONFIG_ROOT_NFS=y ++CONFIG_NFS_FSCACHE=y ++CONFIG_NFSD=m ++CONFIG_NFSD_V3_ACL=y ++CONFIG_NFSD_V4=y ++CONFIG_CIFS=m ++CONFIG_CIFS_WEAK_PW_HASH=y ++CONFIG_CIFS_UPCALL=y ++CONFIG_CIFS_XATTR=y ++CONFIG_CIFS_POSIX=y ++CONFIG_CIFS_ACL=y ++CONFIG_CIFS_DFS_UPCALL=y ++CONFIG_CIFS_SMB2=y ++CONFIG_CIFS_FSCACHE=y ++CONFIG_9P_FS=m ++CONFIG_9P_FS_POSIX_ACL=y ++CONFIG_NLS_DEFAULT="utf8" ++CONFIG_NLS_CODEPAGE_437=y ++CONFIG_NLS_CODEPAGE_737=m ++CONFIG_NLS_CODEPAGE_775=m ++CONFIG_NLS_CODEPAGE_850=m ++CONFIG_NLS_CODEPAGE_852=m ++CONFIG_NLS_CODEPAGE_855=m ++CONFIG_NLS_CODEPAGE_857=m ++CONFIG_NLS_CODEPAGE_860=m ++CONFIG_NLS_CODEPAGE_861=m ++CONFIG_NLS_CODEPAGE_862=m ++CONFIG_NLS_CODEPAGE_863=m ++CONFIG_NLS_CODEPAGE_864=m ++CONFIG_NLS_CODEPAGE_865=m ++CONFIG_NLS_CODEPAGE_866=m ++CONFIG_NLS_CODEPAGE_869=m ++CONFIG_NLS_CODEPAGE_936=m ++CONFIG_NLS_CODEPAGE_950=m ++CONFIG_NLS_CODEPAGE_932=m ++CONFIG_NLS_CODEPAGE_949=m ++CONFIG_NLS_CODEPAGE_874=m ++CONFIG_NLS_ISO8859_8=m ++CONFIG_NLS_CODEPAGE_1250=m ++CONFIG_NLS_CODEPAGE_1251=m ++CONFIG_NLS_ASCII=y ++CONFIG_NLS_ISO8859_1=m ++CONFIG_NLS_ISO8859_2=m ++CONFIG_NLS_ISO8859_3=m ++CONFIG_NLS_ISO8859_4=m ++CONFIG_NLS_ISO8859_5=m ++CONFIG_NLS_ISO8859_6=m ++CONFIG_NLS_ISO8859_7=m ++CONFIG_NLS_ISO8859_9=m ++CONFIG_NLS_ISO8859_13=m ++CONFIG_NLS_ISO8859_14=m ++CONFIG_NLS_ISO8859_15=m ++CONFIG_NLS_KOI8_R=m ++CONFIG_NLS_KOI8_U=m ++CONFIG_DLM=m ++CONFIG_PRINTK_TIME=y ++CONFIG_BOOT_PRINTK_DELAY=y ++CONFIG_DEBUG_MEMORY_INIT=y ++CONFIG_DETECT_HUNG_TASK=y ++CONFIG_TIMER_STATS=y ++CONFIG_IRQSOFF_TRACER=y ++CONFIG_SCHED_TRACER=y ++CONFIG_STACK_TRACER=y ++CONFIG_BLK_DEV_IO_TRACE=y ++# CONFIG_KPROBE_EVENT is not set ++CONFIG_FUNCTION_PROFILER=y ++CONFIG_KGDB=y ++CONFIG_KGDB_KDB=y ++CONFIG_KDB_KEYBOARD=y ++CONFIG_CRYPTO_USER=m ++CONFIG_CRYPTO_CBC=y ++CONFIG_CRYPTO_CTS=m ++CONFIG_CRYPTO_XTS=m ++CONFIG_CRYPTO_XCBC=m ++CONFIG_CRYPTO_TGR192=m ++CONFIG_CRYPTO_WP512=m ++CONFIG_CRYPTO_CAST5=m ++CONFIG_CRYPTO_DES=y ++CONFIG_CRYPTO_USER_API_SKCIPHER=m ++# CONFIG_CRYPTO_HW is not set ++CONFIG_ARM_CRYPTO=y ++CONFIG_CRYPTO_SHA1_ARM_NEON=m ++CONFIG_CRYPTO_AES_ARM_BS=m ++CONFIG_CRC_ITU_T=y ++CONFIG_LIBCRC32C=y +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +new file mode 100644 +index 0000000000000000000000000000000000000000..cfe21355f7d95326b292be1b018b988fa3ffe865 +--- /dev/null ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -0,0 +1,1303 @@ ++# CONFIG_ARM_PATCH_PHYS_VIRT is not set ++CONFIG_PHYS_OFFSET=0 ++# CONFIG_LOCALVERSION_AUTO is not set ++CONFIG_SYSVIPC=y ++CONFIG_POSIX_MQUEUE=y ++CONFIG_NO_HZ=y ++CONFIG_HIGH_RES_TIMERS=y ++CONFIG_BSD_PROCESS_ACCT=y ++CONFIG_BSD_PROCESS_ACCT_V3=y ++CONFIG_TASKSTATS=y ++CONFIG_TASK_DELAY_ACCT=y ++CONFIG_TASK_XACCT=y ++CONFIG_TASK_IO_ACCOUNTING=y ++CONFIG_IKCONFIG=m ++CONFIG_IKCONFIG_PROC=y ++CONFIG_NMI_LOG_BUF_SHIFT=12 ++CONFIG_MEMCG=y ++CONFIG_BLK_CGROUP=y ++CONFIG_CGROUP_FREEZER=y ++CONFIG_CPUSETS=y ++CONFIG_CGROUP_DEVICE=y ++CONFIG_CGROUP_CPUACCT=y ++CONFIG_NAMESPACES=y ++CONFIG_USER_NS=y ++CONFIG_SCHED_AUTOGROUP=y ++CONFIG_BLK_DEV_INITRD=y ++CONFIG_EMBEDDED=y ++# CONFIG_COMPAT_BRK is not set ++CONFIG_PROFILING=y ++CONFIG_OPROFILE=m ++CONFIG_KPROBES=y ++CONFIG_JUMP_LABEL=y ++CONFIG_MODULES=y ++CONFIG_MODULE_UNLOAD=y ++CONFIG_MODVERSIONS=y ++CONFIG_MODULE_SRCVERSION_ALL=y ++CONFIG_BLK_DEV_THROTTLING=y ++CONFIG_PARTITION_ADVANCED=y ++CONFIG_MAC_PARTITION=y ++CONFIG_CFQ_GROUP_IOSCHED=y ++CONFIG_ARCH_BCM2708=y ++CONFIG_PREEMPT_VOLUNTARY=y ++CONFIG_AEABI=y ++CONFIG_OABI_COMPAT=y ++# CONFIG_CPU_SW_DOMAIN_PAN is not set ++CONFIG_CLEANCACHE=y ++CONFIG_FRONTSWAP=y ++CONFIG_CMA=y ++CONFIG_ZSMALLOC=m ++CONFIG_PGTABLE_MAPPING=y ++CONFIG_UACCESS_WITH_MEMCPY=y ++CONFIG_SECCOMP=y ++# CONFIG_ATAGS is not set ++CONFIG_ZBOOT_ROM_TEXT=0x0 ++CONFIG_ZBOOT_ROM_BSS=0x0 ++CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" ++CONFIG_CPU_FREQ=y ++CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y ++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y ++CONFIG_CPU_FREQ_GOV_USERSPACE=y ++CONFIG_CPU_FREQ_GOV_ONDEMAND=y ++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y ++CONFIG_VFP=y ++CONFIG_BINFMT_MISC=m ++# CONFIG_SUSPEND is not set ++CONFIG_PM=y ++CONFIG_NET=y ++CONFIG_PACKET=y ++CONFIG_UNIX=y ++CONFIG_XFRM_USER=y ++CONFIG_NET_KEY=m ++CONFIG_INET=y ++CONFIG_IP_MULTICAST=y ++CONFIG_IP_ADVANCED_ROUTER=y ++CONFIG_IP_MULTIPLE_TABLES=y ++CONFIG_IP_ROUTE_MULTIPATH=y ++CONFIG_IP_ROUTE_VERBOSE=y ++CONFIG_IP_PNP=y ++CONFIG_IP_PNP_DHCP=y ++CONFIG_IP_PNP_RARP=y ++CONFIG_NET_IPIP=m ++CONFIG_NET_IPGRE_DEMUX=m ++CONFIG_NET_IPGRE=m ++CONFIG_IP_MROUTE=y ++CONFIG_IP_MROUTE_MULTIPLE_TABLES=y ++CONFIG_IP_PIMSM_V1=y ++CONFIG_IP_PIMSM_V2=y ++CONFIG_SYN_COOKIES=y ++CONFIG_INET_AH=m ++CONFIG_INET_ESP=m ++CONFIG_INET_IPCOMP=m ++CONFIG_INET_XFRM_MODE_TRANSPORT=m ++CONFIG_INET_XFRM_MODE_TUNNEL=m ++CONFIG_INET_XFRM_MODE_BEET=m ++CONFIG_INET_DIAG=m ++CONFIG_IPV6=m ++CONFIG_IPV6_ROUTER_PREF=y ++CONFIG_INET6_AH=m ++CONFIG_INET6_ESP=m ++CONFIG_INET6_IPCOMP=m ++CONFIG_IPV6_TUNNEL=m ++CONFIG_IPV6_MULTIPLE_TABLES=y ++CONFIG_IPV6_SUBTREES=y ++CONFIG_IPV6_MROUTE=y ++CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y ++CONFIG_IPV6_PIMSM_V2=y ++CONFIG_NETFILTER=y ++CONFIG_NF_CONNTRACK=m ++CONFIG_NF_CONNTRACK_ZONES=y ++CONFIG_NF_CONNTRACK_EVENTS=y ++CONFIG_NF_CONNTRACK_TIMESTAMP=y ++CONFIG_NF_CT_PROTO_DCCP=m ++CONFIG_NF_CT_PROTO_UDPLITE=m ++CONFIG_NF_CONNTRACK_AMANDA=m ++CONFIG_NF_CONNTRACK_FTP=m ++CONFIG_NF_CONNTRACK_H323=m ++CONFIG_NF_CONNTRACK_IRC=m ++CONFIG_NF_CONNTRACK_NETBIOS_NS=m ++CONFIG_NF_CONNTRACK_SNMP=m ++CONFIG_NF_CONNTRACK_PPTP=m ++CONFIG_NF_CONNTRACK_SANE=m ++CONFIG_NF_CONNTRACK_SIP=m ++CONFIG_NF_CONNTRACK_TFTP=m ++CONFIG_NF_CT_NETLINK=m ++CONFIG_NETFILTER_XT_SET=m ++CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m ++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m ++CONFIG_NETFILTER_XT_TARGET_CONNMARK=m ++CONFIG_NETFILTER_XT_TARGET_DSCP=m ++CONFIG_NETFILTER_XT_TARGET_HMARK=m ++CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m ++CONFIG_NETFILTER_XT_TARGET_LED=m ++CONFIG_NETFILTER_XT_TARGET_LOG=m ++CONFIG_NETFILTER_XT_TARGET_MARK=m ++CONFIG_NETFILTER_XT_TARGET_NFLOG=m ++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m ++CONFIG_NETFILTER_XT_TARGET_NOTRACK=m ++CONFIG_NETFILTER_XT_TARGET_TEE=m ++CONFIG_NETFILTER_XT_TARGET_TPROXY=m ++CONFIG_NETFILTER_XT_TARGET_TRACE=m ++CONFIG_NETFILTER_XT_TARGET_TCPMSS=m ++CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m ++CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m ++CONFIG_NETFILTER_XT_MATCH_BPF=m ++CONFIG_NETFILTER_XT_MATCH_CLUSTER=m ++CONFIG_NETFILTER_XT_MATCH_COMMENT=m ++CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m ++CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m ++CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_CONNMARK=m ++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m ++CONFIG_NETFILTER_XT_MATCH_CPU=m ++CONFIG_NETFILTER_XT_MATCH_DCCP=m ++CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m ++CONFIG_NETFILTER_XT_MATCH_DSCP=m ++CONFIG_NETFILTER_XT_MATCH_ESP=m ++CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_HELPER=m ++CONFIG_NETFILTER_XT_MATCH_IPRANGE=m ++CONFIG_NETFILTER_XT_MATCH_IPVS=m ++CONFIG_NETFILTER_XT_MATCH_LENGTH=m ++CONFIG_NETFILTER_XT_MATCH_LIMIT=m ++CONFIG_NETFILTER_XT_MATCH_MAC=m ++CONFIG_NETFILTER_XT_MATCH_MARK=m ++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m ++CONFIG_NETFILTER_XT_MATCH_NFACCT=m ++CONFIG_NETFILTER_XT_MATCH_OSF=m ++CONFIG_NETFILTER_XT_MATCH_OWNER=m ++CONFIG_NETFILTER_XT_MATCH_POLICY=m ++CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m ++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m ++CONFIG_NETFILTER_XT_MATCH_QUOTA=m ++CONFIG_NETFILTER_XT_MATCH_RATEEST=m ++CONFIG_NETFILTER_XT_MATCH_REALM=m ++CONFIG_NETFILTER_XT_MATCH_RECENT=m ++CONFIG_NETFILTER_XT_MATCH_SOCKET=m ++CONFIG_NETFILTER_XT_MATCH_STATE=m ++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m ++CONFIG_NETFILTER_XT_MATCH_STRING=m ++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m ++CONFIG_NETFILTER_XT_MATCH_TIME=m ++CONFIG_NETFILTER_XT_MATCH_U32=m ++CONFIG_IP_SET=m ++CONFIG_IP_SET_BITMAP_IP=m ++CONFIG_IP_SET_BITMAP_IPMAC=m ++CONFIG_IP_SET_BITMAP_PORT=m ++CONFIG_IP_SET_HASH_IP=m ++CONFIG_IP_SET_HASH_IPPORT=m ++CONFIG_IP_SET_HASH_IPPORTIP=m ++CONFIG_IP_SET_HASH_IPPORTNET=m ++CONFIG_IP_SET_HASH_NET=m ++CONFIG_IP_SET_HASH_NETPORT=m ++CONFIG_IP_SET_HASH_NETIFACE=m ++CONFIG_IP_SET_LIST_SET=m ++CONFIG_IP_VS=m ++CONFIG_IP_VS_PROTO_TCP=y ++CONFIG_IP_VS_PROTO_UDP=y ++CONFIG_IP_VS_PROTO_ESP=y ++CONFIG_IP_VS_PROTO_AH=y ++CONFIG_IP_VS_PROTO_SCTP=y ++CONFIG_IP_VS_RR=m ++CONFIG_IP_VS_WRR=m ++CONFIG_IP_VS_LC=m ++CONFIG_IP_VS_WLC=m ++CONFIG_IP_VS_LBLC=m ++CONFIG_IP_VS_LBLCR=m ++CONFIG_IP_VS_DH=m ++CONFIG_IP_VS_SH=m ++CONFIG_IP_VS_SED=m ++CONFIG_IP_VS_NQ=m ++CONFIG_IP_VS_FTP=m ++CONFIG_IP_VS_PE_SIP=m ++CONFIG_NF_CONNTRACK_IPV4=m ++CONFIG_IP_NF_IPTABLES=m ++CONFIG_IP_NF_MATCH_AH=m ++CONFIG_IP_NF_MATCH_ECN=m ++CONFIG_IP_NF_MATCH_RPFILTER=m ++CONFIG_IP_NF_MATCH_TTL=m ++CONFIG_IP_NF_FILTER=m ++CONFIG_IP_NF_TARGET_REJECT=m ++CONFIG_IP_NF_NAT=m ++CONFIG_IP_NF_TARGET_MASQUERADE=m ++CONFIG_IP_NF_TARGET_NETMAP=m ++CONFIG_IP_NF_TARGET_REDIRECT=m ++CONFIG_IP_NF_MANGLE=m ++CONFIG_IP_NF_TARGET_CLUSTERIP=m ++CONFIG_IP_NF_TARGET_ECN=m ++CONFIG_IP_NF_TARGET_TTL=m ++CONFIG_IP_NF_RAW=m ++CONFIG_IP_NF_ARPTABLES=m ++CONFIG_IP_NF_ARPFILTER=m ++CONFIG_IP_NF_ARP_MANGLE=m ++CONFIG_NF_CONNTRACK_IPV6=m ++CONFIG_IP6_NF_IPTABLES=m ++CONFIG_IP6_NF_MATCH_AH=m ++CONFIG_IP6_NF_MATCH_EUI64=m ++CONFIG_IP6_NF_MATCH_FRAG=m ++CONFIG_IP6_NF_MATCH_OPTS=m ++CONFIG_IP6_NF_MATCH_HL=m ++CONFIG_IP6_NF_MATCH_IPV6HEADER=m ++CONFIG_IP6_NF_MATCH_MH=m ++CONFIG_IP6_NF_MATCH_RPFILTER=m ++CONFIG_IP6_NF_MATCH_RT=m ++CONFIG_IP6_NF_TARGET_HL=m ++CONFIG_IP6_NF_FILTER=m ++CONFIG_IP6_NF_TARGET_REJECT=m ++CONFIG_IP6_NF_MANGLE=m ++CONFIG_IP6_NF_RAW=m ++CONFIG_IP6_NF_NAT=m ++CONFIG_IP6_NF_TARGET_MASQUERADE=m ++CONFIG_IP6_NF_TARGET_NPT=m ++CONFIG_BRIDGE_NF_EBTABLES=m ++CONFIG_BRIDGE_EBT_BROUTE=m ++CONFIG_BRIDGE_EBT_T_FILTER=m ++CONFIG_BRIDGE_EBT_T_NAT=m ++CONFIG_BRIDGE_EBT_802_3=m ++CONFIG_BRIDGE_EBT_AMONG=m ++CONFIG_BRIDGE_EBT_ARP=m ++CONFIG_BRIDGE_EBT_IP=m ++CONFIG_BRIDGE_EBT_IP6=m ++CONFIG_BRIDGE_EBT_LIMIT=m ++CONFIG_BRIDGE_EBT_MARK=m ++CONFIG_BRIDGE_EBT_PKTTYPE=m ++CONFIG_BRIDGE_EBT_STP=m ++CONFIG_BRIDGE_EBT_VLAN=m ++CONFIG_BRIDGE_EBT_ARPREPLY=m ++CONFIG_BRIDGE_EBT_DNAT=m ++CONFIG_BRIDGE_EBT_MARK_T=m ++CONFIG_BRIDGE_EBT_REDIRECT=m ++CONFIG_BRIDGE_EBT_SNAT=m ++CONFIG_BRIDGE_EBT_LOG=m ++CONFIG_BRIDGE_EBT_NFLOG=m ++CONFIG_SCTP_COOKIE_HMAC_SHA1=y ++CONFIG_ATM=m ++CONFIG_L2TP=m ++CONFIG_L2TP_V3=y ++CONFIG_L2TP_IP=m ++CONFIG_L2TP_ETH=m ++CONFIG_BRIDGE=m ++CONFIG_VLAN_8021Q=m ++CONFIG_VLAN_8021Q_GVRP=y ++CONFIG_ATALK=m ++CONFIG_6LOWPAN=m ++CONFIG_IEEE802154=m ++CONFIG_IEEE802154_6LOWPAN=m ++CONFIG_MAC802154=m ++CONFIG_NET_SCHED=y ++CONFIG_NET_SCH_CBQ=m ++CONFIG_NET_SCH_HTB=m ++CONFIG_NET_SCH_HFSC=m ++CONFIG_NET_SCH_PRIO=m ++CONFIG_NET_SCH_MULTIQ=m ++CONFIG_NET_SCH_RED=m ++CONFIG_NET_SCH_SFB=m ++CONFIG_NET_SCH_SFQ=m ++CONFIG_NET_SCH_TEQL=m ++CONFIG_NET_SCH_TBF=m ++CONFIG_NET_SCH_GRED=m ++CONFIG_NET_SCH_DSMARK=m ++CONFIG_NET_SCH_NETEM=m ++CONFIG_NET_SCH_DRR=m ++CONFIG_NET_SCH_MQPRIO=m ++CONFIG_NET_SCH_CHOKE=m ++CONFIG_NET_SCH_QFQ=m ++CONFIG_NET_SCH_CODEL=m ++CONFIG_NET_SCH_FQ_CODEL=m ++CONFIG_NET_SCH_INGRESS=m ++CONFIG_NET_SCH_PLUG=m ++CONFIG_NET_CLS_BASIC=m ++CONFIG_NET_CLS_TCINDEX=m ++CONFIG_NET_CLS_ROUTE4=m ++CONFIG_NET_CLS_FW=m ++CONFIG_NET_CLS_U32=m ++CONFIG_CLS_U32_MARK=y ++CONFIG_NET_CLS_RSVP=m ++CONFIG_NET_CLS_RSVP6=m ++CONFIG_NET_CLS_FLOW=m ++CONFIG_NET_CLS_CGROUP=m ++CONFIG_NET_EMATCH=y ++CONFIG_NET_EMATCH_CMP=m ++CONFIG_NET_EMATCH_NBYTE=m ++CONFIG_NET_EMATCH_U32=m ++CONFIG_NET_EMATCH_META=m ++CONFIG_NET_EMATCH_TEXT=m ++CONFIG_NET_EMATCH_IPSET=m ++CONFIG_NET_CLS_ACT=y ++CONFIG_NET_ACT_POLICE=m ++CONFIG_NET_ACT_GACT=m ++CONFIG_GACT_PROB=y ++CONFIG_NET_ACT_MIRRED=m ++CONFIG_NET_ACT_IPT=m ++CONFIG_NET_ACT_NAT=m ++CONFIG_NET_ACT_PEDIT=m ++CONFIG_NET_ACT_SIMP=m ++CONFIG_NET_ACT_SKBEDIT=m ++CONFIG_NET_ACT_CSUM=m ++CONFIG_BATMAN_ADV=m ++CONFIG_OPENVSWITCH=m ++CONFIG_NET_PKTGEN=m ++CONFIG_HAMRADIO=y ++CONFIG_AX25=m ++CONFIG_NETROM=m ++CONFIG_ROSE=m ++CONFIG_MKISS=m ++CONFIG_6PACK=m ++CONFIG_BPQETHER=m ++CONFIG_BAYCOM_SER_FDX=m ++CONFIG_BAYCOM_SER_HDX=m ++CONFIG_YAM=m ++CONFIG_CAN=m ++CONFIG_CAN_VCAN=m ++CONFIG_CAN_MCP251X=m ++CONFIG_IRDA=m ++CONFIG_IRLAN=m ++CONFIG_IRNET=m ++CONFIG_IRCOMM=m ++CONFIG_IRDA_ULTRA=y ++CONFIG_IRDA_CACHE_LAST_LSAP=y ++CONFIG_IRDA_FAST_RR=y ++CONFIG_IRTTY_SIR=m ++CONFIG_KINGSUN_DONGLE=m ++CONFIG_KSDAZZLE_DONGLE=m ++CONFIG_KS959_DONGLE=m ++CONFIG_USB_IRDA=m ++CONFIG_SIGMATEL_FIR=m ++CONFIG_MCS_FIR=m ++CONFIG_BT=m ++CONFIG_BT_RFCOMM=m ++CONFIG_BT_RFCOMM_TTY=y ++CONFIG_BT_BNEP=m ++CONFIG_BT_BNEP_MC_FILTER=y ++CONFIG_BT_BNEP_PROTO_FILTER=y ++CONFIG_BT_HIDP=m ++CONFIG_BT_6LOWPAN=m ++CONFIG_BT_HCIBTUSB=m ++CONFIG_BT_HCIUART=m ++CONFIG_BT_HCIUART_3WIRE=y ++CONFIG_BT_HCIUART_BCM=y ++CONFIG_BT_HCIBCM203X=m ++CONFIG_BT_HCIBPA10X=m ++CONFIG_BT_HCIBFUSB=m ++CONFIG_BT_HCIVHCI=m ++CONFIG_BT_MRVL=m ++CONFIG_BT_MRVL_SDIO=m ++CONFIG_BT_ATH3K=m ++CONFIG_BT_WILINK=m ++CONFIG_MAC80211=m ++CONFIG_MAC80211_MESH=y ++CONFIG_WIMAX=m ++CONFIG_RFKILL=m ++CONFIG_RFKILL_INPUT=y ++CONFIG_NET_9P=m ++CONFIG_NFC=m ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y ++CONFIG_DMA_CMA=y ++CONFIG_CMA_SIZE_MBYTES=5 ++CONFIG_MTD=m ++CONFIG_MTD_BLOCK=m ++CONFIG_MTD_NAND=m ++CONFIG_MTD_UBI=m ++CONFIG_OF_CONFIGFS=y ++CONFIG_ZRAM=m ++CONFIG_BLK_DEV_LOOP=y ++CONFIG_BLK_DEV_CRYPTOLOOP=m ++CONFIG_BLK_DEV_DRBD=m ++CONFIG_BLK_DEV_NBD=m ++CONFIG_BLK_DEV_RAM=y ++CONFIG_CDROM_PKTCDVD=m ++CONFIG_ATA_OVER_ETH=m ++CONFIG_EEPROM_AT24=m ++CONFIG_TI_ST=m ++CONFIG_SCSI=y ++# CONFIG_SCSI_PROC_FS is not set ++CONFIG_BLK_DEV_SD=y ++CONFIG_CHR_DEV_ST=m ++CONFIG_CHR_DEV_OSST=m ++CONFIG_BLK_DEV_SR=m ++CONFIG_CHR_DEV_SG=m ++CONFIG_SCSI_ISCSI_ATTRS=y ++CONFIG_ISCSI_TCP=m ++CONFIG_ISCSI_BOOT_SYSFS=m ++CONFIG_MD=y ++CONFIG_MD_LINEAR=m ++CONFIG_MD_RAID0=m ++CONFIG_BLK_DEV_DM=m ++CONFIG_DM_CRYPT=m ++CONFIG_DM_SNAPSHOT=m ++CONFIG_DM_THIN_PROVISIONING=m ++CONFIG_DM_MIRROR=m ++CONFIG_DM_LOG_USERSPACE=m ++CONFIG_DM_RAID=m ++CONFIG_DM_ZERO=m ++CONFIG_DM_DELAY=m ++CONFIG_NETDEVICES=y ++CONFIG_BONDING=m ++CONFIG_DUMMY=m ++CONFIG_IFB=m ++CONFIG_MACVLAN=m ++CONFIG_IPVLAN=m ++CONFIG_VXLAN=m ++CONFIG_NETCONSOLE=m ++CONFIG_TUN=m ++CONFIG_VETH=m ++CONFIG_ENC28J60=m ++CONFIG_QCA7000=m ++CONFIG_MDIO_BITBANG=m ++CONFIG_PPP=m ++CONFIG_PPP_BSDCOMP=m ++CONFIG_PPP_DEFLATE=m ++CONFIG_PPP_FILTER=y ++CONFIG_PPP_MPPE=m ++CONFIG_PPP_MULTILINK=y ++CONFIG_PPPOATM=m ++CONFIG_PPPOE=m ++CONFIG_PPPOL2TP=m ++CONFIG_PPP_ASYNC=m ++CONFIG_PPP_SYNC_TTY=m ++CONFIG_SLIP=m ++CONFIG_SLIP_COMPRESSED=y ++CONFIG_SLIP_SMART=y ++CONFIG_USB_CATC=m ++CONFIG_USB_KAWETH=m ++CONFIG_USB_PEGASUS=m ++CONFIG_USB_RTL8150=m ++CONFIG_USB_RTL8152=m ++CONFIG_USB_USBNET=y ++CONFIG_USB_NET_AX8817X=m ++CONFIG_USB_NET_AX88179_178A=m ++CONFIG_USB_NET_CDCETHER=m ++CONFIG_USB_NET_CDC_EEM=m ++CONFIG_USB_NET_CDC_NCM=m ++CONFIG_USB_NET_HUAWEI_CDC_NCM=m ++CONFIG_USB_NET_CDC_MBIM=m ++CONFIG_USB_NET_DM9601=m ++CONFIG_USB_NET_SR9700=m ++CONFIG_USB_NET_SR9800=m ++CONFIG_USB_NET_SMSC75XX=m ++CONFIG_USB_NET_SMSC95XX=y ++CONFIG_USB_NET_GL620A=m ++CONFIG_USB_NET_NET1080=m ++CONFIG_USB_NET_PLUSB=m ++CONFIG_USB_NET_MCS7830=m ++CONFIG_USB_NET_CDC_SUBSET=m ++CONFIG_USB_ALI_M5632=y ++CONFIG_USB_AN2720=y ++CONFIG_USB_EPSON2888=y ++CONFIG_USB_KC2190=y ++CONFIG_USB_NET_ZAURUS=m ++CONFIG_USB_NET_CX82310_ETH=m ++CONFIG_USB_NET_KALMIA=m ++CONFIG_USB_NET_QMI_WWAN=m ++CONFIG_USB_HSO=m ++CONFIG_USB_NET_INT51X1=m ++CONFIG_USB_IPHETH=m ++CONFIG_USB_SIERRA_NET=m ++CONFIG_USB_VL600=m ++CONFIG_ATH9K=m ++CONFIG_ATH9K_HTC=m ++CONFIG_CARL9170=m ++CONFIG_ATH6KL=m ++CONFIG_ATH6KL_USB=m ++CONFIG_AR5523=m ++CONFIG_AT76C50X_USB=m ++CONFIG_B43=m ++# CONFIG_B43_PHY_N is not set ++CONFIG_B43LEGACY=m ++CONFIG_BRCMFMAC=m ++CONFIG_BRCMFMAC_USB=y ++CONFIG_HOSTAP=m ++CONFIG_P54_COMMON=m ++CONFIG_P54_USB=m ++CONFIG_LIBERTAS=m ++CONFIG_LIBERTAS_USB=m ++CONFIG_LIBERTAS_SDIO=m ++CONFIG_LIBERTAS_THINFIRM=m ++CONFIG_LIBERTAS_THINFIRM_USB=m ++CONFIG_MWIFIEX=m ++CONFIG_MWIFIEX_SDIO=m ++CONFIG_MT7601U=m ++CONFIG_RT2X00=m ++CONFIG_RT2500USB=m ++CONFIG_RT73USB=m ++CONFIG_RT2800USB=m ++CONFIG_RT2800USB_RT3573=y ++CONFIG_RT2800USB_RT53XX=y ++CONFIG_RT2800USB_RT55XX=y ++CONFIG_RT2800USB_UNKNOWN=y ++CONFIG_RTL8187=m ++CONFIG_RTL8192CU=m ++CONFIG_USB_ZD1201=m ++CONFIG_ZD1211RW=m ++CONFIG_MAC80211_HWSIM=m ++CONFIG_USB_NET_RNDIS_WLAN=m ++CONFIG_WIMAX_I2400M_USB=m ++CONFIG_IEEE802154_AT86RF230=m ++CONFIG_IEEE802154_MRF24J40=m ++CONFIG_IEEE802154_CC2520=m ++CONFIG_INPUT_POLLDEV=m ++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set ++CONFIG_INPUT_JOYDEV=m ++CONFIG_INPUT_EVDEV=m ++# CONFIG_KEYBOARD_ATKBD is not set ++CONFIG_KEYBOARD_GPIO=m ++# CONFIG_INPUT_MOUSE is not set ++CONFIG_INPUT_JOYSTICK=y ++CONFIG_JOYSTICK_IFORCE=m ++CONFIG_JOYSTICK_IFORCE_USB=y ++CONFIG_JOYSTICK_XPAD=m ++CONFIG_JOYSTICK_XPAD_FF=y ++CONFIG_JOYSTICK_XPAD_LEDS=y ++CONFIG_JOYSTICK_RPISENSE=m ++CONFIG_INPUT_TOUCHSCREEN=y ++CONFIG_TOUCHSCREEN_ADS7846=m ++CONFIG_TOUCHSCREEN_EGALAX=m ++CONFIG_TOUCHSCREEN_FT6236=m ++CONFIG_TOUCHSCREEN_RPI_FT5406=m ++CONFIG_TOUCHSCREEN_USB_COMPOSITE=m ++CONFIG_TOUCHSCREEN_STMPE=m ++CONFIG_INPUT_MISC=y ++CONFIG_INPUT_AD714X=m ++CONFIG_INPUT_ATI_REMOTE2=m ++CONFIG_INPUT_KEYSPAN_REMOTE=m ++CONFIG_INPUT_POWERMATE=m ++CONFIG_INPUT_YEALINK=m ++CONFIG_INPUT_CM109=m ++CONFIG_INPUT_UINPUT=m ++CONFIG_INPUT_GPIO_ROTARY_ENCODER=m ++CONFIG_INPUT_ADXL34X=m ++CONFIG_INPUT_CMA3000=m ++CONFIG_SERIO=m ++CONFIG_SERIO_RAW=m ++CONFIG_GAMEPORT=m ++CONFIG_GAMEPORT_NS558=m ++CONFIG_GAMEPORT_L4=m ++CONFIG_BRCM_CHAR_DRIVERS=y ++CONFIG_BCM_VC_CMA=y ++CONFIG_BCM_VCIO=y ++CONFIG_BCM_VC_SM=y ++# CONFIG_LEGACY_PTYS is not set ++# CONFIG_DEVKMEM is not set ++CONFIG_SERIAL_8250=y ++# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set ++CONFIG_SERIAL_8250_CONSOLE=y ++# CONFIG_SERIAL_8250_DMA is not set ++CONFIG_SERIAL_8250_NR_UARTS=1 ++CONFIG_SERIAL_8250_RUNTIME_UARTS=0 ++CONFIG_SERIAL_8250_EXTENDED=y ++CONFIG_SERIAL_8250_SHARE_IRQ=y ++CONFIG_SERIAL_8250_BCM2835AUX=y ++CONFIG_SERIAL_OF_PLATFORM=y ++CONFIG_SERIAL_AMBA_PL011=y ++CONFIG_SERIAL_AMBA_PL011_CONSOLE=y ++CONFIG_SERIAL_SC16IS7XX=m ++CONFIG_SERIAL_SC16IS7XX_SPI=y ++CONFIG_TTY_PRINTK=y ++CONFIG_HW_RANDOM=y ++CONFIG_RAW_DRIVER=y ++CONFIG_I2C=y ++CONFIG_I2C_CHARDEV=m ++CONFIG_I2C_MUX_PCA954x=m ++CONFIG_I2C_BCM2708=m ++CONFIG_I2C_GPIO=m ++CONFIG_SPI=y ++CONFIG_SPI_BCM2835=m ++CONFIG_SPI_BCM2835AUX=m ++CONFIG_SPI_SPIDEV=y ++CONFIG_PPS=m ++CONFIG_PPS_CLIENT_LDISC=m ++CONFIG_PPS_CLIENT_GPIO=m ++CONFIG_GPIO_SYSFS=y ++CONFIG_GPIO_ARIZONA=m ++CONFIG_GPIO_STMPE=y ++CONFIG_GPIO_MCP23S08=m ++CONFIG_W1=m ++CONFIG_W1_MASTER_DS2490=m ++CONFIG_W1_MASTER_DS2482=m ++CONFIG_W1_MASTER_DS1WM=m ++CONFIG_W1_MASTER_GPIO=m ++CONFIG_W1_SLAVE_THERM=m ++CONFIG_W1_SLAVE_SMEM=m ++CONFIG_W1_SLAVE_DS2408=m ++CONFIG_W1_SLAVE_DS2413=m ++CONFIG_W1_SLAVE_DS2406=m ++CONFIG_W1_SLAVE_DS2423=m ++CONFIG_W1_SLAVE_DS2431=m ++CONFIG_W1_SLAVE_DS2433=m ++CONFIG_W1_SLAVE_DS2760=m ++CONFIG_W1_SLAVE_DS2780=m ++CONFIG_W1_SLAVE_DS2781=m ++CONFIG_W1_SLAVE_DS28E04=m ++CONFIG_W1_SLAVE_BQ27000=m ++CONFIG_BATTERY_DS2760=m ++CONFIG_POWER_RESET=y ++CONFIG_POWER_RESET_GPIO=y ++CONFIG_HWMON=m ++CONFIG_SENSORS_LM75=m ++CONFIG_SENSORS_SHT21=m ++CONFIG_SENSORS_SHTC1=m ++CONFIG_SENSORS_INA2XX=m ++CONFIG_THERMAL=y ++CONFIG_THERMAL_BCM2835=y ++CONFIG_WATCHDOG=y ++CONFIG_BCM2835_WDT=m ++CONFIG_UCB1400_CORE=m ++CONFIG_MFD_STMPE=y ++CONFIG_STMPE_SPI=y ++CONFIG_MFD_ARIZONA_I2C=m ++CONFIG_MFD_ARIZONA_SPI=m ++CONFIG_MFD_WM5102=y ++CONFIG_MEDIA_SUPPORT=m ++CONFIG_MEDIA_CAMERA_SUPPORT=y ++CONFIG_MEDIA_ANALOG_TV_SUPPORT=y ++CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y ++CONFIG_MEDIA_RADIO_SUPPORT=y ++CONFIG_MEDIA_RC_SUPPORT=y ++CONFIG_MEDIA_CONTROLLER=y ++CONFIG_LIRC=m ++CONFIG_RC_DEVICES=y ++CONFIG_RC_ATI_REMOTE=m ++CONFIG_IR_IMON=m ++CONFIG_IR_MCEUSB=m ++CONFIG_IR_REDRAT3=m ++CONFIG_IR_STREAMZAP=m ++CONFIG_IR_IGUANA=m ++CONFIG_IR_TTUSBIR=m ++CONFIG_RC_LOOPBACK=m ++CONFIG_IR_GPIO_CIR=m ++CONFIG_MEDIA_USB_SUPPORT=y ++CONFIG_USB_VIDEO_CLASS=m ++CONFIG_USB_M5602=m ++CONFIG_USB_STV06XX=m ++CONFIG_USB_GL860=m ++CONFIG_USB_GSPCA_BENQ=m ++CONFIG_USB_GSPCA_CONEX=m ++CONFIG_USB_GSPCA_CPIA1=m ++CONFIG_USB_GSPCA_DTCS033=m ++CONFIG_USB_GSPCA_ETOMS=m ++CONFIG_USB_GSPCA_FINEPIX=m ++CONFIG_USB_GSPCA_JEILINJ=m ++CONFIG_USB_GSPCA_JL2005BCD=m ++CONFIG_USB_GSPCA_KINECT=m ++CONFIG_USB_GSPCA_KONICA=m ++CONFIG_USB_GSPCA_MARS=m ++CONFIG_USB_GSPCA_MR97310A=m ++CONFIG_USB_GSPCA_NW80X=m ++CONFIG_USB_GSPCA_OV519=m ++CONFIG_USB_GSPCA_OV534=m ++CONFIG_USB_GSPCA_OV534_9=m ++CONFIG_USB_GSPCA_PAC207=m ++CONFIG_USB_GSPCA_PAC7302=m ++CONFIG_USB_GSPCA_PAC7311=m ++CONFIG_USB_GSPCA_SE401=m ++CONFIG_USB_GSPCA_SN9C2028=m ++CONFIG_USB_GSPCA_SN9C20X=m ++CONFIG_USB_GSPCA_SONIXB=m ++CONFIG_USB_GSPCA_SONIXJ=m ++CONFIG_USB_GSPCA_SPCA500=m ++CONFIG_USB_GSPCA_SPCA501=m ++CONFIG_USB_GSPCA_SPCA505=m ++CONFIG_USB_GSPCA_SPCA506=m ++CONFIG_USB_GSPCA_SPCA508=m ++CONFIG_USB_GSPCA_SPCA561=m ++CONFIG_USB_GSPCA_SPCA1528=m ++CONFIG_USB_GSPCA_SQ905=m ++CONFIG_USB_GSPCA_SQ905C=m ++CONFIG_USB_GSPCA_SQ930X=m ++CONFIG_USB_GSPCA_STK014=m ++CONFIG_USB_GSPCA_STK1135=m ++CONFIG_USB_GSPCA_STV0680=m ++CONFIG_USB_GSPCA_SUNPLUS=m ++CONFIG_USB_GSPCA_T613=m ++CONFIG_USB_GSPCA_TOPRO=m ++CONFIG_USB_GSPCA_TV8532=m ++CONFIG_USB_GSPCA_VC032X=m ++CONFIG_USB_GSPCA_VICAM=m ++CONFIG_USB_GSPCA_XIRLINK_CIT=m ++CONFIG_USB_GSPCA_ZC3XX=m ++CONFIG_USB_PWC=m ++CONFIG_VIDEO_CPIA2=m ++CONFIG_USB_ZR364XX=m ++CONFIG_USB_STKWEBCAM=m ++CONFIG_USB_S2255=m ++CONFIG_VIDEO_USBTV=m ++CONFIG_VIDEO_PVRUSB2=m ++CONFIG_VIDEO_HDPVR=m ++CONFIG_VIDEO_USBVISION=m ++CONFIG_VIDEO_STK1160_COMMON=m ++CONFIG_VIDEO_STK1160_AC97=y ++CONFIG_VIDEO_GO7007=m ++CONFIG_VIDEO_GO7007_USB=m ++CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m ++CONFIG_VIDEO_AU0828=m ++CONFIG_VIDEO_AU0828_RC=y ++CONFIG_VIDEO_CX231XX=m ++CONFIG_VIDEO_CX231XX_ALSA=m ++CONFIG_VIDEO_CX231XX_DVB=m ++CONFIG_VIDEO_TM6000=m ++CONFIG_VIDEO_TM6000_ALSA=m ++CONFIG_VIDEO_TM6000_DVB=m ++CONFIG_DVB_USB=m ++CONFIG_DVB_USB_A800=m ++CONFIG_DVB_USB_DIBUSB_MB=m ++CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y ++CONFIG_DVB_USB_DIBUSB_MC=m ++CONFIG_DVB_USB_DIB0700=m ++CONFIG_DVB_USB_UMT_010=m ++CONFIG_DVB_USB_CXUSB=m ++CONFIG_DVB_USB_M920X=m ++CONFIG_DVB_USB_DIGITV=m ++CONFIG_DVB_USB_VP7045=m ++CONFIG_DVB_USB_VP702X=m ++CONFIG_DVB_USB_GP8PSK=m ++CONFIG_DVB_USB_NOVA_T_USB2=m ++CONFIG_DVB_USB_TTUSB2=m ++CONFIG_DVB_USB_DTT200U=m ++CONFIG_DVB_USB_OPERA1=m ++CONFIG_DVB_USB_AF9005=m ++CONFIG_DVB_USB_AF9005_REMOTE=m ++CONFIG_DVB_USB_PCTV452E=m ++CONFIG_DVB_USB_DW2102=m ++CONFIG_DVB_USB_CINERGY_T2=m ++CONFIG_DVB_USB_DTV5100=m ++CONFIG_DVB_USB_FRIIO=m ++CONFIG_DVB_USB_AZ6027=m ++CONFIG_DVB_USB_TECHNISAT_USB2=m ++CONFIG_DVB_USB_V2=m ++CONFIG_DVB_USB_AF9015=m ++CONFIG_DVB_USB_AF9035=m ++CONFIG_DVB_USB_ANYSEE=m ++CONFIG_DVB_USB_AU6610=m ++CONFIG_DVB_USB_AZ6007=m ++CONFIG_DVB_USB_CE6230=m ++CONFIG_DVB_USB_EC168=m ++CONFIG_DVB_USB_GL861=m ++CONFIG_DVB_USB_LME2510=m ++CONFIG_DVB_USB_MXL111SF=m ++CONFIG_DVB_USB_RTL28XXU=m ++CONFIG_DVB_USB_DVBSKY=m ++CONFIG_SMS_USB_DRV=m ++CONFIG_DVB_B2C2_FLEXCOP_USB=m ++CONFIG_DVB_AS102=m ++CONFIG_VIDEO_EM28XX=m ++CONFIG_VIDEO_EM28XX_V4L2=m ++CONFIG_VIDEO_EM28XX_ALSA=m ++CONFIG_VIDEO_EM28XX_DVB=m ++CONFIG_V4L_PLATFORM_DRIVERS=y ++CONFIG_VIDEO_BCM2835=y ++CONFIG_VIDEO_BCM2835_MMAL=m ++CONFIG_RADIO_SI470X=y ++CONFIG_USB_SI470X=m ++CONFIG_I2C_SI470X=m ++CONFIG_RADIO_SI4713=m ++CONFIG_I2C_SI4713=m ++CONFIG_USB_MR800=m ++CONFIG_USB_DSBR=m ++CONFIG_RADIO_SHARK=m ++CONFIG_RADIO_SHARK2=m ++CONFIG_USB_KEENE=m ++CONFIG_USB_MA901=m ++CONFIG_RADIO_TEA5764=m ++CONFIG_RADIO_SAA7706H=m ++CONFIG_RADIO_TEF6862=m ++CONFIG_RADIO_WL1273=m ++CONFIG_RADIO_WL128X=m ++# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set ++CONFIG_VIDEO_UDA1342=m ++CONFIG_VIDEO_SONY_BTF_MPX=m ++CONFIG_VIDEO_TVP5150=m ++CONFIG_VIDEO_TW2804=m ++CONFIG_VIDEO_TW9903=m ++CONFIG_VIDEO_TW9906=m ++CONFIG_VIDEO_OV7640=m ++CONFIG_VIDEO_MT9V011=m ++CONFIG_DRM=m ++CONFIG_DRM_LOAD_EDID_FIRMWARE=y ++CONFIG_DRM_UDL=m ++CONFIG_DRM_VC4=m ++CONFIG_FB=y ++CONFIG_FB_BCM2708=y ++CONFIG_FB_UDL=m ++CONFIG_FB_SSD1307=m ++CONFIG_FB_RPISENSE=m ++# CONFIG_BACKLIGHT_GENERIC is not set ++CONFIG_BACKLIGHT_RPI=m ++CONFIG_BACKLIGHT_GPIO=m ++CONFIG_FRAMEBUFFER_CONSOLE=y ++CONFIG_LOGO=y ++# CONFIG_LOGO_LINUX_MONO is not set ++# CONFIG_LOGO_LINUX_VGA16 is not set ++CONFIG_SOUND=y ++CONFIG_SND=m ++CONFIG_SND_SEQUENCER=m ++CONFIG_SND_SEQ_DUMMY=m ++CONFIG_SND_MIXER_OSS=m ++CONFIG_SND_PCM_OSS=m ++CONFIG_SND_SEQUENCER_OSS=y ++CONFIG_SND_HRTIMER=m ++CONFIG_SND_DUMMY=m ++CONFIG_SND_ALOOP=m ++CONFIG_SND_VIRMIDI=m ++CONFIG_SND_MTPAV=m ++CONFIG_SND_SERIAL_U16550=m ++CONFIG_SND_MPU401=m ++CONFIG_SND_BCM2835=m ++CONFIG_SND_USB_AUDIO=m ++CONFIG_SND_USB_UA101=m ++CONFIG_SND_USB_CAIAQ=m ++CONFIG_SND_USB_CAIAQ_INPUT=y ++CONFIG_SND_USB_6FIRE=m ++CONFIG_SND_SOC=m ++CONFIG_SND_BCM2835_SOC_I2S=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m ++CONFIG_SND_BCM2708_SOC_RPI_DAC=m ++CONFIG_SND_BCM2708_SOC_RPI_PROTO=m ++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m ++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m ++CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m ++CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m ++CONFIG_SND_BCM2708_SOC_RASPIDAC3=m ++CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m ++CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m ++CONFIG_SND_DIGIDAC1_SOUNDCARD=m ++CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m ++CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC=m ++CONFIG_SND_SOC_ADAU1701=m ++CONFIG_SND_SOC_WM8804_I2C=m ++CONFIG_SND_SIMPLE_CARD=m ++CONFIG_SOUND_PRIME=m ++CONFIG_HIDRAW=y ++CONFIG_UHID=m ++CONFIG_HID_A4TECH=m ++CONFIG_HID_ACRUX=m ++CONFIG_HID_APPLE=m ++CONFIG_HID_BELKIN=m ++CONFIG_HID_BETOP_FF=m ++CONFIG_HID_CHERRY=m ++CONFIG_HID_CHICONY=m ++CONFIG_HID_CYPRESS=m ++CONFIG_HID_DRAGONRISE=m ++CONFIG_HID_EMS_FF=m ++CONFIG_HID_ELECOM=m ++CONFIG_HID_ELO=m ++CONFIG_HID_EZKEY=m ++CONFIG_HID_GEMBIRD=m ++CONFIG_HID_HOLTEK=m ++CONFIG_HID_KEYTOUCH=m ++CONFIG_HID_KYE=m ++CONFIG_HID_UCLOGIC=m ++CONFIG_HID_WALTOP=m ++CONFIG_HID_GYRATION=m ++CONFIG_HID_TWINHAN=m ++CONFIG_HID_KENSINGTON=m ++CONFIG_HID_LCPOWER=m ++CONFIG_HID_LOGITECH=m ++CONFIG_HID_LOGITECH_DJ=m ++CONFIG_LOGITECH_FF=y ++CONFIG_LOGIRUMBLEPAD2_FF=y ++CONFIG_LOGIG940_FF=y ++CONFIG_HID_MAGICMOUSE=m ++CONFIG_HID_MICROSOFT=m ++CONFIG_HID_MONTEREY=m ++CONFIG_HID_MULTITOUCH=m ++CONFIG_HID_NTRIG=m ++CONFIG_HID_ORTEK=m ++CONFIG_HID_PANTHERLORD=m ++CONFIG_HID_PETALYNX=m ++CONFIG_HID_PICOLCD=m ++CONFIG_HID_ROCCAT=m ++CONFIG_HID_SAMSUNG=m ++CONFIG_HID_SONY=m ++CONFIG_HID_SPEEDLINK=m ++CONFIG_HID_SUNPLUS=m ++CONFIG_HID_GREENASIA=m ++CONFIG_HID_SMARTJOYPLUS=m ++CONFIG_HID_TOPSEED=m ++CONFIG_HID_THINGM=m ++CONFIG_HID_THRUSTMASTER=m ++CONFIG_HID_WACOM=m ++CONFIG_HID_WIIMOTE=m ++CONFIG_HID_XINMO=m ++CONFIG_HID_ZEROPLUS=m ++CONFIG_HID_ZYDACRON=m ++CONFIG_HID_PID=y ++CONFIG_USB_HIDDEV=y ++CONFIG_USB=y ++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y ++CONFIG_USB_MON=m ++CONFIG_USB_DWCOTG=y ++CONFIG_USB_PRINTER=m ++CONFIG_USB_STORAGE=y ++CONFIG_USB_STORAGE_REALTEK=m ++CONFIG_USB_STORAGE_DATAFAB=m ++CONFIG_USB_STORAGE_FREECOM=m ++CONFIG_USB_STORAGE_ISD200=m ++CONFIG_USB_STORAGE_USBAT=m ++CONFIG_USB_STORAGE_SDDR09=m ++CONFIG_USB_STORAGE_SDDR55=m ++CONFIG_USB_STORAGE_JUMPSHOT=m ++CONFIG_USB_STORAGE_ALAUDA=m ++CONFIG_USB_STORAGE_ONETOUCH=m ++CONFIG_USB_STORAGE_KARMA=m ++CONFIG_USB_STORAGE_CYPRESS_ATACB=m ++CONFIG_USB_STORAGE_ENE_UB6250=m ++CONFIG_USB_MDC800=m ++CONFIG_USB_MICROTEK=m ++CONFIG_USBIP_CORE=m ++CONFIG_USBIP_VHCI_HCD=m ++CONFIG_USBIP_HOST=m ++CONFIG_USB_DWC2=m ++CONFIG_USB_SERIAL=m ++CONFIG_USB_SERIAL_GENERIC=y ++CONFIG_USB_SERIAL_AIRCABLE=m ++CONFIG_USB_SERIAL_ARK3116=m ++CONFIG_USB_SERIAL_BELKIN=m ++CONFIG_USB_SERIAL_CH341=m ++CONFIG_USB_SERIAL_WHITEHEAT=m ++CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m ++CONFIG_USB_SERIAL_CP210X=m ++CONFIG_USB_SERIAL_CYPRESS_M8=m ++CONFIG_USB_SERIAL_EMPEG=m ++CONFIG_USB_SERIAL_FTDI_SIO=m ++CONFIG_USB_SERIAL_VISOR=m ++CONFIG_USB_SERIAL_IPAQ=m ++CONFIG_USB_SERIAL_IR=m ++CONFIG_USB_SERIAL_EDGEPORT=m ++CONFIG_USB_SERIAL_EDGEPORT_TI=m ++CONFIG_USB_SERIAL_F81232=m ++CONFIG_USB_SERIAL_GARMIN=m ++CONFIG_USB_SERIAL_IPW=m ++CONFIG_USB_SERIAL_IUU=m ++CONFIG_USB_SERIAL_KEYSPAN_PDA=m ++CONFIG_USB_SERIAL_KEYSPAN=m ++CONFIG_USB_SERIAL_KLSI=m ++CONFIG_USB_SERIAL_KOBIL_SCT=m ++CONFIG_USB_SERIAL_MCT_U232=m ++CONFIG_USB_SERIAL_METRO=m ++CONFIG_USB_SERIAL_MOS7720=m ++CONFIG_USB_SERIAL_MOS7840=m ++CONFIG_USB_SERIAL_NAVMAN=m ++CONFIG_USB_SERIAL_PL2303=m ++CONFIG_USB_SERIAL_OTI6858=m ++CONFIG_USB_SERIAL_QCAUX=m ++CONFIG_USB_SERIAL_QUALCOMM=m ++CONFIG_USB_SERIAL_SPCP8X5=m ++CONFIG_USB_SERIAL_SAFE=m ++CONFIG_USB_SERIAL_SIERRAWIRELESS=m ++CONFIG_USB_SERIAL_SYMBOL=m ++CONFIG_USB_SERIAL_TI=m ++CONFIG_USB_SERIAL_CYBERJACK=m ++CONFIG_USB_SERIAL_XIRCOM=m ++CONFIG_USB_SERIAL_OPTION=m ++CONFIG_USB_SERIAL_OMNINET=m ++CONFIG_USB_SERIAL_OPTICON=m ++CONFIG_USB_SERIAL_XSENS_MT=m ++CONFIG_USB_SERIAL_WISHBONE=m ++CONFIG_USB_SERIAL_SSU100=m ++CONFIG_USB_SERIAL_QT2=m ++CONFIG_USB_SERIAL_DEBUG=m ++CONFIG_USB_EMI62=m ++CONFIG_USB_EMI26=m ++CONFIG_USB_ADUTUX=m ++CONFIG_USB_SEVSEG=m ++CONFIG_USB_RIO500=m ++CONFIG_USB_LEGOTOWER=m ++CONFIG_USB_LCD=m ++CONFIG_USB_CYPRESS_CY7C63=m ++CONFIG_USB_CYTHERM=m ++CONFIG_USB_IDMOUSE=m ++CONFIG_USB_FTDI_ELAN=m ++CONFIG_USB_APPLEDISPLAY=m ++CONFIG_USB_LD=m ++CONFIG_USB_TRANCEVIBRATOR=m ++CONFIG_USB_IOWARRIOR=m ++CONFIG_USB_TEST=m ++CONFIG_USB_ISIGHTFW=m ++CONFIG_USB_YUREX=m ++CONFIG_USB_ATM=m ++CONFIG_USB_SPEEDTOUCH=m ++CONFIG_USB_CXACRU=m ++CONFIG_USB_UEAGLEATM=m ++CONFIG_USB_XUSBATM=m ++CONFIG_USB_GADGET=m ++CONFIG_USB_ZERO=m ++CONFIG_USB_AUDIO=m ++CONFIG_USB_ETH=m ++CONFIG_USB_GADGETFS=m ++CONFIG_USB_MASS_STORAGE=m ++CONFIG_USB_G_SERIAL=m ++CONFIG_USB_MIDI_GADGET=m ++CONFIG_USB_G_PRINTER=m ++CONFIG_USB_CDC_COMPOSITE=m ++CONFIG_USB_G_ACM_MS=m ++CONFIG_USB_G_MULTI=m ++CONFIG_USB_G_HID=m ++CONFIG_USB_G_WEBCAM=m ++CONFIG_MMC=y ++CONFIG_MMC_BLOCK_MINORS=32 ++CONFIG_MMC_BCM2835=y ++CONFIG_MMC_BCM2835_DMA=y ++CONFIG_MMC_BCM2835_SDHOST=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_PLTFM=y ++CONFIG_MMC_SPI=m ++CONFIG_LEDS_CLASS=y ++CONFIG_LEDS_GPIO=y ++CONFIG_LEDS_TRIGGER_TIMER=y ++CONFIG_LEDS_TRIGGER_ONESHOT=y ++CONFIG_LEDS_TRIGGER_HEARTBEAT=y ++CONFIG_LEDS_TRIGGER_BACKLIGHT=y ++CONFIG_LEDS_TRIGGER_CPU=y ++CONFIG_LEDS_TRIGGER_GPIO=y ++CONFIG_LEDS_TRIGGER_DEFAULT_ON=y ++CONFIG_LEDS_TRIGGER_TRANSIENT=m ++CONFIG_LEDS_TRIGGER_CAMERA=m ++CONFIG_LEDS_TRIGGER_INPUT=y ++CONFIG_LEDS_TRIGGER_PANIC=y ++CONFIG_RTC_CLASS=y ++# CONFIG_RTC_HCTOSYS is not set ++CONFIG_RTC_DRV_DS1307=m ++CONFIG_RTC_DRV_DS1374=m ++CONFIG_RTC_DRV_DS1672=m ++CONFIG_RTC_DRV_MAX6900=m ++CONFIG_RTC_DRV_RS5C372=m ++CONFIG_RTC_DRV_ISL1208=m ++CONFIG_RTC_DRV_ISL12022=m ++CONFIG_RTC_DRV_ISL12057=m ++CONFIG_RTC_DRV_X1205=m ++CONFIG_RTC_DRV_PCF8523=m ++CONFIG_RTC_DRV_PCF8563=m ++CONFIG_RTC_DRV_PCF8583=m ++CONFIG_RTC_DRV_M41T80=m ++CONFIG_RTC_DRV_BQ32K=m ++CONFIG_RTC_DRV_S35390A=m ++CONFIG_RTC_DRV_FM3130=m ++CONFIG_RTC_DRV_RX8581=m ++CONFIG_RTC_DRV_RX8025=m ++CONFIG_RTC_DRV_EM3027=m ++CONFIG_RTC_DRV_M41T93=m ++CONFIG_RTC_DRV_M41T94=m ++CONFIG_RTC_DRV_DS1302=m ++CONFIG_RTC_DRV_DS1305=m ++CONFIG_RTC_DRV_DS1390=m ++CONFIG_RTC_DRV_R9701=m ++CONFIG_RTC_DRV_RX4581=m ++CONFIG_RTC_DRV_RS5C348=m ++CONFIG_RTC_DRV_MAX6902=m ++CONFIG_RTC_DRV_PCF2123=m ++CONFIG_RTC_DRV_DS3232=m ++CONFIG_RTC_DRV_PCF2127=m ++CONFIG_RTC_DRV_RV3029C2=m ++CONFIG_DMADEVICES=y ++CONFIG_DMA_BCM2835=y ++CONFIG_DMA_BCM2708=y ++CONFIG_UIO=m ++CONFIG_UIO_PDRV_GENIRQ=m ++CONFIG_STAGING=y ++CONFIG_PRISM2_USB=m ++CONFIG_R8712U=m ++CONFIG_R8188EU=m ++CONFIG_R8723AU=m ++CONFIG_VT6656=m ++CONFIG_SPEAKUP=m ++CONFIG_SPEAKUP_SYNTH_SOFT=m ++CONFIG_STAGING_MEDIA=y ++CONFIG_LIRC_STAGING=y ++CONFIG_LIRC_IMON=m ++CONFIG_LIRC_RPI=m ++CONFIG_LIRC_SASEM=m ++CONFIG_LIRC_SERIAL=m ++CONFIG_FB_TFT=m ++CONFIG_FB_TFT_AGM1264K_FL=m ++CONFIG_FB_TFT_BD663474=m ++CONFIG_FB_TFT_HX8340BN=m ++CONFIG_FB_TFT_HX8347D=m ++CONFIG_FB_TFT_HX8353D=m ++CONFIG_FB_TFT_ILI9163=m ++CONFIG_FB_TFT_ILI9320=m ++CONFIG_FB_TFT_ILI9325=m ++CONFIG_FB_TFT_ILI9340=m ++CONFIG_FB_TFT_ILI9341=m ++CONFIG_FB_TFT_ILI9481=m ++CONFIG_FB_TFT_ILI9486=m ++CONFIG_FB_TFT_PCD8544=m ++CONFIG_FB_TFT_RA8875=m ++CONFIG_FB_TFT_S6D02A1=m ++CONFIG_FB_TFT_S6D1121=m ++CONFIG_FB_TFT_SSD1289=m ++CONFIG_FB_TFT_SSD1306=m ++CONFIG_FB_TFT_SSD1331=m ++CONFIG_FB_TFT_SSD1351=m ++CONFIG_FB_TFT_ST7735R=m ++CONFIG_FB_TFT_TINYLCD=m ++CONFIG_FB_TFT_TLS8204=m ++CONFIG_FB_TFT_UC1701=m ++CONFIG_FB_TFT_UPD161704=m ++CONFIG_FB_TFT_WATTEROTT=m ++CONFIG_FB_FLEX=m ++CONFIG_FB_TFT_FBTFT_DEVICE=m ++CONFIG_MAILBOX=y ++CONFIG_BCM2835_MBOX=y ++# CONFIG_IOMMU_SUPPORT is not set ++CONFIG_RASPBERRYPI_POWER=y ++CONFIG_EXTCON=m ++CONFIG_EXTCON_ARIZONA=m ++CONFIG_IIO=m ++CONFIG_IIO_BUFFER=y ++CONFIG_IIO_BUFFER_CB=m ++CONFIG_IIO_KFIFO_BUF=m ++CONFIG_MCP320X=m ++CONFIG_MCP3422=m ++CONFIG_DHT11=m ++CONFIG_PWM_BCM2835=m ++CONFIG_PWM_PCA9685=m ++CONFIG_RASPBERRYPI_FIRMWARE=y ++CONFIG_EXT4_FS=y ++CONFIG_EXT4_FS_POSIX_ACL=y ++CONFIG_EXT4_FS_SECURITY=y ++CONFIG_REISERFS_FS=m ++CONFIG_REISERFS_FS_XATTR=y ++CONFIG_REISERFS_FS_POSIX_ACL=y ++CONFIG_REISERFS_FS_SECURITY=y ++CONFIG_JFS_FS=m ++CONFIG_JFS_POSIX_ACL=y ++CONFIG_JFS_SECURITY=y ++CONFIG_JFS_STATISTICS=y ++CONFIG_XFS_FS=m ++CONFIG_XFS_QUOTA=y ++CONFIG_XFS_POSIX_ACL=y ++CONFIG_XFS_RT=y ++CONFIG_GFS2_FS=m ++CONFIG_OCFS2_FS=m ++CONFIG_BTRFS_FS=m ++CONFIG_BTRFS_FS_POSIX_ACL=y ++CONFIG_NILFS2_FS=m ++CONFIG_F2FS_FS=y ++CONFIG_FANOTIFY=y ++CONFIG_QFMT_V1=m ++CONFIG_QFMT_V2=m ++CONFIG_AUTOFS4_FS=y ++CONFIG_FUSE_FS=m ++CONFIG_CUSE=m ++CONFIG_OVERLAY_FS=m ++CONFIG_FSCACHE=y ++CONFIG_FSCACHE_STATS=y ++CONFIG_FSCACHE_HISTOGRAM=y ++CONFIG_CACHEFILES=y ++CONFIG_ISO9660_FS=m ++CONFIG_JOLIET=y ++CONFIG_ZISOFS=y ++CONFIG_UDF_FS=m ++CONFIG_MSDOS_FS=y ++CONFIG_VFAT_FS=y ++CONFIG_FAT_DEFAULT_IOCHARSET="ascii" ++CONFIG_NTFS_FS=m ++CONFIG_NTFS_RW=y ++CONFIG_TMPFS=y ++CONFIG_TMPFS_POSIX_ACL=y ++CONFIG_ECRYPT_FS=m ++CONFIG_HFS_FS=m ++CONFIG_HFSPLUS_FS=m ++CONFIG_JFFS2_FS=m ++CONFIG_JFFS2_SUMMARY=y ++CONFIG_UBIFS_FS=m ++CONFIG_SQUASHFS=m ++CONFIG_SQUASHFS_XATTR=y ++CONFIG_SQUASHFS_LZO=y ++CONFIG_SQUASHFS_XZ=y ++CONFIG_NFS_FS=y ++CONFIG_NFS_V3_ACL=y ++CONFIG_NFS_V4=y ++CONFIG_NFS_SWAP=y ++CONFIG_ROOT_NFS=y ++CONFIG_NFS_FSCACHE=y ++CONFIG_NFSD=m ++CONFIG_NFSD_V3_ACL=y ++CONFIG_NFSD_V4=y ++CONFIG_CIFS=m ++CONFIG_CIFS_WEAK_PW_HASH=y ++CONFIG_CIFS_UPCALL=y ++CONFIG_CIFS_XATTR=y ++CONFIG_CIFS_POSIX=y ++CONFIG_CIFS_ACL=y ++CONFIG_CIFS_DFS_UPCALL=y ++CONFIG_CIFS_SMB2=y ++CONFIG_CIFS_FSCACHE=y ++CONFIG_9P_FS=m ++CONFIG_9P_FS_POSIX_ACL=y ++CONFIG_NLS_DEFAULT="utf8" ++CONFIG_NLS_CODEPAGE_437=y ++CONFIG_NLS_CODEPAGE_737=m ++CONFIG_NLS_CODEPAGE_775=m ++CONFIG_NLS_CODEPAGE_850=m ++CONFIG_NLS_CODEPAGE_852=m ++CONFIG_NLS_CODEPAGE_855=m ++CONFIG_NLS_CODEPAGE_857=m ++CONFIG_NLS_CODEPAGE_860=m ++CONFIG_NLS_CODEPAGE_861=m ++CONFIG_NLS_CODEPAGE_862=m ++CONFIG_NLS_CODEPAGE_863=m ++CONFIG_NLS_CODEPAGE_864=m ++CONFIG_NLS_CODEPAGE_865=m ++CONFIG_NLS_CODEPAGE_866=m ++CONFIG_NLS_CODEPAGE_869=m ++CONFIG_NLS_CODEPAGE_936=m ++CONFIG_NLS_CODEPAGE_950=m ++CONFIG_NLS_CODEPAGE_932=m ++CONFIG_NLS_CODEPAGE_949=m ++CONFIG_NLS_CODEPAGE_874=m ++CONFIG_NLS_ISO8859_8=m ++CONFIG_NLS_CODEPAGE_1250=m ++CONFIG_NLS_CODEPAGE_1251=m ++CONFIG_NLS_ASCII=y ++CONFIG_NLS_ISO8859_1=m ++CONFIG_NLS_ISO8859_2=m ++CONFIG_NLS_ISO8859_3=m ++CONFIG_NLS_ISO8859_4=m ++CONFIG_NLS_ISO8859_5=m ++CONFIG_NLS_ISO8859_6=m ++CONFIG_NLS_ISO8859_7=m ++CONFIG_NLS_ISO8859_9=m ++CONFIG_NLS_ISO8859_13=m ++CONFIG_NLS_ISO8859_14=m ++CONFIG_NLS_ISO8859_15=m ++CONFIG_NLS_KOI8_R=m ++CONFIG_NLS_KOI8_U=m ++CONFIG_DLM=m ++CONFIG_PRINTK_TIME=y ++CONFIG_BOOT_PRINTK_DELAY=y ++CONFIG_DEBUG_MEMORY_INIT=y ++CONFIG_DETECT_HUNG_TASK=y ++CONFIG_TIMER_STATS=y ++CONFIG_LATENCYTOP=y ++CONFIG_IRQSOFF_TRACER=y ++CONFIG_SCHED_TRACER=y ++CONFIG_STACK_TRACER=y ++CONFIG_BLK_DEV_IO_TRACE=y ++# CONFIG_KPROBE_EVENT is not set ++CONFIG_FUNCTION_PROFILER=y ++CONFIG_KGDB=y ++CONFIG_KGDB_KDB=y ++CONFIG_KDB_KEYBOARD=y ++CONFIG_CRYPTO_USER=m ++CONFIG_CRYPTO_CRYPTD=m ++CONFIG_CRYPTO_CBC=y ++CONFIG_CRYPTO_CTS=m ++CONFIG_CRYPTO_XTS=m ++CONFIG_CRYPTO_XCBC=m ++CONFIG_CRYPTO_SHA512=m ++CONFIG_CRYPTO_TGR192=m ++CONFIG_CRYPTO_WP512=m ++CONFIG_CRYPTO_CAST5=m ++CONFIG_CRYPTO_DES=y ++CONFIG_CRYPTO_USER_API_SKCIPHER=m ++# CONFIG_CRYPTO_HW is not set ++CONFIG_ARM_CRYPTO=y ++CONFIG_CRYPTO_SHA1_ARM=m ++CONFIG_CRYPTO_AES_ARM=m ++CONFIG_CRC_ITU_T=y ++CONFIG_LIBCRC32C=y -From b9ee98291bd307566f9a1519345d798882f77ed8 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Wed, 15 Jun 2016 16:48:41 +0100 -Subject: [PATCH 100/160] rtc: Add SPI alias for pcf2123 driver +From 764f71bad9c87bcef071c68e0712e288384ddc19 Mon Sep 17 00:00:00 2001 +From: Michael Zoran +Date: Wed, 24 Aug 2016 03:35:56 -0700 +Subject: [PATCH 111/132] Add arm64 configuration and device tree differences. + Disable MMC_BCM2835_SDHOST and MMC_BCM2835 since these drivers are crashing + at the moment. -Without this alias, Device Tree won't cause the driver -to be loaded. - -See: https://github.com/raspberrypi/linux/pull/1510 --- - drivers/rtc/rtc-pcf2123.c | 1 + - 1 file changed, 1 insertion(+) + arch/arm64/Kconfig.platforms | 22 + + arch/arm64/boot/dts/broadcom/Makefile | 1 + + arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts | 3 + + arch/arm64/configs/bcmrpi3_defconfig | 1330 ++++++++++++++++++++++ + 4 files changed, 1356 insertions(+) + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts + create mode 100644 arch/arm64/configs/bcmrpi3_defconfig -diff --git a/drivers/rtc/rtc-pcf2123.c b/drivers/rtc/rtc-pcf2123.c -index f22e060709e547528b29b747f796b45c445d23fa..76b7bd7d9d33a0dcefcdb5fe3e0df4ded087cb60 100644 ---- a/drivers/rtc/rtc-pcf2123.c -+++ b/drivers/rtc/rtc-pcf2123.c -@@ -471,3 +471,4 @@ module_spi_driver(pcf2123_driver); - MODULE_AUTHOR("Chris Verges "); - MODULE_DESCRIPTION("NXP PCF2123 RTC driver"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("spi:rtc-pcf2123"); +diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms +index be5d824ebdba2dab24840bb7808abcc40da2053e..fee7af52fe1a9f8d49447a93df0017832e06c5d3 100644 +--- a/arch/arm64/Kconfig.platforms ++++ b/arch/arm64/Kconfig.platforms +@@ -1,5 +1,27 @@ + menu "Platform selection" + ++config MACH_BCM2709 ++ bool ++ ++config ARCH_BCM2709 ++ bool "Broadcom BCM2709 family" ++ select MACH_BCM2709 ++ select HAVE_SMP ++ select ARM_AMBA ++ select COMMON_CLK ++ select ARCH_HAS_CPUFREQ ++ select GENERIC_CLOCKEVENTS ++ select MULTI_IRQ_HANDLER ++ select SPARSE_IRQ ++ select MFD_SYSCON ++ select VC4 ++ select USE_OF ++ select ARCH_REQUIRE_GPIOLIB ++ select PINCTRL ++ select PINCTRL_BCM2835 ++ help ++ This enables support for Broadcom BCM2709 boards. ++ + config ARCH_SUNXI + bool "Allwinner sunxi 64-bit SoC Family" + select GENERIC_IRQ_CHIP +diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile +index 05faf2a8a35ca5ba9049b9038dedb9be88eeb7c5..2152448c8cf5b22c573642d7ce45e85793f5fc9a 100644 +--- a/arch/arm64/boot/dts/broadcom/Makefile ++++ b/arch/arm64/boot/dts/broadcom/Makefile +@@ -1,6 +1,7 @@ + dtb-$(CONFIG_ARCH_BCM2835) += bcm2837-rpi-3-b.dtb + dtb-$(CONFIG_ARCH_BCM_IPROC) += ns2-svk.dtb + dtb-$(CONFIG_ARCH_VULCAN) += vulcan-eval.dtb ++dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-3-b.dtb + + always := $(dtb-y) + subdir-y := $(dts-dirs) +diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..deb33441da95220db0ed672e41639626fba682a5 +--- /dev/null ++++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts +@@ -0,0 +1,3 @@ ++#define RPI364 ++ ++#include "../../../../arm/boot/dts/bcm2710-rpi-3-b.dts" +diff --git a/arch/arm64/configs/bcmrpi3_defconfig b/arch/arm64/configs/bcmrpi3_defconfig +new file mode 100644 +index 0000000000000000000000000000000000000000..1fcde8c1329bbfd329245a8bb17691999882ccfc +--- /dev/null ++++ b/arch/arm64/configs/bcmrpi3_defconfig +@@ -0,0 +1,1330 @@ ++# CONFIG_ARM_PATCH_PHYS_VIRT is not set ++CONFIG_PHYS_OFFSET=0 ++CONFIG_LOCALVERSION="-v8" ++# CONFIG_LOCALVERSION_AUTO is not set ++CONFIG_64BIT=y ++CONFIG_SYSVIPC=y ++CONFIG_POSIX_MQUEUE=y ++CONFIG_NO_HZ=y ++CONFIG_HIGH_RES_TIMERS=y ++ ++# ++# ARM errata workarounds via the alternatives framework ++# ++CONFIG_ARM64_ERRATUM_826319=n ++CONFIG_ARM64_ERRATUM_827319=n ++CONFIG_ARM64_ERRATUM_824069=n ++CONFIG_ARM64_ERRATUM_819472=n ++CONFIG_ARM64_ERRATUM_832075=n ++CONFIG_ARM64_ERRATUM_845719=n ++CONFIG_ARM64_ERRATUM_843419=n ++CONFIG_CAVIUM_ERRATUM_22375=n ++CONFIG_CAVIUM_ERRATUM_23154=n ++CONFIG_CAVIUM_ERRATUM_27456=n ++CONFIG_ARM64_4K_PAGES=y ++CONFIG_ARM64_VA_BITS_39=y ++CONFIG_ARM64_VA_BITS=39 ++CONFIG_SCHED_MC=y ++CONFIG_NR_CPUS=4 ++CONFIG_HOTPLUG_CPU=y ++ ++# ++# ARMv8.1 architectural features ++# ++CONFIG_ARM64_HW_AFDBM=n ++CONFIG_ARM64_PAN=n ++CONFIG_ARM64_LSE_ATOMICS=n ++CONFIG_ARM64_VHE=n ++ ++# ++# ARMv8.2 architectural features ++# ++CONFIG_ARM64_UAO=n ++CONFIG_ARM64_MODULE_CMODEL_LARGE=n ++CONFIG_RANDOMIZE_BASE=n ++ ++CONFIG_BSD_PROCESS_ACCT=y ++CONFIG_BSD_PROCESS_ACCT_V3=y ++CONFIG_TASKSTATS=y ++CONFIG_TASK_DELAY_ACCT=y ++CONFIG_TASK_XACCT=y ++CONFIG_TASK_IO_ACCOUNTING=y ++CONFIG_IKCONFIG=m ++CONFIG_IKCONFIG_PROC=y ++CONFIG_NMI_LOG_BUF_SHIFT=12 ++CONFIG_MEMCG=y ++CONFIG_BLK_CGROUP=y ++CONFIG_CGROUP_FREEZER=y ++CONFIG_CPUSETS=y ++CONFIG_CGROUP_DEVICE=y ++CONFIG_CGROUP_CPUACCT=y ++CONFIG_NAMESPACES=y ++CONFIG_USER_NS=y ++CONFIG_SCHED_AUTOGROUP=y ++CONFIG_BLK_DEV_INITRD=y ++CONFIG_EMBEDDED=y ++# CONFIG_COMPAT_BRK is not set ++CONFIG_PROFILING=y ++CONFIG_OPROFILE=m ++CONFIG_KPROBES=y ++CONFIG_JUMP_LABEL=y ++CONFIG_MODULES=y ++CONFIG_MODULE_UNLOAD=y ++CONFIG_MODVERSIONS=y ++CONFIG_MODULE_SRCVERSION_ALL=y ++CONFIG_TRIM_UNUSED_KSYMS=y ++CONFIG_BLK_DEV_THROTTLING=y ++CONFIG_PARTITION_ADVANCED=y ++CONFIG_MAC_PARTITION=y ++CONFIG_CFQ_GROUP_IOSCHED=y ++CONFIG_ARCH_BCM2709=y ++# CONFIG_CACHE_L2X0 is not set ++CONFIG_SMP=y ++CONFIG_HAVE_ARM_ARCH_TIMER=y ++CONFIG_VMSPLIT_2G=y ++CONFIG_PREEMPT_VOLUNTARY=y ++CONFIG_AEABI=y ++CONFIG_OABI_COMPAT=y ++# CONFIG_CPU_SW_DOMAIN_PAN is not set ++CONFIG_CLEANCACHE=y ++CONFIG_FRONTSWAP=y ++CONFIG_CMA=y ++CONFIG_ZSMALLOC=m ++CONFIG_PGTABLE_MAPPING=y ++CONFIG_UACCESS_WITH_MEMCPY=y ++CONFIG_SECCOMP=y ++# CONFIG_ATAGS is not set ++CONFIG_ZBOOT_ROM_TEXT=0x0 ++CONFIG_ZBOOT_ROM_BSS=0x0 ++CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" ++CONFIG_CPU_FREQ=y ++CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y ++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y ++CONFIG_CPU_FREQ_GOV_USERSPACE=y ++CONFIG_CPU_FREQ_GOV_ONDEMAND=y ++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y ++CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y ++CONFIG_VFP=y ++CONFIG_NEON=y ++CONFIG_KERNEL_MODE_NEON=y ++CONFIG_BINFMT_MISC=m ++CONFIG_COMPAT=y ++CONFIG_SYSVIPC_COMPAT=y ++ ++# CONFIG_SUSPEND is not set ++CONFIG_PM=y ++CONFIG_NET=y ++CONFIG_PACKET=y ++CONFIG_UNIX=y ++CONFIG_XFRM_USER=y ++CONFIG_NET_KEY=m ++CONFIG_INET=y ++CONFIG_IP_MULTICAST=y ++CONFIG_IP_ADVANCED_ROUTER=y ++CONFIG_IP_MULTIPLE_TABLES=y ++CONFIG_IP_ROUTE_MULTIPATH=y ++CONFIG_IP_ROUTE_VERBOSE=y ++CONFIG_IP_PNP=y ++CONFIG_IP_PNP_DHCP=y ++CONFIG_IP_PNP_RARP=y ++CONFIG_NET_IPIP=m ++CONFIG_NET_IPGRE_DEMUX=m ++CONFIG_NET_IPGRE=m ++CONFIG_IP_MROUTE=y ++CONFIG_IP_MROUTE_MULTIPLE_TABLES=y ++CONFIG_IP_PIMSM_V1=y ++CONFIG_IP_PIMSM_V2=y ++CONFIG_SYN_COOKIES=y ++CONFIG_INET_AH=m ++CONFIG_INET_ESP=m ++CONFIG_INET_IPCOMP=m ++CONFIG_INET_XFRM_MODE_TRANSPORT=m ++CONFIG_INET_XFRM_MODE_TUNNEL=m ++CONFIG_INET_XFRM_MODE_BEET=m ++CONFIG_INET_DIAG=m ++CONFIG_IPV6=m ++CONFIG_IPV6_ROUTER_PREF=y ++CONFIG_INET6_AH=m ++CONFIG_INET6_ESP=m ++CONFIG_INET6_IPCOMP=m ++CONFIG_IPV6_TUNNEL=m ++CONFIG_IPV6_MULTIPLE_TABLES=y ++CONFIG_IPV6_SUBTREES=y ++CONFIG_IPV6_MROUTE=y ++CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y ++CONFIG_IPV6_PIMSM_V2=y ++CONFIG_NETFILTER=y ++CONFIG_NF_CONNTRACK=m ++CONFIG_NF_CONNTRACK_ZONES=y ++CONFIG_NF_CONNTRACK_EVENTS=y ++CONFIG_NF_CONNTRACK_TIMESTAMP=y ++CONFIG_NF_CT_PROTO_DCCP=m ++CONFIG_NF_CT_PROTO_UDPLITE=m ++CONFIG_NF_CONNTRACK_AMANDA=m ++CONFIG_NF_CONNTRACK_FTP=m ++CONFIG_NF_CONNTRACK_H323=m ++CONFIG_NF_CONNTRACK_IRC=m ++CONFIG_NF_CONNTRACK_NETBIOS_NS=m ++CONFIG_NF_CONNTRACK_SNMP=m ++CONFIG_NF_CONNTRACK_PPTP=m ++CONFIG_NF_CONNTRACK_SANE=m ++CONFIG_NF_CONNTRACK_SIP=m ++CONFIG_NF_CONNTRACK_TFTP=m ++CONFIG_NF_CT_NETLINK=m ++CONFIG_NETFILTER_XT_SET=m ++CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m ++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m ++CONFIG_NETFILTER_XT_TARGET_CONNMARK=m ++CONFIG_NETFILTER_XT_TARGET_DSCP=m ++CONFIG_NETFILTER_XT_TARGET_HMARK=m ++CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m ++CONFIG_NETFILTER_XT_TARGET_LED=m ++CONFIG_NETFILTER_XT_TARGET_LOG=m ++CONFIG_NETFILTER_XT_TARGET_MARK=m ++CONFIG_NETFILTER_XT_TARGET_NFLOG=m ++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m ++CONFIG_NETFILTER_XT_TARGET_NOTRACK=m ++CONFIG_NETFILTER_XT_TARGET_TEE=m ++CONFIG_NETFILTER_XT_TARGET_TPROXY=m ++CONFIG_NETFILTER_XT_TARGET_TRACE=m ++CONFIG_NETFILTER_XT_TARGET_TCPMSS=m ++CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m ++CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m ++CONFIG_NETFILTER_XT_MATCH_BPF=m ++CONFIG_NETFILTER_XT_MATCH_CLUSTER=m ++CONFIG_NETFILTER_XT_MATCH_COMMENT=m ++CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m ++CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m ++CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_CONNMARK=m ++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m ++CONFIG_NETFILTER_XT_MATCH_CPU=m ++CONFIG_NETFILTER_XT_MATCH_DCCP=m ++CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m ++CONFIG_NETFILTER_XT_MATCH_DSCP=m ++CONFIG_NETFILTER_XT_MATCH_ESP=m ++CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_HELPER=m ++CONFIG_NETFILTER_XT_MATCH_IPRANGE=m ++CONFIG_NETFILTER_XT_MATCH_IPVS=m ++CONFIG_NETFILTER_XT_MATCH_LENGTH=m ++CONFIG_NETFILTER_XT_MATCH_LIMIT=m ++CONFIG_NETFILTER_XT_MATCH_MAC=m ++CONFIG_NETFILTER_XT_MATCH_MARK=m ++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m ++CONFIG_NETFILTER_XT_MATCH_NFACCT=m ++CONFIG_NETFILTER_XT_MATCH_OSF=m ++CONFIG_NETFILTER_XT_MATCH_OWNER=m ++CONFIG_NETFILTER_XT_MATCH_POLICY=m ++CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m ++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m ++CONFIG_NETFILTER_XT_MATCH_QUOTA=m ++CONFIG_NETFILTER_XT_MATCH_RATEEST=m ++CONFIG_NETFILTER_XT_MATCH_REALM=m ++CONFIG_NETFILTER_XT_MATCH_RECENT=m ++CONFIG_NETFILTER_XT_MATCH_SOCKET=m ++CONFIG_NETFILTER_XT_MATCH_STATE=m ++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m ++CONFIG_NETFILTER_XT_MATCH_STRING=m ++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m ++CONFIG_NETFILTER_XT_MATCH_TIME=m ++CONFIG_NETFILTER_XT_MATCH_U32=m ++CONFIG_IP_SET=m ++CONFIG_IP_SET_BITMAP_IP=m ++CONFIG_IP_SET_BITMAP_IPMAC=m ++CONFIG_IP_SET_BITMAP_PORT=m ++CONFIG_IP_SET_HASH_IP=m ++CONFIG_IP_SET_HASH_IPPORT=m ++CONFIG_IP_SET_HASH_IPPORTIP=m ++CONFIG_IP_SET_HASH_IPPORTNET=m ++CONFIG_IP_SET_HASH_NET=m ++CONFIG_IP_SET_HASH_NETPORT=m ++CONFIG_IP_SET_HASH_NETIFACE=m ++CONFIG_IP_SET_LIST_SET=m ++CONFIG_IP_VS=m ++CONFIG_IP_VS_PROTO_TCP=y ++CONFIG_IP_VS_PROTO_UDP=y ++CONFIG_IP_VS_PROTO_ESP=y ++CONFIG_IP_VS_PROTO_AH=y ++CONFIG_IP_VS_PROTO_SCTP=y ++CONFIG_IP_VS_RR=m ++CONFIG_IP_VS_WRR=m ++CONFIG_IP_VS_LC=m ++CONFIG_IP_VS_WLC=m ++CONFIG_IP_VS_LBLC=m ++CONFIG_IP_VS_LBLCR=m ++CONFIG_IP_VS_DH=m ++CONFIG_IP_VS_SH=m ++CONFIG_IP_VS_SED=m ++CONFIG_IP_VS_NQ=m ++CONFIG_IP_VS_FTP=m ++CONFIG_IP_VS_PE_SIP=m ++CONFIG_NF_CONNTRACK_IPV4=m ++CONFIG_IP_NF_IPTABLES=m ++CONFIG_IP_NF_MATCH_AH=m ++CONFIG_IP_NF_MATCH_ECN=m ++CONFIG_IP_NF_MATCH_RPFILTER=m ++CONFIG_IP_NF_MATCH_TTL=m ++CONFIG_IP_NF_FILTER=m ++CONFIG_IP_NF_TARGET_REJECT=m ++CONFIG_IP_NF_NAT=m ++CONFIG_IP_NF_TARGET_MASQUERADE=m ++CONFIG_IP_NF_TARGET_NETMAP=m ++CONFIG_IP_NF_TARGET_REDIRECT=m ++CONFIG_IP_NF_MANGLE=m ++CONFIG_IP_NF_TARGET_CLUSTERIP=m ++CONFIG_IP_NF_TARGET_ECN=m ++CONFIG_IP_NF_TARGET_TTL=m ++CONFIG_IP_NF_RAW=m ++CONFIG_IP_NF_ARPTABLES=m ++CONFIG_IP_NF_ARPFILTER=m ++CONFIG_IP_NF_ARP_MANGLE=m ++CONFIG_NF_CONNTRACK_IPV6=m ++CONFIG_IP6_NF_IPTABLES=m ++CONFIG_IP6_NF_MATCH_AH=m ++CONFIG_IP6_NF_MATCH_EUI64=m ++CONFIG_IP6_NF_MATCH_FRAG=m ++CONFIG_IP6_NF_MATCH_OPTS=m ++CONFIG_IP6_NF_MATCH_HL=m ++CONFIG_IP6_NF_MATCH_IPV6HEADER=m ++CONFIG_IP6_NF_MATCH_MH=m ++CONFIG_IP6_NF_MATCH_RPFILTER=m ++CONFIG_IP6_NF_MATCH_RT=m ++CONFIG_IP6_NF_TARGET_HL=m ++CONFIG_IP6_NF_FILTER=m ++CONFIG_IP6_NF_TARGET_REJECT=m ++CONFIG_IP6_NF_MANGLE=m ++CONFIG_IP6_NF_RAW=m ++CONFIG_IP6_NF_NAT=m ++CONFIG_IP6_NF_TARGET_MASQUERADE=m ++CONFIG_IP6_NF_TARGET_NPT=m ++CONFIG_BRIDGE_NF_EBTABLES=m ++CONFIG_BRIDGE_EBT_BROUTE=m ++CONFIG_BRIDGE_EBT_T_FILTER=m ++CONFIG_BRIDGE_EBT_T_NAT=m ++CONFIG_BRIDGE_EBT_802_3=m ++CONFIG_BRIDGE_EBT_AMONG=m ++CONFIG_BRIDGE_EBT_ARP=m ++CONFIG_BRIDGE_EBT_IP=m ++CONFIG_BRIDGE_EBT_IP6=m ++CONFIG_BRIDGE_EBT_LIMIT=m ++CONFIG_BRIDGE_EBT_MARK=m ++CONFIG_BRIDGE_EBT_PKTTYPE=m ++CONFIG_BRIDGE_EBT_STP=m ++CONFIG_BRIDGE_EBT_VLAN=m ++CONFIG_BRIDGE_EBT_ARPREPLY=m ++CONFIG_BRIDGE_EBT_DNAT=m ++CONFIG_BRIDGE_EBT_MARK_T=m ++CONFIG_BRIDGE_EBT_REDIRECT=m ++CONFIG_BRIDGE_EBT_SNAT=m ++CONFIG_BRIDGE_EBT_LOG=m ++CONFIG_BRIDGE_EBT_NFLOG=m ++CONFIG_SCTP_COOKIE_HMAC_SHA1=y ++CONFIG_ATM=m ++CONFIG_L2TP=m ++CONFIG_L2TP_V3=y ++CONFIG_L2TP_IP=m ++CONFIG_L2TP_ETH=m ++CONFIG_BRIDGE=m ++CONFIG_VLAN_8021Q=m ++CONFIG_VLAN_8021Q_GVRP=y ++CONFIG_ATALK=m ++CONFIG_6LOWPAN=m ++CONFIG_IEEE802154=m ++CONFIG_IEEE802154_6LOWPAN=m ++CONFIG_MAC802154=m ++CONFIG_NET_SCHED=y ++CONFIG_NET_SCH_CBQ=m ++CONFIG_NET_SCH_HTB=m ++CONFIG_NET_SCH_HFSC=m ++CONFIG_NET_SCH_PRIO=m ++CONFIG_NET_SCH_MULTIQ=m ++CONFIG_NET_SCH_RED=m ++CONFIG_NET_SCH_SFB=m ++CONFIG_NET_SCH_SFQ=m ++CONFIG_NET_SCH_TEQL=m ++CONFIG_NET_SCH_TBF=m ++CONFIG_NET_SCH_GRED=m ++CONFIG_NET_SCH_DSMARK=m ++CONFIG_NET_SCH_NETEM=m ++CONFIG_NET_SCH_DRR=m ++CONFIG_NET_SCH_MQPRIO=m ++CONFIG_NET_SCH_CHOKE=m ++CONFIG_NET_SCH_QFQ=m ++CONFIG_NET_SCH_CODEL=m ++CONFIG_NET_SCH_FQ_CODEL=m ++CONFIG_NET_SCH_INGRESS=m ++CONFIG_NET_SCH_PLUG=m ++CONFIG_NET_CLS_BASIC=m ++CONFIG_NET_CLS_TCINDEX=m ++CONFIG_NET_CLS_ROUTE4=m ++CONFIG_NET_CLS_FW=m ++CONFIG_NET_CLS_U32=m ++CONFIG_CLS_U32_MARK=y ++CONFIG_NET_CLS_RSVP=m ++CONFIG_NET_CLS_RSVP6=m ++CONFIG_NET_CLS_FLOW=m ++CONFIG_NET_CLS_CGROUP=m ++CONFIG_NET_EMATCH=y ++CONFIG_NET_EMATCH_CMP=m ++CONFIG_NET_EMATCH_NBYTE=m ++CONFIG_NET_EMATCH_U32=m ++CONFIG_NET_EMATCH_META=m ++CONFIG_NET_EMATCH_TEXT=m ++CONFIG_NET_EMATCH_IPSET=m ++CONFIG_NET_CLS_ACT=y ++CONFIG_NET_ACT_POLICE=m ++CONFIG_NET_ACT_GACT=m ++CONFIG_GACT_PROB=y ++CONFIG_NET_ACT_MIRRED=m ++CONFIG_NET_ACT_IPT=m ++CONFIG_NET_ACT_NAT=m ++CONFIG_NET_ACT_PEDIT=m ++CONFIG_NET_ACT_SIMP=m ++CONFIG_NET_ACT_SKBEDIT=m ++CONFIG_NET_ACT_CSUM=m ++CONFIG_BATMAN_ADV=m ++CONFIG_OPENVSWITCH=m ++CONFIG_NET_PKTGEN=m ++CONFIG_HAMRADIO=y ++CONFIG_AX25=m ++CONFIG_NETROM=m ++CONFIG_ROSE=m ++CONFIG_MKISS=m ++CONFIG_6PACK=m ++CONFIG_BPQETHER=m ++CONFIG_BAYCOM_SER_FDX=m ++CONFIG_BAYCOM_SER_HDX=m ++CONFIG_YAM=m ++CONFIG_CAN=m ++CONFIG_CAN_VCAN=m ++CONFIG_CAN_MCP251X=m ++CONFIG_IRDA=m ++CONFIG_IRLAN=m ++CONFIG_IRNET=m ++CONFIG_IRCOMM=m ++CONFIG_IRDA_ULTRA=y ++CONFIG_IRDA_CACHE_LAST_LSAP=y ++CONFIG_IRDA_FAST_RR=y ++CONFIG_IRTTY_SIR=m ++CONFIG_KINGSUN_DONGLE=m ++CONFIG_KSDAZZLE_DONGLE=m ++CONFIG_KS959_DONGLE=m ++CONFIG_USB_IRDA=m ++CONFIG_SIGMATEL_FIR=m ++CONFIG_MCS_FIR=m ++CONFIG_BT=m ++CONFIG_BT_RFCOMM=m ++CONFIG_BT_RFCOMM_TTY=y ++CONFIG_BT_BNEP=m ++CONFIG_BT_BNEP_MC_FILTER=y ++CONFIG_BT_BNEP_PROTO_FILTER=y ++CONFIG_BT_HIDP=m ++CONFIG_BT_6LOWPAN=m ++CONFIG_BT_HCIBTUSB=m ++CONFIG_BT_HCIUART=m ++CONFIG_BT_HCIUART_3WIRE=y ++CONFIG_BT_HCIUART_BCM=y ++CONFIG_BT_HCIBCM203X=m ++CONFIG_BT_HCIBPA10X=m ++CONFIG_BT_HCIBFUSB=m ++CONFIG_BT_HCIVHCI=m ++CONFIG_BT_MRVL=m ++CONFIG_BT_MRVL_SDIO=m ++CONFIG_BT_ATH3K=m ++CONFIG_BT_WILINK=m ++CONFIG_MAC80211=m ++CONFIG_MAC80211_MESH=y ++CONFIG_WIMAX=m ++CONFIG_RFKILL=m ++CONFIG_RFKILL_INPUT=y ++CONFIG_NET_9P=m ++CONFIG_NFC=m ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y ++CONFIG_DMA_CMA=y ++CONFIG_CMA_SIZE_MBYTES=5 ++CONFIG_MTD=m ++CONFIG_MTD_BLOCK=m ++CONFIG_MTD_NAND=m ++CONFIG_MTD_UBI=m ++CONFIG_OF_CONFIGFS=y ++CONFIG_ZRAM=m ++CONFIG_BLK_DEV_LOOP=y ++CONFIG_BLK_DEV_CRYPTOLOOP=m ++CONFIG_BLK_DEV_DRBD=m ++CONFIG_BLK_DEV_NBD=m ++CONFIG_BLK_DEV_RAM=y ++CONFIG_CDROM_PKTCDVD=m ++CONFIG_ATA_OVER_ETH=m ++CONFIG_EEPROM_AT24=m ++CONFIG_TI_ST=m ++CONFIG_SCSI=y ++# CONFIG_SCSI_PROC_FS is not set ++CONFIG_BLK_DEV_SD=y ++CONFIG_CHR_DEV_ST=m ++CONFIG_CHR_DEV_OSST=m ++CONFIG_BLK_DEV_SR=m ++CONFIG_CHR_DEV_SG=m ++CONFIG_SCSI_ISCSI_ATTRS=y ++CONFIG_ISCSI_TCP=m ++CONFIG_ISCSI_BOOT_SYSFS=m ++CONFIG_MD=y ++CONFIG_MD_LINEAR=m ++CONFIG_MD_RAID0=m ++CONFIG_BLK_DEV_DM=m ++CONFIG_DM_CRYPT=m ++CONFIG_DM_SNAPSHOT=m ++CONFIG_DM_THIN_PROVISIONING=m ++CONFIG_DM_MIRROR=m ++CONFIG_DM_LOG_USERSPACE=m ++CONFIG_DM_RAID=m ++CONFIG_DM_ZERO=m ++CONFIG_DM_DELAY=m ++CONFIG_NETDEVICES=y ++CONFIG_BONDING=m ++CONFIG_DUMMY=m ++CONFIG_IFB=m ++CONFIG_MACVLAN=m ++CONFIG_IPVLAN=m ++CONFIG_VXLAN=m ++CONFIG_NETCONSOLE=m ++CONFIG_TUN=m ++CONFIG_VETH=m ++CONFIG_ENC28J60=m ++CONFIG_QCA7000=m ++CONFIG_MDIO_BITBANG=m ++CONFIG_PPP=m ++CONFIG_PPP_BSDCOMP=m ++CONFIG_PPP_DEFLATE=m ++CONFIG_PPP_FILTER=y ++CONFIG_PPP_MPPE=m ++CONFIG_PPP_MULTILINK=y ++CONFIG_PPPOATM=m ++CONFIG_PPPOE=m ++CONFIG_PPPOL2TP=m ++CONFIG_PPP_ASYNC=m ++CONFIG_PPP_SYNC_TTY=m ++CONFIG_SLIP=m ++CONFIG_SLIP_COMPRESSED=y ++CONFIG_SLIP_SMART=y ++CONFIG_USB_CATC=m ++CONFIG_USB_KAWETH=m ++CONFIG_USB_PEGASUS=m ++CONFIG_USB_RTL8150=m ++CONFIG_USB_RTL8152=m ++CONFIG_USB_USBNET=y ++CONFIG_USB_NET_AX8817X=m ++CONFIG_USB_NET_AX88179_178A=m ++CONFIG_USB_NET_CDCETHER=m ++CONFIG_USB_NET_CDC_EEM=m ++CONFIG_USB_NET_CDC_NCM=m ++CONFIG_USB_NET_HUAWEI_CDC_NCM=m ++CONFIG_USB_NET_CDC_MBIM=m ++CONFIG_USB_NET_DM9601=m ++CONFIG_USB_NET_SR9700=m ++CONFIG_USB_NET_SR9800=m ++CONFIG_USB_NET_SMSC75XX=m ++CONFIG_USB_NET_SMSC95XX=y ++CONFIG_USB_NET_GL620A=m ++CONFIG_USB_NET_NET1080=m ++CONFIG_USB_NET_PLUSB=m ++CONFIG_USB_NET_MCS7830=m ++CONFIG_USB_NET_CDC_SUBSET=m ++CONFIG_USB_ALI_M5632=y ++CONFIG_USB_AN2720=y ++CONFIG_USB_EPSON2888=y ++CONFIG_USB_KC2190=y ++CONFIG_USB_NET_ZAURUS=m ++CONFIG_USB_NET_CX82310_ETH=m ++CONFIG_USB_NET_KALMIA=m ++CONFIG_USB_NET_QMI_WWAN=m ++CONFIG_USB_HSO=m ++CONFIG_USB_NET_INT51X1=m ++CONFIG_USB_IPHETH=m ++CONFIG_USB_SIERRA_NET=m ++CONFIG_USB_VL600=m ++CONFIG_ATH9K=m ++CONFIG_ATH9K_HTC=m ++CONFIG_CARL9170=m ++CONFIG_ATH6KL=m ++CONFIG_ATH6KL_USB=m ++CONFIG_AR5523=m ++CONFIG_AT76C50X_USB=m ++CONFIG_B43=m ++# CONFIG_B43_PHY_N is not set ++CONFIG_B43LEGACY=m ++CONFIG_BRCMFMAC=m ++CONFIG_BRCMFMAC_USB=y ++CONFIG_HOSTAP=m ++CONFIG_P54_COMMON=m ++CONFIG_P54_USB=m ++CONFIG_LIBERTAS=m ++CONFIG_LIBERTAS_USB=m ++CONFIG_LIBERTAS_SDIO=m ++CONFIG_LIBERTAS_THINFIRM=m ++CONFIG_LIBERTAS_THINFIRM_USB=m ++CONFIG_MWIFIEX=m ++CONFIG_MWIFIEX_SDIO=m ++CONFIG_MT7601U=m ++CONFIG_RT2X00=m ++CONFIG_RT2500USB=m ++CONFIG_RT73USB=m ++CONFIG_RT2800USB=m ++CONFIG_RT2800USB_RT3573=y ++CONFIG_RT2800USB_RT53XX=y ++CONFIG_RT2800USB_RT55XX=y ++CONFIG_RT2800USB_UNKNOWN=y ++CONFIG_RTL8187=m ++CONFIG_RTL8192CU=n ++CONFIG_USB_ZD1201=m ++CONFIG_ZD1211RW=m ++CONFIG_MAC80211_HWSIM=m ++CONFIG_USB_NET_RNDIS_WLAN=m ++CONFIG_WIMAX_I2400M_USB=m ++CONFIG_IEEE802154_AT86RF230=m ++CONFIG_IEEE802154_MRF24J40=m ++CONFIG_IEEE802154_CC2520=m ++CONFIG_INPUT_POLLDEV=m ++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set ++CONFIG_INPUT_JOYDEV=m ++CONFIG_INPUT_EVDEV=m ++# CONFIG_KEYBOARD_ATKBD is not set ++CONFIG_KEYBOARD_GPIO=m ++# CONFIG_INPUT_MOUSE is not set ++CONFIG_INPUT_JOYSTICK=y ++CONFIG_JOYSTICK_IFORCE=m ++CONFIG_JOYSTICK_IFORCE_USB=y ++CONFIG_JOYSTICK_XPAD=m ++CONFIG_JOYSTICK_XPAD_FF=y ++CONFIG_JOYSTICK_XPAD_LEDS=y ++CONFIG_JOYSTICK_RPISENSE=m ++CONFIG_INPUT_TOUCHSCREEN=y ++CONFIG_TOUCHSCREEN_ADS7846=m ++CONFIG_TOUCHSCREEN_EGALAX=m ++CONFIG_TOUCHSCREEN_FT6236=m ++CONFIG_TOUCHSCREEN_RPI_FT5406=m ++CONFIG_TOUCHSCREEN_USB_COMPOSITE=m ++CONFIG_TOUCHSCREEN_STMPE=m ++CONFIG_INPUT_MISC=y ++CONFIG_INPUT_AD714X=m ++CONFIG_INPUT_ATI_REMOTE2=m ++CONFIG_INPUT_KEYSPAN_REMOTE=m ++CONFIG_INPUT_POWERMATE=m ++CONFIG_INPUT_YEALINK=m ++CONFIG_INPUT_CM109=m ++CONFIG_INPUT_UINPUT=m ++CONFIG_INPUT_GPIO_ROTARY_ENCODER=m ++CONFIG_INPUT_ADXL34X=m ++CONFIG_INPUT_CMA3000=m ++CONFIG_SERIO=m ++CONFIG_SERIO_RAW=m ++CONFIG_GAMEPORT=m ++CONFIG_GAMEPORT_NS558=m ++CONFIG_GAMEPORT_L4=m ++CONFIG_BRCM_CHAR_DRIVERS=n ++CONFIG_BCM_VC_CMA=n ++CONFIG_BCM_VCIO=n ++CONFIG_BCM_VC_SM=n ++# CONFIG_LEGACY_PTYS is not set ++# CONFIG_DEVKMEM is not set ++CONFIG_SERIAL_8250=y ++# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set ++CONFIG_SERIAL_8250_CONSOLE=y ++# CONFIG_SERIAL_8250_DMA is not set ++CONFIG_SERIAL_8250_NR_UARTS=1 ++CONFIG_SERIAL_8250_RUNTIME_UARTS=0 ++CONFIG_SERIAL_OF_PLATFORM=y ++CONFIG_SERIAL_AMBA_PL011=y ++CONFIG_SERIAL_AMBA_PL011_CONSOLE=y ++CONFIG_SERIAL_SC16IS7XX=m ++CONFIG_SERIAL_SC16IS7XX_SPI=y ++CONFIG_TTY_PRINTK=y ++CONFIG_HW_RANDOM=y ++CONFIG_RAW_DRIVER=y ++CONFIG_I2C=y ++CONFIG_I2C_CHARDEV=m ++CONFIG_I2C_MUX_PCA954x=m ++CONFIG_I2C_BCM2708=m ++CONFIG_I2C_GPIO=m ++CONFIG_SPI=y ++CONFIG_SPI_BCM2835=m ++CONFIG_SPI_BCM2835AUX=m ++CONFIG_SPI_SPIDEV=y ++CONFIG_PPS=m ++CONFIG_PPS_CLIENT_LDISC=m ++CONFIG_PPS_CLIENT_GPIO=m ++CONFIG_GPIO_SYSFS=y ++CONFIG_GPIO_BCM_VIRT=y ++CONFIG_GPIO_ARIZONA=m ++CONFIG_GPIO_STMPE=y ++CONFIG_GPIO_MCP23S08=m ++CONFIG_W1=m ++CONFIG_W1_MASTER_DS2490=m ++CONFIG_W1_MASTER_DS2482=m ++CONFIG_W1_MASTER_DS1WM=m ++CONFIG_W1_MASTER_GPIO=m ++CONFIG_W1_SLAVE_THERM=m ++CONFIG_W1_SLAVE_SMEM=m ++CONFIG_W1_SLAVE_DS2408=m ++CONFIG_W1_SLAVE_DS2413=m ++CONFIG_W1_SLAVE_DS2406=m ++CONFIG_W1_SLAVE_DS2423=m ++CONFIG_W1_SLAVE_DS2431=m ++CONFIG_W1_SLAVE_DS2433=m ++CONFIG_W1_SLAVE_DS2760=m ++CONFIG_W1_SLAVE_DS2780=m ++CONFIG_W1_SLAVE_DS2781=m ++CONFIG_W1_SLAVE_DS28E04=m ++CONFIG_W1_SLAVE_BQ27000=m ++CONFIG_BATTERY_DS2760=m ++CONFIG_POWER_RESET=y ++CONFIG_POWER_RESET_GPIO=y ++CONFIG_HWMON=m ++CONFIG_SENSORS_LM75=m ++CONFIG_SENSORS_SHT21=m ++CONFIG_SENSORS_SHTC1=m ++CONFIG_THERMAL=y ++CONFIG_THERMAL_BCM2835=y ++CONFIG_WATCHDOG=y ++CONFIG_BCM2835_WDT=m ++CONFIG_UCB1400_CORE=m ++CONFIG_MFD_STMPE=y ++CONFIG_STMPE_SPI=y ++CONFIG_MFD_ARIZONA_I2C=m ++CONFIG_MFD_ARIZONA_SPI=m ++CONFIG_MFD_WM5102=y ++CONFIG_MEDIA_SUPPORT=m ++CONFIG_MEDIA_CAMERA_SUPPORT=y ++CONFIG_MEDIA_ANALOG_TV_SUPPORT=y ++CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y ++CONFIG_MEDIA_RADIO_SUPPORT=y ++CONFIG_MEDIA_RC_SUPPORT=y ++CONFIG_MEDIA_CONTROLLER=y ++CONFIG_LIRC=m ++CONFIG_RC_DEVICES=y ++CONFIG_RC_ATI_REMOTE=m ++CONFIG_IR_IMON=m ++CONFIG_IR_MCEUSB=m ++CONFIG_IR_REDRAT3=m ++CONFIG_IR_STREAMZAP=m ++CONFIG_IR_IGUANA=m ++CONFIG_IR_TTUSBIR=m ++CONFIG_RC_LOOPBACK=m ++CONFIG_IR_GPIO_CIR=m ++CONFIG_MEDIA_USB_SUPPORT=y ++CONFIG_USB_VIDEO_CLASS=m ++CONFIG_USB_M5602=m ++CONFIG_USB_STV06XX=m ++CONFIG_USB_GL860=m ++CONFIG_USB_GSPCA_BENQ=m ++CONFIG_USB_GSPCA_CONEX=m ++CONFIG_USB_GSPCA_CPIA1=m ++CONFIG_USB_GSPCA_DTCS033=m ++CONFIG_USB_GSPCA_ETOMS=m ++CONFIG_USB_GSPCA_FINEPIX=m ++CONFIG_USB_GSPCA_JEILINJ=m ++CONFIG_USB_GSPCA_JL2005BCD=m ++CONFIG_USB_GSPCA_KINECT=m ++CONFIG_USB_GSPCA_KONICA=m ++CONFIG_USB_GSPCA_MARS=m ++CONFIG_USB_GSPCA_MR97310A=m ++CONFIG_USB_GSPCA_NW80X=m ++CONFIG_USB_GSPCA_OV519=m ++CONFIG_USB_GSPCA_OV534=m ++CONFIG_USB_GSPCA_OV534_9=m ++CONFIG_USB_GSPCA_PAC207=m ++CONFIG_USB_GSPCA_PAC7302=m ++CONFIG_USB_GSPCA_PAC7311=m ++CONFIG_USB_GSPCA_SE401=m ++CONFIG_USB_GSPCA_SN9C2028=m ++CONFIG_USB_GSPCA_SN9C20X=m ++CONFIG_USB_GSPCA_SONIXB=m ++CONFIG_USB_GSPCA_SONIXJ=m ++CONFIG_USB_GSPCA_SPCA500=m ++CONFIG_USB_GSPCA_SPCA501=m ++CONFIG_USB_GSPCA_SPCA505=m ++CONFIG_USB_GSPCA_SPCA506=m ++CONFIG_USB_GSPCA_SPCA508=m ++CONFIG_USB_GSPCA_SPCA561=m ++CONFIG_USB_GSPCA_SPCA1528=m ++CONFIG_USB_GSPCA_SQ905=m ++CONFIG_USB_GSPCA_SQ905C=m ++CONFIG_USB_GSPCA_SQ930X=m ++CONFIG_USB_GSPCA_STK014=m ++CONFIG_USB_GSPCA_STK1135=m ++CONFIG_USB_GSPCA_STV0680=m ++CONFIG_USB_GSPCA_SUNPLUS=m ++CONFIG_USB_GSPCA_T613=m ++CONFIG_USB_GSPCA_TOPRO=m ++CONFIG_USB_GSPCA_TV8532=m ++CONFIG_USB_GSPCA_VC032X=m ++CONFIG_USB_GSPCA_VICAM=m ++CONFIG_USB_GSPCA_XIRLINK_CIT=m ++CONFIG_USB_GSPCA_ZC3XX=m ++CONFIG_USB_PWC=m ++CONFIG_VIDEO_CPIA2=m ++CONFIG_USB_ZR364XX=m ++CONFIG_USB_STKWEBCAM=m ++CONFIG_USB_S2255=m ++CONFIG_VIDEO_USBTV=m ++CONFIG_VIDEO_PVRUSB2=m ++CONFIG_VIDEO_HDPVR=m ++CONFIG_VIDEO_USBVISION=m ++CONFIG_VIDEO_STK1160_COMMON=m ++CONFIG_VIDEO_STK1160_AC97=y ++CONFIG_VIDEO_GO7007=m ++CONFIG_VIDEO_GO7007_USB=m ++CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m ++CONFIG_VIDEO_AU0828=m ++CONFIG_VIDEO_AU0828_RC=y ++CONFIG_VIDEO_CX231XX=m ++CONFIG_VIDEO_CX231XX_ALSA=m ++CONFIG_VIDEO_CX231XX_DVB=m ++CONFIG_VIDEO_TM6000=m ++CONFIG_VIDEO_TM6000_ALSA=m ++CONFIG_VIDEO_TM6000_DVB=m ++CONFIG_DVB_USB=m ++CONFIG_DVB_USB_A800=m ++CONFIG_DVB_USB_DIBUSB_MB=m ++CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y ++CONFIG_DVB_USB_DIBUSB_MC=m ++CONFIG_DVB_USB_DIB0700=m ++CONFIG_DVB_USB_UMT_010=m ++CONFIG_DVB_USB_CXUSB=m ++CONFIG_DVB_USB_M920X=m ++CONFIG_DVB_USB_DIGITV=m ++CONFIG_DVB_USB_VP7045=m ++CONFIG_DVB_USB_VP702X=m ++CONFIG_DVB_USB_GP8PSK=m ++CONFIG_DVB_USB_NOVA_T_USB2=m ++CONFIG_DVB_USB_TTUSB2=m ++CONFIG_DVB_USB_DTT200U=m ++CONFIG_DVB_USB_OPERA1=m ++CONFIG_DVB_USB_AF9005=m ++CONFIG_DVB_USB_AF9005_REMOTE=m ++CONFIG_DVB_USB_PCTV452E=m ++CONFIG_DVB_USB_DW2102=m ++CONFIG_DVB_USB_CINERGY_T2=m ++CONFIG_DVB_USB_DTV5100=m ++CONFIG_DVB_USB_FRIIO=m ++CONFIG_DVB_USB_AZ6027=m ++CONFIG_DVB_USB_TECHNISAT_USB2=m ++CONFIG_DVB_USB_V2=m ++CONFIG_DVB_USB_AF9015=m ++CONFIG_DVB_USB_AF9035=m ++CONFIG_DVB_USB_ANYSEE=m ++CONFIG_DVB_USB_AU6610=m ++CONFIG_DVB_USB_AZ6007=m ++CONFIG_DVB_USB_CE6230=m ++CONFIG_DVB_USB_EC168=m ++CONFIG_DVB_USB_GL861=m ++CONFIG_DVB_USB_LME2510=m ++CONFIG_DVB_USB_MXL111SF=m ++CONFIG_DVB_USB_RTL28XXU=m ++CONFIG_DVB_USB_DVBSKY=m ++CONFIG_SMS_USB_DRV=m ++CONFIG_DVB_B2C2_FLEXCOP_USB=m ++CONFIG_DVB_AS102=m ++CONFIG_VIDEO_EM28XX=m ++CONFIG_VIDEO_EM28XX_V4L2=m ++CONFIG_VIDEO_EM28XX_ALSA=m ++CONFIG_VIDEO_EM28XX_DVB=m ++CONFIG_V4L_PLATFORM_DRIVERS=y ++CONFIG_VIDEO_BCM2835=n ++CONFIG_VIDEO_BCM2835_MMAL=n ++CONFIG_RADIO_SI470X=y ++CONFIG_USB_SI470X=m ++CONFIG_I2C_SI470X=m ++CONFIG_RADIO_SI4713=m ++CONFIG_I2C_SI4713=m ++CONFIG_USB_MR800=m ++CONFIG_USB_DSBR=m ++CONFIG_RADIO_SHARK=m ++CONFIG_RADIO_SHARK2=m ++CONFIG_USB_KEENE=m ++CONFIG_USB_MA901=m ++CONFIG_RADIO_TEA5764=m ++CONFIG_RADIO_SAA7706H=m ++CONFIG_RADIO_TEF6862=m ++CONFIG_RADIO_WL1273=m ++CONFIG_RADIO_WL128X=m ++# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set ++CONFIG_VIDEO_UDA1342=m ++CONFIG_VIDEO_SONY_BTF_MPX=m ++CONFIG_VIDEO_TVP5150=m ++CONFIG_VIDEO_TW2804=m ++CONFIG_VIDEO_TW9903=m ++CONFIG_VIDEO_TW9906=m ++CONFIG_VIDEO_OV7640=m ++CONFIG_VIDEO_MT9V011=m ++CONFIG_DRM=m ++CONFIG_DRM_LOAD_EDID_FIRMWARE=y ++CONFIG_DRM_UDL=m ++CONFIG_DRM_VC4=m ++CONFIG_FB=y ++CONFIG_FB_BCM2708=y ++CONFIG_FB_UDL=m ++CONFIG_FB_SSD1307=m ++CONFIG_FB_RPISENSE=m ++# CONFIG_BACKLIGHT_GENERIC is not set ++CONFIG_BACKLIGHT_RPI=m ++CONFIG_BACKLIGHT_GPIO=m ++CONFIG_FRAMEBUFFER_CONSOLE=y ++CONFIG_LOGO=y ++# CONFIG_LOGO_LINUX_MONO is not set ++# CONFIG_LOGO_LINUX_VGA16 is not set ++CONFIG_SOUND=y ++CONFIG_SND=m ++CONFIG_SND_SEQUENCER=m ++CONFIG_SND_SEQ_DUMMY=m ++CONFIG_SND_MIXER_OSS=m ++CONFIG_SND_PCM_OSS=m ++CONFIG_SND_SEQUENCER_OSS=y ++CONFIG_SND_HRTIMER=m ++CONFIG_SND_DUMMY=m ++CONFIG_SND_ALOOP=m ++CONFIG_SND_VIRMIDI=m ++CONFIG_SND_MTPAV=m ++CONFIG_SND_SERIAL_U16550=m ++CONFIG_SND_MPU401=m ++CONFIG_SND_ARM=n ++CONFIG_SND_BCM2835=n ++CONFIG_SND_USB_AUDIO=m ++CONFIG_SND_USB_UA101=m ++CONFIG_SND_USB_CAIAQ=m ++CONFIG_SND_USB_CAIAQ_INPUT=y ++CONFIG_SND_USB_6FIRE=m ++CONFIG_SND_SOC=m ++CONFIG_SND_BCM2835_SOC_I2S=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m ++CONFIG_SND_BCM2708_SOC_RPI_DAC=m ++CONFIG_SND_BCM2708_SOC_RPI_PROTO=m ++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m ++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m ++CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m ++CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m ++CONFIG_SND_BCM2708_SOC_RASPIDAC3=m ++CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m ++CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m ++CONFIG_SND_DIGIDAC1_SOUNDCARD=m ++CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m ++CONFIG_SND_SOC_ADAU1701=m ++CONFIG_SND_SOC_WM8804_I2C=m ++CONFIG_SND_SIMPLE_CARD=m ++CONFIG_SOUND_PRIME=m ++CONFIG_HIDRAW=y ++CONFIG_UHID=m ++CONFIG_HID_A4TECH=m ++CONFIG_HID_ACRUX=m ++CONFIG_HID_APPLE=m ++CONFIG_HID_BELKIN=m ++CONFIG_HID_BETOP_FF=m ++CONFIG_HID_CHERRY=m ++CONFIG_HID_CHICONY=m ++CONFIG_HID_CYPRESS=m ++CONFIG_HID_DRAGONRISE=m ++CONFIG_HID_EMS_FF=m ++CONFIG_HID_ELECOM=m ++CONFIG_HID_ELO=m ++CONFIG_HID_EZKEY=m ++CONFIG_HID_GEMBIRD=m ++CONFIG_HID_HOLTEK=m ++CONFIG_HID_KEYTOUCH=m ++CONFIG_HID_KYE=m ++CONFIG_HID_UCLOGIC=m ++CONFIG_HID_WALTOP=m ++CONFIG_HID_GYRATION=m ++CONFIG_HID_TWINHAN=m ++CONFIG_HID_KENSINGTON=m ++CONFIG_HID_LCPOWER=m ++CONFIG_HID_LOGITECH=m ++CONFIG_HID_LOGITECH_DJ=m ++CONFIG_LOGITECH_FF=y ++CONFIG_LOGIRUMBLEPAD2_FF=y ++CONFIG_LOGIG940_FF=y ++CONFIG_HID_MAGICMOUSE=m ++CONFIG_HID_MICROSOFT=m ++CONFIG_HID_MONTEREY=m ++CONFIG_HID_MULTITOUCH=m ++CONFIG_HID_NTRIG=m ++CONFIG_HID_ORTEK=m ++CONFIG_HID_PANTHERLORD=m ++CONFIG_HID_PETALYNX=m ++CONFIG_HID_PICOLCD=m ++CONFIG_HID_ROCCAT=m ++CONFIG_HID_SAMSUNG=m ++CONFIG_HID_SONY=m ++CONFIG_HID_SPEEDLINK=m ++CONFIG_HID_SUNPLUS=m ++CONFIG_HID_GREENASIA=m ++CONFIG_HID_SMARTJOYPLUS=m ++CONFIG_HID_TOPSEED=m ++CONFIG_HID_THINGM=m ++CONFIG_HID_THRUSTMASTER=m ++CONFIG_HID_WACOM=m ++CONFIG_HID_WIIMOTE=m ++CONFIG_HID_XINMO=m ++CONFIG_HID_ZEROPLUS=m ++CONFIG_HID_ZYDACRON=m ++CONFIG_HID_PID=y ++CONFIG_USB_HIDDEV=y ++CONFIG_USB=y ++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y ++CONFIG_USB_MON=m ++CONFIG_USB_DWCOTG=n ++CONFIG_USB_DWC2=y ++CONFIG_USB_PRINTER=m ++CONFIG_USB_STORAGE=y ++CONFIG_USB_STORAGE_REALTEK=m ++CONFIG_USB_STORAGE_DATAFAB=m ++CONFIG_USB_STORAGE_FREECOM=m ++CONFIG_USB_STORAGE_ISD200=m ++CONFIG_USB_STORAGE_USBAT=m ++CONFIG_USB_STORAGE_SDDR09=m ++CONFIG_USB_STORAGE_SDDR55=m ++CONFIG_USB_STORAGE_JUMPSHOT=m ++CONFIG_USB_STORAGE_ALAUDA=m ++CONFIG_USB_STORAGE_ONETOUCH=m ++CONFIG_USB_STORAGE_KARMA=m ++CONFIG_USB_STORAGE_CYPRESS_ATACB=m ++CONFIG_USB_STORAGE_ENE_UB6250=m ++CONFIG_USB_MDC800=m ++CONFIG_USB_MICROTEK=m ++CONFIG_USBIP_CORE=m ++CONFIG_USBIP_VHCI_HCD=m ++CONFIG_USBIP_HOST=m ++CONFIG_USB_SERIAL=m ++CONFIG_USB_SERIAL_GENERIC=y ++CONFIG_USB_SERIAL_AIRCABLE=m ++CONFIG_USB_SERIAL_ARK3116=m ++CONFIG_USB_SERIAL_BELKIN=m ++CONFIG_USB_SERIAL_CH341=m ++CONFIG_USB_SERIAL_WHITEHEAT=m ++CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m ++CONFIG_USB_SERIAL_CP210X=m ++CONFIG_USB_SERIAL_CYPRESS_M8=m ++CONFIG_USB_SERIAL_EMPEG=m ++CONFIG_USB_SERIAL_FTDI_SIO=m ++CONFIG_USB_SERIAL_VISOR=m ++CONFIG_USB_SERIAL_IPAQ=m ++CONFIG_USB_SERIAL_IR=m ++CONFIG_USB_SERIAL_EDGEPORT=m ++CONFIG_USB_SERIAL_EDGEPORT_TI=m ++CONFIG_USB_SERIAL_F81232=m ++CONFIG_USB_SERIAL_GARMIN=m ++CONFIG_USB_SERIAL_IPW=m ++CONFIG_USB_SERIAL_IUU=m ++CONFIG_USB_SERIAL_KEYSPAN_PDA=m ++CONFIG_USB_SERIAL_KEYSPAN=m ++CONFIG_USB_SERIAL_KLSI=m ++CONFIG_USB_SERIAL_KOBIL_SCT=m ++CONFIG_USB_SERIAL_MCT_U232=m ++CONFIG_USB_SERIAL_METRO=m ++CONFIG_USB_SERIAL_MOS7720=m ++CONFIG_USB_SERIAL_MOS7840=m ++CONFIG_USB_SERIAL_NAVMAN=m ++CONFIG_USB_SERIAL_PL2303=m ++CONFIG_USB_SERIAL_OTI6858=m ++CONFIG_USB_SERIAL_QCAUX=m ++CONFIG_USB_SERIAL_QUALCOMM=m ++CONFIG_USB_SERIAL_SPCP8X5=m ++CONFIG_USB_SERIAL_SAFE=m ++CONFIG_USB_SERIAL_SIERRAWIRELESS=m ++CONFIG_USB_SERIAL_SYMBOL=m ++CONFIG_USB_SERIAL_TI=m ++CONFIG_USB_SERIAL_CYBERJACK=m ++CONFIG_USB_SERIAL_XIRCOM=m ++CONFIG_USB_SERIAL_OPTION=m ++CONFIG_USB_SERIAL_OMNINET=m ++CONFIG_USB_SERIAL_OPTICON=m ++CONFIG_USB_SERIAL_XSENS_MT=m ++CONFIG_USB_SERIAL_WISHBONE=m ++CONFIG_USB_SERIAL_SSU100=m ++CONFIG_USB_SERIAL_QT2=m ++CONFIG_USB_SERIAL_DEBUG=m ++CONFIG_USB_EMI62=m ++CONFIG_USB_EMI26=m ++CONFIG_USB_ADUTUX=m ++CONFIG_USB_SEVSEG=m ++CONFIG_USB_RIO500=m ++CONFIG_USB_LEGOTOWER=m ++CONFIG_USB_LCD=m ++CONFIG_USB_CYPRESS_CY7C63=m ++CONFIG_USB_CYTHERM=m ++CONFIG_USB_IDMOUSE=m ++CONFIG_USB_FTDI_ELAN=m ++CONFIG_USB_APPLEDISPLAY=m ++CONFIG_USB_LD=m ++CONFIG_USB_TRANCEVIBRATOR=m ++CONFIG_USB_IOWARRIOR=m ++CONFIG_USB_TEST=m ++CONFIG_USB_ISIGHTFW=m ++CONFIG_USB_YUREX=m ++CONFIG_USB_ATM=m ++CONFIG_USB_SPEEDTOUCH=m ++CONFIG_USB_CXACRU=m ++CONFIG_USB_UEAGLEATM=m ++CONFIG_USB_XUSBATM=m ++CONFIG_MMC=y ++CONFIG_MMC_BLOCK_MINORS=32 ++CONFIG_MMC_BCM2835=y ++CONFIG_MMC_BCM2835_DMA=y ++CONFIG_MMC_BCM2835_SDHOST=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_PLTFM=y ++CONFIG_MMC_SPI=m ++CONFIG_LEDS_CLASS=y ++CONFIG_LEDS_GPIO=y ++CONFIG_LEDS_TRIGGER_TIMER=y ++CONFIG_LEDS_TRIGGER_ONESHOT=y ++CONFIG_LEDS_TRIGGER_HEARTBEAT=y ++CONFIG_LEDS_TRIGGER_BACKLIGHT=y ++CONFIG_LEDS_TRIGGER_CPU=y ++CONFIG_LEDS_TRIGGER_GPIO=y ++CONFIG_LEDS_TRIGGER_DEFAULT_ON=y ++CONFIG_LEDS_TRIGGER_TRANSIENT=m ++CONFIG_LEDS_TRIGGER_CAMERA=m ++CONFIG_LEDS_TRIGGER_INPUT=y ++CONFIG_LEDS_TRIGGER_PANIC=y ++CONFIG_RTC_CLASS=y ++# CONFIG_RTC_HCTOSYS is not set ++CONFIG_RTC_DRV_DS1307=m ++CONFIG_RTC_DRV_DS1374=m ++CONFIG_RTC_DRV_DS1672=m ++CONFIG_RTC_DRV_MAX6900=m ++CONFIG_RTC_DRV_RS5C372=m ++CONFIG_RTC_DRV_ISL1208=m ++CONFIG_RTC_DRV_ISL12022=m ++CONFIG_RTC_DRV_ISL12057=m ++CONFIG_RTC_DRV_X1205=m ++CONFIG_RTC_DRV_PCF8523=m ++CONFIG_RTC_DRV_PCF8563=m ++CONFIG_RTC_DRV_PCF8583=m ++CONFIG_RTC_DRV_M41T80=m ++CONFIG_RTC_DRV_BQ32K=m ++CONFIG_RTC_DRV_S35390A=m ++CONFIG_RTC_DRV_FM3130=m ++CONFIG_RTC_DRV_RX8581=m ++CONFIG_RTC_DRV_RX8025=m ++CONFIG_RTC_DRV_EM3027=m ++CONFIG_RTC_DRV_M41T93=m ++CONFIG_RTC_DRV_M41T94=m ++CONFIG_RTC_DRV_DS1302=m ++CONFIG_RTC_DRV_DS1305=m ++CONFIG_RTC_DRV_DS1390=m ++CONFIG_RTC_DRV_R9701=m ++CONFIG_RTC_DRV_RX4581=m ++CONFIG_RTC_DRV_RS5C348=m ++CONFIG_RTC_DRV_MAX6902=m ++CONFIG_RTC_DRV_PCF2123=m ++CONFIG_RTC_DRV_DS3232=m ++CONFIG_RTC_DRV_PCF2127=m ++CONFIG_RTC_DRV_RV3029C2=m ++CONFIG_DMADEVICES=y ++CONFIG_DMA_BCM2835=y ++CONFIG_DMA_BCM2708=y ++CONFIG_UIO=m ++CONFIG_UIO_PDRV_GENIRQ=m ++CONFIG_STAGING=y ++CONFIG_PRISM2_USB=m ++CONFIG_R8712U=m ++CONFIG_R8188EU=m ++CONFIG_R8723AU=m ++CONFIG_VT6656=m ++CONFIG_SPEAKUP=m ++CONFIG_SPEAKUP_SYNTH_SOFT=m ++CONFIG_STAGING_MEDIA=y ++CONFIG_LIRC_STAGING=y ++CONFIG_LIRC_IMON=m ++CONFIG_LIRC_RPI=m ++CONFIG_LIRC_SASEM=m ++CONFIG_LIRC_SERIAL=m ++CONFIG_FB_TFT=m ++CONFIG_FB_TFT_AGM1264K_FL=m ++CONFIG_FB_TFT_BD663474=m ++CONFIG_FB_TFT_HX8340BN=m ++CONFIG_FB_TFT_HX8347D=m ++CONFIG_FB_TFT_HX8353D=m ++CONFIG_FB_TFT_ILI9163=m ++CONFIG_FB_TFT_ILI9320=m ++CONFIG_FB_TFT_ILI9325=m ++CONFIG_FB_TFT_ILI9340=m ++CONFIG_FB_TFT_ILI9341=m ++CONFIG_FB_TFT_ILI9481=m ++CONFIG_FB_TFT_ILI9486=m ++CONFIG_FB_TFT_PCD8544=m ++CONFIG_FB_TFT_RA8875=m ++CONFIG_FB_TFT_S6D02A1=m ++CONFIG_FB_TFT_S6D1121=m ++CONFIG_FB_TFT_SSD1289=m ++CONFIG_FB_TFT_SSD1306=m ++CONFIG_FB_TFT_SSD1331=m ++CONFIG_FB_TFT_SSD1351=m ++CONFIG_FB_TFT_ST7735R=m ++CONFIG_FB_TFT_TINYLCD=m ++CONFIG_FB_TFT_TLS8204=m ++CONFIG_FB_TFT_UC1701=m ++CONFIG_FB_TFT_UPD161704=m ++CONFIG_FB_TFT_WATTEROTT=m ++CONFIG_FB_FLEX=m ++CONFIG_FB_TFT_FBTFT_DEVICE=m ++CONFIG_MAILBOX=y ++CONFIG_BCM2835_MBOX=y ++# CONFIG_IOMMU_SUPPORT is not set ++CONFIG_RASPBERRYPI_POWER=y ++CONFIG_EXTCON=m ++CONFIG_EXTCON_ARIZONA=m ++CONFIG_IIO=m ++CONFIG_IIO_BUFFER=y ++CONFIG_IIO_BUFFER_CB=m ++CONFIG_IIO_KFIFO_BUF=m ++CONFIG_MCP320X=m ++CONFIG_MCP3422=m ++CONFIG_DHT11=m ++CONFIG_PWM_BCM2835=m ++CONFIG_PWM_PCA9685=m ++CONFIG_RASPBERRYPI_FIRMWARE=y ++CONFIG_EXT4_FS=y ++CONFIG_EXT4_FS_POSIX_ACL=y ++CONFIG_EXT4_FS_SECURITY=y ++CONFIG_REISERFS_FS=m ++CONFIG_REISERFS_FS_XATTR=y ++CONFIG_REISERFS_FS_POSIX_ACL=y ++CONFIG_REISERFS_FS_SECURITY=y ++CONFIG_JFS_FS=m ++CONFIG_JFS_POSIX_ACL=y ++CONFIG_JFS_SECURITY=y ++CONFIG_JFS_STATISTICS=y ++CONFIG_XFS_FS=m ++CONFIG_XFS_QUOTA=y ++CONFIG_XFS_POSIX_ACL=y ++CONFIG_XFS_RT=y ++CONFIG_GFS2_FS=m ++CONFIG_OCFS2_FS=m ++CONFIG_BTRFS_FS=m ++CONFIG_BTRFS_FS_POSIX_ACL=y ++CONFIG_NILFS2_FS=m ++CONFIG_F2FS_FS=y ++CONFIG_FANOTIFY=y ++CONFIG_QFMT_V1=m ++CONFIG_QFMT_V2=m ++CONFIG_AUTOFS4_FS=y ++CONFIG_FUSE_FS=m ++CONFIG_CUSE=m ++CONFIG_OVERLAY_FS=m ++CONFIG_FSCACHE=y ++CONFIG_FSCACHE_STATS=y ++CONFIG_FSCACHE_HISTOGRAM=y ++CONFIG_CACHEFILES=y ++CONFIG_ISO9660_FS=m ++CONFIG_JOLIET=y ++CONFIG_ZISOFS=y ++CONFIG_UDF_FS=m ++CONFIG_MSDOS_FS=y ++CONFIG_VFAT_FS=y ++CONFIG_FAT_DEFAULT_IOCHARSET="ascii" ++CONFIG_NTFS_FS=m ++CONFIG_NTFS_RW=y ++CONFIG_TMPFS=y ++CONFIG_TMPFS_POSIX_ACL=y ++CONFIG_ECRYPT_FS=m ++CONFIG_HFS_FS=m ++CONFIG_HFSPLUS_FS=m ++CONFIG_JFFS2_FS=m ++CONFIG_JFFS2_SUMMARY=y ++CONFIG_UBIFS_FS=m ++CONFIG_SQUASHFS=m ++CONFIG_SQUASHFS_XATTR=y ++CONFIG_SQUASHFS_LZO=y ++CONFIG_SQUASHFS_XZ=y ++CONFIG_NFS_FS=y ++CONFIG_NFS_V3_ACL=y ++CONFIG_NFS_V4=y ++CONFIG_NFS_SWAP=y ++CONFIG_ROOT_NFS=y ++CONFIG_NFS_FSCACHE=y ++CONFIG_NFSD=m ++CONFIG_NFSD_V3_ACL=y ++CONFIG_NFSD_V4=y ++CONFIG_CIFS=m ++CONFIG_CIFS_WEAK_PW_HASH=y ++CONFIG_CIFS_UPCALL=y ++CONFIG_CIFS_XATTR=y ++CONFIG_CIFS_POSIX=y ++CONFIG_CIFS_ACL=y ++CONFIG_CIFS_DFS_UPCALL=y ++CONFIG_CIFS_SMB2=y ++CONFIG_CIFS_FSCACHE=y ++CONFIG_9P_FS=m ++CONFIG_9P_FS_POSIX_ACL=y ++CONFIG_NLS_DEFAULT="utf8" ++CONFIG_NLS_CODEPAGE_437=y ++CONFIG_NLS_CODEPAGE_737=m ++CONFIG_NLS_CODEPAGE_775=m ++CONFIG_NLS_CODEPAGE_850=m ++CONFIG_NLS_CODEPAGE_852=m ++CONFIG_NLS_CODEPAGE_855=m ++CONFIG_NLS_CODEPAGE_857=m ++CONFIG_NLS_CODEPAGE_860=m ++CONFIG_NLS_CODEPAGE_861=m ++CONFIG_NLS_CODEPAGE_862=m ++CONFIG_NLS_CODEPAGE_863=m ++CONFIG_NLS_CODEPAGE_864=m ++CONFIG_NLS_CODEPAGE_865=m ++CONFIG_NLS_CODEPAGE_866=m ++CONFIG_NLS_CODEPAGE_869=m ++CONFIG_NLS_CODEPAGE_936=m ++CONFIG_NLS_CODEPAGE_950=m ++CONFIG_NLS_CODEPAGE_932=m ++CONFIG_NLS_CODEPAGE_949=m ++CONFIG_NLS_CODEPAGE_874=m ++CONFIG_NLS_ISO8859_8=m ++CONFIG_NLS_CODEPAGE_1250=m ++CONFIG_NLS_CODEPAGE_1251=m ++CONFIG_NLS_ASCII=y ++CONFIG_NLS_ISO8859_1=m ++CONFIG_NLS_ISO8859_2=m ++CONFIG_NLS_ISO8859_3=m ++CONFIG_NLS_ISO8859_4=m ++CONFIG_NLS_ISO8859_5=m ++CONFIG_NLS_ISO8859_6=m ++CONFIG_NLS_ISO8859_7=m ++CONFIG_NLS_ISO8859_9=m ++CONFIG_NLS_ISO8859_13=m ++CONFIG_NLS_ISO8859_14=m ++CONFIG_NLS_ISO8859_15=m ++CONFIG_NLS_KOI8_R=m ++CONFIG_NLS_KOI8_U=m ++CONFIG_DLM=m ++CONFIG_PRINTK_TIME=y ++CONFIG_BOOT_PRINTK_DELAY=y ++CONFIG_DEBUG_MEMORY_INIT=y ++CONFIG_DETECT_HUNG_TASK=y ++CONFIG_TIMER_STATS=y ++CONFIG_IRQSOFF_TRACER=y ++CONFIG_SCHED_TRACER=y ++CONFIG_STACK_TRACER=y ++CONFIG_BLK_DEV_IO_TRACE=y ++# CONFIG_KPROBE_EVENT is not set ++CONFIG_FUNCTION_PROFILER=y ++CONFIG_KGDB=y ++CONFIG_KGDB_KDB=y ++CONFIG_KDB_KEYBOARD=y ++CONFIG_CRYPTO_USER=m ++CONFIG_CRYPTO_CBC=y ++CONFIG_CRYPTO_CTS=m ++CONFIG_CRYPTO_XTS=m ++CONFIG_CRYPTO_XCBC=m ++CONFIG_CRYPTO_TGR192=m ++CONFIG_CRYPTO_WP512=m ++CONFIG_CRYPTO_CAST5=m ++CONFIG_CRYPTO_DES=y ++CONFIG_CRYPTO_USER_API_SKCIPHER=m ++CONFIG_ARM64_CRYPTO=y ++CONFIG_CRC_ITU_T=y ++CONFIG_LIBCRC32C=y ++CONFIG_BCM2708_VCHIQ=n -From c53407334f9e4adfbef2ef65012f1b7e05d653ee Mon Sep 17 00:00:00 2001 +From 3d4788a08c14765335dfc93749bfa528ad9b5727 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Wed, 5 Oct 2016 16:10:59 +0100 +Subject: [PATCH 112/132] bcm2835-cpufreq: Only report a single frequency when + max and min frequencies are the same + +4.8 kernel gives EINV error when max and min frequencies are the same (e.g. from using force_turbo=1) +--- + drivers/cpufreq/bcm2835-cpufreq.c | 27 ++++++++++++++++----------- + 1 file changed, 16 insertions(+), 11 deletions(-) + +diff --git a/drivers/cpufreq/bcm2835-cpufreq.c b/drivers/cpufreq/bcm2835-cpufreq.c +index 3eb9e9326231b08e6ee95ad486485245c71cf868..414fbdc10dfbfc6e4bb47870a7af3fd5780f9c9a 100644 +--- a/drivers/cpufreq/bcm2835-cpufreq.c ++++ b/drivers/cpufreq/bcm2835-cpufreq.c +@@ -45,12 +45,8 @@ + + /* ---------- GLOBALS ---------- */ + static struct cpufreq_driver bcm2835_cpufreq_driver; /* the cpufreq driver global */ +- +-static struct cpufreq_frequency_table bcm2835_freq_table[] = { +- {0, 0, 0}, +- {0, 0, 0}, +- {0, 0, CPUFREQ_TABLE_END}, +-}; ++static unsigned int min_frequency, max_frequency; ++static struct cpufreq_frequency_table bcm2835_freq_table[3]; + + /* + =============================================== +@@ -155,10 +151,19 @@ static int bcm2835_cpufreq_driver_init(struct cpufreq_policy *policy) + } + + /* now find out what the maximum and minimum frequencies are */ +- bcm2835_freq_table[0].frequency = bcm2835_cpufreq_get_clock(RPI_FIRMWARE_GET_MIN_CLOCK_RATE); +- bcm2835_freq_table[1].frequency = bcm2835_cpufreq_get_clock(RPI_FIRMWARE_GET_MAX_CLOCK_RATE); ++ min_frequency = bcm2835_cpufreq_get_clock(RPI_FIRMWARE_GET_MIN_CLOCK_RATE); ++ max_frequency = bcm2835_cpufreq_get_clock(RPI_FIRMWARE_GET_MAX_CLOCK_RATE); ++ ++ if (min_frequency == max_frequency) { ++ bcm2835_freq_table[0].frequency = min_frequency; ++ bcm2835_freq_table[1].frequency = CPUFREQ_TABLE_END; ++ } else { ++ bcm2835_freq_table[0].frequency = min_frequency; ++ bcm2835_freq_table[1].frequency = max_frequency; ++ bcm2835_freq_table[2].frequency = CPUFREQ_TABLE_END; ++ } + +- print_info("min=%d max=%d\n", bcm2835_freq_table[0].frequency, bcm2835_freq_table[1].frequency); ++ print_info("min=%d max=%d\n", min_frequency, max_frequency); + return cpufreq_generic_init(policy, bcm2835_freq_table, transition_latency); + } + +@@ -170,7 +175,7 @@ static int bcm2835_cpufreq_driver_init(struct cpufreq_policy *policy) + + static int bcm2835_cpufreq_driver_target_index(struct cpufreq_policy *policy, unsigned int state) + { +- unsigned int target_freq = bcm2835_freq_table[state].frequency; ++ unsigned int target_freq = state == 0 ? min_frequency : max_frequency; + unsigned int cur = bcm2835_cpufreq_set_clock(policy->cur, target_freq); + + if (!cur) +@@ -192,7 +197,7 @@ static unsigned int bcm2835_cpufreq_driver_get(unsigned int cpu) + { + unsigned int actual_rate = bcm2835_cpufreq_get_clock(RPI_FIRMWARE_GET_CLOCK_RATE); + print_debug("cpu%d: freq=%d\n", cpu, actual_rate); +- return actual_rate <= bcm2835_freq_table[0].frequency ? bcm2835_freq_table[0].frequency : bcm2835_freq_table[1].frequency; ++ return actual_rate <= min_frequency ? min_frequency : max_frequency; + } + + /* the CPUFreq driver */ + +From d641ce51bafbff52c3753a17afadc0a99647054c Mon Sep 17 00:00:00 2001 From: Phil Elwell -Date: Fri, 1 Jul 2016 22:09:24 +0100 -Subject: [PATCH 101/160] spi-bcm2835: Disable forced software CS +Date: Fri, 7 Oct 2016 12:37:09 +0100 +Subject: [PATCH 113/132] scripts/mkknlimg: Change string for DDT detection -Select software CS in bcm2708_common.dtsi, and disable the automatic -conversion in the driver to allow hardware CS to be re-enabled with an -overlay. - -See: https://github.com/raspberrypi/linux/issues/1547 +The old "of_overlay_apply" string does not appear in 4.8 kernel builds. +"of_cfs_init" is both present and a more accurate indication of support +for dynamically loading overlays (although the trailer is now of little +practical use and the firmware assumes DT support and will look for +both .dtbo and -overlay.dtb overlays). Signed-off-by: Phil Elwell --- - drivers/spi/spi-bcm2835.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c -index 5dfe20ffc2866fa6789825016c585175a29705b6..8493474d286f7a1ac6454a22c61c8c2cef9121bf 100644 ---- a/drivers/spi/spi-bcm2835.c -+++ b/drivers/spi/spi-bcm2835.c -@@ -707,6 +707,7 @@ static int bcm2835_spi_setup(struct spi_device *spi) - return -EINVAL; - } - -+#if 0 - /* now translate native cs to GPIO */ - /* first look for chip select pins in the devices pin groups */ - for (pingroup_index = 0; -@@ -756,6 +757,7 @@ static int bcm2835_spi_setup(struct spi_device *spi) - spi->chip_select, spi->cs_gpio, err); - return err; - } -+#endif - - return 0; - } - -From 7dc49b126a62f072519ec83f6691a0daa6209d52 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Thu, 28 Jul 2016 11:39:51 +0100 -Subject: [PATCH 102/160] config: Enable CONFIG_USER_NS - ---- - arch/arm/configs/bcm2709_defconfig | 2 +- - arch/arm/configs/bcmrpi_defconfig | 1 + - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index af34386096ebc5b3c7d7cf60120e5ad48ba635b8..ed0b455b49f9efff4be980d8bdd59df4f5ee0639 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -22,6 +22,7 @@ CONFIG_CPUSETS=y - CONFIG_CGROUP_DEVICE=y - CONFIG_CGROUP_CPUACCT=y - CONFIG_NAMESPACES=y -+CONFIG_USER_NS=y - CONFIG_SCHED_AUTOGROUP=y - CONFIG_BLK_DEV_INITRD=y - CONFIG_EMBEDDED=y -@@ -586,7 +587,6 @@ CONFIG_BRCM_CHAR_DRIVERS=y - CONFIG_BCM_VC_CMA=y - CONFIG_BCM_VCIO=y - CONFIG_BCM_VC_SM=y --CONFIG_DEVPTS_MULTIPLE_INSTANCES=y - # CONFIG_LEGACY_PTYS is not set - # CONFIG_DEVKMEM is not set - CONFIG_SERIAL_8250=y -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index da2df3d30e15a55a34b45d3ebbf98e906da6379c..6c885f0518d0c015357a6fea1438841db344cc46 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -21,6 +21,7 @@ CONFIG_CPUSETS=y - CONFIG_CGROUP_DEVICE=y - CONFIG_CGROUP_CPUACCT=y - CONFIG_NAMESPACES=y -+CONFIG_USER_NS=y - CONFIG_SCHED_AUTOGROUP=y - CONFIG_BLK_DEV_INITRD=y - CONFIG_EMBEDDED=y - -From a24bf0818123c000e28c388484a4d7a5a0127b00 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Tue, 9 Aug 2016 22:19:28 +0100 -Subject: [PATCH 103/160] smsc95xx: Experimental: Enable turbo_mode and - packetsize=2560 by default - -See: http://forum.kodi.tv/showthread.php?tid=285288 ---- - drivers/net/usb/smsc95xx.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c -index d22a2324085fbf61fbd8920362bfc7b9f72bebe3..c846c55075387398d9bcb0957e31f5c82fd7d58d 100644 ---- a/drivers/net/usb/smsc95xx.c -+++ b/drivers/net/usb/smsc95xx.c -@@ -77,7 +77,7 @@ struct smsc95xx_priv { - struct usbnet *dev; - }; - --static bool turbo_mode = false; -+static bool turbo_mode = true; - module_param(turbo_mode, bool, 0644); - MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction"); - -@@ -85,7 +85,7 @@ static bool truesize_mode = false; - module_param(truesize_mode, bool, 0644); - MODULE_PARM_DESC(truesize_mode, "Report larger truesize value"); - --static int packetsize = 0; -+static int packetsize = 2560; - module_param(packetsize, int, 0644); - MODULE_PARM_DESC(packetsize, "Override the RX URB packet size"); - - -From 8cf87eb78e8572302fbac08b648d0dace2271484 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Fri, 12 Aug 2016 13:21:32 +0100 -Subject: [PATCH 104/160] smsc95xx: squash: Bump to packetsize=4096 - ---- - drivers/net/usb/smsc95xx.c | 2 +- + scripts/mkknlimg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c -index c846c55075387398d9bcb0957e31f5c82fd7d58d..e663cd24653411e502deb28d0ea9b8280223a008 100644 ---- a/drivers/net/usb/smsc95xx.c -+++ b/drivers/net/usb/smsc95xx.c -@@ -85,7 +85,7 @@ static bool truesize_mode = false; - module_param(truesize_mode, bool, 0644); - MODULE_PARM_DESC(truesize_mode, "Report larger truesize value"); - --static int packetsize = 2560; -+static int packetsize = 4096; - module_param(packetsize, int, 0644); - MODULE_PARM_DESC(packetsize, "Override the RX URB packet size"); +diff --git a/scripts/mkknlimg b/scripts/mkknlimg +index 78c5845d2f01deb04b477327d83fa60624f87f98..a21f7e31bc904233e980e66ae3e6337e2eab0f1c 100755 +--- a/scripts/mkknlimg ++++ b/scripts/mkknlimg +@@ -77,7 +77,7 @@ my $wanted_strings = + 'brcm,bcm2709' => FLAG_PI | FLAG_DTOK | FLAG_270X, + 'brcm,bcm2835' => FLAG_PI | FLAG_DTOK | FLAG_283X, + 'brcm,bcm2836' => FLAG_PI | FLAG_DTOK | FLAG_283X, +- 'of_overlay_apply' => FLAG_DTOK | FLAG_DDTK, ++ 'of_cfs_init' => FLAG_DTOK | FLAG_DDTK, + }; + my $res = try_extract($kernel_file, $tmpfile1); -From d8f0a80d32990be89ba76ec30de2811d28592773 Mon Sep 17 00:00:00 2001 -From: James Adams -Date: Fri, 12 Aug 2016 14:35:00 +0100 -Subject: [PATCH 105/160] Add cm3 dts file +From 1287cce8ba7a9380c5f4ea084970f6f3689c945a Mon Sep 17 00:00:00 2001 +From: Herve Jourdain +Date: Fri, 20 May 2016 16:02:23 +0800 +Subject: [PATCH 114/132] build: support for .dtbo files for dtb overlays +Kernel 4.4.6+ on RaspberryPi support .dtbo files for overlays, instead of .dtb. +Patch the kernel, which has faulty rules to generate .dtbo the way yocto does + +Signed-off-by: Herve Jourdain +Signed-off-by: Khem Raj --- - arch/arm/boot/dts/Makefile | 1 + - arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 176 ++++++++++++++++++++++++++++++++++ - 2 files changed, 177 insertions(+) - create mode 100644 arch/arm/boot/dts/bcm2710-rpi-cm3.dts + arch/arm/Makefile | 2 ++ + scripts/Makefile.lib | 5 +++-- + 2 files changed, 5 insertions(+), 2 deletions(-) -diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index 93f2529ccbdfedb4b4e54898abf44911b47d2656..1bebcca8565b04fbf8ff2c276646525c3ddd25ad 100644 ---- a/arch/arm/boot/dts/Makefile -+++ b/arch/arm/boot/dts/Makefile -@@ -6,6 +6,7 @@ dtb-$(CONFIG_ARCH_BCM2708) += bcm2708-rpi-cm.dtb - dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-cm.dtb - dtb-$(CONFIG_ARCH_BCM2709) += bcm2709-rpi-2-b.dtb - dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-3-b.dtb -+dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-cm3.dtb +diff --git a/arch/arm/Makefile b/arch/arm/Makefile +index d1e45094ab4338f95dab09e81d358cd723f5eb3d..275c53561cd7c3b1f52a60c95b5fb287fb3ccb62 100644 +--- a/arch/arm/Makefile ++++ b/arch/arm/Makefile +@@ -337,6 +337,8 @@ $(INSTALL_TARGETS): - # Raspberry Pi - ifeq ($(CONFIG_ARCH_BCM2708),y) -diff --git a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts + %.dtb: | scripts + $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@ ++%.dtbo: | scripts ++ $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@ + + PHONY += dtbs dtbs_install + +diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib +index 1d949b7410600dd3b04a3acde8c41cfead15bfa4..1967878a843461c3ff1f473b9a030eb01b7c726e 100644 +--- a/scripts/Makefile.lib ++++ b/scripts/Makefile.lib +@@ -313,8 +313,9 @@ $(obj)/%.dtb: $(src)/%.dts FORCE + $(call if_changed_dep,dtc) + + quiet_cmd_dtco = DTCO $@ +-cmd_dtco = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ +- $(objtree)/scripts/dtc/dtc -@ -H epapr -O dtb -o $@ -b 0 \ ++cmd_dtco = mkdir -p $(dir ${dtc-tmp}) ; \ ++ $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ ++ $(DTC) -@ -H epapr -O dtb -o $@ -b 0 \ + -i $(dir $<) $(DTC_FLAGS) \ + -d $(depfile).dtc.tmp $(dtc-tmp) ; \ + cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) + +From aca001dfcac9cb9d81bb23fcdb41837315880d05 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Thu, 6 Oct 2016 19:42:55 -0700 +Subject: [PATCH 115/132] [media]bcm2835-camera: fix compilation warning/werror + +| /a/builder/mnt/build/tmp-glibc/work-shared/raspberrypi3/kernel-source/drivers/media/platform/bcm2835/bcm2835-camera.c:656:17: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types +] +| .queue_setup = queue_setup, +| ^~~~~~~~~~~ +| /a/builder/mnt/build/tmp-glibc/work-shared/raspberrypi3/kernel-source/drivers/media/platform/bcm2835/bcm28 +35-camera.c:656:17: note: (near initialization for 'bm2835_mmal_video_qops.queue_setup') + +use struct device* instead of void* + +Signed-off-by: Khem Raj +--- + drivers/media/platform/bcm2835/bcm2835-camera.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/media/platform/bcm2835/bcm2835-camera.c b/drivers/media/platform/bcm2835/bcm2835-camera.c +index 70f4db2741037381e638d1dda5a95478809eb161..cb5bab642eaab2f60d641801dd0afdac45b7698f 100644 +--- a/drivers/media/platform/bcm2835/bcm2835-camera.c ++++ b/drivers/media/platform/bcm2835/bcm2835-camera.c +@@ -244,7 +244,7 @@ static struct mmal_fmt *get_format(struct v4l2_format *f) + + static int queue_setup(struct vb2_queue *vq, + unsigned int *nbuffers, unsigned int *nplanes, +- unsigned int sizes[], void *alloc_ctxs[]) ++ unsigned int sizes[], struct device *alloc_ctxs[]) + { + struct bm2835_mmal_dev *dev = vb2_get_drv_priv(vq); + unsigned long size; + +From a2d7512325a468f024a172cdfc033511c62b088c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Sat, 8 Oct 2016 16:26:46 +0200 +Subject: [PATCH 116/132] bcm2709: Drop platform smp and timer init code +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +irq-bcm2836 handles this through these functions: +bcm2835_init_local_timer_frequency() +bcm2836_arm_irqchip_smp_init() + +Signed-off-by: Noralf Trønnes +--- + arch/arm/mach-bcm2709/bcm2709.c | 126 ---------------------------------------- + 1 file changed, 126 deletions(-) + +diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c +index 90773a30b87abbfda1615326c6faf59b9db6d68e..d4c9d57d78a964fbbf799b534471462d3c3b88f1 100644 +--- a/arch/arm/mach-bcm2709/bcm2709.c ++++ b/arch/arm/mach-bcm2709/bcm2709.c +@@ -208,19 +208,6 @@ void __init bcm2709_init(void) + system_serial_low = serial; + } + +-static void __init bcm2709_timer_init(void) +-{ +- // timer control +- writel(0, __io_address(ARM_LOCAL_CONTROL)); +- // timer pre_scaler +- writel(0x80000000, __io_address(ARM_LOCAL_PRESCALER)); // 19.2MHz +- //writel(0x06AAAAAB, __io_address(ARM_LOCAL_PRESCALER)); // 1MHz +- +- of_clk_init(NULL); +- clocksource_probe(); +-} +- +- + void __init bcm2709_init_early(void) + { + /* +@@ -236,111 +223,6 @@ static void __init board_reserve(void) + vc_cma_reserve(); + } + +- +-#ifdef CONFIG_SMP +-#include +- +-#include +-#include +-int dc4=0; +-//void dc4_log(unsigned x) { if (dc4) writel((x), __io_address(ST_BASE+10 + raw_smp_processor_id()*4)); } +-void dc4_log_dead(unsigned x) { if (dc4) writel((readl(__io_address(ST_BASE+0x10 + raw_smp_processor_id()*4)) & 0xffff) | ((x)<<16), __io_address(ST_BASE+0x10 + raw_smp_processor_id()*4)); } +- +-static void bcm2835_send_doorbell(const struct cpumask *mask, unsigned int irq) +-{ +- int cpu; +- /* +- * Ensure that stores to Normal memory are visible to the +- * other CPUs before issuing the IPI. +- */ +- dsb(); +- +- /* Convert our logical CPU mask into a physical one. */ +- for_each_cpu(cpu, mask) +- { +- /* submit softirq */ +- writel(1<%x)\n", __FUNCTION__, (unsigned)virt_to_phys((void *)secondary_startup), (unsigned)__io_address(ST_BASE + 0x10)); +- printk("[%s] ncores=%d\n", __FUNCTION__, ncores); +- +- for (i = 0; i < ncores; i++) { +- set_cpu_possible(i, true); +- /* enable IRQ (not FIQ) */ +- writel(0x1, __io_address(ARM_LOCAL_MAILBOX_INT_CONTROL0 + 0x4 * i)); +- //writel(0xf, __io_address(ARM_LOCAL_TIMER_INT_CONTROL0 + 0x4 * i)); +- } +- set_smp_cross_call(bcm2835_send_doorbell); +-} +- +-/* +- * for arch/arm/kernel/smp.c:smp_prepare_cpus(unsigned int max_cpus) +- */ +-void __init bcm2709_smp_prepare_cpus(unsigned int max_cpus) +-{ +- //void __iomem *scu_base; +- +- printk("[%s] enter\n", __FUNCTION__); +- //scu_base = scu_base_addr(); +- //scu_enable(scu_base); +-} +- +-/* +- * for linux/arch/arm/kernel/smp.c:secondary_start_kernel(void) +- */ +-void __init bcm2709_secondary_init(unsigned int cpu) +-{ +- printk("[%s] enter cpu:%d\n", __FUNCTION__, cpu); +- //gic_secondary_init(0); +-} +- +-/* +- * for linux/arch/arm/kernel/smp.c:__cpu_up(..) +- */ +-int __init bcm2709_boot_secondary(unsigned int cpu, struct task_struct *idle) +-{ +- void secondary_startup(void); +- void *mbox_set = __io_address(ARM_LOCAL_MAILBOX3_SET0 + 0x10 * MPIDR_AFFINITY_LEVEL(cpu_logical_map(cpu), 0)); +- void *mbox_clr = __io_address(ARM_LOCAL_MAILBOX3_CLR0 + 0x10 * MPIDR_AFFINITY_LEVEL(cpu_logical_map(cpu), 0)); +- unsigned secondary_boot = (unsigned)virt_to_phys((void *)secondary_startup); +- int timeout=20; +- unsigned t = -1; +- //printk("[%s] enter cpu:%d (%x->%p) %x\n", __FUNCTION__, cpu, secondary_boot, wake, readl(wake)); +- +- dsb(); +- BUG_ON(readl(mbox_clr) != 0); +- writel(secondary_boot, mbox_set); +- +- while (--timeout > 0) { +- t = readl(mbox_clr); +- if (t == 0) break; +- cpu_relax(); +- } +- if (timeout==0) +- printk("[%s] cpu:%d failed to start (%x)\n", __FUNCTION__, cpu, t); +- else +- printk("[%s] cpu:%d started (%x) %d\n", __FUNCTION__, cpu, t, timeout); +- +- return 0; +-} +- +- +-struct smp_operations bcm2709_smp_ops __initdata = { +- .smp_init_cpus = bcm2709_smp_init_cpus, +- .smp_prepare_cpus = bcm2709_smp_prepare_cpus, +- .smp_secondary_init = bcm2709_secondary_init, +- .smp_boot_secondary = bcm2709_boot_secondary, +-}; +-#endif +- + static const char * const bcm2709_compat[] = { + "brcm,bcm2709", + "brcm,bcm2708", /* Could use bcm2708 in a pinch */ +@@ -349,11 +231,7 @@ static const char * const bcm2709_compat[] = { + + MACHINE_START(BCM2709, "BCM2709") + /* Maintainer: Broadcom Europe Ltd. */ +-#ifdef CONFIG_SMP +- .smp = smp_ops(bcm2709_smp_ops), +-#endif + .map_io = bcm2709_map_io, +- .init_time = bcm2709_timer_init, + .init_machine = bcm2709_init, + .init_early = bcm2709_init_early, + .reserve = board_reserve, +@@ -363,11 +241,7 @@ MACHINE_END + + MACHINE_START(BCM2708, "BCM2709") + /* Maintainer: Broadcom Europe Ltd. */ +-#ifdef CONFIG_SMP +- .smp = smp_ops(bcm2709_smp_ops), +-#endif + .map_io = bcm2709_map_io, +- .init_time = bcm2709_timer_init, + .init_machine = bcm2709_init, + .init_early = bcm2709_init_early, + .reserve = board_reserve, + +From a1d5fc5c451e0aad95ff571f74cc9a6c8779d183 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Mon, 3 Oct 2016 17:53:15 +0200 +Subject: [PATCH 117/132] BCM270X_DT: Use bcm283x.dtsi, bcm2835.dtsi and + bcm2836.dtsi +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The mainline Device Tree files are quite close to downstream now. +Let's use bcm283x.dtsi, bcm2835.dtsi and bcm2836.dtsi as base files +for our dts files. + +Mainline dts files are based on these files: + + bcm2835-rpi.dtsi + bcm2835.dtsi bcm2836.dtsi + bcm283x.dtsi + +Current downstream are based on these: + + bcm2708.dtsi bcm2709.dtsi bcm2710.dtsi + bcm2708_common.dtsi + +This patch introduces this dependency: + + bcm2708.dtsi bcm2709.dtsi + bcm2708-rpi.dtsi + bcm270x.dtsi + bcm2835.dtsi bcm2836.dtsi + bcm283x.dtsi + +And: + bcm2710.dtsi + bcm2708-rpi.dtsi + bcm270x.dtsi + bcm283x.dtsi + +bcm270x.dtsi contains the downstream bcm283x.dtsi diff. +bcm2708-rpi.dtsi is the downstream version of bcm2835-rpi.dtsi. + +Other changes: +- The led node has moved from /soc/leds to /leds. This is not a problem + since the label is used to reference it. +- The clk_osc reg property changes from 6 to 3. +- The gpu nodes has their interrupt property set in the base file. +- the clocks label does not point to the /clocks node anymore, but + points to the cprman node. This is not a problem since the overlays + that use the clock node refer to it directly: target-path = "/clocks"; +- some nodes now have 2 labels since mainline and downstream differs in + this respect: cprman/clocks, spi0/spi, gpu/vc4. +- some nodes doesn't have an explicit status = "okay" since they're not + disabled in the base file: watchdog and random. +- gpiomem doesn't need an explicit status = "okay". +- bcm2708-rpi-cm.dts got the hpd-gpios property from bcm2708_common.dtsi, + it's now set directly in that file. +- bcm2709-rpi-2-b.dts has the timer node moved from /soc/timer to /timer. +- Removed clock-frequency property on the bcm{2709,2710}.dtsi timer nodes. + +Signed-off-by: Noralf Trønnes +--- + arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 5 - + arch/arm/boot/dts/bcm2708-rpi-b.dts | 5 - + arch/arm/boot/dts/bcm2708-rpi-cm.dts | 5 +- + arch/arm/boot/dts/bcm2708-rpi.dtsi | 105 ++++++++ + arch/arm/boot/dts/bcm2708.dtsi | 28 +- + arch/arm/boot/dts/bcm2708_common.dtsi | 436 ------------------------------- + arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 5 - + arch/arm/boot/dts/bcm2709.dtsi | 90 +------ + arch/arm/boot/dts/bcm270x.dtsi | 142 ++++++++++ + arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 5 - + arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 5 - + arch/arm/boot/dts/bcm2710.dtsi | 28 +- + 12 files changed, 272 insertions(+), 587 deletions(-) + mode change 100755 => 100644 arch/arm/boot/dts/bcm2708-rpi-cm.dts + create mode 100644 arch/arm/boot/dts/bcm2708-rpi.dtsi + delete mode 100644 arch/arm/boot/dts/bcm2708_common.dtsi + create mode 100644 arch/arm/boot/dts/bcm270x.dtsi + +diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts +index 6c16c325cd2887a42c42665273834618c1937918..6bd8df44dc9163589074c1dec8a3ec69a47fb458 100644 +--- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts ++++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts +@@ -98,15 +98,10 @@ + }; + + &i2s { +- #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; + }; + +-&random { +- status = "okay"; +-}; +- + &leds { + act_led: act { + label = "led0"; +diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts +index 7c132437671d43e76445a4bf1184cc9a316b0965..ba80832726004b1b0719f570a7d8b3a390344d56 100644 +--- a/arch/arm/boot/dts/bcm2708-rpi-b.dts ++++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts +@@ -98,15 +98,10 @@ + }; + + &i2s { +- #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; + }; + +-&random { +- status = "okay"; +-}; +- + &leds { + act_led: act { + label = "led0"; +diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dts b/arch/arm/boot/dts/bcm2708-rpi-cm.dts +old mode 100755 +new mode 100644 +index ce9f54ff7e4ce76ad25ad0a19cf2ad48ba9df01a..eb8662f0d222b4c0a9a2bcb8bccb13e86a0006b3 +--- a/arch/arm/boot/dts/bcm2708-rpi-cm.dts ++++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts +@@ -81,13 +81,12 @@ + }; + + &i2s { +- #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; + }; + +-&random { +- status = "okay"; ++&hdmi { ++ hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>; + }; + + / { +diff --git a/arch/arm/boot/dts/bcm2708-rpi.dtsi b/arch/arm/boot/dts/bcm2708-rpi.dtsi new file mode 100644 -index 0000000000000000000000000000000000000000..6a3d2f21295a63e9211638b9e4ba202753c8181b +index 0000000000000000000000000000000000000000..d85c05901c8f55f822b89c32d198f15559a2b4b0 --- /dev/null -+++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -@@ -0,0 +1,176 @@ -+/dts-v1/; ++++ b/arch/arm/boot/dts/bcm2708-rpi.dtsi +@@ -0,0 +1,105 @@ ++/* Downstream version of bcm2835-rpi.dtsi */ + -+#include "bcm2710.dtsi" ++#include + +/ { -+ compatible = "brcm,bcm2710","brcm,bcm2709"; -+ model = "Raspberry Pi Compute Module 3"; -+}; -+ -+&gpio { -+ -+ mmc_pins: mmc_pins { -+ brcm,pins = <48 49 50 51 52 53>; -+ brcm,function = <7>; /* alt3 */ -+ brcm,pull = <0 2 2 2 2 2>; ++ memory { ++ device_type = "memory"; ++ reg = <0x0 0x0>; + }; + -+ spi0_pins: spi0_pins { -+ brcm,pins = <9 10 11>; -+ brcm,function = <4>; /* alt0 */ ++ aliases { ++ audio = &audio; ++ aux = &aux; ++ sound = &sound; ++ soc = &soc; ++ dma = &dma; ++ intc = &intc; ++ watchdog = &watchdog; ++ random = &random; ++ mailbox = &mailbox; ++ gpio = &gpio; ++ uart0 = &uart0; ++ sdhost = &sdhost; ++ i2s = &i2s; ++ spi0 = &spi0; ++ i2c0 = &i2c0; ++ uart1 = &uart1; ++ spi1 = &spi1; ++ spi2 = &spi2; ++ mmc = &mmc; ++ i2c1 = &i2c1; ++ i2c2 = &i2c2; ++ usb = &usb; ++ leds = &leds; ++ fb = &fb; ++ vchiq = &vchiq; ++ thermal = &thermal; + }; + -+ spi0_cs_pins: spi0_cs_pins { -+ brcm,pins = <8 7>; -+ brcm,function = <1>; /* output */ ++ leds: leds { ++ compatible = "gpio-leds"; + }; + -+ i2c0_pins: i2c0 { -+ brcm,pins = <0 1>; -+ brcm,function = <4>; ++ soc { ++ gpiomem { ++ compatible = "brcm,bcm2835-gpiomem"; ++ reg = <0x7e200000 0x1000>; ++ }; ++ ++ firmware: firmware { ++ compatible = "raspberrypi,bcm2835-firmware"; ++ mboxes = <&mailbox>; ++ }; ++ ++ power: power { ++ compatible = "raspberrypi,bcm2835-power"; ++ firmware = <&firmware>; ++ #power-domain-cells = <1>; ++ }; ++ ++ fb: fb { ++ compatible = "brcm,bcm2708-fb"; ++ firmware = <&firmware>; ++ status = "disabled"; ++ }; ++ ++ vchiq: vchiq { ++ compatible = "brcm,bcm2835-vchiq"; ++ reg = <0x7e00b840 0xf>; ++ interrupts = <0 2>; ++ cache-line-size = <32>; ++ firmware = <&firmware>; ++ }; ++ ++ thermal: thermal { ++ compatible = "brcm,bcm2835-thermal"; ++ firmware = <&firmware>; ++ }; ++ ++ /* Onboard audio */ ++ audio: audio { ++ compatible = "brcm,bcm2835-audio"; ++ brcm,pwm-channels = <8>; ++ status = "disabled"; ++ }; ++ ++ /* External sound card */ ++ sound: sound { ++ status = "disabled"; ++ }; ++ + }; + -+ i2c1_pins: i2c1 { -+ brcm,pins = <2 3>; -+ brcm,function = <4>; -+ }; -+ -+ i2s_pins: i2s { -+ brcm,pins = <18 19 20 21>; -+ brcm,function = <4>; /* alt0 */ -+ }; -+ -+ uart0_pins: uart0_pins { -+ brcm,pins; -+ brcm,function; -+ brcm,pull = <0 2>; -+ }; -+ -+ audio_pins: audio_pins { -+ brcm,pins; -+ brcm,function; ++ __overrides__ { ++ cache_line_size = <&vchiq>, "cache-line-size:0"; + }; +}; + -+&mmc { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc_pins>; -+ non-removable; -+ bus-width = <4>; -+ status = "okay"; -+ brcm,overclock-50 = <0>; -+}; -+ -+&soc { -+ virtgpio: virtgpio { -+ compatible = "brcm,bcm2835-virtgpio"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ firmware = <&firmware>; -+ status = "okay"; -+ }; -+}; -+ -+&fb { -+ status = "okay"; -+}; -+ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pins>; -+ status = "okay"; -+}; -+ -+&spi0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi0_pins &spi0_cs_pins>; -+ cs-gpios = <&gpio 8 1>, <&gpio 7 1>; -+ -+ spidev0: spidev@0{ -+ compatible = "spidev"; -+ reg = <0>; /* CE0 */ -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spi-max-frequency = <500000>; -+ }; -+ -+ spidev1: spidev@1{ -+ compatible = "spidev"; -+ reg = <1>; /* CE1 */ -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spi-max-frequency = <500000>; -+ }; -+}; -+ -+&i2c0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c0_pins>; -+ clock-frequency = <100000>; -+}; -+ -+&i2c1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins>; -+ clock-frequency = <100000>; -+}; -+ -+&i2c2 { -+ clock-frequency = <100000>; -+}; -+ -+&i2s { -+ #sound-dai-cells = <0>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2s_pins>; -+}; -+ -+&random { -+ status = "okay"; -+}; -+ -+&leds { -+ act_led: act { -+ label = "led0"; -+ linux,default-trigger = "mmc0"; -+ gpios = <&virtgpio 0 0>; -+ }; ++&dma { ++ brcm,dma-channel-mask = <0x7f34>; +}; + +&hdmi { -+ hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>; -+}; -+ -+&audio { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&audio_pins>; ++ power-domains = <&power RPI_POWER_DOMAIN_HDMI>; +}; +diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi +index f5a44cd4fef0ee221ed6ae1c43ca81dabffa110d..1bd2a707ef5c0d92f233296e6312916f5a550bd2 100644 +--- a/arch/arm/boot/dts/bcm2708.dtsi ++++ b/arch/arm/boot/dts/bcm2708.dtsi +@@ -1,16 +1,14 @@ +-#include "bcm2708_common.dtsi" ++#include "bcm2835.dtsi" ++#include "bcm270x.dtsi" ++#include "bcm2708-rpi.dtsi" + + / { + compatible = "brcm,bcm2708"; + model = "BCM2708"; + +- chosen { +- /* No padding required - the boot loader can do that. */ +- bootargs = ""; +- }; +- + soc { + ranges = <0x7e000000 0x20000000 0x01000000>; ++ /delete-property/ dma-ranges; + + timer@7e003000 { + compatible = "brcm,bcm2835-system-timer"; +@@ -18,23 +16,7 @@ + interrupts = <1 0>, <1 1>, <1 2>, <1 3>; + clock-frequency = <1000000>; + }; +- +- arm-pmu { +- compatible = "arm,arm1176-pmu"; +- }; +- +- gpiomem { +- compatible = "brcm,bcm2835-gpiomem"; +- reg = <0x7e200000 0x1000>; +- status = "okay"; +- }; + }; +-}; +- +-&intc { +- compatible = "brcm,bcm2835-armctrl-ic"; +-}; + +-&watchdog { +- status = "okay"; ++ /delete-node/ cpus; + }; +diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi +deleted file mode 100644 +index 6081b2aeb7ab1e1821506bcb93d36de13b5717ef..0000000000000000000000000000000000000000 +--- a/arch/arm/boot/dts/bcm2708_common.dtsi ++++ /dev/null +@@ -1,436 +0,0 @@ +-#include "dt-bindings/clock/bcm2835.h" +-#include +-#include "dt-bindings/power/raspberrypi-power.h" +-#include "dt-bindings/gpio/gpio.h" +-#include "skeleton.dtsi" +- +-/ { +- interrupt-parent = <&intc>; +- +- aliases { +- audio = &audio; +- aux = &aux; +- sound = &sound; +- soc = &soc; +- dma = &dma; +- intc = &intc; +- watchdog = &watchdog; +- random = &random; +- mailbox = &mailbox; +- gpio = &gpio; +- uart0 = &uart0; +- sdhost = &sdhost; +- i2s = &i2s; +- spi0 = &spi0; +- i2c0 = &i2c0; +- uart1 = &uart1; +- spi1 = &spi1; +- spi2 = &spi2; +- mmc = &mmc; +- i2c1 = &i2c1; +- i2c2 = &i2c2; +- usb = &usb; +- leds = &leds; +- fb = &fb; +- vchiq = &vchiq; +- thermal = &thermal; +- clocks = &clocks; +- }; +- +- soc: soc { +- compatible = "simple-bus"; +- #address-cells = <1>; +- #size-cells = <1>; +- +- dma: dma@7e007000 { +- compatible = "brcm,bcm2835-dma"; +- reg = <0x7e007000 0xf00>; +- interrupts = <1 16>, +- <1 17>, +- <1 18>, +- <1 19>, +- <1 20>, +- <1 21>, +- <1 22>, +- <1 23>, +- <1 24>, +- <1 25>, +- <1 26>, +- /* dma channel 11-14 share one irq */ +- <1 27>, +- <1 27>, +- <1 27>, +- <1 27>, +- /* unused shared irq for all channels */ +- <1 28>; +- interrupt-names = "dma0", +- "dma1", +- "dma2", +- "dma3", +- "dma4", +- "dma5", +- "dma6", +- "dma7", +- "dma8", +- "dma9", +- "dma10", +- "dma11", +- "dma12", +- "dma13", +- "dma14", +- "dma-shared-all"; +- +- #dma-cells = <1>; +- brcm,dma-channel-mask = <0x7f34>; +- }; +- +- intc: interrupt-controller@7e00b200 { +-#ifdef RPI364 +- compatible = "brcm,bcm2835-armctrl-ic", "brcm,bcm2708-armctrl-ic"; +-#else +- compatible = "brcm,bcm2708-armctrl-ic"; +-#endif +- reg = <0x7e00b200 0x200>; +- interrupt-controller; +- #interrupt-cells = <2>; +- }; +- +- mailbox: mailbox@7e00b800 { +- compatible = "brcm,bcm2835-mbox"; +- reg = <0x7e00b880 0x40>; +- interrupts = <0 1>; +- #mbox-cells = <0>; +- }; +- +- watchdog: watchdog@7e100000 { +- compatible = "brcm,bcm2835-pm-wdt"; +- reg = <0x7e100000 0x28>; +- status = "disabled"; +- }; +- +- cprman: cprman@7e101000 { +- compatible = "brcm,bcm2835-cprman"; +- #clock-cells = <1>; +- reg = <0x7e101000 0x2000>; +- +- /* CPRMAN derives everything from the platform's +- * oscillator. +- */ +- clocks = <&clk_osc>; +- }; +- +- random: rng@7e104000 { +- compatible = "brcm,bcm2835-rng"; +- reg = <0x7e104000 0x10>; +- status = "disabled"; +- }; +- +- gpio: gpio@7e200000 { +- compatible = "brcm,bcm2835-gpio"; +- reg = <0x7e200000 0xb4>; +- interrupts = <2 17>, <2 18>; +- +- gpio-controller; +- #gpio-cells = <2>; +- +- interrupt-controller; +- #interrupt-cells = <2>; +- }; +- +- uart0: serial@7e201000 { +- compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; +- reg = <0x7e201000 0x1000>; +- interrupts = <2 25>; +- clocks = <&cprman BCM2835_CLOCK_UART>, +- <&cprman BCM2835_CLOCK_VPU>; +- clock-names = "uartclk","apb_pclk"; +- arm,primecell-periphid = <0x00241011>; // For an explanation, see +- // https://github.com/raspberrypi/linux/commit/13731d862cf5219216533a3b0de052cee4cc5038 +- status = "disabled"; +- }; +- +- sdhost: sdhost@7e202000 { +- compatible = "brcm,bcm2835-sdhost"; +- reg = <0x7e202000 0x100>; +- interrupts = <2 24>; +- clocks = <&cprman BCM2835_CLOCK_VPU>; +- dmas = <&dma 13>; +- dma-names = "rx-tx"; +- brcm,overclock-50 = <0>; +- brcm,pio-limit = <1>; +- status = "disabled"; +- }; +- +- i2s: i2s@7e203000 { +- compatible = "brcm,bcm2835-i2s"; +- #sound-dai-cells = <0>; +- reg = <0x7e203000 0x24>; +- clocks = <&cprman BCM2835_CLOCK_PCM>; +- +- dmas = <&dma 2>, <&dma 3>; +- dma-names = "tx", "rx"; +- status = "disabled"; +- }; +- +- spi0: spi@7e204000 { +- compatible = "brcm,bcm2835-spi"; +- reg = <0x7e204000 0x1000>; +- interrupts = <2 22>; +- clocks = <&cprman BCM2835_CLOCK_VPU>; +- #address-cells = <1>; +- #size-cells = <0>; +- status = "disabled"; +- /* the dma channels */ +- dmas = <&dma 6>, <&dma 7>; +- dma-names = "tx", "rx"; +- /* the chipselects used - <0> means native GPIO +- * add more gpios if necessary as <&gpio 6 1> +- * (but do not forget to make them output!) +- */ +- cs-gpios = <&gpio 8 1>, <&gpio 7 1>; +- }; +- +- i2c0: i2c@7e205000 { +- compatible = "brcm,bcm2708-i2c"; +- reg = <0x7e205000 0x1000>; +- interrupts = <2 21>; +- clocks = <&cprman BCM2835_CLOCK_VPU>; +- #address-cells = <1>; +- #size-cells = <0>; +- status = "disabled"; +- }; +- +- pixelvalve0: pixelvalve@7e206000 { +- compatible = "brcm,bcm2835-pixelvalve0"; +- reg = <0x7e206000 0x100>; +- status = "disabled"; +- }; +- +- dpi: dpi@7e208000 { +- compatible = "brcm,bcm2835-dpi"; +- reg = <0x7e208000 0x8c>; +- clocks = <&cprman BCM2835_CLOCK_VPU>, +- <&cprman BCM2835_CLOCK_DPI>; +- clock-names = "core", "pixel"; +- #address-cells = <1>; +- #size-cells = <0>; +- status = "disabled"; +- }; +- +- pixelvalve1: pixelvalve@7e207000 { +- compatible = "brcm,bcm2835-pixelvalve1"; +- reg = <0x7e207000 0x100>; +- status = "disabled"; +- }; +- +- pwm: pwm@7e20c000 { +- compatible = "brcm,bcm2835-pwm"; +- reg = <0x7e20c000 0x28>; +- clocks = <&cprman BCM2835_CLOCK_PWM>; +- assigned-clocks = <&cprman BCM2835_CLOCK_PWM>; +- assigned-clock-rates = <10000000>; +- #pwm-cells = <2>; +- status = "disabled"; +- }; +- +- aux: aux@0x7e215000 { +- compatible = "brcm,bcm2835-aux"; +- #clock-cells = <1>; +- reg = <0x7e215000 0x8>; +- clocks = <&cprman BCM2835_CLOCK_VPU>; +- }; +- +- uart1: serial@7e215040 { +- compatible = "brcm,bcm2835-aux-uart"; +- reg = <0x7e215040 0x40>; +- interrupts = <1 29>; +- clocks = <&aux BCM2835_AUX_CLOCK_UART>; +- status = "disabled"; +- }; +- +- spi1: spi@7e215080 { +- compatible = "brcm,bcm2835-aux-spi"; +- reg = <0x7e215080 0x40>; +- interrupts = <1 29>; +- clocks = <&aux BCM2835_AUX_CLOCK_SPI1>; +- #address-cells = <1>; +- #size-cells = <0>; +- status = "disabled"; +- }; +- +- spi2: spi@7e2150C0 { +- compatible = "brcm,bcm2835-aux-spi"; +- reg = <0x7e2150C0 0x40>; +- interrupts = <1 29>; +- clocks = <&aux BCM2835_AUX_CLOCK_SPI2>; +- #address-cells = <1>; +- #size-cells = <0>; +- status = "disabled"; +- }; +- +- mmc: mmc@7e300000 { +- compatible = "brcm,bcm2835-mmc"; +- reg = <0x7e300000 0x100>; +- interrupts = <2 30>; +- clocks = <&cprman BCM2835_CLOCK_EMMC>; +- dmas = <&dma 11>; +- dma-names = "rx-tx"; +- brcm,overclock-50 = <0>; +- status = "disabled"; +- }; +- +- hvs: hvs@7e400000 { +- compatible = "brcm,bcm2835-hvs"; +- reg = <0x7e400000 0x6000>; +- status = "disabled"; +- }; +- +- i2c1: i2c@7e804000 { +- compatible = "brcm,bcm2708-i2c"; +- reg = <0x7e804000 0x1000>; +- interrupts = <2 21>; +- clocks = <&cprman BCM2835_CLOCK_VPU>; +- #address-cells = <1>; +- #size-cells = <0>; +- status = "disabled"; +- }; +- +- i2c2: i2c@7e805000 { +- // Beware - this is shared with the HDMI module. +- // Careless use may break (really) your display. +- // Caveat emptor. +- compatible = "brcm,bcm2708-i2c"; +- reg = <0x7e805000 0x1000>; +- interrupts = <2 21>; +- clocks = <&cprman BCM2835_CLOCK_VPU>; +- #address-cells = <1>; +- #size-cells = <0>; +- status = "disabled"; +- }; +- +- smi: smi@7e600000 { +- compatible = "brcm,bcm2835-smi"; +- reg = <0x7e600000 0x100>; +- interrupts = <2 16>; +- clocks = <&cprman BCM2835_CLOCK_SMI>; +- assigned-clocks = <&cprman BCM2835_CLOCK_SMI>; +- assigned-clock-rates = <125000000>; +- dmas = <&dma 4>; +- dma-names = "rx-tx"; +- status = "disabled"; +- }; +- +- pixelvalve2: pixelvalve@7e807000 { +- compatible = "brcm,bcm2835-pixelvalve2"; +- reg = <0x7e807000 0x100>; +- status = "disabled"; +- }; +- +- hdmi: hdmi@7e902000 { +- compatible = "brcm,bcm2835-hdmi"; +- reg = <0x7e902000 0x600>, +- <0x7e808000 0x100>; +- ddc = <&i2c2>; +- hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>; +- clocks = <&cprman BCM2835_PLLH_PIX>, +- <&cprman BCM2835_CLOCK_HSM>; +- clock-names = "pixel", "hdmi"; +- power-domains = <&power RPI_POWER_DOMAIN_HDMI>; +- status = "disabled"; +- }; +- +-#ifdef RPI364 +- usb: usb@7e980000 { +- compatible = "brcm,bcm2835-usb"; +- reg = <0x7e980000 0x10000>; +- interrupts = <1 9>; +- #address-cells = <1>; +- #size-cells = <0>; +- }; +-#else +- usb: usb@7e980000 { +- compatible = "brcm,bcm2708-usb"; +- reg = <0x7e980000 0x10000>, +- <0x7e006000 0x1000>; +- interrupts = <2 0>, +- <1 9>; +- }; +-#endif +- +- v3d: v3d@7ec00000 { +- compatible = "brcm,vc4-v3d"; +- reg = <0x7ec00000 0x1000>; +- status = "disabled"; +- }; +- +- firmware: firmware { +- compatible = "raspberrypi,bcm2835-firmware"; +- mboxes = <&mailbox>; +- }; +- +- power: power { +- compatible = "raspberrypi,bcm2835-power"; +- firmware = <&firmware>; +- #power-domain-cells = <1>; +- }; +- +- leds: leds { +- compatible = "gpio-leds"; +- }; +- +- fb: fb { +- compatible = "brcm,bcm2708-fb"; +- firmware = <&firmware>; +- status = "disabled"; +- }; +- +- vchiq: vchiq { +- compatible = "brcm,bcm2835-vchiq"; +- reg = <0x7e00b840 0xf>; +- interrupts = <0 2>; +- cache-line-size = <32>; +- firmware = <&firmware>; +- }; +- +- thermal: thermal { +- compatible = "brcm,bcm2835-thermal"; +- firmware = <&firmware>; +- }; +- +- gpu: gpu { +- compatible = "brcm,bcm2835-vc4"; +- status = "disabled"; +- }; +- +- /* Onboard audio */ +- audio: audio { +- compatible = "brcm,bcm2835-audio"; +- brcm,pwm-channels = <8>; +- status = "disabled"; +- }; +- +- /* External sound card */ +- sound: sound { +- status = "disabled"; +- }; +- }; +- +- clocks: clocks { +- compatible = "simple-bus"; +- #address-cells = <1>; +- #size-cells = <0>; +- +- /* The oscillator is the root of the clock tree. */ +- clk_osc: clock@6 { +- compatible = "fixed-clock"; +- reg = <6>; +- #clock-cells = <0>; +- clock-output-names = "osc"; +- clock-frequency = <19200000>; +- }; +- }; +- +- __overrides__ { +- cache_line_size = <&vchiq>, "cache-line-size:0"; +- }; +-}; +diff --git a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts +index 74fe4cc1d667e9508ca860bcc8c837fed0cbb855..4f79aaae149abc6f8ebc076d493eb8459e469862 100644 +--- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts ++++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts +@@ -98,15 +98,10 @@ + }; + + &i2s { +- #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; + }; + +-&random { +- status = "okay"; +-}; +- + &leds { + act_led: act { + label = "led0"; +diff --git a/arch/arm/boot/dts/bcm2709.dtsi b/arch/arm/boot/dts/bcm2709.dtsi +index a8cfd7c4df5bcf7692d13882833c97852649932d..757d0053c1c07452babc63ca6ecd0a8f047b25dd 100644 +--- a/arch/arm/boot/dts/bcm2709.dtsi ++++ b/arch/arm/boot/dts/bcm2709.dtsi +@@ -1,48 +1,15 @@ +-#include "bcm2708_common.dtsi" ++#include "bcm2836.dtsi" ++#include "bcm270x.dtsi" ++#include "bcm2708-rpi.dtsi" + + / { + compatible = "brcm,bcm2709"; + model = "BCM2709"; + +- chosen { +- /* No padding required - the boot loader can do that. */ +- bootargs = ""; +- }; +- + soc { + ranges = <0x7e000000 0x3f000000 0x01000000>, + <0x40000000 0x40000000 0x00040000>; +- +- local_intc: local_intc { +- compatible = "brcm,bcm2836-l1-intc"; +- reg = <0x40000000 0x100>; +- interrupt-controller; +- #interrupt-cells = <1>; +- interrupt-parent = <&local_intc>; +- }; +- +- arm-pmu { +- compatible = "arm,cortex-a7-pmu"; +- interrupt-parent = <&local_intc>; +- interrupts = <9>; +- }; +- +- gpiomem { +- compatible = "brcm,bcm2835-gpiomem"; +- reg = <0x7e200000 0x1000>; +- status = "okay"; +- }; +- +- timer { +- compatible = "arm,armv7-timer"; +- clock-frequency = <19200000>; +- interrupt-parent = <&local_intc>; +- interrupts = <0>, // PHYS_SECURE_PPI +- <1>, // PHYS_NONSECURE_PPI +- <3>, // VIRT_PPI +- <2>; // HYP_PPI +- always-on; +- }; ++ /delete-property/ dma-ranges; + + syscon@40000000 { + compatible = "brcm,bcm2836-arm-local", "syscon"; +@@ -50,53 +17,10 @@ + }; + }; + +- cpus: cpus { +- #address-cells = <1>; +- #size-cells = <0>; +- +- v7_cpu0: cpu@0 { +- device_type = "cpu"; +- compatible = "arm,cortex-a7"; +- reg = <0xf00>; +- clock-frequency = <800000000>; +- }; +- +- v7_cpu1: cpu@1 { +- device_type = "cpu"; +- compatible = "arm,cortex-a7"; +- reg = <0xf01>; +- clock-frequency = <800000000>; +- }; +- +- v7_cpu2: cpu@2 { +- device_type = "cpu"; +- compatible = "arm,cortex-a7"; +- reg = <0xf02>; +- clock-frequency = <800000000>; +- }; +- +- v7_cpu3: cpu@3 { +- device_type = "cpu"; +- compatible = "arm,cortex-a7"; +- reg = <0xf03>; +- clock-frequency = <800000000>; +- }; +- }; +- + __overrides__ { + arm_freq = <&v7_cpu0>, "clock-frequency:0", +- <&v7_cpu1>, "clock-frequency:0", +- <&v7_cpu2>, "clock-frequency:0", +- <&v7_cpu3>, "clock-frequency:0"; ++ <&v7_cpu1>, "clock-frequency:0", ++ <&v7_cpu2>, "clock-frequency:0", ++ <&v7_cpu3>, "clock-frequency:0"; + }; + }; +- +-&watchdog { +- status = "okay"; +-}; +- +-&intc { +- compatible = "brcm,bcm2836-armctrl-ic"; +- interrupt-parent = <&local_intc>; +- interrupts = <8>; +-}; +diff --git a/arch/arm/boot/dts/bcm270x.dtsi b/arch/arm/boot/dts/bcm270x.dtsi +new file mode 100644 +index 0000000000000000000000000000000000000000..7fb1f428332dc48bdd91dd4a0773f3bea7057238 +--- /dev/null ++++ b/arch/arm/boot/dts/bcm270x.dtsi +@@ -0,0 +1,142 @@ ++/* Downstream bcm283x.dtsi diff */ + +/ { -+ __overrides__ { -+ uart0 = <&uart0>,"status"; -+ uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; -+ uart1 = <&uart1>,"status"; -+ i2s = <&i2s>,"status"; -+ spi = <&spi0>,"status"; -+ i2c0 = <&i2c0>,"status"; -+ i2c1 = <&i2c1>,"status"; -+ i2c2_iknowwhatimdoing = <&i2c2>,"status"; -+ i2c0_baudrate = <&i2c0>,"clock-frequency:0"; -+ i2c1_baudrate = <&i2c1>,"clock-frequency:0"; -+ i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -+ core_freq = <&clk_core>,"clock-frequency:0"; -+ -+ act_led_gpio = <&act_led>,"gpios:4"; -+ act_led_activelow = <&act_led>,"gpios:8"; -+ act_led_trigger = <&act_led>,"linux,default-trigger"; -+ -+ audio = <&audio>,"status"; -+ watchdog = <&watchdog>,"status"; -+ random = <&random>,"status"; -+ sd_overclock = <&sdhost>,"brcm,overclock-50:0"; -+ sd_force_pio = <&sdhost>,"brcm,force-pio?"; -+ sd_pio_limit = <&sdhost>,"brcm,pio-limit:0"; -+ sd_debug = <&sdhost>,"brcm,debug"; ++ chosen { ++ bootargs = ""; + }; -+}; - -From 650af7b583a9e6ca9897cbc1088caba5d4261b90 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Fri, 12 Aug 2016 17:12:32 +0100 -Subject: [PATCH 106/160] config: Enable SENSORS_LM75 - ---- - arch/arm/configs/bcm2709_defconfig | 1 + - arch/arm/configs/bcmrpi_defconfig | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index ed0b455b49f9efff4be980d8bdd59df4f5ee0639..a55d3e3eb96a59ac9e8ec760f7cec65c12fb08a3 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -640,6 +640,7 @@ CONFIG_BATTERY_DS2760=m - CONFIG_POWER_RESET=y - CONFIG_POWER_RESET_GPIO=y - CONFIG_HWMON=m -+CONFIG_SENSORS_LM75=m - CONFIG_SENSORS_SHT21=m - CONFIG_SENSORS_SHTC1=m - CONFIG_THERMAL=y -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 6c885f0518d0c015357a6fea1438841db344cc46..7f02ad070f3f71c289a5e3d19f5eb68253efc8fe 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -631,6 +631,7 @@ CONFIG_BATTERY_DS2760=m - CONFIG_POWER_RESET=y - CONFIG_POWER_RESET_GPIO=y - CONFIG_HWMON=m -+CONFIG_SENSORS_LM75=m - CONFIG_SENSORS_SHT21=m - CONFIG_SENSORS_SHTC1=m - CONFIG_THERMAL=y - -From 66949dcbe079fe2e45eabc41f2a6d3a45ef48799 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Fri, 12 Aug 2016 17:00:18 +0100 -Subject: [PATCH 107/160] config: Enable SERIAL_SC16IS7XX - ---- - arch/arm/configs/bcm2709_defconfig | 1 + - arch/arm/configs/bcmrpi_defconfig | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index a55d3e3eb96a59ac9e8ec760f7cec65c12fb08a3..e85cf56113b432221816008fcf8453ae57f6933b 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -598,6 +598,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=0 - CONFIG_SERIAL_OF_PLATFORM=y - CONFIG_SERIAL_AMBA_PL011=y - CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -+CONFIG_SERIAL_SC16IS7XX=m - CONFIG_TTY_PRINTK=y - CONFIG_HW_RANDOM=y - CONFIG_RAW_DRIVER=y -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 7f02ad070f3f71c289a5e3d19f5eb68253efc8fe..4b50842b84daf91adb553be669737a71f6837dc8 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -590,6 +590,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=0 - CONFIG_SERIAL_OF_PLATFORM=y - CONFIG_SERIAL_AMBA_PL011=y - CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -+CONFIG_SERIAL_SC16IS7XX=m - CONFIG_TTY_PRINTK=y - CONFIG_HW_RANDOM=y - CONFIG_RAW_DRIVER=y - -From decc4bff8e9c4eb407e8463101ced4e191ca4ea1 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Fri, 12 Aug 2016 15:46:21 +0100 -Subject: [PATCH 108/160] snd-bcm2835: Don't allow responses from VC to be - interrupted by user signals - -There should always be a response, and retry after a signal interruption is not handled, so don't report -we are interruptible. - -See: https://github.com/raspberrypi/linux/issues/1560 ---- - sound/arm/bcm2835-vchiq.c | 25 ++++++------------------- - 1 file changed, 6 insertions(+), 19 deletions(-) - -diff --git a/sound/arm/bcm2835-vchiq.c b/sound/arm/bcm2835-vchiq.c -index 3de30945d8155b90d244734881a7caa81930fa7c..7ee436ca9fa2903d41d1bdd8f8f0774025d22ae0 100755 ---- a/sound/arm/bcm2835-vchiq.c -+++ b/sound/arm/bcm2835-vchiq.c -@@ -511,12 +511,7 @@ static int bcm2835_audio_set_ctls_chan(bcm2835_alsa_stream_t * alsa_stream, - } - - /* We are expecting a reply from the videocore */ -- ret = wait_for_completion_interruptible(&instance->msg_avail_comp); -- if (ret) { -- LOG_DBG("%s: failed on waiting for event (status=%d)\n", -- __func__, success); -- goto unlock; -- } -+ wait_for_completion(&instance->msg_avail_comp); - - if (instance->result != 0) { - LOG_ERR("%s: result=%d\n", __func__, instance->result); -@@ -615,12 +610,7 @@ int bcm2835_audio_set_params(bcm2835_alsa_stream_t * alsa_stream, - } - - /* We are expecting a reply from the videocore */ -- ret = wait_for_completion_interruptible(&instance->msg_avail_comp); -- if (ret) { -- LOG_DBG("%s: failed on waiting for event (status=%d)\n", -- __func__, success); -- goto unlock; -- } -+ wait_for_completion(&instance->msg_avail_comp); - - if (instance->result != 0) { - LOG_ERR("%s: result=%d", __func__, instance->result); -@@ -761,14 +751,11 @@ int bcm2835_audio_close(bcm2835_alsa_stream_t * alsa_stream) - goto unlock; - } - -- ret = wait_for_completion_interruptible(&instance->msg_avail_comp); -- if (ret) { -- LOG_DBG("%s: failed on waiting for event (status=%d)\n", -- __func__, success); -- goto unlock; -- } -+ /* We are expecting a reply from the videocore */ -+ wait_for_completion(&instance->msg_avail_comp); + - if (instance->result != 0) { -- LOG_ERR("%s: failed result (status=%d)\n", -+ LOG_ERR("%s: failed result (result=%d)\n", - __func__, instance->result); - - ret = -1; - -From e724130d193cf839ae2599a07e3776d488c6aa1c Mon Sep 17 00:00:00 2001 -From: Bruno George de Moraes -Date: Wed, 20 Aug 2014 23:53:57 -0300 -Subject: [PATCH 109/160] snd-bcm2835: Use bcm2835_hw params in preallocate - ---- - sound/arm/bcm2835-pcm.c | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) - -diff --git a/sound/arm/bcm2835-pcm.c b/sound/arm/bcm2835-pcm.c -index d2de13cbd76ed16634f27c0843474825671a28eb..71b128924affac2b7a01d1169e43d437bb1d0c1a 100755 ---- a/sound/arm/bcm2835-pcm.c -+++ b/sound/arm/bcm2835-pcm.c -@@ -518,9 +518,9 @@ int snd_bcm2835_new_pcm(bcm2835_chip_t * chip) - /* pre-allocation of buffers */ - /* NOTE: this may fail */ - snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, -- snd_dma_continuous_data -- (GFP_KERNEL), 64 * 1024, -- 64 * 1024); -+ snd_dma_continuous_data (GFP_KERNEL), -+ snd_bcm2835_playback_hw.buffer_bytes_max, snd_bcm2835_playback_hw.buffer_bytes_max); ++ soc: soc { + - - out: - mutex_unlock(&chip->audio_mutex); -@@ -550,9 +550,11 @@ int snd_bcm2835_new_spdif_pcm(bcm2835_chip_t * chip) - snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, - &snd_bcm2835_playback_spdif_ops); - -+ /* pre-allocation of buffers */ -+ /* NOTE: this may fail */ - snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, - snd_dma_continuous_data (GFP_KERNEL), -- 64 * 1024, 64 * 1024); -+ snd_bcm2835_playback_spdif_hw.buffer_bytes_max, snd_bcm2835_playback_spdif_hw.buffer_bytes_max); - out: - mutex_unlock(&chip->audio_mutex); - audio_info(" .. OUT\n"); - -From 81e29fe638f01630aca3dad8de5aafe45c4eaa22 Mon Sep 17 00:00:00 2001 -From: Bruno George de Moraes -Date: Tue, 30 Aug 2016 12:54:38 +0100 -Subject: [PATCH 110/160] dwc_otg: Use kzalloc when suitable - ---- - drivers/usb/host/dwc_otg/dummy_audio.c | 3 +-- - drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c | 3 +-- - 2 files changed, 2 insertions(+), 4 deletions(-) - -diff --git a/drivers/usb/host/dwc_otg/dummy_audio.c b/drivers/usb/host/dwc_otg/dummy_audio.c -index 225decf765ce825b896ba98771ccb19c20d99404..f827102fa64414d0f6e6ad47948a87fa4ab97e69 100644 ---- a/drivers/usb/host/dwc_otg/dummy_audio.c -+++ b/drivers/usb/host/dwc_otg/dummy_audio.c -@@ -1377,10 +1377,9 @@ zero_bind (struct usb_gadget *gadget) - - - /* ok, we made sense of the hardware ... */ -- dev = kmalloc (sizeof *dev, SLAB_KERNEL); -+ dev = kzalloc (sizeof *dev, SLAB_KERNEL); - if (!dev) - return -ENOMEM; -- memset (dev, 0, sizeof *dev); - spin_lock_init (&dev->lock); - dev->gadget = gadget; - set_gadget_data (gadget, dev); -diff --git a/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c -index 0eb0f3572d1230fdd23966c47ba9370d22bb8cb5..5624f32c9ea9117599df451af29fca2e3bca36de 100644 ---- a/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c -+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c -@@ -212,12 +212,11 @@ static struct usb_request *dwc_otg_pcd_alloc_request(struct usb_ep *ep, - DWC_WARN("%s() %s\n", __func__, "Invalid EP!\n"); - return 0; - } -- usb_req = kmalloc(sizeof(*usb_req), gfp_flags); -+ usb_req = kzalloc(sizeof(*usb_req), gfp_flags); - if (0 == usb_req) { - DWC_WARN("%s() %s\n", __func__, "request allocation failed!\n"); - return 0; - } -- memset(usb_req, 0, sizeof(*usb_req)); - usb_req->dma = DWC_DMA_ADDR_INVALID; - - return usb_req; - -From f501966df5fa328274191c00727d7061d407c142 Mon Sep 17 00:00:00 2001 -From: Eric Anholt -Date: Tue, 26 Apr 2016 11:44:59 -0700 -Subject: [PATCH 111/160] clk: bcm2835: Mark the VPU clock as critical - -The VPU clock is also the clock for our AXI bus, so we really can't -disable it. This might have happened during boot if, for example, -uart1 (aux_uart clock) probed and was then disabled before the other -consumers of the VPU clock had probed. - -v2: Rewrite to use a .flags in bcm2835_clock_data, since other clocks - will need this too. - -Signed-off-by: Eric Anholt ---- - drivers/clk/bcm/clk-bcm2835.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c -index 7a7970865c2d856b6b57113c2bb7e8074140a5dd..d9db03cb3fd84163f320dca6f2e533c61f61b5ad 100644 ---- a/drivers/clk/bcm/clk-bcm2835.c -+++ b/drivers/clk/bcm/clk-bcm2835.c -@@ -443,6 +443,8 @@ struct bcm2835_clock_data { - /* Number of fractional bits in the divider */ - u32 frac_bits; - -+ u32 flags; ++ /delete-node/ timer@7e003000; + - bool is_vpu_clock; - bool is_mash_clock; - }; -@@ -1230,7 +1232,7 @@ static struct clk *bcm2835_register_clock(struct bcm2835_cprman *cprman, - init.parent_names = parents; - init.num_parents = data->num_mux_parents; - init.name = data->name; -- init.flags = CLK_IGNORE_UNUSED; -+ init.flags = data->flags | CLK_IGNORE_UNUSED; - - if (data->is_vpu_clock) { - init.ops = &bcm2835_vpu_clock_clk_ops; -@@ -1649,6 +1651,7 @@ static const struct bcm2835_clk_desc clk_desc_array[] = { - .div_reg = CM_VPUDIV, - .int_bits = 12, - .frac_bits = 8, -+ .flags = CLK_IS_CRITICAL, - .is_vpu_clock = true), - - /* clocks with per parent mux */ - -From 4d4fbcd941f44b1cd6a25082f2b7131508ce7cf9 Mon Sep 17 00:00:00 2001 -From: Eric Anholt -Date: Mon, 9 May 2016 17:28:18 -0700 -Subject: [PATCH 112/160] clk: bcm2835: Mark GPIO clocks enabled at boot as - critical. - -These divide off of PLLD_PER and are used for the ethernet and wifi -PHYs source PLLs. Neither of them is currently represented by a phy -device that would grab the clock for us. - -This keeps other drivers from killing the networking PHYs when they -disable their own clocks and trigger PLLD_PER's refcount going to 0. - -v2: Skip marking as critical if they aren't on at boot. - -Signed-off-by: Eric Anholt ---- - drivers/clk/bcm/clk-bcm2835.c | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c -index d9db03cb3fd84163f320dca6f2e533c61f61b5ad..f6bbe8d5929828048114286ec29a33e02519eab8 100644 ---- a/drivers/clk/bcm/clk-bcm2835.c -+++ b/drivers/clk/bcm/clk-bcm2835.c -@@ -1234,6 +1234,15 @@ static struct clk *bcm2835_register_clock(struct bcm2835_cprman *cprman, - init.name = data->name; - init.flags = data->flags | CLK_IGNORE_UNUSED; - -+ /* -+ * Some GPIO clocks for ethernet/wifi PLLs are marked as -+ * critical (since some platforms use them), but if the -+ * firmware didn't have them turned on then they clearly -+ * aren't actually critical. -+ */ -+ if ((cprman_read(cprman, data->ctl_reg) & CM_ENABLE) == 0) -+ init.flags &= ~CLK_IS_CRITICAL; ++ watchdog: watchdog@7e100000 { ++ /* Add alias */ ++ }; + - if (data->is_vpu_clock) { - init.ops = &bcm2835_vpu_clock_clk_ops; - } else { -@@ -1708,13 +1717,15 @@ static const struct bcm2835_clk_desc clk_desc_array[] = { - .div_reg = CM_GP1DIV, - .int_bits = 12, - .frac_bits = 12, -+ .flags = CLK_IS_CRITICAL, - .is_mash_clock = true), - [BCM2835_CLOCK_GP2] = REGISTER_PER_CLK( - .name = "gp2", - .ctl_reg = CM_GP2CTL, - .div_reg = CM_GP2DIV, - .int_bits = 12, -- .frac_bits = 12), -+ .frac_bits = 12, -+ .flags = CLK_IS_CRITICAL), - - /* HDMI state machine */ - [BCM2835_CLOCK_HSM] = REGISTER_PER_CLK( - -From 1c4cf5c2586f2c719f6dd2b9b3d5b272d7450f85 Mon Sep 17 00:00:00 2001 -From: Eric Anholt -Date: Tue, 26 Apr 2016 12:39:45 -0700 -Subject: [PATCH 113/160] clk: bcm2835: Skip PLLC clocks when deciding on a new - clock parent - -If the firmware had set up a clock to source from PLLC, go along with -it. But if we're looking for a new parent, we don't want to switch it -to PLLC because the firmware will force PLLC (and thus the AXI bus -clock) to different frequencies during over-temp/under-voltage, -without notification to Linux. - -On my system, this moves the Linux-enabled HDMI state machine and DSI1 -escape clock over to plld_per from pllc_per. EMMC still ends up on -pllc_per, because the firmware had set it up to use that. - -Signed-off-by: Eric Anholt -Fixes: 41691b8862e2 ("clk: bcm2835: Add support for programming the audio domain clocks") ---- - drivers/clk/bcm/clk-bcm2835.c | 23 +++++++++++++++++++++++ - 1 file changed, 23 insertions(+) - -diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c -index f6bbe8d5929828048114286ec29a33e02519eab8..e527649ee5e32d20cebd762f4badbfca06657a84 100644 ---- a/drivers/clk/bcm/clk-bcm2835.c -+++ b/drivers/clk/bcm/clk-bcm2835.c -@@ -1008,16 +1008,28 @@ static int bcm2835_clock_set_rate(struct clk_hw *hw, - return 0; - } - -+static bool -+bcm2835_clk_is_pllc(struct clk_hw *hw) -+{ -+ if (!hw) -+ return false; ++ cprman: cprman@7e101000 { ++ /* Add alias */ ++ }; + -+ return strncmp(clk_hw_get_name(hw), "pllc", 4) == 0; -+} ++ random: rng@7e104000 { ++ /* Add alias */ ++ }; + - static int bcm2835_clock_determine_rate(struct clk_hw *hw, - struct clk_rate_request *req) - { - struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw); - struct clk_hw *parent, *best_parent = NULL; -+ bool current_parent_is_pllc; - unsigned long rate, best_rate = 0; - unsigned long prate, best_prate = 0; - size_t i; - u32 div; - -+ current_parent_is_pllc = bcm2835_clk_is_pllc(clk_hw_get_parent(hw)); ++ gpio@7e200000 { /* gpio */ ++ interrupts = <2 17>, <2 18>; ++ }; + - /* - * Select parent clock that results in the closest but lower rate - */ -@@ -1025,6 +1037,17 @@ static int bcm2835_clock_determine_rate(struct clk_hw *hw, - parent = clk_hw_get_parent_by_index(hw, i); - if (!parent) - continue; ++ sdhost: sdhost@7e202000 { ++ compatible = "brcm,bcm2835-sdhost"; ++ reg = <0x7e202000 0x100>; ++ interrupts = <2 24>; ++ clocks = <&clocks BCM2835_CLOCK_VPU>; ++ dmas = <&dma 13>; ++ dma-names = "rx-tx"; ++ brcm,overclock-50 = <0>; ++ brcm,pio-limit = <1>; ++ status = "disabled"; ++ }; + -+ /* -+ * Don't choose a PLLC-derived clock as our parent -+ * unless it had been manually set that way. PLLC's -+ * frequency gets adjusted by the firmware due to -+ * over-temp or under-voltage conditions, without -+ * prior notification to our clock consumer. -+ */ -+ if (bcm2835_clk_is_pllc(parent) && !current_parent_is_pllc) -+ continue; -+ - prate = clk_hw_get_rate(parent); - div = bcm2835_clock_choose_div(hw, req->rate, prate, true); - rate = bcm2835_clock_rate_from_divisor(clock, prate, div); - -From 4a939a0ce6c33ff46ded0d1b0da7ad5cb0fd2582 Mon Sep 17 00:00:00 2001 -From: Eric Anholt -Date: Wed, 1 Jun 2016 12:05:35 -0700 -Subject: [PATCH 114/160] clk: bcm2835: Mark the CM SDRAM clock's parent as - critical - -While the SDRAM is being driven by its dedicated PLL most of the time, -there is a little loop running in the firmware that periodically turns -on the CM SDRAM clock (using its pre-initialized parent) and switches -SDRAM to using the CM clock to do PVT recalibration. - -This avoids system hangs if we choose SDRAM's parent for some other -clock, then disable that clock. - -Signed-off-by: Eric Anholt ---- - drivers/clk/bcm/clk-bcm2835.c | 25 +++++++++++++++++++++++++ - 1 file changed, 25 insertions(+) - -diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c -index e527649ee5e32d20cebd762f4badbfca06657a84..fbf616021704178a9d007219a0ea2a9f1704f0a6 100644 ---- a/drivers/clk/bcm/clk-bcm2835.c -+++ b/drivers/clk/bcm/clk-bcm2835.c -@@ -36,6 +36,7 @@ - - #include - #include -+#include - #include - #include - #include -@@ -1827,6 +1828,25 @@ static const struct bcm2835_clk_desc clk_desc_array[] = { - .ctl_reg = CM_PERIICTL), - }; - -+/* -+ * Permanently take a reference on the parent of the SDRAM clock. -+ * -+ * While the SDRAM is being driven by its dedicated PLL most of the -+ * time, there is a little loop running in the firmware that -+ * periodically switches the SDRAM to using our CM clock to do PVT -+ * recalibration, with the assumption that the previously configured -+ * SDRAM parent is still enabled and running. -+ */ -+static int bcm2835_mark_sdc_parent_critical(struct clk *sdc) -+{ -+ struct clk *parent = clk_get_parent(sdc); -+ -+ if (IS_ERR(parent)) -+ return PTR_ERR(parent); -+ -+ return clk_prepare_enable(parent); -+} -+ - static int bcm2835_clk_probe(struct platform_device *pdev) - { - struct device *dev = &pdev->dev; -@@ -1836,6 +1856,7 @@ static int bcm2835_clk_probe(struct platform_device *pdev) - const struct bcm2835_clk_desc *desc; - const size_t asize = ARRAY_SIZE(clk_desc_array); - size_t i; -+ int ret; - - cprman = devm_kzalloc(dev, - sizeof(*cprman) + asize * sizeof(*clks), -@@ -1866,6 +1887,10 @@ static int bcm2835_clk_probe(struct platform_device *pdev) - clks[i] = desc->clk_register(cprman, desc->data); - } - -+ ret = bcm2835_mark_sdc_parent_critical(clks[BCM2835_CLOCK_SDRAM]); -+ if (ret) -+ return ret; -+ - return of_clk_add_provider(dev->of_node, of_clk_src_onecell_get, - &cprman->onecell); - } - -From 95cc0eb3f8978b9d3ed8da4d3517617c11a0d193 Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Mon, 25 Apr 2016 06:54:57 +0000 -Subject: [PATCH 115/160] ARM: bcm2708: enable clock manager by default - -Enable the clock manager by default. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 74434b986e3fbb257debfc79caef9fa68f750043..416037450277cd17c280e2b5f9f5423b1cd5502b 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -113,7 +113,6 @@ - * oscillator. - */ - clocks = <&clk_osc>; -- status = "disabled"; - }; - - random: rng@7e104000 { - -From 3bcce4423ce1ffaf3017596365bd954994604275 Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Mon, 25 Apr 2016 07:56:13 +0000 -Subject: [PATCH 116/160] ARM: 2708: i2s: removed clock registers and added - clock - -Removed clock registers from reg and added clock to i2s devicetree node. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 416037450277cd17c280e2b5f9f5423b1cd5502b..9af850fc2cacfccd4ec6262992e9248263788dd1 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -159,8 +159,8 @@ - i2s: i2s@7e203000 { - compatible = "brcm,bcm2835-i2s"; - #sound-dai-cells = <0>; -- reg = <0x7e203000 0x24>, -- <0x7e101098 0x08>; ++ i2s@7e203000 { /* i2s */ ++ #sound-dai-cells = <0>; + reg = <0x7e203000 0x24>; -+ clocks = <&cprman BCM2835_CLOCK_PCM>; - - dmas = <&dma 2>, <&dma 3>; - dma-names = "tx", "rx"; - -From b8498b02d8f92cc741a71129f671e9518ee1524c Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 10:31:04 +0000 -Subject: [PATCH 117/160] ARM: bcm2708: use correct device-tree node names for - serial - -Upstream mandates the use of "serial" as name inside the device-tree. -Note that this does not affect the use of the alias - there -uart0 and uart1 are permissible. - -This also fixed the patch references inside the overlays for the rpi3. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 4 ++-- - arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts | 4 ++-- - arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts | 4 ++-- - 3 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 9af850fc2cacfccd4ec6262992e9248263788dd1..65f83cfd26c016fe5c7438559a8c9e023603268c 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -133,7 +133,7 @@ - #interrupt-cells = <2>; - }; - -- uart0: uart@7e201000 { -+ uart0: serial@7e201000 { - compatible = "arm,pl011", "arm,primecell"; - reg = <0x7e201000 0x1000>; - interrupts = <2 25>; -@@ -234,7 +234,7 @@ - status = "disabled"; - }; - -- uart1: uart@7e215040 { -+ uart1: serial@7e215040 { - compatible = "brcm,bcm2835-aux-uart", "ns16550"; - reg = <0x7e215040 0x40>; - interrupts = <1 29>; -diff --git a/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts b/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts -index 68f6069dd24cbf6a2ed11365ac0717e36879abe3..87cf345f9641e62c5ed496c238333716cc5b27e6 100644 ---- a/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts -+++ b/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts -@@ -39,8 +39,8 @@ - fragment@3 { - target-path = "/aliases"; - __overlay__ { -- serial0 = "/soc/uart@7e201000"; -- serial1 = "/soc/uart@7e215040"; -+ serial0 = "/soc/serial@7e201000"; -+ serial1 = "/soc/serial@7e215040"; - }; - }; - }; -diff --git a/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts b/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts -index 17d04cf87195a6ff192e1ddbe4f92b1afa9e5ddb..18f77453c38dbbf33f3726a5b4cce15b9f20f390 100644 ---- a/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts -+++ b/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts -@@ -57,8 +57,8 @@ - fragment@4 { - target-path = "/aliases"; - __overlay__ { -- serial0 = "/soc/uart@7e201000"; -- serial1 = "/soc/uart@7e215040"; -+ serial0 = "/soc/serial@7e201000"; -+ serial1 = "/soc/serial@7e215040"; - }; - }; - }; - -From 8137333581c6b2ed3a55cc88014ebc0e908b2ffa Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 10:52:17 +0000 -Subject: [PATCH 118/160] ARM: bcm2708: moved uart0 to use new clock framework - -Moved uart0 to use new clock framework. -At the same time removed the fixed clock clk_uart0 -and the corresponding references, as the clock is now -read directly from the configured clocks. - -If it ever becomes necessary the following can get added -to modify the base clock rate later: - assigned-clocks = <&clocks BCM2835_CLOCK_UART>; - assigned-clock-rates = ; - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 1 - - arch/arm/boot/dts/bcm2708-rpi-b.dts | 1 - - arch/arm/boot/dts/bcm2708-rpi-cm.dts | 1 - - arch/arm/boot/dts/bcm2708_common.dtsi | 21 +++------------------ - arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 1 - - arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 1 - - 6 files changed, 3 insertions(+), 23 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts -index db2705afa4e2229c961fe88bcae46233a4ce4542..ddccaee96185418107727fb53a0b12e9007f8347 100644 ---- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts -+++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts -@@ -133,7 +133,6 @@ - / { - __overrides__ { - uart0 = <&uart0>,"status"; -- uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; - uart1 = <&uart1>,"status"; - i2s = <&i2s>,"status"; - spi = <&spi0>,"status"; -diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts -index beae0371477cc41f27006ef3f1ef7268839177df..022055b553d87655c17716229884975210159ee7 100644 ---- a/arch/arm/boot/dts/bcm2708-rpi-b.dts -+++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts -@@ -127,7 +127,6 @@ - / { - __overrides__ { - uart0 = <&uart0>,"status"; -- uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; - uart1 = <&uart1>,"status"; - i2s = <&i2s>,"status"; - spi = <&spi0>,"status"; -diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dts b/arch/arm/boot/dts/bcm2708-rpi-cm.dts -index cd0e1acc22f8ded801f29d331570828e5582247b..d2dcc9c156b32a91a45c26b460fa971abd0dbdf5 100755 ---- a/arch/arm/boot/dts/bcm2708-rpi-cm.dts -+++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts -@@ -88,7 +88,6 @@ - / { - __overrides__ { - uart0 = <&uart0>,"status"; -- uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; - uart1 = <&uart1>,"status"; - i2s = <&i2s>,"status"; - spi = <&spi0>,"status"; -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 65f83cfd26c016fe5c7438559a8c9e023603268c..a93c5a20e3a19a36441f213bf8e9306e90c60842 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -134,10 +134,11 @@ - }; - - uart0: serial@7e201000 { -- compatible = "arm,pl011", "arm,primecell"; -+ compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; - reg = <0x7e201000 0x1000>; - interrupts = <2 25>; -- clocks = <&clk_uart0 &clk_apb_p>; -+ clocks = <&cprman BCM2835_CLOCK_UART>, -+ <&cprman BCM2835_CLOCK_VPU>; - clock-names = "uartclk","apb_pclk"; - arm,primecell-periphid = <0x00241011>; // For an explanation, see - // https://github.com/raspberrypi/linux/commit/13731d862cf5219216533a3b0de052cee4cc5038 -@@ -421,22 +422,6 @@ - clock-frequency = <250000000>; - }; - -- clk_uart0: clock@2 { -- compatible = "fixed-clock"; -- reg = <2>; -- #clock-cells = <0>; -- clock-output-names = "uart0_pclk"; -- clock-frequency = <3000000>; -- }; -- -- clk_apb_p: clock@3 { -- compatible = "fixed-clock"; -- reg = <3>; -- #clock-cells = <0>; -- clock-output-names = "apb_pclk"; -- clock-frequency = <126000000>; -- }; -- - clk_pwm: clock@4 { - compatible = "fixed-clock"; - reg = <4>; -diff --git a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts -index eca72bd0d6e891b0096ac97b68c2da92199aa851..8eba22a66d986cf819b10b7d28de959188c27b55 100644 ---- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts -+++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts -@@ -133,7 +133,6 @@ - / { - __overrides__ { - uart0 = <&uart0>,"status"; -- uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; - uart1 = <&uart1>,"status"; - i2s = <&i2s>,"status"; - spi = <&spi0>,"status"; -diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts -index a72e6e5a0ac0b2492db3d8034a5196b3e19ae008..55ddafda0b17e480e129dc84c93e6743ff533ec1 100644 ---- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts -+++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts -@@ -184,7 +184,6 @@ - / { - __overrides__ { - uart0 = <&uart0>,"status"; -- uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; - uart1 = <&uart1>,"status"; - i2s = <&i2s>,"status"; - spi = <&spi0>,"status"; - -From 32f209fd6dcd2bad5c519073ff5ec6cca122a73e Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 11:12:37 +0000 -Subject: [PATCH 119/160] ARM: bcm2708: move spi0 to use new clock framework - -use spi0 to use new clock framwork - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index a93c5a20e3a19a36441f213bf8e9306e90c60842..2eef648c4da0fe18c7134154a67b1529b36b1eef 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -172,7 +172,7 @@ - compatible = "brcm,bcm2835-spi"; - reg = <0x7e204000 0x1000>; - interrupts = <2 22>; -- clocks = <&clk_core>; -+ clocks = <&cprman BCM2835_CLOCK_VPU>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; - -From 79dc3fd691dea8da7d92747f140dbcc503679c79 Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 11:17:32 +0000 -Subject: [PATCH 120/160] ARM: bcm2708: move i2c to use new clock framework - -move i2c to use the new clock framework instead of the fixed clock - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 2eef648c4da0fe18c7134154a67b1529b36b1eef..ac45bbd4e72c2a1668424ee8f714bd9f605eaccd 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -190,7 +190,7 @@ - compatible = "brcm,bcm2708-i2c"; - reg = <0x7e205000 0x1000>; - interrupts = <2 21>; -- clocks = <&clk_core>; -+ clocks = <&cprman BCM2835_CLOCK_VPU>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; -@@ -286,7 +286,7 @@ - compatible = "brcm,bcm2708-i2c"; - reg = <0x7e804000 0x1000>; - interrupts = <2 21>; -- clocks = <&clk_core>; -+ clocks = <&cprman BCM2835_CLOCK_VPU>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; -@@ -299,7 +299,7 @@ - compatible = "brcm,bcm2708-i2c"; - reg = <0x7e805000 0x1000>; - interrupts = <2 21>; -- clocks = <&clk_core>; -+ clocks = <&cprman BCM2835_CLOCK_VPU>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; - -From 318fdb2e575baea7d55e439a4aff8b0a3d7ab9fa Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 11:19:11 +0000 -Subject: [PATCH 121/160] ARM: bcm2708: move pwm to new clock framework - -Move PWM to use the new clock framework - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index ac45bbd4e72c2a1668424ee8f714bd9f605eaccd..4177be1f2d4404a775fe3e993f020fb573cee7f2 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -222,7 +222,9 @@ - pwm: pwm@7e20c000 { - compatible = "brcm,bcm2835-pwm"; - reg = <0x7e20c000 0x28>; -- clocks = <&clk_pwm>; -+ clocks = <&cprman BCM2835_CLOCK_PWM>; -+ assigned-clocks = <&cprman BCM2835_CLOCK_PWM>; -+ assigned-clock-rates = <10000000>; - #pwm-cells = <2>; - status = "disabled"; - }; - -From 38e3be8a1e4a2ac1712d4964ca627e160e9ef53d Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 11:23:53 +0000 -Subject: [PATCH 122/160] ARM: bcm2708: fix auxiliar clock provider to use - clock framework - -Fix the auxiliar clock provider to use the clock framework - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 4177be1f2d4404a775fe3e993f020fb573cee7f2..f1b813d145874205a33068d278c0e79c6355ef20 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -229,12 +229,11 @@ - status = "disabled"; - }; - -- aux: aux@0x7e215004 { -+ aux: aux@0x7e215000 { - compatible = "brcm,bcm2835-aux"; - #clock-cells = <1>; - reg = <0x7e215000 0x8>; -- clocks = <&clk_core>; -- status = "disabled"; -+ clocks = <&cprman BCM2835_CLOCK_VPU>; - }; - - uart1: serial@7e215040 { - -From a87285c33f869f143c8ed1bb920603d7142ca0e7 Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 11:32:21 +0000 -Subject: [PATCH 123/160] ARM: bcm2708: fix register range of spi-aux - -Fix the register range of the spi-aux devices, -as they do not control the gate. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index f1b813d145874205a33068d278c0e79c6355ef20..37cde9cf317e6c5c76bcf3676a296696f574ac3d 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -248,7 +248,7 @@ - - spi1: spi@7e215080 { - compatible = "brcm,bcm2835-aux-spi"; -- reg = <0x7e215080 0x40>, <0x7e215000 0x8>; -+ reg = <0x7e215080 0x40>; - interrupts = <1 29>; - clocks = <&aux BCM2835_AUX_CLOCK_SPI1>; - #address-cells = <1>; -@@ -258,7 +258,7 @@ - - spi2: spi@7e2150C0 { - compatible = "brcm,bcm2835-aux-spi"; -- reg = <0x7e2150C0 0x40>, <0x7e215000 0x8>; -+ reg = <0x7e2150C0 0x40>; - interrupts = <1 29>; - clocks = <&aux BCM2835_AUX_CLOCK_SPI2>; - #address-cells = <1>; - -From 02890dfbdf8790d57f0ae4ebb664c5af8af3fa04 Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 12:12:16 +0000 -Subject: [PATCH 124/160] ARM: bcm2708: move to new clock manager and driver - for aux-uart - -Move to new aux-uart driver (from upstream) and enable it correctly -in the device tree - -Note that this may also solve the "serial not 115200 baud" -issue on the rpi3... - -With an extension to the driver (requesting clock change -notifications) the driver could change the baud divider when -such a clock change occurs... - -It still would require some communication between the firmware -and the kernel, so that this would get propagated. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 15 ++------------- - arch/arm/configs/bcm2709_defconfig | 3 +++ - arch/arm/configs/bcmrpi_defconfig | 3 +++ - drivers/tty/serial/8250/Kconfig | 2 +- - 4 files changed, 9 insertions(+), 14 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 37cde9cf317e6c5c76bcf3676a296696f574ac3d..011ef9786d46b4ba8db0c672339b7f22b5b75e08 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -237,12 +237,10 @@ - }; - - uart1: serial@7e215040 { -- compatible = "brcm,bcm2835-aux-uart", "ns16550"; -+ compatible = "brcm,bcm2835-aux-uart"; - reg = <0x7e215040 0x40>; - interrupts = <1 29>; -- clocks = <&clk_uart1>; -- reg-shift = <2>; -- no-loopback-test; -+ clocks = <&aux BCM2835_AUX_CLOCK_UART>; - status = "disabled"; - }; - -@@ -431,15 +429,6 @@ - clock-frequency = <100000000>; - }; - -- clk_uart1: clock@5 { -- compatible = "fixed-factor-clock"; -- reg = <5>; -- clocks = <&clk_core>; -- #clock-cells = <0>; -- clock-div = <1>; -- clock-mult = <2>; -- }; -- - /* The oscillator is the root of the clock tree. */ - clk_osc: clock@6 { - compatible = "fixed-clock"; -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index e85cf56113b432221816008fcf8453ae57f6933b..76340ce6ccc43a4bb24db414b75814e4a9e10ddc 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -595,6 +595,9 @@ CONFIG_SERIAL_8250_CONSOLE=y - # CONFIG_SERIAL_8250_DMA is not set - CONFIG_SERIAL_8250_NR_UARTS=1 - CONFIG_SERIAL_8250_RUNTIME_UARTS=0 -+CONFIG_SERIAL_8250_EXTENDED=y -+CONFIG_SERIAL_8250_SHARE_IRQ=y -+CONFIG_SERIAL_8250_BCM2835AUX=y - CONFIG_SERIAL_OF_PLATFORM=y - CONFIG_SERIAL_AMBA_PL011=y - CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 4b50842b84daf91adb553be669737a71f6837dc8..5535fee75c1a31c4fe014b1551af763fb2e7c289 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -587,6 +587,9 @@ CONFIG_SERIAL_8250_CONSOLE=y - # CONFIG_SERIAL_8250_DMA is not set - CONFIG_SERIAL_8250_NR_UARTS=1 - CONFIG_SERIAL_8250_RUNTIME_UARTS=0 -+CONFIG_SERIAL_8250_EXTENDED=y -+CONFIG_SERIAL_8250_SHARE_IRQ=y -+CONFIG_SERIAL_8250_BCM2835AUX=y - CONFIG_SERIAL_OF_PLATFORM=y - CONFIG_SERIAL_AMBA_PL011=y - CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -diff --git a/drivers/tty/serial/8250/Kconfig b/drivers/tty/serial/8250/Kconfig -index e46761d20f7b4c780784d48c9f8de23f47f5134c..1232132f218b5c09dd46f3e9f541ea7c6f34b360 100644 ---- a/drivers/tty/serial/8250/Kconfig -+++ b/drivers/tty/serial/8250/Kconfig -@@ -291,7 +291,7 @@ config SERIAL_8250_ACORN - - config SERIAL_8250_BCM2835AUX - tristate "BCM2835 auxiliar mini UART support" -- depends on ARCH_BCM2835 || COMPILE_TEST -+ depends on ARCH_BCM2708 || ARCH_BCM2709 || ARCH_BCM2835 || COMPILE_TEST - depends on SERIAL_8250 && SERIAL_8250_SHARE_IRQ - help - Support for the BCM2835 auxiliar mini UART. - -From 9b18e62ef50b0c9c9d5c39058c32091170d038c3 Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 12:44:22 +0000 -Subject: [PATCH 125/160] ARM: bcm2708: remove pwm clock - -Remove no longer necessary fixed pwm clock. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 8 -------- - 1 file changed, 8 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 011ef9786d46b4ba8db0c672339b7f22b5b75e08..aa6005c2460df08cf2f102148be251a7a57d0bdf 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -421,14 +421,6 @@ - clock-frequency = <250000000>; - }; - -- clk_pwm: clock@4 { -- compatible = "fixed-clock"; -- reg = <4>; -- #clock-cells = <0>; -- clock-output-names = "pwm"; -- clock-frequency = <100000000>; -- }; -- - /* The oscillator is the root of the clock tree. */ - clk_osc: clock@6 { - compatible = "fixed-clock"; - -From 1ecaa8c7ff63131c7231e9f712a65e9d0db50c1c Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 14:59:21 +0000 -Subject: [PATCH 126/160] MISC: bcm2835: smi: use clock manager and fix reload - issues - -Use clock manager instead of self-made clockmanager. - -Also fix some error paths that showd up during development -(especially missing release of dma resources on rmmod) - -Signed-off-by: Martin Sperl ---- - drivers/misc/bcm2835_smi.c | 86 +++++++++++++++------------------------------- - 1 file changed, 28 insertions(+), 58 deletions(-) - -diff --git a/drivers/misc/bcm2835_smi.c b/drivers/misc/bcm2835_smi.c -index 63a4ea08b9930a3a31a985f0a1d969b488ed49ec..1261540703127d1d63b9f3c87042c6e50d3fbec2 100644 ---- a/drivers/misc/bcm2835_smi.c -+++ b/drivers/misc/bcm2835_smi.c -@@ -34,6 +34,7 @@ - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -+#include - #include - #include - #include -@@ -62,7 +63,7 @@ - struct bcm2835_smi_instance { - struct device *dev; - struct smi_settings settings; -- __iomem void *smi_regs_ptr, *cm_smi_regs_ptr; -+ __iomem void *smi_regs_ptr; - dma_addr_t smi_regs_busaddr; - - struct dma_chan *dma_chan; -@@ -72,8 +73,7 @@ struct bcm2835_smi_instance { - - struct scatterlist buffer_sgl; - -- int clock_source; -- int clock_divisor; -+ struct clk *clk; - - /* Sometimes we are called into in an atomic context (e.g. by - JFFS2 + MTD) so we can't use a mutex */ -@@ -82,42 +82,6 @@ struct bcm2835_smi_instance { - - /**************************************************************************** - * --* SMI clock manager setup --* --***************************************************************************/ -- --static inline void write_smi_cm_reg(struct bcm2835_smi_instance *inst, -- u32 val, unsigned reg) --{ -- writel(CM_PWD | val, inst->cm_smi_regs_ptr + reg); --} -- --static inline u32 read_smi_cm_reg(struct bcm2835_smi_instance *inst, -- unsigned reg) --{ -- return readl(inst->cm_smi_regs_ptr + reg); --} -- --static void smi_setup_clock(struct bcm2835_smi_instance *inst) --{ -- dev_dbg(inst->dev, "Setting up clock..."); -- /* Disable SMI clock and wait for it to stop. */ -- write_smi_cm_reg(inst, 0, CM_SMI_CTL); -- while (read_smi_cm_reg(inst, CM_SMI_CTL) & CM_SMI_CTL_BUSY) -- ; -- -- write_smi_cm_reg(inst, (inst->clock_divisor << CM_SMI_DIV_DIVI_OFFS), -- CM_SMI_DIV); -- write_smi_cm_reg(inst, (inst->clock_source << CM_SMI_CTL_SRC_OFFS), -- CM_SMI_CTL); -- -- /* Enable the clock */ -- write_smi_cm_reg(inst, (inst->clock_source << CM_SMI_CTL_SRC_OFFS) | -- CM_SMI_CTL_ENAB, CM_SMI_CTL); --} -- --/**************************************************************************** --* - * SMI peripheral setup - * - ***************************************************************************/ -@@ -894,42 +858,40 @@ static int bcm2835_smi_probe(struct platform_device *pdev) - struct device_node *node = dev->of_node; - struct resource *ioresource; - struct bcm2835_smi_instance *inst; -+ const __be32 *addr; - -+ /* We require device tree support */ -+ if (!node) -+ return -EINVAL; - /* Allocate buffers and instance data */ -- - inst = devm_kzalloc(dev, sizeof(struct bcm2835_smi_instance), - GFP_KERNEL); -- - if (!inst) - return -ENOMEM; - - inst->dev = dev; - spin_lock_init(&inst->transaction_lock); - -- /* We require device tree support */ -- if (!node) -- return -EINVAL; -- - ioresource = platform_get_resource(pdev, IORESOURCE_MEM, 0); - inst->smi_regs_ptr = devm_ioremap_resource(dev, ioresource); -- ioresource = platform_get_resource(pdev, IORESOURCE_MEM, 1); -- inst->cm_smi_regs_ptr = devm_ioremap_resource(dev, ioresource); -- inst->smi_regs_busaddr = be32_to_cpu( -- *of_get_address(node, 0, NULL, NULL)); -- of_property_read_u32(node, -- "brcm,smi-clock-source", -- &inst->clock_source); -- of_property_read_u32(node, -- "brcm,smi-clock-divisor", -- &inst->clock_divisor); -+ if (IS_ERR(inst->smi_regs_ptr)) { -+ err = PTR_ERR(inst->smi_regs_ptr); -+ goto err; -+ } -+ addr = of_get_address(node, 0, NULL, NULL); -+ inst->smi_regs_busaddr = be32_to_cpu(addr); - - err = bcm2835_smi_dma_setup(inst); - if (err) -- return err; -+ goto err; - -- /* Finally, do peripheral setup */ -+ /* request clock */ -+ inst->clk = devm_clk_get(dev, NULL); -+ if (!inst->clk) -+ goto err; -+ clk_prepare_enable(inst->clk); - -- smi_setup_clock(inst); -+ /* Finally, do peripheral setup */ - smi_setup_regs(inst); - - platform_set_drvdata(pdev, inst); -@@ -937,6 +899,9 @@ static int bcm2835_smi_probe(struct platform_device *pdev) - dev_info(inst->dev, "initialised"); - - return 0; -+err: -+ kfree(inst); -+ return err; - } - - /**************************************************************************** -@@ -950,6 +915,11 @@ static int bcm2835_smi_remove(struct platform_device *pdev) - struct bcm2835_smi_instance *inst = platform_get_drvdata(pdev); - struct device *dev = inst->dev; - -+ dmaengine_terminate_all(inst->dma_chan); -+ dma_release_channel(inst->dma_chan); ++ clocks = <&clocks BCM2835_CLOCK_PCM>; ++ }; + -+ clk_disable_unprepare(inst->clk); ++ spi0: spi@7e204000 { ++ /* Add alias */ ++ dmas = <&dma 6>, <&dma 7>; ++ dma-names = "tx", "rx"; ++ }; + - dev_info(dev, "SMI device removed - OK"); - return 0; - } - -From 48c2193d769eb31840f63f76b86f2032a2d8565a Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 15:02:23 +0000 -Subject: [PATCH 127/160] ARM: bcm2835: move smi to use clock framework - -Move smi to use clock framework. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index aa6005c2460df08cf2f102148be251a7a57d0bdf..d757ca03a4a35f5da464667b6897a654a69ca0b8 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -306,10 +306,11 @@ - - smi: smi@7e600000 { - compatible = "brcm,bcm2835-smi"; -- reg = <0x7e600000 0x44>, <0x7e1010b0 0x8>; ++ i2c@7e205000 { /* i2c0 */ ++ compatible = "brcm,bcm2708-i2c"; ++ }; ++ ++ pixelvalve0: pixelvalve@7e206000 { ++ /* Add alias */ ++ status = "disabled"; ++ }; ++ ++ pixelvalve1: pixelvalve@7e207000 { ++ /* Add alias */ ++ status = "disabled"; ++ }; ++ ++ dpi: dpi@7e208000 { ++ compatible = "brcm,bcm2835-dpi"; ++ reg = <0x7e208000 0x8c>; ++ clocks = <&clocks BCM2835_CLOCK_VPU>, ++ <&clocks BCM2835_CLOCK_DPI>; ++ clock-names = "core", "pixel"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "disabled"; ++ }; ++ ++ /delete-node/ sdhci@7e300000; ++ ++ mmc: mmc@7e300000 { ++ compatible = "brcm,bcm2835-mmc"; ++ reg = <0x7e300000 0x100>; ++ interrupts = <2 30>; ++ clocks = <&clocks BCM2835_CLOCK_EMMC>; ++ dmas = <&dma 11>; ++ dma-names = "rx-tx"; ++ brcm,overclock-50 = <0>; ++ status = "disabled"; ++ }; ++ ++ hvs: hvs@7e400000 { ++ /* Add alias */ ++ status = "disabled"; ++ }; ++ ++ smi: smi@7e600000 { ++ compatible = "brcm,bcm2835-smi"; + reg = <0x7e600000 0x100>; - interrupts = <2 16>; -- brcm,smi-clock-source = <6>; -- brcm,smi-clock-divisor = <4>; -+ clocks = <&cprman BCM2835_CLOCK_SMI>; ++ interrupts = <2 16>; ++ clocks = <&clocks BCM2835_CLOCK_SMI>; + assigned-clocks = <&cprman BCM2835_CLOCK_SMI>; + assigned-clock-rates = <125000000>; - dmas = <&dma 4>; - dma-names = "rx-tx"; - status = "disabled"; - -From ca562423092cc1b622ffb2b5578bbebc96d3cb29 Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 13:04:12 +0000 -Subject: [PATCH 128/160] ARM: bcm2708: move mmc to use clock framework - -Move mmc to use clock framework. - -For some reason the emmc clock dirver does not claim the -clock - enable count stays at 0 for the emmc clock. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 10 +--------- - 1 file changed, 1 insertion(+), 9 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index d757ca03a4a35f5da464667b6897a654a69ca0b8..9689b971debfb2368da9f56cac2a4e04a1c6dd17 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -268,7 +268,7 @@ - compatible = "brcm,bcm2835-mmc"; - reg = <0x7e300000 0x100>; - interrupts = <2 30>; -- clocks = <&clk_mmc>; -+ clocks = <&cprman BCM2835_CLOCK_EMMC>; - dmas = <&dma 11>; - dma-names = "rx-tx"; - brcm,overclock-50 = <0>; -@@ -414,14 +414,6 @@ - clock-frequency = <250000000>; - }; - -- clk_mmc: clock@1 { -- compatible = "fixed-clock"; -- reg = <1>; -- #clock-cells = <0>; -- clock-output-names = "mmc"; -- clock-frequency = <250000000>; -- }; -- - /* The oscillator is the root of the clock tree. */ - clk_osc: clock@6 { - compatible = "fixed-clock"; - -From 656a3b0d4acb3df0d2bada2cda5c1269a4f13e8d Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 13:19:51 +0000 -Subject: [PATCH 129/160] ARM: bcm2708: move sdhost to use clock framework - -Move the sdhost device to use the clock framework. - -Unfortunately I can not test it on my CM, as it seem as if -there is no overlay that would enable sdhost and change the -gpio-mux to the correct ALT0 (from Alt3 from mmc). - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 9689b971debfb2368da9f56cac2a4e04a1c6dd17..74b8b67dbc73ddd6fa36b3ae6df96c29dc5e27b0 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -149,7 +149,7 @@ - compatible = "brcm,bcm2835-sdhost"; - reg = <0x7e202000 0x100>; - interrupts = <2 24>; -- clocks = <&clk_core>; -+ clocks = <&cprman BCM2835_CLOCK_VPU>; - dmas = <&dma 13>; - dma-names = "rx-tx"; - brcm,overclock-50 = <0>; - -From f3a7fdc7e12403b432558a66d6b4ce35042741f6 Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 15:11:24 +0000 -Subject: [PATCH 130/160] ARM: bcm2708: remove clk_core as it is no longer used - -Remove clk_core from device tree as it is no longer used. -Any "modification" to the core_clock in the bootloader is now -automatically detected via the cnew clockmgr. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 1 - - arch/arm/boot/dts/bcm2708-rpi-b.dts | 1 - - arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 2 -- - arch/arm/boot/dts/bcm2708_common.dtsi | 8 -------- - arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 1 - - arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 1 - - 6 files changed, 14 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts -index ddccaee96185418107727fb53a0b12e9007f8347..6c16c325cd2887a42c42665273834618c1937918 100644 ---- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts -+++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts -@@ -142,7 +142,6 @@ - i2c0_baudrate = <&i2c0>,"clock-frequency:0"; - i2c1_baudrate = <&i2c1>,"clock-frequency:0"; - i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -- core_freq = <&clk_core>,"clock-frequency:0"; - - act_led_gpio = <&act_led>,"gpios:4"; - act_led_activelow = <&act_led>,"gpios:8"; -diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts -index 022055b553d87655c17716229884975210159ee7..7c132437671d43e76445a4bf1184cc9a316b0965 100644 ---- a/arch/arm/boot/dts/bcm2708-rpi-b.dts -+++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts -@@ -136,7 +136,6 @@ - i2c0_baudrate = <&i2c0>,"clock-frequency:0"; - i2c1_baudrate = <&i2c1>,"clock-frequency:0"; - i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -- core_freq = <&clk_core>,"clock-frequency:0"; - - act_led_gpio = <&act_led>,"gpios:4"; - act_led_activelow = <&act_led>,"gpios:8"; -diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi -index 90e330d1978da8624c042d52a38aa5d6d95d2377..f07609d97225b355dd2b6981d4f1fa28d0d40950 100644 ---- a/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi -+++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi -@@ -38,8 +38,6 @@ - - / { - __overrides__ { -- core_freq = <&clk_core>,"clock-frequency:0"; -- - act_led_gpio = <&act_led>,"gpios:4"; - act_led_activelow = <&act_led>,"gpios:8"; - act_led_trigger = <&act_led>,"linux,default-trigger"; -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 74b8b67dbc73ddd6fa36b3ae6df96c29dc5e27b0..7df436bea6cbdca226e75c687c1518114ae49c7d 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -406,14 +406,6 @@ - #address-cells = <1>; - #size-cells = <0>; - -- clk_core: clock@0 { -- compatible = "fixed-clock"; -- reg = <0>; -- #clock-cells = <0>; -- clock-output-names = "core"; -- clock-frequency = <250000000>; -- }; -- - /* The oscillator is the root of the clock tree. */ - clk_osc: clock@6 { - compatible = "fixed-clock"; -diff --git a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts -index 8eba22a66d986cf819b10b7d28de959188c27b55..74fe4cc1d667e9508ca860bcc8c837fed0cbb855 100644 ---- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts -+++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts -@@ -142,7 +142,6 @@ - i2c0_baudrate = <&i2c0>,"clock-frequency:0"; - i2c1_baudrate = <&i2c1>,"clock-frequency:0"; - i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -- core_freq = <&clk_core>,"clock-frequency:0"; - - act_led_gpio = <&act_led>,"gpios:4"; - act_led_activelow = <&act_led>,"gpios:8"; ++ dmas = <&dma 4>; ++ dma-names = "rx-tx"; ++ status = "disabled"; ++ }; ++ ++ i2c@7e804000 { /* i2c1 */ ++ compatible = "brcm,bcm2708-i2c"; ++ }; ++ ++ i2c@7e805000 { /* i2c2 */ ++ compatible = "brcm,bcm2708-i2c"; ++ }; ++ ++ pixelvalve2: pixelvalve@7e807000 { ++ /* Add alias */ ++ status = "disabled"; ++ }; ++ ++ hdmi@7e902000 { /* hdmi */ ++ status = "disabled"; ++ }; ++ ++ usb@7e980000 { /* usb */ ++ compatible = "brcm,bcm2708-usb"; ++ reg = <0x7e980000 0x10000>, ++ <0x7e006000 0x1000>; ++ interrupts = <2 0>, ++ <1 9>; ++ }; ++ ++ v3d@7ec00000 { /* vd3 */ ++ compatible = "brcm,vc4-v3d"; ++ status = "disabled"; ++ }; ++ ++ gpu: gpu { ++ /* Add alias */ ++ status = "disabled"; ++ }; ++ }; ++}; diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts -index 55ddafda0b17e480e129dc84c93e6743ff533ec1..037ed41b140c448940c4a04d235fa6e6898265d3 100644 +index d9ae00f95e6261eea582d7a2c6dfbc221f99953d..30060663ca712578f6d697fd02a3b31d94301707 100644 --- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts -@@ -193,7 +193,6 @@ - i2c0_baudrate = <&i2c0>,"clock-frequency:0"; - i2c1_baudrate = <&i2c1>,"clock-frequency:0"; - i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -- core_freq = <&clk_core>,"clock-frequency:0"; +@@ -153,15 +153,10 @@ + }; - act_led_gpio = <&act_led>,"gpios:4"; - act_led_activelow = <&act_led>,"gpios:8"; - -From 1b97b68564229cc2752d376e2fbac2b6a2f24290 Mon Sep 17 00:00:00 2001 -From: DigitalDreamtime -Date: Tue, 16 Aug 2016 20:07:38 +0100 -Subject: [PATCH 131/160] CM3: ARM: bcm2708: moved uart0 to use new clock - framework - -Moved uart0 to use new clock framework. -At the same time removed the fixed clock clk_uart0 -and the corresponding references, as the clock is now -read directly from the configured clocks. - -If it ever becomes necessary the following can get added -to modify the base clock rate later: - assigned-clocks = <&clocks BCM2835_CLOCK_UART>; - assigned-clock-rates = ; - -Signed-off-by: DigitalDreamtime ---- - arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 1 - - 1 file changed, 1 deletion(-) - + &i2s { +- #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; + }; + +-&random { +- status = "okay"; +-}; +- + &leds { + act_led: act { + label = "led0"; diff --git a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -index 6a3d2f21295a63e9211638b9e4ba202753c8181b..f637da1d3b85dfc79e88b4bf0b3ec12417ba2c21 100644 +index 20388084b98cf942529eb60c55dc540cfea71886..b5a5ae7747455438f8eabd28e8c11c6aeb0c1ecc 100644 --- a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts +++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -@@ -149,7 +149,6 @@ +@@ -108,15 +108,10 @@ + }; + + &i2s { +- #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; + }; + +-&random { +- status = "okay"; +-}; +- + &leds { + act_led: act { + label = "led0"; +diff --git a/arch/arm/boot/dts/bcm2710.dtsi b/arch/arm/boot/dts/bcm2710.dtsi +index 223bd9627b3dcaac5458909dc59c877eed751ce4..491594c918cf5da94fbb19a606edb0dd9a28c3a9 100644 +--- a/arch/arm/boot/dts/bcm2710.dtsi ++++ b/arch/arm/boot/dts/bcm2710.dtsi +@@ -1,14 +1,11 @@ +-#include "bcm2708_common.dtsi" ++#include "bcm283x.dtsi" ++#include "bcm270x.dtsi" ++#include "bcm2708-rpi.dtsi" + / { - __overrides__ { - uart0 = <&uart0>,"status"; -- uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; - uart1 = <&uart1>,"status"; - i2s = <&i2s>,"status"; - spi = <&spi0>,"status"; - -From a2ca7729f8ab007ef6092248dd2ee1d4aab57e14 Mon Sep 17 00:00:00 2001 -From: DigitalDreamtime -Date: Tue, 16 Aug 2016 20:09:33 +0100 -Subject: [PATCH 132/160] CM3: ARM: bcm2708: remove clk_core as it is no longer - used - -Remove clk_core from device tree as it is no longer used. -Any "modification" to the core_clock in the bootloader is now -automatically detected via the cnew clockmgr. - -Signed-off-by: DigitalDreamtime ---- - arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -index f637da1d3b85dfc79e88b4bf0b3ec12417ba2c21..a5d57893d5799e57ffe9b8efe553a03ec4bde007 100644 ---- a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -+++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -@@ -158,7 +158,6 @@ - i2c0_baudrate = <&i2c0>,"clock-frequency:0"; - i2c1_baudrate = <&i2c1>,"clock-frequency:0"; - i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -- core_freq = <&clk_core>,"clock-frequency:0"; + compatible = "brcm,bcm2710","brcm,bcm2709"; + model = "BCM2710"; - act_led_gpio = <&act_led>,"gpios:4"; - act_led_activelow = <&act_led>,"gpios:8"; +- chosen { +- /* No padding required - the boot loader can do that. */ +- bootargs = ""; +- }; +- + soc { + ranges = <0x7e000000 0x3f000000 0x01000000>, + <0x40000000 0x40000000 0x00040000>; +@@ -34,19 +31,12 @@ + interrupts = <9>; + }; + +- gpiomem { +- compatible = "brcm,bcm2835-gpiomem"; +- reg = <0x7e200000 0x1000>; +- status = "okay"; +- }; +- + timer { + #ifdef RPI364 + compatible = "arm,armv8-timer", "arm,armv7-timer"; + #else + compatible = "arm,armv7-timer"; + #endif +- clock-frequency = <19200000>; + interrupt-parent = <&local_intc>; + interrupts = <0>, // PHYS_SECURE_PPI + <1>, // PHYS_NONSECURE_PPI +@@ -151,10 +141,6 @@ + #endif + }; + +-&watchdog { +- status = "okay"; +-}; +- + &intc { + compatible = "brcm,bcm2836-armctrl-ic"; + #ifdef RPI364 +@@ -163,3 +149,11 @@ + interrupt-parent = <&local_intc>; + interrupts = <8>; + }; ++ ++#ifdef RPI364 ++&usb { ++ compatible = "brcm,bcm2835-usb"; ++ reg = <0x7e980000 0x10000>; ++ interrupts = <1 9>; ++}; ++#endif -From 7bfcbf2e85e3128a9d715a21a8c54ec3f5d5215c Mon Sep 17 00:00:00 2001 +From b17ce54bf6c1e3dbd977367d8b67407ee6cb10e7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Fri, 7 Oct 2016 16:50:59 +0200 +Subject: [PATCH 118/132] watchdog: bcm2835: Support setting reboot partition +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The Raspberry Pi firmware looks at the RSTS register to know which +partition to boot from. The reboot syscall command +LINUX_REBOOT_CMD_RESTART2 supports passing in a string argument. + +Add support for passing in a partition number 0..63 to boot from. +Partition 63 is a special partiton indicating halt. +If the partition doesn't exist, the firmware falls back to partition 0. + +Signed-off-by: Noralf Trønnes +--- + drivers/watchdog/bcm2835_wdt.c | 61 +++++++++++++++++++++++++----------------- + 1 file changed, 36 insertions(+), 25 deletions(-) + +diff --git a/drivers/watchdog/bcm2835_wdt.c b/drivers/watchdog/bcm2835_wdt.c +index 4dddd8298a227d64862f2e92954a465f2e44b3f6..1f545e024422f59280932713e6a1b05150b39b22 100644 +--- a/drivers/watchdog/bcm2835_wdt.c ++++ b/drivers/watchdog/bcm2835_wdt.c +@@ -35,13 +35,7 @@ + #define PM_RSTC_WRCFG_SET 0x00000030 + #define PM_RSTC_WRCFG_FULL_RESET 0x00000020 + #define PM_RSTC_RESET 0x00000102 +- +-/* +- * The Raspberry Pi firmware uses the RSTS register to know which partiton +- * to boot from. The partiton value is spread into bits 0, 2, 4, 6, 8, 10. +- * Partiton 63 is a special partition used by the firmware to indicate halt. +- */ +-#define PM_RSTS_RASPBERRYPI_HALT 0x555 ++#define PM_RSTS_PARTITION_CLR 0xfffffaaa + + #define SECS_TO_WDOG_TICKS(x) ((x) << 16) + #define WDOG_TICKS_TO_SECS(x) ((x) >> 16) +@@ -111,15 +105,28 @@ static struct watchdog_device bcm2835_wdt_wdd = { + .timeout = WDOG_TICKS_TO_SECS(PM_WDOG_TIME_SET), + }; + +-static int +-bcm2835_restart(struct notifier_block *this, unsigned long mode, void *cmd) ++/* ++ * The Raspberry Pi firmware uses the RSTS register to know which partiton ++ * to boot from. The partiton value is spread into bits 0, 2, 4, 6, 8, 10. ++ * Partiton 63 is a special partition used by the firmware to indicate halt. ++ */ ++ ++static void bcm2835_restart(struct bcm2835_wdt *wdt, u8 partition) + { +- struct bcm2835_wdt *wdt = container_of(this, struct bcm2835_wdt, +- restart_handler); +- u32 val; ++ u32 val, rsts; ++ ++ rsts = (partition & BIT(0)) | ((partition & BIT(1)) << 1) | ++ ((partition & BIT(2)) << 2) | ((partition & BIT(3)) << 3) | ++ ((partition & BIT(4)) << 4) | ((partition & BIT(5)) << 5); ++ ++ val = readl_relaxed(wdt->base + PM_RSTS); ++ val &= PM_RSTS_PARTITION_CLR; ++ val |= PM_PASSWORD | rsts; ++ writel_relaxed(val, wdt->base + PM_RSTS); + + /* use a timeout of 10 ticks (~150us) */ + writel_relaxed(10 | PM_PASSWORD, wdt->base + PM_WDOG); ++ + val = readl_relaxed(wdt->base + PM_RSTC); + val &= PM_RSTC_WRCFG_CLR; + val |= PM_PASSWORD | PM_RSTC_WRCFG_FULL_RESET; +@@ -127,6 +134,20 @@ bcm2835_restart(struct notifier_block *this, unsigned long mode, void *cmd) + + /* No sleeping, possibly atomic. */ + mdelay(1); ++} ++ ++static int bcm2835_restart_notifier_call(struct notifier_block *this, ++ unsigned long mode, void *cmd) ++{ ++ struct bcm2835_wdt *wdt = container_of(this, struct bcm2835_wdt, ++ restart_handler); ++ unsigned long long val; ++ u8 partition = 0; ++ ++ if (cmd && !kstrtoull(cmd, 0, &val) && val <= 63) ++ partition = val; ++ ++ bcm2835_restart(wdt, partition); + + return 0; + } +@@ -142,19 +163,9 @@ static void bcm2835_power_off(void) + of_find_compatible_node(NULL, NULL, "brcm,bcm2835-pm-wdt"); + struct platform_device *pdev = of_find_device_by_node(np); + struct bcm2835_wdt *wdt = platform_get_drvdata(pdev); +- u32 val; +- +- /* +- * We set the watchdog hard reset bit here to distinguish this reset +- * from the normal (full) reset. bootcode.bin will not reboot after a +- * hard reset. +- */ +- val = readl_relaxed(wdt->base + PM_RSTS); +- val |= PM_PASSWORD | PM_RSTS_RASPBERRYPI_HALT; +- writel_relaxed(val, wdt->base + PM_RSTS); + +- /* Continue with normal reset mechanism */ +- bcm2835_restart(&wdt->restart_handler, REBOOT_HARD, NULL); ++ /* Partition 63 tells the firmware that this is a halt */ ++ bcm2835_restart(wdt, 63); + } + + static int bcm2835_wdt_probe(struct platform_device *pdev) +@@ -188,7 +199,7 @@ static int bcm2835_wdt_probe(struct platform_device *pdev) + return err; + } + +- wdt->restart_handler.notifier_call = bcm2835_restart; ++ wdt->restart_handler.notifier_call = bcm2835_restart_notifier_call; + wdt->restart_handler.priority = 128; + register_restart_handler(&wdt->restart_handler); + if (pm_power_off == NULL) + +From 87ec199b9d7b0c2c4201b6743643f59fc9d948d3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Fri, 7 Oct 2016 17:07:46 +0200 +Subject: [PATCH 119/132] bcm270x: Use watchdog for reboot/poweroff +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The watchdog driver already has support for reboot/poweroff. +Make use of this and remove the code from the platform files. + +Signed-off-by: Noralf Trønnes +--- + arch/arm/configs/bcm2709_defconfig | 2 +- + arch/arm/configs/bcmrpi_defconfig | 2 +- + arch/arm/mach-bcm2708/bcm2708.c | 70 ------------------------------------- + arch/arm/mach-bcm2709/bcm2709.c | 71 -------------------------------------- + 4 files changed, 2 insertions(+), 143 deletions(-) + +diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig +index dfbb3406e38b50bf38db84071f82c3a556da8057..aa708638cc6f3bceb189c2deef7307252901291f 100644 +--- a/arch/arm/configs/bcm2709_defconfig ++++ b/arch/arm/configs/bcm2709_defconfig +@@ -650,7 +650,7 @@ CONFIG_SENSORS_INA2XX=m + CONFIG_THERMAL=y + CONFIG_THERMAL_BCM2835=y + CONFIG_WATCHDOG=y +-CONFIG_BCM2835_WDT=m ++CONFIG_BCM2835_WDT=y + CONFIG_UCB1400_CORE=m + CONFIG_MFD_STMPE=y + CONFIG_STMPE_SPI=y +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index cfe21355f7d95326b292be1b018b988fa3ffe865..952104ab6c4cd0e9d8f7bd5f2fba7a72da75424e 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -641,7 +641,7 @@ CONFIG_SENSORS_INA2XX=m + CONFIG_THERMAL=y + CONFIG_THERMAL_BCM2835=y + CONFIG_WATCHDOG=y +-CONFIG_BCM2835_WDT=m ++CONFIG_BCM2835_WDT=y + CONFIG_UCB1400_CORE=m + CONFIG_MFD_STMPE=y + CONFIG_STMPE_SPI=y +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index 280628ba8907d2a4323fc86dfc6db7fc684aeabc..a8e2a5b114b2f12f18378ce5fff2a88419b6f52f 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -44,7 +44,6 @@ + + /* command line parameters */ + static unsigned boardrev, serial; +-static unsigned reboot_part = 0; + + static struct map_desc bcm2708_io_desc[] __initdata = { + { +@@ -99,71 +98,6 @@ void __init bcm2708_map_io(void) + iotable_init(bcm2708_io_desc, ARRAY_SIZE(bcm2708_io_desc)); + } + +-int calc_rsts(int partition) +-{ +- return PM_PASSWORD | +- ((partition & (1 << 0)) << 0) | +- ((partition & (1 << 1)) << 1) | +- ((partition & (1 << 2)) << 2) | +- ((partition & (1 << 3)) << 3) | +- ((partition & (1 << 4)) << 4) | +- ((partition & (1 << 5)) << 5); +-} +- +-static void bcm2708_restart(enum reboot_mode mode, const char *cmd) +-{ +- extern char bcm2708_reboot_mode; +- uint32_t pm_rstc, pm_wdog; +- uint32_t timeout = 10; +- uint32_t pm_rsts = 0; +- +- if(bcm2708_reboot_mode == 'q') +- { +- // NOOBS < 1.3 booting with reboot=q +- pm_rsts = readl(__io_address(PM_RSTS)); +- pm_rsts = PM_PASSWORD | pm_rsts | PM_RSTS_HADWRQ_SET; +- } +- else if(bcm2708_reboot_mode == 'p') +- { +- // NOOBS < 1.3 halting +- pm_rsts = readl(__io_address(PM_RSTS)); +- pm_rsts = PM_PASSWORD | pm_rsts | PM_RSTS_HADWRH_SET; +- } +- else +- { +- pm_rsts = calc_rsts(reboot_part); +- } +- +- writel(pm_rsts, __io_address(PM_RSTS)); +- +- /* Setup watchdog for reset */ +- pm_rstc = readl(__io_address(PM_RSTC)); +- +- pm_wdog = PM_PASSWORD | (timeout & PM_WDOG_TIME_SET); // watchdog timer = timer clock / 16; need password (31:16) + value (11:0) +- pm_rstc = PM_PASSWORD | (pm_rstc & PM_RSTC_WRCFG_CLR) | PM_RSTC_WRCFG_FULL_RESET; +- +- writel(pm_wdog, __io_address(PM_WDOG)); +- writel(pm_rstc, __io_address(PM_RSTC)); +-} +- +-/* We can't really power off, but if we do the normal reset scheme, and indicate to bootcode.bin not to reboot, then most of the chip will be powered off */ +-static void bcm2708_power_off(void) +-{ +- extern char bcm2708_reboot_mode; +- if(bcm2708_reboot_mode == 'q') +- { +- // NOOBS < v1.3 +- bcm2708_restart('p', ""); +- } +- else +- { +- /* partition 63 is special code for HALT the bootloader knows not to boot*/ +- reboot_part = 63; +- /* continue with normal reset mechanism */ +- bcm2708_restart(0, ""); +- } +-} +- + static void __init bcm2708_init_uart1(void) + { + struct device_node *np; +@@ -181,8 +115,6 @@ void __init bcm2708_init(void) + + vc_cma_early_init(); + +- pm_power_off = bcm2708_power_off; +- + ret = of_platform_populate(NULL, of_default_bus_match_table, NULL, + NULL); + if (ret) { +@@ -222,10 +154,8 @@ MACHINE_START(BCM2708, "BCM2708") + .init_machine = bcm2708_init, + .init_early = bcm2708_init_early, + .reserve = board_reserve, +- .restart = bcm2708_restart, + .dt_compat = bcm2708_compat, + MACHINE_END + + module_param(boardrev, uint, 0644); + module_param(serial, uint, 0644); +-module_param(reboot_part, uint, 0644); +diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c +index d4c9d57d78a964fbbf799b534471462d3c3b88f1..ed5c5414f7a3ad7284cda881e9e550777cd29282 100644 +--- a/arch/arm/mach-bcm2709/bcm2709.c ++++ b/arch/arm/mach-bcm2709/bcm2709.c +@@ -51,7 +51,6 @@ + + /* command line parameters */ + static unsigned boardrev, serial; +-static unsigned reboot_part = 0; + + static struct map_desc bcm2709_io_desc[] __initdata = { + { +@@ -111,71 +110,6 @@ void __init bcm2709_map_io(void) + iotable_init(bcm2709_io_desc, ARRAY_SIZE(bcm2709_io_desc)); + } + +-int calc_rsts(int partition) +-{ +- return PM_PASSWORD | +- ((partition & (1 << 0)) << 0) | +- ((partition & (1 << 1)) << 1) | +- ((partition & (1 << 2)) << 2) | +- ((partition & (1 << 3)) << 3) | +- ((partition & (1 << 4)) << 4) | +- ((partition & (1 << 5)) << 5); +-} +- +-static void bcm2709_restart(enum reboot_mode mode, const char *cmd) +-{ +- extern char bcm2708_reboot_mode; +- uint32_t pm_rstc, pm_wdog; +- uint32_t timeout = 10; +- uint32_t pm_rsts = 0; +- +- if(bcm2708_reboot_mode == 'q') +- { +- // NOOBS < 1.3 booting with reboot=q +- pm_rsts = readl(__io_address(PM_RSTS)); +- pm_rsts = PM_PASSWORD | pm_rsts | PM_RSTS_HADWRQ_SET; +- } +- else if(bcm2708_reboot_mode == 'p') +- { +- // NOOBS < 1.3 halting +- pm_rsts = readl(__io_address(PM_RSTS)); +- pm_rsts = PM_PASSWORD | pm_rsts | PM_RSTS_HADWRH_SET; +- } +- else +- { +- pm_rsts = calc_rsts(reboot_part); +- } +- +- writel(pm_rsts, __io_address(PM_RSTS)); +- +- /* Setup watchdog for reset */ +- pm_rstc = readl(__io_address(PM_RSTC)); +- +- pm_wdog = PM_PASSWORD | (timeout & PM_WDOG_TIME_SET); // watchdog timer = timer clock / 16; need password (31:16) + value (11:0) +- pm_rstc = PM_PASSWORD | (pm_rstc & PM_RSTC_WRCFG_CLR) | PM_RSTC_WRCFG_FULL_RESET; +- +- writel(pm_wdog, __io_address(PM_WDOG)); +- writel(pm_rstc, __io_address(PM_RSTC)); +-} +- +-/* We can't really power off, but if we do the normal reset scheme, and indicate to bootcode.bin not to reboot, then most of the chip will be powered off */ +-static void bcm2709_power_off(void) +-{ +- extern char bcm2708_reboot_mode; +- if(bcm2708_reboot_mode == 'q') +- { +- // NOOBS < v1.3 +- bcm2709_restart('p', ""); +- } +- else +- { +- /* partition 63 is special code for HALT the bootloader knows not to boot*/ +- reboot_part = 63; +- /* continue with normal reset mechanism */ +- bcm2709_restart(0, ""); +- } +-} +- + static void __init bcm2709_init_uart1(void) + { + struct device_node *np; +@@ -193,8 +127,6 @@ void __init bcm2709_init(void) + + vc_cma_early_init(); + +- pm_power_off = bcm2709_power_off; +- + ret = of_platform_populate(NULL, of_default_bus_match_table, NULL, + NULL); + if (ret) { +@@ -235,7 +167,6 @@ MACHINE_START(BCM2709, "BCM2709") + .init_machine = bcm2709_init, + .init_early = bcm2709_init_early, + .reserve = board_reserve, +- .restart = bcm2709_restart, + .dt_compat = bcm2709_compat, + MACHINE_END + +@@ -245,10 +176,8 @@ MACHINE_START(BCM2708, "BCM2709") + .init_machine = bcm2709_init, + .init_early = bcm2709_init_early, + .reserve = board_reserve, +- .restart = bcm2709_restart, + .dt_compat = bcm2709_compat, + MACHINE_END + + module_param(boardrev, uint, 0644); + module_param(serial, uint, 0644); +-module_param(reboot_part, uint, 0644); + +From 49f59e094fb5966061ba492d60dcf8a90a83eb0e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Mon, 10 Oct 2016 17:35:40 +0200 +Subject: [PATCH 120/132] bcm270x: Remove dead files +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +include/mach/vmalloc.h has not been used since 2011. +include/mach/entry-macro.S is leftover from the move to the mainline +irq driver. + +Signed-off-by: Noralf Trønnes +--- + arch/arm/mach-bcm2708/include/mach/vmalloc.h | 20 ---- + arch/arm/mach-bcm2709/include/mach/entry-macro.S | 123 ----------------------- + arch/arm/mach-bcm2709/include/mach/vmalloc.h | 20 ---- + 3 files changed, 163 deletions(-) + delete mode 100644 arch/arm/mach-bcm2708/include/mach/vmalloc.h + delete mode 100644 arch/arm/mach-bcm2709/include/mach/entry-macro.S + delete mode 100644 arch/arm/mach-bcm2709/include/mach/vmalloc.h + +diff --git a/arch/arm/mach-bcm2708/include/mach/vmalloc.h b/arch/arm/mach-bcm2708/include/mach/vmalloc.h +deleted file mode 100644 +index 502c6178101be60b10c9eb31afec938b5534c33f..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2708/include/mach/vmalloc.h ++++ /dev/null +@@ -1,20 +0,0 @@ +-/* +- * arch/arm/mach-bcm2708/include/mach/vmalloc.h +- * +- * Copyright (C) 2010 Broadcom +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +-#define VMALLOC_END (0xe8000000) +diff --git a/arch/arm/mach-bcm2709/include/mach/entry-macro.S b/arch/arm/mach-bcm2709/include/mach/entry-macro.S +deleted file mode 100644 +index d08591b63c1a1710c40350d343d3eddc97ae74c1..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2709/include/mach/entry-macro.S ++++ /dev/null +@@ -1,123 +0,0 @@ +-/* +- * arch/arm/mach-bcm2708/include/mach/entry-macro.S +- * +- * Low-level IRQ helper macros for BCM2708 platforms +- * +- * Copyright (C) 2010 Broadcom +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +-#include +-#include +- +- .macro disable_fiq +- .endm +- +- .macro get_irqnr_preamble, base, tmp +- ldr \base, =IO_ADDRESS(ARMCTRL_IC_BASE) +- .endm +- +- .macro arch_ret_to_user, tmp1, tmp2 +- .endm +- +- .macro get_irqnr_and_base, irqnr, irqstat, base, tmp +- /* get core number */ +- mrc p15, 0, \tmp, c0, c0, 5 +- ubfx \tmp, \tmp, #0, #2 +- +- /* get core's local interrupt controller */ +- ldr \irqstat, = __io_address(ARM_LOCAL_IRQ_PENDING0) @ local interrupt source +- add \irqstat, \irqstat, \tmp, lsl #2 +- ldr \tmp, [\irqstat] +- /* ignore gpu interrupt */ +- bic \tmp, #0x100 +- /* ignore mailbox interrupts */ +- bics \tmp, #0xf0 +- beq 1005f +- +- @ For non-zero x, LSB(x) = 31 - CLZ(x^(x-1)) +- @ N.B. CLZ is an ARM5 instruction. +- mov \irqnr, #(ARM_IRQ_LOCAL_BASE + 31) +- sub \irqstat, \tmp, #1 +- eor \irqstat, \irqstat, \tmp +- clz \tmp, \irqstat +- sub \irqnr, \tmp +- b 1020f +-1005: +- /* get core number */ +- mrc p15, 0, \tmp, c0, c0, 5 +- ubfx \tmp, \tmp, #0, #2 +- +- cmp \tmp, #1 +- beq 1020f +- cmp \tmp, #2 +- beq 1020f +- cmp \tmp, #3 +- beq 1020f +- +- /* get masked status */ +- ldr \irqstat, [\base, #(ARM_IRQ_PEND0 - ARMCTRL_IC_BASE)] +- mov \irqnr, #(ARM_IRQ0_BASE + 31) +- and \tmp, \irqstat, #0x300 @ save bits 8 and 9 +- /* clear bits 8 and 9, and test */ +- bics \irqstat, \irqstat, #0x300 +- bne 1010f +- +- tst \tmp, #0x100 +- ldrne \irqstat, [\base, #(ARM_IRQ_PEND1 - ARMCTRL_IC_BASE)] +- movne \irqnr, #(ARM_IRQ1_BASE + 31) +- @ Mask out the interrupts also present in PEND0 - see SW-5809 +- bicne \irqstat, #((1<<7) | (1<<9) | (1<<10)) +- bicne \irqstat, #((1<<18) | (1<<19)) +- bne 1010f +- +- tst \tmp, #0x200 +- ldrne \irqstat, [\base, #(ARM_IRQ_PEND2 - ARMCTRL_IC_BASE)] +- movne \irqnr, #(ARM_IRQ2_BASE + 31) +- @ Mask out the interrupts also present in PEND0 - see SW-5809 +- bicne \irqstat, #((1<<21) | (1<<22) | (1<<23) | (1<<24) | (1<<25)) +- bicne \irqstat, #((1<<30)) +- beq 1020f +- +-1010: +- @ For non-zero x, LSB(x) = 31 - CLZ(x^(x-1)) +- @ N.B. CLZ is an ARM5 instruction. +- sub \tmp, \irqstat, #1 +- eor \irqstat, \irqstat, \tmp +- clz \tmp, \irqstat +- sub \irqnr, \tmp +- +-1020: @ EQ will be set if no irqs pending +- +- .endm +- +- .macro test_for_ipi, irqnr, irqstat, base, tmp +- /* get core number */ +- mrc p15, 0, \tmp, c0, c0, 5 +- ubfx \tmp, \tmp, #0, #2 +- /* get core's mailbox interrupt control */ +- ldr \irqstat, = __io_address(ARM_LOCAL_MAILBOX0_CLR0) @ mbox_clr +- add \irqstat, \irqstat, \tmp, lsl #4 +- ldr \tmp, [\irqstat] +- cmp \tmp, #0 +- beq 1030f +- clz \tmp, \tmp +- rsb \irqnr, \tmp, #31 +- mov \tmp, #1 +- lsl \tmp, \irqnr +- str \tmp, [\irqstat] @ clear interrupt source +- dsb +-1030: @ EQ will be set if no irqs pending +- .endm +diff --git a/arch/arm/mach-bcm2709/include/mach/vmalloc.h b/arch/arm/mach-bcm2709/include/mach/vmalloc.h +deleted file mode 100644 +index 6aa68260dd866c83527dffece8de483913231fb3..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2709/include/mach/vmalloc.h ++++ /dev/null +@@ -1,20 +0,0 @@ +-/* +- * arch/arm/mach-bcm2708/include/mach/vmalloc.h +- * +- * Copyright (C) 2010 Broadcom +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +-#define VMALLOC_END (0xff000000) + +From 657a2de2fd2927b834e8f109042dc37bf3c9ce25 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Mon, 10 Oct 2016 17:37:43 +0200 +Subject: [PATCH 121/132] bcm270x: Drop bcm2835-aux-uart hack +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The gated bcm2835-aux clock is now used to enable uart1 so drop this hack. + +Signed-off-by: Noralf Trønnes +--- + arch/arm/mach-bcm2708/bcm2708.c | 15 +-------------- + arch/arm/mach-bcm2709/bcm2709.c | 15 +-------------- + 2 files changed, 2 insertions(+), 28 deletions(-) + +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index a8e2a5b114b2f12f18378ce5fff2a88419b6f52f..8d1e56db3a89295af18dff99f1ee572f56487e72 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -98,18 +98,7 @@ void __init bcm2708_map_io(void) + iotable_init(bcm2708_io_desc, ARRAY_SIZE(bcm2708_io_desc)); + } + +-static void __init bcm2708_init_uart1(void) +-{ +- struct device_node *np; +- +- np = of_find_compatible_node(NULL, NULL, "brcm,bcm2835-aux-uart"); +- if (of_device_is_available(np)) { +- pr_info("bcm2708: Mini UART enabled\n"); +- writel(1, __io_address(UART1_BASE + 0x4)); +- } +-} +- +-void __init bcm2708_init(void) ++static void __init bcm2708_init(void) + { + int ret; + +@@ -122,8 +111,6 @@ void __init bcm2708_init(void) + BUG(); + } + +- bcm2708_init_uart1(); +- + system_rev = boardrev; + system_serial_low = serial; + } +diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c +index ed5c5414f7a3ad7284cda881e9e550777cd29282..9a1ad48d13172856e3ec748db015cb95cd110b76 100644 +--- a/arch/arm/mach-bcm2709/bcm2709.c ++++ b/arch/arm/mach-bcm2709/bcm2709.c +@@ -110,18 +110,7 @@ void __init bcm2709_map_io(void) + iotable_init(bcm2709_io_desc, ARRAY_SIZE(bcm2709_io_desc)); + } + +-static void __init bcm2709_init_uart1(void) +-{ +- struct device_node *np; +- +- np = of_find_compatible_node(NULL, NULL, "brcm,bcm2835-aux-uart"); +- if (of_device_is_available(np)) { +- pr_info("bcm2709: Mini UART enabled\n"); +- writel(1, __io_address(UART1_BASE + 0x4)); +- } +-} +- +-void __init bcm2709_init(void) ++static void __init bcm2709_init(void) + { + int ret; + +@@ -134,8 +123,6 @@ void __init bcm2709_init(void) + BUG(); + } + +- bcm2709_init_uart1(); +- + system_rev = boardrev; + system_serial_low = serial; + } + +From cf2be857b843343a3cf3a7104fed5228b5e1bbe3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Mon, 10 Oct 2016 17:39:30 +0200 +Subject: [PATCH 122/132] Revert "bcm2835: Add support for uart1" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This reverts commit 86eba5c1a1089dc0bad01735f559e37d08525527. + +The gated bcm2835-aux clock is now used to enable uart1 so drop this hack. + +Signed-off-by: Noralf Trønnes +--- + arch/arm/mach-bcm/board_bcm2835.c | 25 ------------------------- + 1 file changed, 25 deletions(-) + +diff --git a/arch/arm/mach-bcm/board_bcm2835.c b/arch/arm/mach-bcm/board_bcm2835.c +index 0ef5cd3d1d6ec420360294acc98d40d698d38d8a..8f152266ba9b470df2eaaed9ebcf158ed2079834 100644 +--- a/arch/arm/mach-bcm/board_bcm2835.c ++++ b/arch/arm/mach-bcm/board_bcm2835.c +@@ -21,29 +21,6 @@ + #include + #include + +-/* Use this hack until a proper solution is agreed upon */ +-static void __init bcm2835_init_uart1(void) +-{ +- struct device_node *np; +- +- np = of_find_compatible_node(NULL, NULL, "brcm,bcm2835-aux-uart"); +- if (of_device_is_available(np)) { +- np = of_find_compatible_node(NULL, NULL, +- "bcrm,bcm2835-aux-enable"); +- if (np) { +- void __iomem *base = of_iomap(np, 0); +- +- if (!base) { +- pr_err("bcm2835: Failed enabling Mini UART\n"); +- return; +- } +- +- writel(1, base); +- pr_info("bcm2835: Mini UART enabled\n"); +- } +- } +-} +- + static void __init bcm2835_init(void) + { + struct device_node *np = of_find_node_by_path("/system"); +@@ -56,8 +33,6 @@ static void __init bcm2835_init(void) + system_rev = val; + if (!of_property_read_u64(np, "linux,serial", &val64)) + system_serial_low = val64; +- +- bcm2835_init_uart1(); + } + + static const char * const bcm2835_compat[] = { + +From ca77269b8c376a34e42ab6c6c7e4d76866c466e6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Mon, 10 Oct 2016 17:41:26 +0200 +Subject: [PATCH 123/132] bcm270x: Remove unnecessary of_platform_populate +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Since 4.8 of_platform_default_populate_init() does the same and it is +called at arch_initcall_sync. + +Signed-off-by: Noralf Trønnes +--- + arch/arm/mach-bcm2708/bcm2708.c | 10 ---------- + arch/arm/mach-bcm2709/bcm2709.c | 10 ---------- + 2 files changed, 20 deletions(-) + +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index 8d1e56db3a89295af18dff99f1ee572f56487e72..0db44e566062751510494e2fe19926122aad7d5a 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -21,7 +21,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -100,17 +99,8 @@ void __init bcm2708_map_io(void) + + static void __init bcm2708_init(void) + { +- int ret; +- + vc_cma_early_init(); + +- ret = of_platform_populate(NULL, of_default_bus_match_table, NULL, +- NULL); +- if (ret) { +- pr_err("of_platform_populate failed: %d\n", ret); +- BUG(); +- } +- + system_rev = boardrev; + system_serial_low = serial; + } +diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c +index 9a1ad48d13172856e3ec748db015cb95cd110b76..d2762f558f644ac87c56ba9402a638a3c7a26397 100644 +--- a/arch/arm/mach-bcm2709/bcm2709.c ++++ b/arch/arm/mach-bcm2709/bcm2709.c +@@ -25,7 +25,6 @@ + #include + #include + #include +-#include + + #include + #include +@@ -112,17 +111,8 @@ void __init bcm2709_map_io(void) + + static void __init bcm2709_init(void) + { +- int ret; +- + vc_cma_early_init(); + +- ret = of_platform_populate(NULL, of_default_bus_match_table, NULL, +- NULL); +- if (ret) { +- pr_err("of_platform_populate failed: %d\n", ret); +- BUG(); +- } +- + system_rev = boardrev; + system_serial_low = serial; + } + +From b4b850195559488e7c7e681cd295ab6b9c330821 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Mon, 10 Oct 2016 17:46:27 +0200 +Subject: [PATCH 124/132] bcm270x: Remove 4MB dma coherent pool +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Drop the call to init_dma_coherent_pool_size(). The default 256kB is +enough since vchiq dropped that atomic allocation some time back. + +Signed-off-by: Noralf Trønnes +--- + arch/arm/mach-bcm2708/bcm2708.c | 11 ----------- + arch/arm/mach-bcm2709/bcm2709.c | 12 ------------ + 2 files changed, 23 deletions(-) + +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index 0db44e566062751510494e2fe19926122aad7d5a..0dc1efd48f385eea9f712fc8e18ffc92966271f2 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -105,16 +105,6 @@ static void __init bcm2708_init(void) + system_serial_low = serial; + } + +-void __init bcm2708_init_early(void) +-{ +- /* +- * Some devices allocate their coherent buffers from atomic +- * context. Increase size of atomic coherent pool to make sure such +- * the allocations won't fail. +- */ +- init_dma_coherent_pool_size(SZ_4M); +-} +- + static void __init board_reserve(void) + { + vc_cma_reserve(); +@@ -129,7 +119,6 @@ MACHINE_START(BCM2708, "BCM2708") + /* Maintainer: Broadcom Europe Ltd. */ + .map_io = bcm2708_map_io, + .init_machine = bcm2708_init, +- .init_early = bcm2708_init_early, + .reserve = board_reserve, + .dt_compat = bcm2708_compat, + MACHINE_END +diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c +index d2762f558f644ac87c56ba9402a638a3c7a26397..d0e43619669e851350c5d9d7bb7e9dd19ea6ff1b 100644 +--- a/arch/arm/mach-bcm2709/bcm2709.c ++++ b/arch/arm/mach-bcm2709/bcm2709.c +@@ -117,16 +117,6 @@ static void __init bcm2709_init(void) + system_serial_low = serial; + } + +-void __init bcm2709_init_early(void) +-{ +- /* +- * Some devices allocate their coherent buffers from atomic +- * context. Increase size of atomic coherent pool to make sure such +- * the allocations won't fail. +- */ +- init_dma_coherent_pool_size(SZ_4M); +-} +- + static void __init board_reserve(void) + { + vc_cma_reserve(); +@@ -142,7 +132,6 @@ MACHINE_START(BCM2709, "BCM2709") + /* Maintainer: Broadcom Europe Ltd. */ + .map_io = bcm2709_map_io, + .init_machine = bcm2709_init, +- .init_early = bcm2709_init_early, + .reserve = board_reserve, + .dt_compat = bcm2709_compat, + MACHINE_END +@@ -151,7 +140,6 @@ MACHINE_START(BCM2708, "BCM2709") + /* Maintainer: Broadcom Europe Ltd. */ + .map_io = bcm2709_map_io, + .init_machine = bcm2709_init, +- .init_early = bcm2709_init_early, + .reserve = board_reserve, + .dt_compat = bcm2709_compat, + MACHINE_END + +From 490f6e2e5fc456799e3c5fff7b483dc68eba73b1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Mon, 10 Oct 2016 19:26:42 +0200 +Subject: [PATCH 125/132] bcm270x: Drop map_io device mapping +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +All drivers map their own io now so it's not necessary to do this +mapping anymore. The mapping for the uart debug console is handled by +debug_ll_io_init() if necessary. + +Remove local uart debug code and rely on mainline. +Use these kconfig options to enable: +CONFIG_DEBUG_BCM2835 +CONFIG_DEBUG_BCM2836 + +Signed-off-by: Noralf Trønnes +--- + arch/arm/Kconfig.debug | 18 +-- + arch/arm/mach-bcm2708/bcm2708.c | 75 +-------- + arch/arm/mach-bcm2708/include/mach/debug-macro.S | 22 --- + arch/arm/mach-bcm2708/include/mach/platform.h | 114 -------------- + arch/arm/mach-bcm2708/include/mach/system.h | 37 ----- + arch/arm/mach-bcm2708/include/mach/uncompress.h | 84 ---------- + arch/arm/mach-bcm2709/bcm2709.c | 86 +--------- + arch/arm/mach-bcm2709/include/mach/debug-macro.S | 22 --- + arch/arm/mach-bcm2709/include/mach/platform.h | 190 ----------------------- + arch/arm/mach-bcm2709/include/mach/system.h | 37 ----- + arch/arm/mach-bcm2709/include/mach/uncompress.h | 84 ---------- + 11 files changed, 11 insertions(+), 758 deletions(-) + delete mode 100644 arch/arm/mach-bcm2708/include/mach/debug-macro.S + delete mode 100644 arch/arm/mach-bcm2708/include/mach/platform.h + delete mode 100644 arch/arm/mach-bcm2708/include/mach/system.h + delete mode 100644 arch/arm/mach-bcm2708/include/mach/uncompress.h + delete mode 100644 arch/arm/mach-bcm2709/include/mach/debug-macro.S + delete mode 100644 arch/arm/mach-bcm2709/include/mach/platform.h + delete mode 100644 arch/arm/mach-bcm2709/include/mach/system.h + delete mode 100644 arch/arm/mach-bcm2709/include/mach/uncompress.h + +diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug +index f47f4e70395635fafeacd680c4392cc51660ea8e..11aa81fcaaa8e476ded9b9f41e30ddefa11c1cae 100644 +--- a/arch/arm/Kconfig.debug ++++ b/arch/arm/Kconfig.debug +@@ -147,12 +147,12 @@ choice + + config DEBUG_BCM2835 + bool "Kernel low-level debugging on BCM2835 PL011 UART" +- depends on ARCH_BCM2835 && ARCH_MULTI_V6 ++ depends on (ARCH_BCM2835 && ARCH_MULTI_V6) || ARCH_BCM2708 + select DEBUG_UART_PL01X + + config DEBUG_BCM2836 + bool "Kernel low-level debugging on BCM2836 PL011 UART" +- depends on ARCH_BCM2835 && ARCH_MULTI_V7 ++ depends on (ARCH_BCM2835 && ARCH_MULTI_V7) || ARCH_BCM2709 + select DEBUG_UART_PL01X + + config DEBUG_BCM_5301X +@@ -1312,14 +1312,6 @@ choice + options; the platform specific options are deprecated + and will be soon removed. + +- config DEBUG_BCM2708_UART0 +- bool "Broadcom BCM270X UART0 (PL011)" +- depends on ARCH_BCM2708 || ARCH_BCM2709 +- help +- Say Y here if you want the debug print routines to direct +- their output to UART 0. The port must have been initialised +- by the boot-loader before use. +- + endchoice + + config DEBUG_AT91_UART +@@ -1703,7 +1695,8 @@ config DEBUG_UART_8250_FLOW_CONTROL + + config DEBUG_UNCOMPRESS + bool +- depends on ARCH_MULTIPLATFORM || PLAT_SAMSUNG || ARM_SINGLE_ARMV7M ++ depends on ARCH_MULTIPLATFORM || PLAT_SAMSUNG || ARM_SINGLE_ARMV7M || \ ++ ARCH_BCM2708 || ARCH_BCM2709 + default y if DEBUG_LL && !DEBUG_OMAP2PLUS_UART && \ + (!DEBUG_TEGRA_UART || !ZBOOT_ROM) + help +@@ -1720,7 +1713,8 @@ config DEBUG_UNCOMPRESS + config UNCOMPRESS_INCLUDE + string + default "debug/uncompress.h" if ARCH_MULTIPLATFORM || ARCH_MSM || \ +- PLAT_SAMSUNG || ARM_SINGLE_ARMV7M ++ PLAT_SAMSUNG || ARM_SINGLE_ARMV7M || \ ++ ARCH_BCM2708 || ARCH_BCM2709 + default "mach/uncompress.h" + + config EARLY_PRINTK +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index 0dc1efd48f385eea9f712fc8e18ffc92966271f2..47d5f363334ea317f09a6d6b7c8f3f2f797a2be3 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -19,84 +19,16 @@ + */ + + #include +-#include + #include +-#include +-#include +-#include +-#include +- +-#include +- + #include + +-/* Effectively we have an IOMMU (ARM<->VideoCore map) that is set up to +- * give us IO access only to 64Mbytes of physical memory (26 bits). We could +- * represent this window by setting our dmamasks to 26 bits but, in fact +- * we're not going to use addresses outside this range (they're not in real +- * memory) so we don't bother. +- * +- * In the future we might include code to use this IOMMU to remap other +- * physical addresses onto VideoCore memory then the use of 32-bits would be +- * more legitimate. +- */ ++#include ++#include ++#include + + /* command line parameters */ + static unsigned boardrev, serial; + +-static struct map_desc bcm2708_io_desc[] __initdata = { +- { +- .virtual = IO_ADDRESS(ARMCTRL_BASE), +- .pfn = __phys_to_pfn(ARMCTRL_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(UART0_BASE), +- .pfn = __phys_to_pfn(UART0_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(UART1_BASE), +- .pfn = __phys_to_pfn(UART1_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(DMA_BASE), +- .pfn = __phys_to_pfn(DMA_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(MCORE_BASE), +- .pfn = __phys_to_pfn(MCORE_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(ST_BASE), +- .pfn = __phys_to_pfn(ST_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(USB_BASE), +- .pfn = __phys_to_pfn(USB_BASE), +- .length = SZ_128K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(PM_BASE), +- .pfn = __phys_to_pfn(PM_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(GPIO_BASE), +- .pfn = __phys_to_pfn(GPIO_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE} +-}; +- +-void __init bcm2708_map_io(void) +-{ +- iotable_init(bcm2708_io_desc, ARRAY_SIZE(bcm2708_io_desc)); +-} +- + static void __init bcm2708_init(void) + { + vc_cma_early_init(); +@@ -117,7 +49,6 @@ static const char * const bcm2708_compat[] = { + + MACHINE_START(BCM2708, "BCM2708") + /* Maintainer: Broadcom Europe Ltd. */ +- .map_io = bcm2708_map_io, + .init_machine = bcm2708_init, + .reserve = board_reserve, + .dt_compat = bcm2708_compat, +diff --git a/arch/arm/mach-bcm2708/include/mach/debug-macro.S b/arch/arm/mach-bcm2708/include/mach/debug-macro.S +deleted file mode 100644 +index b24304a6755e965b8a28eb048b7f4e2d868820f9..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2708/include/mach/debug-macro.S ++++ /dev/null +@@ -1,22 +0,0 @@ +-/* arch/arm/mach-bcm2708/include/mach/debug-macro.S +- * +- * Debugging macro include header +- * +- * Copyright (C) 2010 Broadcom +- * Copyright (C) 1994-1999 Russell King +- * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License version 2 as +- * published by the Free Software Foundation. +- * +-*/ +- +-#include +- +- .macro addruart, rp, rv, tmp +- ldr \rp, =UART0_BASE +- ldr \rv, =IO_ADDRESS(UART0_BASE) +- .endm +- +-#include +diff --git a/arch/arm/mach-bcm2708/include/mach/platform.h b/arch/arm/mach-bcm2708/include/mach/platform.h +deleted file mode 100644 +index e98ec5acc70ba9eb2bc7ff560ed3c92e21518b73..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2708/include/mach/platform.h ++++ /dev/null +@@ -1,114 +0,0 @@ +-/* +- * arch/arm/mach-bcm2708/include/mach/platform.h +- * +- * Copyright (C) 2010 Broadcom +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +- +-#ifndef _BCM2708_PLATFORM_H +-#define _BCM2708_PLATFORM_H +- +- +-/* macros to get at IO space when running virtually */ +-#define IO_ADDRESS(x) (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000) +- +-#define __io_address(n) IOMEM(IO_ADDRESS(n)) +- +- +-/* +- * SDRAM +- */ +-#define BCM2708_SDRAM_BASE 0x00000000 +- +-/* +- * Logic expansion modules +- * +- */ +- +- +-/* ------------------------------------------------------------------------ +- * BCM2708 ARMCTRL Registers +- * ------------------------------------------------------------------------ +- */ +- +-#define HW_REGISTER_RW(addr) (addr) +-#define HW_REGISTER_RO(addr) (addr) +- +-/* +- * Definitions and addresses for the ARM CONTROL logic +- * This file is manually generated. +- */ +- +-#define BCM2708_PERI_BASE 0x20000000 +-#define IC0_BASE (BCM2708_PERI_BASE + 0x2000) +-#define ST_BASE (BCM2708_PERI_BASE + 0x3000) /* System Timer */ +-#define MPHI_BASE (BCM2708_PERI_BASE + 0x6000) /* Message -based Parallel Host Interface */ +-#define DMA_BASE (BCM2708_PERI_BASE + 0x7000) /* DMA controller */ +-#define ARM_BASE (BCM2708_PERI_BASE + 0xB000) /* BCM2708 ARM control block */ +-#define PM_BASE (BCM2708_PERI_BASE + 0x100000) /* Power Management, Reset controller and Watchdog registers */ +-#define PCM_CLOCK_BASE (BCM2708_PERI_BASE + 0x101098) /* PCM Clock */ +-#define RNG_BASE (BCM2708_PERI_BASE + 0x104000) /* Hardware RNG */ +-#define GPIO_BASE (BCM2708_PERI_BASE + 0x200000) /* GPIO */ +-#define UART0_BASE (BCM2708_PERI_BASE + 0x201000) /* Uart 0 */ +-#define MMCI0_BASE (BCM2708_PERI_BASE + 0x202000) /* MMC interface */ +-#define I2S_BASE (BCM2708_PERI_BASE + 0x203000) /* I2S */ +-#define SPI0_BASE (BCM2708_PERI_BASE + 0x204000) /* SPI0 */ +-#define BSC0_BASE (BCM2708_PERI_BASE + 0x205000) /* BSC0 I2C/TWI */ +-#define UART1_BASE (BCM2708_PERI_BASE + 0x215000) /* Uart 1 */ +-#define EMMC_BASE (BCM2708_PERI_BASE + 0x300000) /* eMMC interface */ +-#define SMI_BASE (BCM2708_PERI_BASE + 0x600000) /* SMI */ +-#define BSC1_BASE (BCM2708_PERI_BASE + 0x804000) /* BSC1 I2C/TWI */ +-#define USB_BASE (BCM2708_PERI_BASE + 0x980000) /* DTC_OTG USB controller */ +-#define MCORE_BASE (BCM2708_PERI_BASE + 0x0000) /* Fake frame buffer device (actually the multicore sync block*/ +- +-#define ARMCTRL_BASE (ARM_BASE + 0x000) +-#define ARMCTRL_IC_BASE (ARM_BASE + 0x200) /* ARM interrupt controller */ +-#define ARMCTRL_TIMER0_1_BASE (ARM_BASE + 0x400) /* Timer 0 and 1 */ +-#define ARMCTRL_0_SBM_BASE (ARM_BASE + 0x800) /* User 0 (ARM)'s Semaphores Doorbells and Mailboxes */ +-#define ARMCTRL_0_BELL_BASE (ARMCTRL_0_SBM_BASE + 0x40) /* User 0 (ARM)'s Doorbell */ +-#define ARMCTRL_0_MAIL0_BASE (ARMCTRL_0_SBM_BASE + 0x80) /* User 0 (ARM)'s Mailbox 0 */ +- +-/* +- * Watchdog +- */ +-#define PM_RSTC (PM_BASE+0x1c) +-#define PM_RSTS (PM_BASE+0x20) +-#define PM_WDOG (PM_BASE+0x24) +- +-#define PM_WDOG_RESET 0000000000 +-#define PM_PASSWORD 0x5a000000 +-#define PM_WDOG_TIME_SET 0x000fffff +-#define PM_RSTC_WRCFG_CLR 0xffffffcf +-#define PM_RSTC_WRCFG_SET 0x00000030 +-#define PM_RSTC_WRCFG_FULL_RESET 0x00000020 +-#define PM_RSTC_RESET 0x00000102 +- +-#define PM_RSTS_HADPOR_SET 0x00001000 +-#define PM_RSTS_HADSRH_SET 0x00000400 +-#define PM_RSTS_HADSRF_SET 0x00000200 +-#define PM_RSTS_HADSRQ_SET 0x00000100 +-#define PM_RSTS_HADWRH_SET 0x00000040 +-#define PM_RSTS_HADWRF_SET 0x00000020 +-#define PM_RSTS_HADWRQ_SET 0x00000010 +-#define PM_RSTS_HADDRH_SET 0x00000004 +-#define PM_RSTS_HADDRF_SET 0x00000002 +-#define PM_RSTS_HADDRQ_SET 0x00000001 +- +-#define UART0_CLOCK 3000000 +- +-#endif +- +-/* END */ +diff --git a/arch/arm/mach-bcm2708/include/mach/system.h b/arch/arm/mach-bcm2708/include/mach/system.h +deleted file mode 100644 +index c9a9c9a881102c5354971d15203a746906761a70..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2708/include/mach/system.h ++++ /dev/null +@@ -1,37 +0,0 @@ +-/* +- * arch/arm/mach-bcm2708/include/mach/system.h +- * +- * Copyright (C) 2010 Broadcom +- * Copyright (C) 2003 ARM Limited +- * Copyright (C) 2000 Deep Blue Solutions Ltd +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +-#ifndef __ASM_ARCH_SYSTEM_H +-#define __ASM_ARCH_SYSTEM_H +- +-#include +-#include +- +-static inline void arch_idle(void) +-{ +- /* +- * This should do all the clock switching +- * and wait for interrupt tricks +- */ +- cpu_do_idle(); +-} +- +-#endif +diff --git a/arch/arm/mach-bcm2708/include/mach/uncompress.h b/arch/arm/mach-bcm2708/include/mach/uncompress.h +deleted file mode 100644 +index de7504bfc20ba24be8707861b8389783860adb77..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2708/include/mach/uncompress.h ++++ /dev/null +@@ -1,84 +0,0 @@ +-/* +- * arch/arm/mach-bcn2708/include/mach/uncompress.h +- * +- * Copyright (C) 2010 Broadcom +- * Copyright (C) 2003 ARM Limited +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +- +-#include +-#include +-#include +- +-#define UART_BAUD 115200 +- +-#define BCM2708_UART_DR __io(UART0_BASE + UART01x_DR) +-#define BCM2708_UART_FR __io(UART0_BASE + UART01x_FR) +-#define BCM2708_UART_IBRD __io(UART0_BASE + UART011_IBRD) +-#define BCM2708_UART_FBRD __io(UART0_BASE + UART011_FBRD) +-#define BCM2708_UART_LCRH __io(UART0_BASE + UART011_LCRH) +-#define BCM2708_UART_CR __io(UART0_BASE + UART011_CR) +- +-/* +- * This does not append a newline +- */ +-static inline void putc(int c) +-{ +- while (__raw_readl(BCM2708_UART_FR) & UART01x_FR_TXFF) +- barrier(); +- +- __raw_writel(c, BCM2708_UART_DR); +-} +- +-static inline void flush(void) +-{ +- int fr; +- +- do { +- fr = __raw_readl(BCM2708_UART_FR); +- barrier(); +- } while ((fr & (UART011_FR_TXFE | UART01x_FR_BUSY)) != UART011_FR_TXFE); +-} +- +-static inline void arch_decomp_setup(void) +-{ +- int temp, div, rem, frac; +- +- temp = 16 * UART_BAUD; +- div = UART0_CLOCK / temp; +- rem = UART0_CLOCK % temp; +- temp = (8 * rem) / UART_BAUD; +- frac = (temp >> 1) + (temp & 1); +- +- /* Make sure the UART is disabled before we start */ +- __raw_writel(0, BCM2708_UART_CR); +- +- /* Set the baud rate */ +- __raw_writel(div, BCM2708_UART_IBRD); +- __raw_writel(frac, BCM2708_UART_FBRD); +- +- /* Set the UART to 8n1, FIFO enabled */ +- __raw_writel(UART01x_LCRH_WLEN_8 | UART01x_LCRH_FEN, BCM2708_UART_LCRH); +- +- /* Enable the UART */ +- __raw_writel(UART01x_CR_UARTEN | UART011_CR_TXE | UART011_CR_RXE, +- BCM2708_UART_CR); +-} +- +-/* +- * nothing to do +- */ +-#define arch_decomp_wdog() +diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c +index d0e43619669e851350c5d9d7bb7e9dd19ea6ff1b..39d304327bc84899a521aaeed8c1edd83c26d2d6 100644 +--- a/arch/arm/mach-bcm2709/bcm2709.c ++++ b/arch/arm/mach-bcm2709/bcm2709.c +@@ -19,96 +19,16 @@ + */ + + #include +-#include +-#include +-#include +-#include +-#include + #include ++#include + +-#include + #include +-#include +- + #include +-#include +- +-#include +- +-#include +- +-/* Effectively we have an IOMMU (ARM<->VideoCore map) that is set up to +- * give us IO access only to 64Mbytes of physical memory (26 bits). We could +- * represent this window by setting our dmamasks to 26 bits but, in fact +- * we're not going to use addresses outside this range (they're not in real +- * memory) so we don't bother. +- * +- * In the future we might include code to use this IOMMU to remap other +- * physical addresses onto VideoCore memory then the use of 32-bits would be +- * more legitimate. +- */ ++#include + + /* command line parameters */ + static unsigned boardrev, serial; + +-static struct map_desc bcm2709_io_desc[] __initdata = { +- { +- .virtual = IO_ADDRESS(ARMCTRL_BASE), +- .pfn = __phys_to_pfn(ARMCTRL_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(UART0_BASE), +- .pfn = __phys_to_pfn(UART0_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(UART1_BASE), +- .pfn = __phys_to_pfn(UART1_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(DMA_BASE), +- .pfn = __phys_to_pfn(DMA_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(MCORE_BASE), +- .pfn = __phys_to_pfn(MCORE_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(ST_BASE), +- .pfn = __phys_to_pfn(ST_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(USB_BASE), +- .pfn = __phys_to_pfn(USB_BASE), +- .length = SZ_128K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(PM_BASE), +- .pfn = __phys_to_pfn(PM_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(GPIO_BASE), +- .pfn = __phys_to_pfn(GPIO_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(ARM_LOCAL_BASE), +- .pfn = __phys_to_pfn(ARM_LOCAL_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +-}; +- +-void __init bcm2709_map_io(void) +-{ +- iotable_init(bcm2709_io_desc, ARRAY_SIZE(bcm2709_io_desc)); +-} +- + static void __init bcm2709_init(void) + { + vc_cma_early_init(); +@@ -130,7 +50,6 @@ static const char * const bcm2709_compat[] = { + + MACHINE_START(BCM2709, "BCM2709") + /* Maintainer: Broadcom Europe Ltd. */ +- .map_io = bcm2709_map_io, + .init_machine = bcm2709_init, + .reserve = board_reserve, + .dt_compat = bcm2709_compat, +@@ -138,7 +57,6 @@ MACHINE_END + + MACHINE_START(BCM2708, "BCM2709") + /* Maintainer: Broadcom Europe Ltd. */ +- .map_io = bcm2709_map_io, + .init_machine = bcm2709_init, + .reserve = board_reserve, + .dt_compat = bcm2709_compat, +diff --git a/arch/arm/mach-bcm2709/include/mach/debug-macro.S b/arch/arm/mach-bcm2709/include/mach/debug-macro.S +deleted file mode 100644 +index b24304a6755e965b8a28eb048b7f4e2d868820f9..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2709/include/mach/debug-macro.S ++++ /dev/null +@@ -1,22 +0,0 @@ +-/* arch/arm/mach-bcm2708/include/mach/debug-macro.S +- * +- * Debugging macro include header +- * +- * Copyright (C) 2010 Broadcom +- * Copyright (C) 1994-1999 Russell King +- * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License version 2 as +- * published by the Free Software Foundation. +- * +-*/ +- +-#include +- +- .macro addruart, rp, rv, tmp +- ldr \rp, =UART0_BASE +- ldr \rv, =IO_ADDRESS(UART0_BASE) +- .endm +- +-#include +diff --git a/arch/arm/mach-bcm2709/include/mach/platform.h b/arch/arm/mach-bcm2709/include/mach/platform.h +deleted file mode 100644 +index 9a638f528fcebc9206419a2cc68f3c9856dda3c3..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2709/include/mach/platform.h ++++ /dev/null +@@ -1,190 +0,0 @@ +-/* +- * arch/arm/mach-bcm2708/include/mach/platform.h +- * +- * Copyright (C) 2010 Broadcom +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +- +-#ifndef _BCM2708_PLATFORM_H +-#define _BCM2708_PLATFORM_H +- +- +-/* macros to get at IO space when running virtually */ +-#define IO_ADDRESS(x) (((x) & 0x00ffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000) +- +-#define __io_address(n) IOMEM(IO_ADDRESS(n)) +- +- +-/* +- * SDRAM +- */ +-#define BCM2708_SDRAM_BASE 0x00000000 +- +-/* +- * Logic expansion modules +- * +- */ +- +- +-/* ------------------------------------------------------------------------ +- * BCM2708 ARMCTRL Registers +- * ------------------------------------------------------------------------ +- */ +- +-#define HW_REGISTER_RW(addr) (addr) +-#define HW_REGISTER_RO(addr) (addr) +- +-/* +- * Definitions and addresses for the ARM CONTROL logic +- * This file is manually generated. +- */ +- +-#define BCM2708_PERI_BASE 0x3F000000 +-#define IC0_BASE (BCM2708_PERI_BASE + 0x2000) +-#define ST_BASE (BCM2708_PERI_BASE + 0x3000) /* System Timer */ +-#define MPHI_BASE (BCM2708_PERI_BASE + 0x6000) /* Message -based Parallel Host Interface */ +-#define DMA_BASE (BCM2708_PERI_BASE + 0x7000) /* DMA controller */ +-#define ARM_BASE (BCM2708_PERI_BASE + 0xB000) /* BCM2708 ARM control block */ +-#define PM_BASE (BCM2708_PERI_BASE + 0x100000) /* Power Management, Reset controller and Watchdog registers */ +-#define PCM_CLOCK_BASE (BCM2708_PERI_BASE + 0x101098) /* PCM Clock */ +-#define RNG_BASE (BCM2708_PERI_BASE + 0x104000) /* Hardware RNG */ +-#define GPIO_BASE (BCM2708_PERI_BASE + 0x200000) /* GPIO */ +-#define UART0_BASE (BCM2708_PERI_BASE + 0x201000) /* Uart 0 */ +-#define MMCI0_BASE (BCM2708_PERI_BASE + 0x202000) /* MMC interface */ +-#define I2S_BASE (BCM2708_PERI_BASE + 0x203000) /* I2S */ +-#define SPI0_BASE (BCM2708_PERI_BASE + 0x204000) /* SPI0 */ +-#define BSC0_BASE (BCM2708_PERI_BASE + 0x205000) /* BSC0 I2C/TWI */ +-#define UART1_BASE (BCM2708_PERI_BASE + 0x215000) /* Uart 1 */ +-#define EMMC_BASE (BCM2708_PERI_BASE + 0x300000) /* eMMC interface */ +-#define SMI_BASE (BCM2708_PERI_BASE + 0x600000) /* SMI */ +-#define BSC1_BASE (BCM2708_PERI_BASE + 0x804000) /* BSC1 I2C/TWI */ +-#define USB_BASE (BCM2708_PERI_BASE + 0x980000) /* DTC_OTG USB controller */ +-#define MCORE_BASE (BCM2708_PERI_BASE + 0x0000) /* Fake frame buffer device (actually the multicore sync block*/ +- +-#define ARMCTRL_BASE (ARM_BASE + 0x000) +-#define ARMCTRL_IC_BASE (ARM_BASE + 0x200) /* ARM interrupt controller */ +-#define ARMCTRL_TIMER0_1_BASE (ARM_BASE + 0x400) /* Timer 0 and 1 */ +-#define ARMCTRL_0_SBM_BASE (ARM_BASE + 0x800) /* User 0 (ARM)'s Semaphores Doorbells and Mailboxes */ +-#define ARMCTRL_0_BELL_BASE (ARMCTRL_0_SBM_BASE + 0x40) /* User 0 (ARM)'s Doorbell */ +-#define ARMCTRL_0_MAIL0_BASE (ARMCTRL_0_SBM_BASE + 0x80) /* User 0 (ARM)'s Mailbox 0 */ +- +-/* +- * Watchdog +- */ +-#define PM_RSTC (PM_BASE+0x1c) +-#define PM_RSTS (PM_BASE+0x20) +-#define PM_WDOG (PM_BASE+0x24) +- +-#define PM_WDOG_RESET 0000000000 +-#define PM_PASSWORD 0x5a000000 +-#define PM_WDOG_TIME_SET 0x000fffff +-#define PM_RSTC_WRCFG_CLR 0xffffffcf +-#define PM_RSTC_WRCFG_SET 0x00000030 +-#define PM_RSTC_WRCFG_FULL_RESET 0x00000020 +-#define PM_RSTC_RESET 0x00000102 +- +-#define PM_RSTS_HADPOR_SET 0x00001000 +-#define PM_RSTS_HADSRH_SET 0x00000400 +-#define PM_RSTS_HADSRF_SET 0x00000200 +-#define PM_RSTS_HADSRQ_SET 0x00000100 +-#define PM_RSTS_HADWRH_SET 0x00000040 +-#define PM_RSTS_HADWRF_SET 0x00000020 +-#define PM_RSTS_HADWRQ_SET 0x00000010 +-#define PM_RSTS_HADDRH_SET 0x00000004 +-#define PM_RSTS_HADDRF_SET 0x00000002 +-#define PM_RSTS_HADDRQ_SET 0x00000001 +- +-#define UART0_CLOCK 3000000 +- +-#define ARM_LOCAL_BASE 0x40000000 +-#define ARM_LOCAL_CONTROL HW_REGISTER_RW(ARM_LOCAL_BASE+0x000) +- +-#define ARM_LOCAL_CONTROL HW_REGISTER_RW(ARM_LOCAL_BASE+0x000) +-#define ARM_LOCAL_PRESCALER HW_REGISTER_RW(ARM_LOCAL_BASE+0x008) +-#define ARM_LOCAL_GPU_INT_ROUTING HW_REGISTER_RW(ARM_LOCAL_BASE+0x00C) +-#define ARM_LOCAL_PM_ROUTING_SET HW_REGISTER_RW(ARM_LOCAL_BASE+0x010) +-#define ARM_LOCAL_PM_ROUTING_CLR HW_REGISTER_RW(ARM_LOCAL_BASE+0x014) +-#define ARM_LOCAL_TIMER_LS HW_REGISTER_RW(ARM_LOCAL_BASE+0x01C) +-#define ARM_LOCAL_TIMER_MS HW_REGISTER_RW(ARM_LOCAL_BASE+0x020) +-#define ARM_LOCAL_INT_ROUTING HW_REGISTER_RW(ARM_LOCAL_BASE+0x024) +-#define ARM_LOCAL_AXI_COUNT HW_REGISTER_RW(ARM_LOCAL_BASE+0x02C) +-#define ARM_LOCAL_AXI_IRQ HW_REGISTER_RW(ARM_LOCAL_BASE+0x030) +-#define ARM_LOCAL_TIMER_CONTROL HW_REGISTER_RW(ARM_LOCAL_BASE+0x034) +-#define ARM_LOCAL_TIMER_WRITE HW_REGISTER_RW(ARM_LOCAL_BASE+0x038) +- +-#define ARM_LOCAL_TIMER_INT_CONTROL0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x040) +-#define ARM_LOCAL_TIMER_INT_CONTROL1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x044) +-#define ARM_LOCAL_TIMER_INT_CONTROL2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x048) +-#define ARM_LOCAL_TIMER_INT_CONTROL3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x04C) +- +-#define ARM_LOCAL_MAILBOX_INT_CONTROL0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x050) +-#define ARM_LOCAL_MAILBOX_INT_CONTROL1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x054) +-#define ARM_LOCAL_MAILBOX_INT_CONTROL2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x058) +-#define ARM_LOCAL_MAILBOX_INT_CONTROL3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x05C) +- +-#define ARM_LOCAL_IRQ_PENDING0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x060) +-#define ARM_LOCAL_IRQ_PENDING1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x064) +-#define ARM_LOCAL_IRQ_PENDING2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x068) +-#define ARM_LOCAL_IRQ_PENDING3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x06C) +- +-#define ARM_LOCAL_FIQ_PENDING0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x070) +-#define ARM_LOCAL_FIQ_PENDING1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x074) +-#define ARM_LOCAL_FIQ_PENDING2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x078) +-#define ARM_LOCAL_FIQ_PENDING3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x07C) +- +-#define ARM_LOCAL_MAILBOX0_SET0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x080) +-#define ARM_LOCAL_MAILBOX1_SET0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x084) +-#define ARM_LOCAL_MAILBOX2_SET0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x088) +-#define ARM_LOCAL_MAILBOX3_SET0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x08C) +- +-#define ARM_LOCAL_MAILBOX0_SET1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x090) +-#define ARM_LOCAL_MAILBOX1_SET1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x094) +-#define ARM_LOCAL_MAILBOX2_SET1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x098) +-#define ARM_LOCAL_MAILBOX3_SET1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x09C) +- +-#define ARM_LOCAL_MAILBOX0_SET2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0A0) +-#define ARM_LOCAL_MAILBOX1_SET2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0A4) +-#define ARM_LOCAL_MAILBOX2_SET2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0A8) +-#define ARM_LOCAL_MAILBOX3_SET2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0AC) +- +-#define ARM_LOCAL_MAILBOX0_SET3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0B0) +-#define ARM_LOCAL_MAILBOX1_SET3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0B4) +-#define ARM_LOCAL_MAILBOX2_SET3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0B8) +-#define ARM_LOCAL_MAILBOX3_SET3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0BC) +- +-#define ARM_LOCAL_MAILBOX0_CLR0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0C0) +-#define ARM_LOCAL_MAILBOX1_CLR0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0C4) +-#define ARM_LOCAL_MAILBOX2_CLR0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0C8) +-#define ARM_LOCAL_MAILBOX3_CLR0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0CC) +- +-#define ARM_LOCAL_MAILBOX0_CLR1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0D0) +-#define ARM_LOCAL_MAILBOX1_CLR1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0D4) +-#define ARM_LOCAL_MAILBOX2_CLR1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0D8) +-#define ARM_LOCAL_MAILBOX3_CLR1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0DC) +- +-#define ARM_LOCAL_MAILBOX0_CLR2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0E0) +-#define ARM_LOCAL_MAILBOX1_CLR2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0E4) +-#define ARM_LOCAL_MAILBOX2_CLR2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0E8) +-#define ARM_LOCAL_MAILBOX3_CLR2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0EC) +- +-#define ARM_LOCAL_MAILBOX0_CLR3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0F0) +-#define ARM_LOCAL_MAILBOX1_CLR3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0F4) +-#define ARM_LOCAL_MAILBOX2_CLR3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0F8) +-#define ARM_LOCAL_MAILBOX3_CLR3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0FC) +- +-#endif +- +-/* END */ +diff --git a/arch/arm/mach-bcm2709/include/mach/system.h b/arch/arm/mach-bcm2709/include/mach/system.h +deleted file mode 100644 +index c9a9c9a881102c5354971d15203a746906761a70..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2709/include/mach/system.h ++++ /dev/null +@@ -1,37 +0,0 @@ +-/* +- * arch/arm/mach-bcm2708/include/mach/system.h +- * +- * Copyright (C) 2010 Broadcom +- * Copyright (C) 2003 ARM Limited +- * Copyright (C) 2000 Deep Blue Solutions Ltd +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +-#ifndef __ASM_ARCH_SYSTEM_H +-#define __ASM_ARCH_SYSTEM_H +- +-#include +-#include +- +-static inline void arch_idle(void) +-{ +- /* +- * This should do all the clock switching +- * and wait for interrupt tricks +- */ +- cpu_do_idle(); +-} +- +-#endif +diff --git a/arch/arm/mach-bcm2709/include/mach/uncompress.h b/arch/arm/mach-bcm2709/include/mach/uncompress.h +deleted file mode 100644 +index de7504bfc20ba24be8707861b8389783860adb77..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2709/include/mach/uncompress.h ++++ /dev/null +@@ -1,84 +0,0 @@ +-/* +- * arch/arm/mach-bcn2708/include/mach/uncompress.h +- * +- * Copyright (C) 2010 Broadcom +- * Copyright (C) 2003 ARM Limited +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +- +-#include +-#include +-#include +- +-#define UART_BAUD 115200 +- +-#define BCM2708_UART_DR __io(UART0_BASE + UART01x_DR) +-#define BCM2708_UART_FR __io(UART0_BASE + UART01x_FR) +-#define BCM2708_UART_IBRD __io(UART0_BASE + UART011_IBRD) +-#define BCM2708_UART_FBRD __io(UART0_BASE + UART011_FBRD) +-#define BCM2708_UART_LCRH __io(UART0_BASE + UART011_LCRH) +-#define BCM2708_UART_CR __io(UART0_BASE + UART011_CR) +- +-/* +- * This does not append a newline +- */ +-static inline void putc(int c) +-{ +- while (__raw_readl(BCM2708_UART_FR) & UART01x_FR_TXFF) +- barrier(); +- +- __raw_writel(c, BCM2708_UART_DR); +-} +- +-static inline void flush(void) +-{ +- int fr; +- +- do { +- fr = __raw_readl(BCM2708_UART_FR); +- barrier(); +- } while ((fr & (UART011_FR_TXFE | UART01x_FR_BUSY)) != UART011_FR_TXFE); +-} +- +-static inline void arch_decomp_setup(void) +-{ +- int temp, div, rem, frac; +- +- temp = 16 * UART_BAUD; +- div = UART0_CLOCK / temp; +- rem = UART0_CLOCK % temp; +- temp = (8 * rem) / UART_BAUD; +- frac = (temp >> 1) + (temp & 1); +- +- /* Make sure the UART is disabled before we start */ +- __raw_writel(0, BCM2708_UART_CR); +- +- /* Set the baud rate */ +- __raw_writel(div, BCM2708_UART_IBRD); +- __raw_writel(frac, BCM2708_UART_FBRD); +- +- /* Set the UART to 8n1, FIFO enabled */ +- __raw_writel(UART01x_LCRH_WLEN_8 | UART01x_LCRH_FEN, BCM2708_UART_LCRH); +- +- /* Enable the UART */ +- __raw_writel(UART01x_CR_UARTEN | UART011_CR_TXE | UART011_CR_RXE, +- BCM2708_UART_CR); +-} +- +-/* +- * nothing to do +- */ +-#define arch_decomp_wdog() + +From cfae72c5f744ca6793e4968ae47468c6c5eac21b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Mon, 10 Oct 2016 19:37:06 +0200 +Subject: [PATCH 126/132] bcm270x: Use DT_MACHINE_START +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +We are all DT now so use DT_MACHINE_START. +Also drop the extra BCM2709-BCM2708 mix entry. + +Signed-off-by: Noralf Trønnes +--- + arch/arm/mach-bcm2708/bcm2708.c | 3 +-- + arch/arm/mach-bcm2709/bcm2709.c | 11 +---------- + arch/arm/tools/mach-types | 2 -- + 3 files changed, 2 insertions(+), 14 deletions(-) + +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index 47d5f363334ea317f09a6d6b7c8f3f2f797a2be3..ddf62c084981ecf02491ea6b2817782dae050ce1 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -22,7 +22,6 @@ + #include + #include + +-#include + #include + #include + +@@ -47,7 +46,7 @@ static const char * const bcm2708_compat[] = { + NULL + }; + +-MACHINE_START(BCM2708, "BCM2708") ++DT_MACHINE_START(BCM2708, "BCM2708") + /* Maintainer: Broadcom Europe Ltd. */ + .init_machine = bcm2708_init, + .reserve = board_reserve, +diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c +index 39d304327bc84899a521aaeed8c1edd83c26d2d6..9cf36118e57b3c362de9adcf089425023d4a601d 100644 +--- a/arch/arm/mach-bcm2709/bcm2709.c ++++ b/arch/arm/mach-bcm2709/bcm2709.c +@@ -22,7 +22,6 @@ + #include + #include + +-#include + #include + #include + +@@ -44,18 +43,10 @@ static void __init board_reserve(void) + + static const char * const bcm2709_compat[] = { + "brcm,bcm2709", +- "brcm,bcm2708", /* Could use bcm2708 in a pinch */ + NULL + }; + +-MACHINE_START(BCM2709, "BCM2709") +- /* Maintainer: Broadcom Europe Ltd. */ +- .init_machine = bcm2709_init, +- .reserve = board_reserve, +- .dt_compat = bcm2709_compat, +-MACHINE_END +- +-MACHINE_START(BCM2708, "BCM2709") ++DT_MACHINE_START(BCM2709, "BCM2709") + /* Maintainer: Broadcom Europe Ltd. */ + .init_machine = bcm2709_init, + .reserve = board_reserve, +diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types +index b52d949ee91d96eb7672fbbb4969bfa1e7afc376..2ed1b8a922ed02b9e3545991873af77b4c1bf871 100644 +--- a/arch/arm/tools/mach-types ++++ b/arch/arm/tools/mach-types +@@ -522,8 +522,6 @@ torbreck MACH_TORBRECK TORBRECK 3090 + prima2_evb MACH_PRIMA2_EVB PRIMA2_EVB 3103 + paz00 MACH_PAZ00 PAZ00 3128 + acmenetusfoxg20 MACH_ACMENETUSFOXG20 ACMENETUSFOXG20 3129 +-bcm2708 MACH_BCM2708 BCM2708 3138 +-bcm2709 MACH_BCM2709 BCM2709 3139 + ag5evm MACH_AG5EVM AG5EVM 3189 + ics_if_voip MACH_ICS_IF_VOIP ICS_IF_VOIP 3206 + wlf_cragg_6410 MACH_WLF_CRAGG_6410 WLF_CRAGG_6410 3207 + +From c676b9c38919c380155127518694332baf309b9c Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 11 Oct 2016 17:48:07 +0100 +Subject: [PATCH 127/132] Use DT rather than modules params for board rev and + serial + +--- + arch/arm/mach-bcm2708/bcm2708.c | 18 +++++++++--------- + arch/arm/mach-bcm2709/bcm2709.c | 19 +++++++++---------- + 2 files changed, 18 insertions(+), 19 deletions(-) + +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index ddf62c084981ecf02491ea6b2817782dae050ce1..06b078569006a6d821d3d049f1a0fa5783c1c1b3 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -18,22 +18,24 @@ + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +-#include +-#include ++#include + #include + + #include + #include + +-/* command line parameters */ +-static unsigned boardrev, serial; +- + static void __init bcm2708_init(void) + { ++ struct device_node *np = of_find_node_by_path("/system"); ++ u32 val; ++ u64 val64; ++ + vc_cma_early_init(); + +- system_rev = boardrev; +- system_serial_low = serial; ++ if (!of_property_read_u32(np, "linux,revision", &val)) ++ system_rev = val; ++ if (!of_property_read_u64(np, "linux,serial", &val64)) ++ system_serial_low = val64; + } + + static void __init board_reserve(void) +@@ -53,5 +55,3 @@ DT_MACHINE_START(BCM2708, "BCM2708") + .dt_compat = bcm2708_compat, + MACHINE_END + +-module_param(boardrev, uint, 0644); +-module_param(serial, uint, 0644); +diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c +index 9cf36118e57b3c362de9adcf089425023d4a601d..9f113736627175bdcb362e0eda469e09e3d5f2e0 100644 +--- a/arch/arm/mach-bcm2709/bcm2709.c ++++ b/arch/arm/mach-bcm2709/bcm2709.c +@@ -18,22 +18,24 @@ + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +-#include +-#include ++#include + #include + + #include + #include + +-/* command line parameters */ +-static unsigned boardrev, serial; +- + static void __init bcm2709_init(void) + { ++ struct device_node *np = of_find_node_by_path("/system"); ++ u32 val; ++ u64 val64; ++ + vc_cma_early_init(); + +- system_rev = boardrev; +- system_serial_low = serial; ++ if (!of_property_read_u32(np, "linux,revision", &val)) ++ system_rev = val; ++ if (!of_property_read_u64(np, "linux,serial", &val64)) ++ system_serial_low = val64; + } + + static void __init board_reserve(void) +@@ -52,6 +54,3 @@ DT_MACHINE_START(BCM2709, "BCM2709") + .reserve = board_reserve, + .dt_compat = bcm2709_compat, + MACHINE_END +- +-module_param(boardrev, uint, 0644); +-module_param(serial, uint, 0644); + +From a8e5605cde4a7e1f77d695336a1ba258b324ad95 Mon Sep 17 00:00:00 2001 From: Martin Sperl Date: Fri, 2 Sep 2016 16:45:27 +0100 -Subject: [PATCH 133/160] Register the clocks early during the boot process, so +Subject: [PATCH 128/132] Register the clocks early during the boot process, so that special/critical clocks can get enabled early on in the boot process avoiding the risk of disabling a clock, pll_divider or pll when a claiming driver fails to install propperly - maybe it needs to defer. @@ -135811,380 +140959,72 @@ index fbf616021704178a9d007219a0ea2a9f1704f0a6..cbbc8d4ddcffc797268c0ecb6477005f MODULE_AUTHOR("Eric Anholt "); MODULE_DESCRIPTION("BCM2835 clock driver"); -From 278a5a47d0a07ff2347f988d5cd9b7e8c52c1ef7 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Tue, 24 May 2016 17:19:27 +0100 -Subject: [PATCH 134/160] brcmfmac: revise SDIO error message in - brcmf_sdio_drivestrengthinit +From 5264862a2aa5f6c30dc03a0e2f09ada548789675 Mon Sep 17 00:00:00 2001 +From: Scott Ellis +Date: Tue, 27 Sep 2016 04:29:00 -0400 +Subject: [PATCH 129/132] Add Adafruit pitft35 touchscreen support (#1657) -The error message is given for something that is not an error here as -the drive strength configuration may not be applicable for specific -devices. Therefore the error message is rephrased and changed to a -debug message. +The dts comes from the Adafruit repository -[ Patch from Broadcom ] + https://github.com/adafruit/Adafruit-Pi-Kernel-o-Matic/blob/pitft/pitft35r-overlay.dts -Signed-off-by: Phil Elwell +Reformatted slightly to match conventions in the pitft28-resistive-overlay. + +Signed-off-by: Scott Ellis --- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -index ea66454a3d7444f51827964aea01bf7573f2b473..f315428e4f696b4c53af4f5f9cbc30512097af36 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -@@ -3668,7 +3668,7 @@ brcmf_sdio_drivestrengthinit(struct brcmf_sdio_dev *sdiodev, - str_shift = 11; - break; - default: -- brcmf_err("No SDIO Drive strength init done for chip %s rev %d pmurev %d\n", -+ brcmf_dbg(INFO, "No SDIO driver strength init needed for chip %s rev %d pmurev %d\n", - ci->name, ci->chiprev, ci->pmurev); - break; - } - -From be374296f9245389e427d103b6769f2be66de47b Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Tue, 24 May 2016 17:26:31 +0100 -Subject: [PATCH 135/160] brcmfmac: use ndev->needed_headroom to reserve - additional header space - -When using nmap tool with FMAC, the nmap packets were be dropped by kernel -because the size was too short. The kernel message showed like -"nmap: packet size is too short (42 <= 50)". It is caused by the packet -length is shorter than ndev->hard_header_len. According to LL_RESERVED_SPACE() -and hard_header_len definition, we should use hard_header_len to reserve L2 -header, like ethernet header(ETH_HLEN) in our case and use needed_headroom for -the additional headroom needed by hardware. - -[ Patch from Broadcom ] - -See: https://github.com/raspberrypi/linux/issues/1357 - -Signed-off-by: Phil Elwell ---- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -index b590499f6883294525b094cb66c4449069eb2353..6570dba08bb482bbb3d47ff6f0790a7004b5e547 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -@@ -516,7 +516,7 @@ int brcmf_net_attach(struct brcmf_if *ifp, bool rtnl_locked) - /* set appropriate operations */ - ndev->netdev_ops = &brcmf_netdev_ops_pri; - -- ndev->hard_header_len += drvr->hdrlen; -+ ndev->needed_headroom += drvr->hdrlen; - ndev->ethtool_ops = &brcmf_ethtool_ops; - - drvr->rxsz = ndev->mtu + ndev->hard_header_len + - -From 445cf7ba314fe3b03b42092e1f5aa3059fcedfca Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Mon, 6 Jun 2016 11:11:33 +0100 -Subject: [PATCH 136/160] brcmfmac: change rx_seq check log from error print to - debug print - -The bus rx sequence is not in order because that control and event -frames always cause immediate send, but data frames may be held -for glomming in firmware side. It is not actually an error as the -packets are still processed even if the RX sequence is not in order. -Therefore the error message is rephrased and changed to a debug -message. - -[ Patch from Broadcom ] - -See: https://github.com/raspberrypi/linux/issues/1313 ---- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -index f315428e4f696b4c53af4f5f9cbc30512097af36..8d716401af46cc9ade8daee2d1b6a17c34e8b680 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -@@ -1386,8 +1386,7 @@ static int brcmf_sdio_hdparse(struct brcmf_sdio *bus, u8 *header, - return -ENXIO; - } - if (rd->seq_num != rx_seq) { -- brcmf_err("seq %d: sequence number error, expect %d\n", -- rx_seq, rd->seq_num); -+ brcmf_dbg(SDIO, "seq %d, expected %d\n", rx_seq, rd->seq_num); - bus->sdcnt.rx_badseq++; - rd->seq_num = rx_seq; - } - -From 73ee55b624459eef06a612f95467ae54fa6976f7 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Fri, 19 Aug 2016 11:26:57 +0100 -Subject: [PATCH 137/160] overlays: Add audremap overlay - -The audremap overlay switches the PWM audio outputs to GPIO pins -12 (L) and 13 (R). ---- - arch/arm/boot/dts/overlays/Makefile | 1 + - arch/arm/boot/dts/overlays/README | 6 ++++++ - arch/arm/boot/dts/overlays/audremap-overlay.dts | 14 ++++++++++++++ - 3 files changed, 21 insertions(+) - create mode 100644 arch/arm/boot/dts/overlays/audremap-overlay.dts + arch/arm/boot/dts/overlays/Makefile | 1 + + arch/arm/boot/dts/overlays/README | 12 ++ + .../dts/overlays/pitft35-resistive-overlay.dts | 121 +++++++++++++++++++++ + arch/arm/configs/bcm2709_defconfig | 1 + + arch/arm/configs/bcmrpi_defconfig | 1 + + 5 files changed, 136 insertions(+) + create mode 100644 arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile -index 68832129f46b9c8320d0d2634c780bdb330314c9..817c3a67fb397c7b6ec5fdeda1cbb3d60855d2d3 100644 +index b6ed1a3c06a7a67d1dd79bb7e55421d8eccba492..6179b21af2fa8ec63429c3d379fc46085681dc7e 100644 --- a/arch/arm/boot/dts/overlays/Makefile +++ b/arch/arm/boot/dts/overlays/Makefile -@@ -18,6 +18,7 @@ dtbo-$(RPI_DT_OVERLAYS) += ads7846.dtbo - dtbo-$(RPI_DT_OVERLAYS) += akkordion-iqdacplus.dtbo - dtbo-$(RPI_DT_OVERLAYS) += at86rf233.dtbo - dtbo-$(RPI_DT_OVERLAYS) += audioinjector-wm8731-audio.dtbo -+dtbo-$(RPI_DT_OVERLAYS) += audremap.dtbo - dtbo-$(RPI_DT_OVERLAYS) += bmp085_i2c-sensor.dtbo - dtbo-$(RPI_DT_OVERLAYS) += dht11.dtbo - dtbo-$(RPI_DT_OVERLAYS) += dionaudio-loco.dtbo +@@ -64,6 +64,7 @@ dtbo-$(RPI_DT_OVERLAYS) += piscreen2r.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pitft22.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pitft28-capacitive.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pitft28-resistive.dtbo ++dtbo-$(RPI_DT_OVERLAYS) += pitft35-resistive.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pps-gpio.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pwm.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pwm-2chan.dtbo diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index b32bca8ada3b10aa40a5c718a1823e1fa4f7f5b2..53b2fa926d6e0fe3aead1150bd7a41ef6f0959c0 100644 +index 1ebb94c005d68b17792f95bd9792a08679298b26..2252ab9f5bab5dd40be9ebefa8e37c5bfb07d00f 100644 --- a/arch/arm/boot/dts/overlays/README +++ b/arch/arm/boot/dts/overlays/README -@@ -253,6 +253,12 @@ Load: dtoverlay=audioinjector-wm8731-audio - Params: +@@ -848,6 +848,18 @@ Params: speed Display SPI bus speed + debug Debug output level {0-7} -+Name: audremap -+Info: Switches PWM sound output to pins 12 & 13 -+Load: dtoverlay=audremap -+Params: ++Name: pitft35-resistive ++Info: Adafruit PiTFT 3.5" resistive touch screen ++Load: dtoverlay=pitft35-resistive,= ++Params: speed Display SPI bus speed ++ ++ rotate Display rotation {0,90,180,270} ++ ++ fps Delay between frame updates ++ ++ debug Debug output level {0-7} + + - Name: bmp085_i2c-sensor - Info: Configures the BMP085/BMP180 digital barometric pressure and temperature - sensors from Bosch Sensortec -diff --git a/arch/arm/boot/dts/overlays/audremap-overlay.dts b/arch/arm/boot/dts/overlays/audremap-overlay.dts + Name: pps-gpio + Info: Configures the pps-gpio (pulse-per-second time signal via GPIO). + Load: dtoverlay=pps-gpio,= +diff --git a/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts b/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts new file mode 100644 -index 0000000000000000000000000000000000000000..17bbabb712b1c5768f6446bd8cc3b6687ef24cb8 +index 0000000000000000000000000000000000000000..25cb5cc9576dadc3539f4ea3c9507c592ccac9d6 --- /dev/null -+++ b/arch/arm/boot/dts/overlays/audremap-overlay.dts -@@ -0,0 +1,14 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "brcm,bcm2708"; -+ -+ fragment@0 { -+ target = <&audio_pins>; -+ __overlay__ { -+ brcm,pins = < 12 13 >; -+ brcm,function = < 4 >; /* alt0 alt0 */ -+ }; -+ }; -+}; - -From f7aacc15331e7b08438b825f3195d56049215507 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Fri, 19 Aug 2016 15:39:01 +0100 -Subject: [PATCH 138/160] overlays: Add swap_lr and enable_jack to audremap - -swap_lr causes the channels to be reversed, and enable_jack prevents the -headphone output from being disabled. - -See: https://github.com/raspberrypi/linux/issues/1473 ---- - arch/arm/boot/dts/overlays/README | 9 ++++++--- - arch/arm/boot/dts/overlays/audremap-overlay.dts | 7 ++++++- - 2 files changed, 12 insertions(+), 4 deletions(-) - -diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index 53b2fa926d6e0fe3aead1150bd7a41ef6f0959c0..f1734321e930978c268615d6f6d356237d0c9d3a 100644 ---- a/arch/arm/boot/dts/overlays/README -+++ b/arch/arm/boot/dts/overlays/README -@@ -254,9 +254,12 @@ Params: - - - Name: audremap --Info: Switches PWM sound output to pins 12 & 13 --Load: dtoverlay=audremap --Params: -+Info: Switches PWM sound output to pins 12 (Right) & 13 (Left) -+Load: dtoverlay=audremap,= -+Params: swap_lr Reverse the channel allocation, which will also -+ swap the audio jack outputs (default off) -+ enable_jack Don't switch off the audio jack output -+ (default off) - - - Name: bmp085_i2c-sensor -diff --git a/arch/arm/boot/dts/overlays/audremap-overlay.dts b/arch/arm/boot/dts/overlays/audremap-overlay.dts -index 17bbabb712b1c5768f6446bd8cc3b6687ef24cb8..9582d6ab31218b4ed7b1d42a9190ca6efe9bd531 100644 ---- a/arch/arm/boot/dts/overlays/audremap-overlay.dts -+++ b/arch/arm/boot/dts/overlays/audremap-overlay.dts -@@ -6,9 +6,14 @@ - - fragment@0 { - target = <&audio_pins>; -- __overlay__ { -+ frag0: __overlay__ { - brcm,pins = < 12 13 >; - brcm,function = < 4 >; /* alt0 alt0 */ - }; - }; -+ -+ __overrides__ { -+ swap_lr = <&frag0>, "swap_lr?"; -+ enable_jack = <&frag0>, "enable_jack?"; -+ }; - }; - -From 43bf513281ccab4d8234c4ef53663acda40163f7 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Fri, 19 Aug 2016 11:12:28 +0100 -Subject: [PATCH 139/160] BCM270X_DT: Add audio_pins to CM dtb - -Bring the CM .dtb in line with other others. ---- - arch/arm/boot/dts/bcm2708-rpi-cm.dts | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dts b/arch/arm/boot/dts/bcm2708-rpi-cm.dts -index d2dcc9c156b32a91a45c26b460fa971abd0dbdf5..ce9f54ff7e4ce76ad25ad0a19cf2ad48ba9df01a 100755 ---- a/arch/arm/boot/dts/bcm2708-rpi-cm.dts -+++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts -@@ -35,6 +35,11 @@ - brcm,pins = <18 19 20 21>; - brcm,function = <4>; /* alt0 */ - }; -+ -+ audio_pins: audio_pins { -+ brcm,pins; -+ brcm,function; -+ }; - }; - - &spi0 { - -From 32a7a4096b752f9dd83e03efcbcea43e40148348 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Fri, 19 Aug 2016 11:19:02 +0100 -Subject: [PATCH 140/160] BCM270X_DT: Don't enable UART0 in CM3 dtb - ---- - arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 12 ------------ - 1 file changed, 12 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -index a5d57893d5799e57ffe9b8efe553a03ec4bde007..20388084b98cf942529eb60c55dc540cfea71886 100644 ---- a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -+++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -@@ -40,12 +40,6 @@ - brcm,function = <4>; /* alt0 */ - }; - -- uart0_pins: uart0_pins { -- brcm,pins; -- brcm,function; -- brcm,pull = <0 2>; -- }; -- - audio_pins: audio_pins { - brcm,pins; - brcm,function; -@@ -75,12 +69,6 @@ - status = "okay"; - }; - --&uart0 { -- pinctrl-names = "default"; -- pinctrl-0 = <&uart0_pins>; -- status = "okay"; --}; -- - &spi0 { - pinctrl-names = "default"; - pinctrl-0 = <&spi0_pins &spi0_cs_pins>; - -From 1e6d49b67eae7d66f08f7f31c01d0cfa7054dcca Mon Sep 17 00:00:00 2001 -From: wavelet2 -Date: Fri, 19 Aug 2016 09:32:53 +0100 -Subject: [PATCH 141/160] Overlay for Microchip MCP23S08/17 SPI gpio expanders - (#1566) - -Added Overlay for Microchip MCP23S08/17 SPI gpio expanders ---- - arch/arm/boot/dts/overlays/Makefile | 1 + - arch/arm/boot/dts/overlays/README | 24 + - arch/arm/boot/dts/overlays/mcp23s17-overlay.dts | 732 ++++++++++++++++++++++++ - 3 files changed, 757 insertions(+) - create mode 100644 arch/arm/boot/dts/overlays/mcp23s17-overlay.dts - -diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile -index 817c3a67fb397c7b6ec5fdeda1cbb3d60855d2d3..dc72052757ae5c79d7f196c900d9c0f13ab97a42 100644 ---- a/arch/arm/boot/dts/overlays/Makefile -+++ b/arch/arm/boot/dts/overlays/Makefile -@@ -49,6 +49,7 @@ dtbo-$(RPI_DT_OVERLAYS) += justboom-dac.dtbo - dtbo-$(RPI_DT_OVERLAYS) += justboom-digi.dtbo - dtbo-$(RPI_DT_OVERLAYS) += lirc-rpi.dtbo - dtbo-$(RPI_DT_OVERLAYS) += mcp23017.dtbo -+dtbo-$(RPI_DT_OVERLAYS) += mcp23s17.dtbo - dtbo-$(RPI_DT_OVERLAYS) += mcp2515-can0.dtbo - dtbo-$(RPI_DT_OVERLAYS) += mcp2515-can1.dtbo - dtbo-$(RPI_DT_OVERLAYS) += mmc.dtbo -diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index f1734321e930978c268615d6f6d356237d0c9d3a..87042af8550e5d16069a42329e34227a21e4b932 100644 ---- a/arch/arm/boot/dts/overlays/README -+++ b/arch/arm/boot/dts/overlays/README -@@ -631,6 +631,30 @@ Params: gpiopin Gpio pin connected to the INTA output of the - addr I2C address of the MCP23017 (default: 0x20) - - -+Name: mcp23s17 -+Info: Configures the MCP23S08/17 SPI GPIO expanders. -+ If devices are present on SPI1 or SPI2, those interfaces must be enabled -+ with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays. -+ If interrupts are enabled for a device on a given CS# on a SPI bus, that -+ device must be the only one present on that SPI bus/CS#. -+Load: dtoverlay=mcp23s17,= -+Params: s08-spi--present 4-bit integer, bitmap indicating MCP23S08 -+ devices present on SPI, CS# -+ -+ s17-spi--present 8-bit integer, bitmap indicating MCP23S17 -+ devices present on SPI, CS# -+ -+ s08-spi--int-gpio integer, enables interrupts on a single -+ MCP23S08 device on SPI, CS#, specifies -+ the GPIO pin to which INT output of MCP23S08 -+ is connected. -+ -+ s17-spi--int-gpio integer, enables mirrored interrupts on a -+ single MCP23S17 device on SPI, CS#, -+ specifies the GPIO pin to which either INTA -+ or INTB output of MCP23S17 is connected. -+ -+ - Name: mcp2515-can0 - Info: Configures the MCP2515 CAN controller on spi0.0 - Load: dtoverlay=mcp2515-can0,= -diff --git a/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts -new file mode 100644 -index 0000000000000000000000000000000000000000..7dcbacb3cd007eb15b2b0f165fd8adc7a7b7c580 ---- /dev/null -+++ b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts -@@ -0,0 +1,732 @@ -+// Overlay for MCP23S08/17 GPIO Extenders from Microchip Semiconductor -+ -+// dtparams: -+// s08-spi--present - 4-bit integer, bitmap indicating MCP23S08 devices present on SPI, CS#. -+// s17-spi--present - 8-bit integer, bitmap indicating MCP23S17 devices present on SPI, CS#. -+// s08-spi--int-gpio - integer, enables interrupts on a single MCP23S08 device on SPI, CS#, specifies the GPIO pin to which INT output is connected. -+// s17-spi--int-gpio - integer, enables mirrored interrupts on a single MCP23S17 device on SPI, CS#, specifies the GPIO pin to which either INTA or INTB output is connected. -+// -+// If devices are present on SPI1 or SPI2, those interfaces must be enabled with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays. -+// If interrupts are enabled for a device on a given CS# on a SPI bus, that device must be the only one present on that SPI bus/CS#. -+// -+// Example 1: A single MCP23S17 device on SPI0, CS#0 with its SPI addr set to 0 and INTA output connected to GPIO25: -+// dtoverlay=mcp23s17:s17-spi0-0-present=1,s17-spi0-0-int-gpio=25 -+// -+// Example 2: Two MCP23S08 devices on SPI1, CS#0 with their addrs set to 2 and 3. Three MCP23S17 devices on SPI1, CS#1 with their addrs set to 0, 1 and 7: -+// dtoverlay=spi1-2cs -+// dtoverlay=mcp23s17:s08-spi1-0-present=12,s17-spi1-1-present=131 ++++ b/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts +@@ -0,0 +1,121 @@ ++/* ++ * Device Tree overlay for Adafruit PiTFT 3.5" resistive touch screen ++ * ++ */ + +/dts-v1/; +/plugin/; @@ -136192,956 +141032,170 @@ index 0000000000000000000000000000000000000000..7dcbacb3cd007eb15b2b0f165fd8adc7 +/ { + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; + -+ // disable spi-dev on spi0.0 + fragment@0 { -+ target = <&spidev0>; -+ __dormant__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ // disable spi-dev on spi0.1 -+ fragment@1 { -+ target = <&spidev1>; -+ __dormant__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ // disable spi-dev on spi1.0 -+ fragment@2 { -+ target-path = "spi1/spidev@0"; -+ __dormant__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ // disable spi-dev on spi1.1 -+ fragment@3 { -+ target-path = "spi1/spidev@1"; -+ __dormant__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ // disable spi-dev on spi1.2 -+ fragment@4 { -+ target-path = "spi1/spidev@2"; -+ __dormant__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ // disable spi-dev on spi2.0 -+ fragment@5 { -+ target-path = "spi2/spidev@0"; -+ __dormant__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ // disable spi-dev on spi2.1 -+ fragment@6 { -+ target-path = "spi2/spidev@1"; -+ __dormant__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ // disable spi-dev on spi2.2 -+ fragment@7 { -+ target-path = "spi2/spidev@2"; -+ __dormant__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ // enable one or more mcp23s08s on spi0.0 -+ fragment@8 { + target = <&spi0>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s08_00: mcp23s08@0 { -+ compatible = "microchip,mcp23s08"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi0-0-present parameter */ -+ reg = <0>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi0-0-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s08s on spi0.1 -+ fragment@9 { -+ target = <&spi0>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s08_01: mcp23s08@1 { -+ compatible = "microchip,mcp23s08"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi0-1-present parameter */ -+ reg = <1>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi0-1-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s08s on spi1.0 -+ fragment@10 { -+ target = <&spi1>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s08_10: mcp23s08@0 { -+ compatible = "microchip,mcp23s08"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-0-present parameter */ -+ reg = <0>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-0-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s08s on spi1.1 -+ fragment@11 { -+ target = <&spi1>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s08_11: mcp23s08@1 { -+ compatible = "microchip,mcp23s08"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-1-present parameter */ -+ reg = <1>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-1-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s08s on spi1.2 -+ fragment@12 { -+ target = <&spi1>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s08_12: mcp23s08@2 { -+ compatible = "microchip,mcp23s08"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-2-present parameter */ -+ reg = <2>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-2-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s08s on spi2.0 -+ fragment@13 { -+ target = <&spi2>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s08_20: mcp23s08@0 { -+ compatible = "microchip,mcp23s08"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-0-present parameter */ -+ reg = <0>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-0-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s08s on spi2.1 -+ fragment@14 { -+ target = <&spi2>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s08_21: mcp23s08@1 { -+ compatible = "microchip,mcp23s08"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-1-present parameter */ -+ reg = <1>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-1-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s08s on spi2.2 -+ fragment@15 { -+ target = <&spi2>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s08_22: mcp23s08@2 { -+ compatible = "microchip,mcp23s08"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-2-present parameter */ -+ reg = <2>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-2-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s17s on spi0.0 -+ fragment@16 { -+ target = <&spi0>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s17_00: mcp23s17@0 { -+ compatible = "microchip,mcp23s17"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi0-0-present parameter */ -+ reg = <0>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi0-0-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s17s on spi0.1 -+ fragment@17 { -+ target = <&spi0>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s17_01: mcp23s17@1 { -+ compatible = "microchip,mcp23s17"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi0-1-present parameter */ -+ reg = <1>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi0-1-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s17s on spi1.0 -+ fragment@18 { -+ target = <&spi1>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s17_10: mcp23s17@0 { -+ compatible = "microchip,mcp23s17"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-0-present parameter */ -+ reg = <0>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-0-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s17s on spi1.1 -+ fragment@19 { -+ target = <&spi1>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s17_11: mcp23s17@1 { -+ compatible = "microchip,mcp23s17"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-1-present parameter */ -+ reg = <1>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-1-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s17s on spi1.2 -+ fragment@20 { -+ target = <&spi1>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s17_12: mcp23s17@2 { -+ compatible = "microchip,mcp23s17"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-2-present parameter */ -+ reg = <2>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-2-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s17s on spi2.0 -+ fragment@21 { -+ target = <&spi2>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s17_20: mcp23s17@0 { -+ compatible = "microchip,mcp23s17"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-0-present parameter */ -+ reg = <0>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-0-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s17s on spi2.1 -+ fragment@22 { -+ target = <&spi2>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s17_21: mcp23s17@1 { -+ compatible = "microchip,mcp23s17"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-1-present parameter */ -+ reg = <1>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-1-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s17s on spi2.2 -+ fragment@23 { -+ target = <&spi2>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s17_22: mcp23s17@2 { -+ compatible = "microchip,mcp23s17"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-2-present parameter */ -+ reg = <2>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-2-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.0 as a input with no pull-up/down -+ fragment@24 { -+ target = <&gpio>; -+ __dormant__ { -+ spi0_0_int_pins: spi0_0_int_pins { -+ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi0-0-int-gpio parameter */ -+ brcm,function = <0>; -+ brcm,pull = <0>; -+ }; -+ }; -+ }; -+ -+ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.1 as a input with no pull-up/down -+ fragment@25 { -+ target = <&gpio>; -+ __dormant__ { -+ spi0_1_int_pins: spi0_1_int_pins { -+ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi0-1-int-gpio parameter */ -+ brcm,function = <0>; -+ brcm,pull = <0>; -+ }; -+ }; -+ }; -+ -+ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.0 as a input with no pull-up/down -+ fragment@26 { -+ target = <&gpio>; -+ __dormant__ { -+ spi1_0_int_pins: spi1_0_int_pins { -+ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-0-int-gpio parameter */ -+ brcm,function = <0>; -+ brcm,pull = <0>; -+ }; -+ }; -+ }; -+ -+ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.1 as a input with no pull-up/down -+ fragment@27 { -+ target = <&gpio>; -+ __dormant__ { -+ spi1_1_int_pins: spi1_1_int_pins { -+ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-1-int-gpio parameter */ -+ brcm,function = <0>; -+ brcm,pull = <0>; -+ }; -+ }; -+ }; -+ -+ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.2 as a input with no pull-up/down -+ fragment@28 { -+ target = <&gpio>; -+ __dormant__ { -+ spi1_2_int_pins: spi1_2_int_pins { -+ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-2-int-gpio parameter */ -+ brcm,function = <0>; -+ brcm,pull = <0>; -+ }; -+ }; -+ }; -+ -+ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.0 as a input with no pull-up/down -+ fragment@29 { -+ target = <&gpio>; -+ __dormant__ { -+ spi2_0_int_pins: spi2_0_int_pins { -+ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-0-int-gpio parameter */ -+ brcm,function = <0>; -+ brcm,pull = <0>; -+ }; -+ }; -+ }; -+ -+ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.1 as a input with no pull-up/down -+ fragment@30 { -+ target = <&gpio>; -+ __dormant__ { -+ spi2_1_int_pins: spi2_1_int_pins { -+ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-1-int-gpio parameter */ -+ brcm,function = <0>; -+ brcm,pull = <0>; -+ }; -+ }; -+ }; -+ -+ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.2 as a input with no pull-up/down -+ fragment@31 { -+ target = <&gpio>; -+ __dormant__ { -+ spi2_2_int_pins: spi2_2_int_pins { -+ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-2-int-gpio parameter */ -+ brcm,function = <0>; -+ brcm,pull = <0>; -+ }; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s08 on spi0.0. -+ // Use default active low interrupt signalling. -+ fragment@32 { -+ target = <&mcp23s08_00>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s08 on spi0.1. -+ // Use default active low interrupt signalling. -+ fragment@33 { -+ target = <&mcp23s08_01>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s08 on spi1.0. -+ // Use default active low interrupt signalling. -+ fragment@34 { -+ target = <&mcp23s08_10>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s08 on spi1.1. -+ // Use default active low interrupt signalling. -+ fragment@35 { -+ target = <&mcp23s08_11>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s08 on spi1.2. -+ // Use default active low interrupt signalling. -+ fragment@36 { -+ target = <&mcp23s08_12>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s08 on spi2.0. -+ // Use default active low interrupt signalling. -+ fragment@37 { -+ target = <&mcp23s08_20>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s08 on spi2.1. -+ // Use default active low interrupt signalling. -+ fragment@38 { -+ target = <&mcp23s08_21>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s08 on spi2.2. -+ // Use default active low interrupt signalling. -+ fragment@39 { -+ target = <&mcp23s08_22>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s17 on spi0.0. -+ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. -+ // Use default active low interrupt signalling. -+ fragment@40 { -+ target = <&mcp23s17_00>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ microchip,irq-mirror; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s17 on spi0.1. -+ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. -+ // Configure INTA/B outputs of mcp23s08/17 as active low. -+ fragment@41 { -+ target = <&mcp23s17_01>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ microchip,irq-mirror; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s17 on spi1.0. -+ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. -+ // Configure INTA/B outputs of mcp23s08/17 as active low. -+ fragment@42 { -+ target = <&mcp23s17_10>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ microchip,irq-mirror; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s17 on spi1.1. -+ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. -+ // Configure INTA/B outputs of mcp23s08/17 as active low. -+ fragment@43 { -+ target = <&mcp23s17_11>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ microchip,irq-mirror; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s17 on spi1.2. -+ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. -+ // Configure INTA/B outputs of mcp23s08/17 as active low. -+ fragment@44 { -+ target = <&mcp23s17_12>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ microchip,irq-mirror; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s17 on spi2.0. -+ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. -+ // Configure INTA/B outputs of mcp23s08/17 as active low. -+ fragment@45 { -+ target = <&mcp23s17_20>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ microchip,irq-mirror; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s17 on spi2.1. -+ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. -+ // Configure INTA/B outputs of mcp23s08/17 as active low. -+ fragment@46 { -+ target = <&mcp23s17_21>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ microchip,irq-mirror; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s17 on spi2.2. -+ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. -+ // Configure INTA/B outputs of mcp23s08/17 as active low. -+ fragment@47 { -+ target = <&mcp23s17_22>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ microchip,irq-mirror; -+ }; -+ }; -+ -+ __overrides__ { -+ s08-spi0-0-present = <0>,"+0+8", <&mcp23s08_00>,"microchip,spi-present-mask:0"; -+ s08-spi0-1-present = <0>,"+1+9", <&mcp23s08_01>,"microchip,spi-present-mask:0"; -+ s08-spi1-0-present = <0>,"+2+10", <&mcp23s08_10>,"microchip,spi-present-mask:0"; -+ s08-spi1-1-present = <0>,"+3+11", <&mcp23s08_11>,"microchip,spi-present-mask:0"; -+ s08-spi1-2-present = <0>,"+4+12", <&mcp23s08_12>,"microchip,spi-present-mask:0"; -+ s08-spi2-0-present = <0>,"+5+13", <&mcp23s08_20>,"microchip,spi-present-mask:0"; -+ s08-spi2-1-present = <0>,"+6+14", <&mcp23s08_21>,"microchip,spi-present-mask:0"; -+ s08-spi2-2-present = <0>,"+7+15", <&mcp23s08_22>,"microchip,spi-present-mask:0"; -+ s17-spi0-0-present = <0>,"+0+16", <&mcp23s17_00>,"microchip,spi-present-mask:0"; -+ s17-spi0-1-present = <0>,"+1+17", <&mcp23s17_01>,"microchip,spi-present-mask:0"; -+ s17-spi1-0-present = <0>,"+2+18", <&mcp23s17_10>,"microchip,spi-present-mask:0"; -+ s17-spi1-1-present = <0>,"+3+19", <&mcp23s17_11>,"microchip,spi-present-mask:0"; -+ s17-spi1-2-present = <0>,"+4+20", <&mcp23s17_12>,"microchip,spi-present-mask:0"; -+ s17-spi2-0-present = <0>,"+5+21", <&mcp23s17_20>,"microchip,spi-present-mask:0"; -+ s17-spi2-1-present = <0>,"+6+22", <&mcp23s17_21>,"microchip,spi-present-mask:0"; -+ s17-spi2-2-present = <0>,"+7+23", <&mcp23s17_22>,"microchip,spi-present-mask:0"; -+ s08-spi0-0-int-gpio = <0>,"+24+32", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s08_00>,"interrupts:0"; -+ s08-spi0-1-int-gpio = <0>,"+25+33", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s08_01>,"interrupts:0"; -+ s08-spi1-0-int-gpio = <0>,"+26+34", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s08_10>,"interrupts:0"; -+ s08-spi1-1-int-gpio = <0>,"+27+35", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s08_11>,"interrupts:0"; -+ s08-spi1-2-int-gpio = <0>,"+28+36", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s08_12>,"interrupts:0"; -+ s08-spi2-0-int-gpio = <0>,"+29+37", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s08_20>,"interrupts:0"; -+ s08-spi2-1-int-gpio = <0>,"+30+38", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s08_21>,"interrupts:0"; -+ s08-spi2-2-int-gpio = <0>,"+31+39", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s08_22>,"interrupts:0"; -+ s17-spi0-0-int-gpio = <0>,"+24+40", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s17_00>,"interrupts:0"; -+ s17-spi0-1-int-gpio = <0>,"+25+41", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s17_01>,"interrupts:0"; -+ s17-spi1-0-int-gpio = <0>,"+26+42", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s17_10>,"interrupts:0"; -+ s17-spi1-1-int-gpio = <0>,"+27+43", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s17_11>,"interrupts:0"; -+ s17-spi1-2-int-gpio = <0>,"+28+44", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s17_12>,"interrupts:0"; -+ s17-spi2-0-int-gpio = <0>,"+29+45", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s17_20>,"interrupts:0"; -+ s17-spi2-1-int-gpio = <0>,"+30+46", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s17_21>,"interrupts:0"; -+ s17-spi2-2-int-gpio = <0>,"+31+47", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s17_22>,"interrupts:0"; -+ }; -+}; -+ - -From 7e2d136b7052a6d089e6a745a5d84c3fa800c158 Mon Sep 17 00:00:00 2001 -From: Georgii Staroselskii -Date: Tue, 23 Aug 2016 17:40:05 +0400 -Subject: [PATCH 142/160] overlays: added sc16is750 UART over I2C (#1617) - ---- - arch/arm/boot/dts/overlays/Makefile | 1 + - arch/arm/boot/dts/overlays/README | 10 ++++++ - .../boot/dts/overlays/sc16is750-i2c-overlay.dts | 37 ++++++++++++++++++++++ - 3 files changed, 48 insertions(+) - create mode 100644 arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts - -diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile -index dc72052757ae5c79d7f196c900d9c0f13ab97a42..35a1673379d4fb9aa4c1028310a44b79e23ac2ce 100644 ---- a/arch/arm/boot/dts/overlays/Makefile -+++ b/arch/arm/boot/dts/overlays/Makefile -@@ -74,6 +74,7 @@ dtbo-$(RPI_DT_OVERLAYS) += rpi-ft5406.dtbo - dtbo-$(RPI_DT_OVERLAYS) += rpi-proto.dtbo - dtbo-$(RPI_DT_OVERLAYS) += rpi-sense.dtbo - dtbo-$(RPI_DT_OVERLAYS) += rra-digidac1-wm8741-audio.dtbo -+dtbo-$(RPI_DT_OVERLAYS) += sc16is750-i2c.dtbo - dtbo-$(RPI_DT_OVERLAYS) += sc16is752-spi1.dtbo - dtbo-$(RPI_DT_OVERLAYS) += sdhost.dtbo - dtbo-$(RPI_DT_OVERLAYS) += sdio.dtbo -diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index 87042af8550e5d16069a42329e34227a21e4b932..f93b8ffd40157da92685095f75ea67943153a16b 100644 ---- a/arch/arm/boot/dts/overlays/README -+++ b/arch/arm/boot/dts/overlays/README -@@ -927,6 +927,16 @@ Load: dtoverlay=rra-digidac1-wm8741-audio - Params: - - -+Name: sc16is750-i2c -+Info: Overlay for the NXP SC16IS750 UART with I2C Interface -+ Enables the chip on I2C1 at 0x48. To select another address, -+ please refer to table 10 in reference manual. -+ -+Load: dtoverlay=sc16is750-i2c,= -+Params: int_pin GPIO used for IRQ (default 24) -+ addr Address (default 0x48) -+ -+ - Name: sc16is752-spi1 - Info: Overlay for the NXP SC16IS752 Dual UART with SPI Interface - Enables the chip on SPI1. -diff --git a/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts -new file mode 100644 -index 0000000000000000000000000000000000000000..339d0d17c01ff182edd0871de9dc4ea744917ad4 ---- /dev/null -+++ b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts -@@ -0,0 +1,37 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; -+ -+ fragment@0 { -+ target = <&i2c_arm>; + __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&spidev0>; ++ __overlay__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ fragment@2 { ++ target = <&spidev1>; ++ __overlay__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ fragment@3 { ++ target = <&gpio>; ++ __overlay__ { ++ pitft_pins: pitft_pins { ++ brcm,pins = <24 25>; ++ brcm,function = <0 1>; /* in out */ ++ brcm,pull = <2 0>; /* pullup none */ ++ }; ++ }; ++ }; ++ ++ fragment@4 { ++ target = <&spi0>; ++ __overlay__ { ++ /* needed to avoid dtc warning */ + #address-cells = <1>; + #size-cells = <0>; -+ status = "okay"; + -+ sc16is750: sc16is750@48 { -+ compatible = "nxp,sc16is750"; -+ reg = <0x48>; /* address */ -+ clocks = <&sc16is750_clk>; ++ pitft: pitft@0{ ++ compatible = "himax,hx8357d"; ++ reg = <0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pitft_pins>; ++ ++ spi-max-frequency = <32000000>; ++ rotate = <90>; ++ fps = <25>; ++ bgr; ++ buswidth = <8>; ++ dc-gpios = <&gpio 25 0>; ++ debug = <0>; ++ }; ++ ++ pitft_ts@1 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ compatible = "st,stmpe610"; ++ reg = <1>; ++ ++ spi-max-frequency = <500000>; ++ irq-gpio = <&gpio 24 0x2>; /* IRQF_TRIGGER_FALLING */ ++ interrupts = <24 2>; /* high-to-low edge triggered */ + interrupt-parent = <&gpio>; -+ interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */ -+ #gpio-cells = <2>; ++ interrupt-controller; + -+ sc16is750_clk: sc16is750_clk { -+ compatible = "fixed-clock"; -+ #clock-cells = <0>; -+ clock-frequency = <14745600>; ++ stmpe_touchscreen { ++ compatible = "st,stmpe-ts"; ++ st,sample-time = <4>; ++ st,mod-12b = <1>; ++ st,ref-sel = <0>; ++ st,adc-freq = <2>; ++ st,ave-ctrl = <3>; ++ st,touch-det-delay = <4>; ++ st,settling = <2>; ++ st,fraction-z = <7>; ++ st,i-drive = <0>; ++ }; ++ ++ stmpe_gpio: stmpe_gpio { ++ #gpio-cells = <2>; ++ compatible = "st,stmpe-gpio"; ++ /* ++ * only GPIO2 is wired/available ++ * and it is wired to the backlight ++ */ ++ st,norequest-mask = <0x7b>; + }; + }; + }; + }; + -+ -+ __overrides__ { -+ int_pin = <&sc16is750>,"interrupts:0"; -+ addr = <&sc16is750>,"reg:0"; ++ fragment@5 { ++ target-path = "/soc"; ++ __overlay__ { ++ backlight { ++ compatible = "gpio-backlight"; ++ gpios = <&stmpe_gpio 2 0>; ++ default-on; ++ }; ++ }; + }; + ++ __overrides__ { ++ speed = <&pitft>,"spi-max-frequency:0"; ++ rotate = <&pitft>,"rotate:0"; ++ fps = <&pitft>,"fps:0"; ++ debug = <&pitft>,"debug:0"; ++ }; +}; +diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig +index aa708638cc6f3bceb189c2deef7307252901291f..aa57989600923198d4bfb913c4d2e8a565a93e07 100644 +--- a/arch/arm/configs/bcm2709_defconfig ++++ b/arch/arm/configs/bcm2709_defconfig +@@ -1111,6 +1111,7 @@ CONFIG_FB_TFT_BD663474=m + CONFIG_FB_TFT_HX8340BN=m + CONFIG_FB_TFT_HX8347D=m + CONFIG_FB_TFT_HX8353D=m ++CONFIG_FB_TFT_HX8357D=m + CONFIG_FB_TFT_ILI9163=m + CONFIG_FB_TFT_ILI9320=m + CONFIG_FB_TFT_ILI9325=m +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index 952104ab6c4cd0e9d8f7bd5f2fba7a72da75424e..26fa6c2b6b6d745178e666465ba226afee701ab1 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -1117,6 +1117,7 @@ CONFIG_FB_TFT_BD663474=m + CONFIG_FB_TFT_HX8340BN=m + CONFIG_FB_TFT_HX8347D=m + CONFIG_FB_TFT_HX8353D=m ++CONFIG_FB_TFT_HX8357D=m + CONFIG_FB_TFT_ILI9163=m + CONFIG_FB_TFT_ILI9320=m + CONFIG_FB_TFT_ILI9325=m -From 3f94e5591f0826a9ffee988fb31d440ae1f5cf40 Mon Sep 17 00:00:00 2001 +From 2fd1010866b91d68aa42e0a81d3e8739b1902a34 Mon Sep 17 00:00:00 2001 From: Phil Elwell -Date: Mon, 22 Aug 2016 11:56:04 +0100 -Subject: [PATCH 143/160] overlays: Clarify gpio-poweroff semantics in README +Date: Mon, 10 Oct 2016 15:06:20 +0100 +Subject: [PATCH 130/132] BCM270X_DT: Update CM3 to use sdhost interface -1) GPIO pin is signalled on poweroff, not reboot. -2) In RPi kernels, halt is equivalent to poweroff. - -See: https://github.com/raspberrypi/linux/issues/1600 --- - arch/arm/boot/dts/overlays/README | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) -diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index f93b8ffd40157da92685095f75ea67943153a16b..7a98f105eb94b95f0f592cad5dd20dd63342dd38 100644 ---- a/arch/arm/boot/dts/overlays/README -+++ b/arch/arm/boot/dts/overlays/README -@@ -340,7 +340,7 @@ Params: gpio_pin Input pin number. Default is 18. +diff --git a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts +index b5a5ae7747455438f8eabd28e8c11c6aeb0c1ecc..d13e3d4dac4e198c8cac451e3f64ef687e2ace1b 100644 +--- a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts ++++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts +@@ -8,10 +8,9 @@ + }; + &gpio { +- +- mmc_pins: mmc_pins { ++ sdhost_pins: sdhost_pins { + brcm,pins = <48 49 50 51 52 53>; +- brcm,function = <7>; /* alt3 */ ++ brcm,function = <4>; /* alt0 */ + brcm,pull = <0 2 2 2 2 2>; + }; - Name: gpio-poweroff --Info: Drives a GPIO high or low on reboot -+Info: Drives a GPIO high or low on poweroff (including halt) - Load: dtoverlay=gpio-poweroff,= - Params: gpiopin GPIO for signalling (default 26) - - -From 7ce087a361ffa6e2d742c74cef3f3d618441deac Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Tue, 9 Aug 2016 21:51:41 +0100 -Subject: [PATCH 144/160] overlays: Add assert_falling_edge to pps-gpio overlay - -See: https://github.com/raspberrypi/linux/issues/1590 ---- - arch/arm/boot/dts/overlays/README | 2 ++ - arch/arm/boot/dts/overlays/pps-gpio-overlay.dts | 1 + - 2 files changed, 3 insertions(+) - -diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index 7a98f105eb94b95f0f592cad5dd20dd63342dd38..37f00748a0a240e25c06e621915683f88962d3be 100644 ---- a/arch/arm/boot/dts/overlays/README -+++ b/arch/arm/boot/dts/overlays/README -@@ -824,6 +824,8 @@ Name: pps-gpio - Info: Configures the pps-gpio (pulse-per-second time signal via GPIO). - Load: dtoverlay=pps-gpio,= - Params: gpiopin Input GPIO (default "18") -+ assert_falling_edge When present, assert is indicated by a falling -+ edge, rather than by a rising edge - - - Name: pwm -diff --git a/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts -index 40bf0e11015f5abebd0d4139276da888d728d569..50143a4bb215807ba0a0d0562f5827fa29a04de4 100644 ---- a/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts -+++ b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts -@@ -30,5 +30,6 @@ - __overrides__ { - gpiopin = <&pps>,"gpios:4", - <&pps_pins>,"brcm,pins:0"; -+ assert_falling_edge = <&pps>,"assert-falling-edge?"; +@@ -46,9 +45,9 @@ }; }; - -From ab4748c969258a1356c375bcf0e39e3c19044af0 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Fri, 2 Sep 2016 17:21:42 +0100 -Subject: [PATCH 145/160] bcm2835-sdhost: Don't exit cmd wait loop on error - -The FAIL flag can be set in the CMD register before command processing -is complete, leading to spurious "failed to complete" errors. This has -the effect of promoting harmless CRC7 errors during CMD1 processing -into errors that can delay and even prevent booting. - -Also: -1) Convert the last KERN_ERROR message in the register dumping to - KERN_INFO. -2) Remove an unnecessary reset call from bcm2835_sdhost_add_host. - -See: https://github.com/raspberrypi/linux/pull/1492 - -Signed-off-by: Phil Elwell ---- - drivers/mmc/host/bcm2835-sdhost.c | 10 +++------- - 1 file changed, 3 insertions(+), 7 deletions(-) - -diff --git a/drivers/mmc/host/bcm2835-sdhost.c b/drivers/mmc/host/bcm2835-sdhost.c -index d7b6b5a4e31f7aaa76470d3a79ea78a643184855..22bfb340011b0c857f8eb4824eb0b656def6a006 100644 ---- a/drivers/mmc/host/bcm2835-sdhost.c -+++ b/drivers/mmc/host/bcm2835-sdhost.c -@@ -373,7 +373,7 @@ static void bcm2835_sdhost_dumpregs(struct bcm2835_host *host) - pr_info("%s: SDRSP2 0x%08x\n", - mmc_hostname(host->mmc), - bcm2835_sdhost_read(host, SDRSP2)); -- pr_err("%s: SDRSP3 0x%08x\n", -+ pr_info("%s: SDRSP3 0x%08x\n", - mmc_hostname(host->mmc), - bcm2835_sdhost_read(host, SDRSP3)); - pr_info("%s: SDHSTS 0x%08x\n", -@@ -1183,9 +1183,8 @@ static void bcm2835_sdhost_finish_command(struct bcm2835_host *host, - retries = 1; // We've already waited long enough this time - } - -- retries = host->cmd_quick_poll_retries; - for (sdcmd = bcm2835_sdhost_read(host, SDCMD); -- (sdcmd & SDCMD_NEW_FLAG) && !(sdcmd & SDCMD_FAIL_FLAG) && retries; -+ (sdcmd & SDCMD_NEW_FLAG) && retries; - retries--) { - cpu_relax(); - sdcmd = bcm2835_sdhost_read(host, SDCMD); -@@ -1208,8 +1207,7 @@ static void bcm2835_sdhost_finish_command(struct bcm2835_host *host, - usleep_range(1, 10); - spin_lock_irqsave(&host->lock, *irq_flags); - sdcmd = bcm2835_sdhost_read(host, SDCMD); -- if (!(sdcmd & SDCMD_NEW_FLAG) || -- (sdcmd & SDCMD_FAIL_FLAG)) -+ if (!(sdcmd & SDCMD_NEW_FLAG)) - break; - } - } -@@ -1892,8 +1890,6 @@ int bcm2835_sdhost_add_host(struct bcm2835_host *host) - - mmc = host->mmc; - -- bcm2835_sdhost_reset_internal(host); -- - mmc->f_max = host->max_clk; - mmc->f_min = host->max_clk / SDCDIV_MAX_CDIV; - - -From ded0f4d47f8887e84c57cd995728962e7967dc1f Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Fri, 2 Sep 2016 14:35:37 +0100 -Subject: [PATCH 146/160] BCM270X_DT: Use bcm2835-sdhost on Compute Module - -With the preceding commit: - - bcm2835-sdhost: Don't exit cmd wait loop on error - -it is safe to use the bcm2835-sdhost driver on the Compute Module. - -Signed-off-by: Phil Elwell ---- - arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi -index f07609d97225b355dd2b6981d4f1fa28d0d40950..d33d462b4090e4a4f967a37212918b9cf500bf76 100644 ---- a/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi -+++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi -@@ -23,9 +23,9 @@ - }; - -&mmc { +&sdhost { @@ -137152,933 +141206,94 @@ index f07609d97225b355dd2b6981d4f1fa28d0d40950..d33d462b4090e4a4f967a37212918b9c bus-width = <4>; status = "okay"; -From 33d222b1d9b13bce6f273ab0896916b125c673e3 Mon Sep 17 00:00:00 2001 +From 395f1c253709126a0d9743da0ca0482ef15f01ab Mon Sep 17 00:00:00 2001 From: popcornmix -Date: Wed, 7 Sep 2016 16:57:59 +0100 -Subject: [PATCH 147/160] fbmem: Ensure that parameters are properly checked - within fb_copyarea_user +Date: Tue, 11 Oct 2016 18:10:17 +0100 +Subject: [PATCH 131/132] Revert "Register the clocks early during the boot + process," +This reverts commit bcc804ce3dfd5eb4800c9dd77370da7e7913f77d. --- - drivers/video/fbdev/core/fbmem.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) + drivers/clk/bcm/clk-bcm2835.c | 17 +++-------------- + 1 file changed, 3 insertions(+), 14 deletions(-) -diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c -index 1d3b35ec8e393aac43dca0ec4566f7a7d0d8998a..7bf48e478c056fcd745026902961506d5826615d 100644 ---- a/drivers/video/fbdev/core/fbmem.c -+++ b/drivers/video/fbdev/core/fbmem.c -@@ -1090,7 +1090,13 @@ static int fb_copyarea_user(struct fb_info *info, - int ret = 0; - if (!lock_fb_info(info)) - return -ENODEV; -- if (copy->dx + copy->width > info->var.xres || -+ if (copy->dx >= info->var.xres || -+ copy->sx >= info->var.xres || -+ copy->width > info->var.xres || -+ copy->dy >= info->var.yres || -+ copy->sy >= info->var.yres || -+ copy->height > info->var.yres || -+ copy->dx + copy->width > info->var.xres || - copy->sx + copy->width > info->var.xres || - copy->dy + copy->height > info->var.yres || - copy->sy + copy->height > info->var.yres) { - -From 4ffc939ef5756d5576d67bc3d752a1c584b75d5a Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Fri, 9 Sep 2016 19:35:13 +0100 -Subject: [PATCH 148/160] config: Enabled SENSORS_INA2XX module - ---- - arch/arm/configs/bcm2709_defconfig | 1 + - arch/arm/configs/bcmrpi_defconfig | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index 76340ce6ccc43a4bb24db414b75814e4a9e10ddc..d99821f568fdd592a5d113576d099a573ee22a7e 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -647,6 +647,7 @@ CONFIG_HWMON=m - CONFIG_SENSORS_LM75=m - CONFIG_SENSORS_SHT21=m - CONFIG_SENSORS_SHTC1=m -+CONFIG_SENSORS_INA2XX=m - CONFIG_THERMAL=y - CONFIG_THERMAL_BCM2835=y - CONFIG_WATCHDOG=y -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 5535fee75c1a31c4fe014b1551af763fb2e7c289..a3155e9e6099b0894d9c9601fceaeb61412bdff3 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -638,6 +638,7 @@ CONFIG_HWMON=m - CONFIG_SENSORS_LM75=m - CONFIG_SENSORS_SHT21=m - CONFIG_SENSORS_SHTC1=m -+CONFIG_SENSORS_INA2XX=m - CONFIG_THERMAL=y - CONFIG_THERMAL_BCM2835=y - CONFIG_WATCHDOG=y - -From 3614e26dc405ea3badbb63d4e52ebf62d0dccd0e Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Mon, 12 Sep 2016 13:46:56 +0100 -Subject: [PATCH 149/160] overlays: Add dpi18 overlay (#1634) - -Add support for 18-bit DPI displays. Although the dpi24 overlay could -be used, this overlay leaves GPIOs 22-27 free for other uses. ---- - arch/arm/boot/dts/overlays/Makefile | 1 + - arch/arm/boot/dts/overlays/README | 8 +++++++ - arch/arm/boot/dts/overlays/dpi18-overlay.dts | 31 ++++++++++++++++++++++++++++ - 3 files changed, 40 insertions(+) - create mode 100644 arch/arm/boot/dts/overlays/dpi18-overlay.dts - -diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile -index 35a1673379d4fb9aa4c1028310a44b79e23ac2ce..58bd224d7b1329710ee290c2584a40df565418cc 100644 ---- a/arch/arm/boot/dts/overlays/Makefile -+++ b/arch/arm/boot/dts/overlays/Makefile -@@ -22,6 +22,7 @@ dtbo-$(RPI_DT_OVERLAYS) += audremap.dtbo - dtbo-$(RPI_DT_OVERLAYS) += bmp085_i2c-sensor.dtbo - dtbo-$(RPI_DT_OVERLAYS) += dht11.dtbo - dtbo-$(RPI_DT_OVERLAYS) += dionaudio-loco.dtbo -+dtbo-$(RPI_DT_OVERLAYS) += dpi18.dtbo - dtbo-$(RPI_DT_OVERLAYS) += dpi24.dtbo - dtbo-$(RPI_DT_OVERLAYS) += dwc-otg.dtbo - dtbo-$(RPI_DT_OVERLAYS) += dwc2.dtbo -diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index 37f00748a0a240e25c06e621915683f88962d3be..a6aa2dfaee53026459a48460ae3df409329a53d2 100644 ---- a/arch/arm/boot/dts/overlays/README -+++ b/arch/arm/boot/dts/overlays/README -@@ -283,6 +283,14 @@ Load: dtoverlay=dionaudio-loco - Params: +diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c +index cbbc8d4ddcffc797268c0ecb6477005fa14e228b..fbf616021704178a9d007219a0ea2a9f1704f0a6 100644 +--- a/drivers/clk/bcm/clk-bcm2835.c ++++ b/drivers/clk/bcm/clk-bcm2835.c +@@ -1891,15 +1891,8 @@ static int bcm2835_clk_probe(struct platform_device *pdev) + if (ret) + return ret; - -+Name: dpi18 -+Info: Overlay for a generic 18-bit DPI display -+ This uses GPIOs 0-21 (so no I2C, uart etc.), and activates the output -+ 2-3 seconds after the kernel has started. -+Load: dtoverlay=dpi18 -+Params: -+ -+ - Name: dpi24 - Info: Overlay for a generic 24-bit DPI display - This uses GPIOs 0-27 (so no I2C, uart etc.), and activates the output -diff --git a/arch/arm/boot/dts/overlays/dpi18-overlay.dts b/arch/arm/boot/dts/overlays/dpi18-overlay.dts -new file mode 100644 -index 0000000000000000000000000000000000000000..8098d5e28a71ffbc717db5c6b88305d2ba6e3175 ---- /dev/null -+++ b/arch/arm/boot/dts/overlays/dpi18-overlay.dts -@@ -0,0 +1,31 @@ -+/dts-v1/; -+/plugin/; -+ -+/{ -+ compatible = "brcm,bcm2708"; -+ -+ // There is no DPI driver module, but we need a platform device -+ // node (that doesn't already use pinctrl) to hang the pinctrl -+ // reference on - leds will do -+ -+ fragment@0 { -+ target = <&leds>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&dpi18_pins>; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&gpio>; -+ __overlay__ { -+ dpi18_pins: dpi18_pins { -+ brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11 -+ 12 13 14 15 16 17 18 19 20 -+ 21>; -+ brcm,function = <6>; /* alt2 */ -+ brcm,pull = <0>; /* no pull */ -+ }; -+ }; -+ }; -+}; - -From 06e81bc3bc08c539da9963fb0f24325b7a4dbec6 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Tue, 13 Sep 2016 16:32:37 +0100 -Subject: [PATCH 150/160] brcmfmac: do not use internal roaming engine by - default - -Some evidence of curing disconnects with this disabled, so make it a default. -Can be overridden with module parameter roamoff=0 -See: http://projectable.me/optimize-my-pi-wi-fi/ ---- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c -index 3e15d64c64813513bc22202dd9e468588699abb0..4051780f64f44a5ce522babe6c371a1beb79a824 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c -@@ -69,7 +69,7 @@ static int brcmf_fcmode; - module_param_named(fcmode, brcmf_fcmode, int, 0); - MODULE_PARM_DESC(fcmode, "Mode of firmware signalled flow control"); - --static int brcmf_roamoff; -+static int brcmf_roamoff = 1; - module_param_named(roamoff, brcmf_roamoff, int, S_IRUSR); - MODULE_PARM_DESC(roamoff, "Do not use internal roaming engine"); - - -From b5622a1722cb96f12e5d684de6e5964bc8c7362d Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Thu, 18 Aug 2016 17:36:39 +0100 -Subject: [PATCH 151/160] config: Enable SERIAL_SC16IS7XX_SPI - -Previously only the I2C mode was supported. - -See: https://github.com/raspberrypi/linux/issues/1594 ---- - arch/arm/configs/bcm2709_defconfig | 1 + - arch/arm/configs/bcmrpi_defconfig | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index d99821f568fdd592a5d113576d099a573ee22a7e..b06c09fd1b094c23c82dee754070a7f97fe078b1 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -602,6 +602,7 @@ CONFIG_SERIAL_OF_PLATFORM=y - CONFIG_SERIAL_AMBA_PL011=y - CONFIG_SERIAL_AMBA_PL011_CONSOLE=y - CONFIG_SERIAL_SC16IS7XX=m -+CONFIG_SERIAL_SC16IS7XX_SPI=y - CONFIG_TTY_PRINTK=y - CONFIG_HW_RANDOM=y - CONFIG_RAW_DRIVER=y -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index a3155e9e6099b0894d9c9601fceaeb61412bdff3..0061b42f6a41e8640f19c14773333f183c95bb6a 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -594,6 +594,7 @@ CONFIG_SERIAL_OF_PLATFORM=y - CONFIG_SERIAL_AMBA_PL011=y - CONFIG_SERIAL_AMBA_PL011_CONSOLE=y - CONFIG_SERIAL_SC16IS7XX=m -+CONFIG_SERIAL_SC16IS7XX_SPI=y - CONFIG_TTY_PRINTK=y - CONFIG_HW_RANDOM=y - CONFIG_RAW_DRIVER=y - -From 6657bdf2e759145edd87186797e65ed209fa8415 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Tue, 23 Aug 2016 14:07:29 +0100 -Subject: [PATCH 152/160] config: Add CONFIG_IPVLAN module - ---- - arch/arm/configs/bcm2709_defconfig | 1 + - arch/arm/configs/bcmrpi_defconfig | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index b06c09fd1b094c23c82dee754070a7f97fe078b1..f15f2aea6e000d5a3f416371ce7477723b9007c9 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -449,6 +449,7 @@ CONFIG_BONDING=m - CONFIG_DUMMY=m - CONFIG_IFB=m - CONFIG_MACVLAN=m -+CONFIG_IPVLAN=m - CONFIG_NETCONSOLE=m - CONFIG_TUN=m - CONFIG_VETH=m -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 0061b42f6a41e8640f19c14773333f183c95bb6a..b726e62c7beff9b571bf7ab76101609daa418122 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -441,6 +441,7 @@ CONFIG_BONDING=m - CONFIG_DUMMY=m - CONFIG_IFB=m - CONFIG_MACVLAN=m -+CONFIG_IPVLAN=m - CONFIG_NETCONSOLE=m - CONFIG_TUN=m - CONFIG_VETH=m - -From ab6c5a0bd794968eee456a0fe694c6cac1e4486c Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Tue, 23 Aug 2016 14:08:55 +0100 -Subject: [PATCH 153/160] config: Add CONFIG_VXLAN module - ---- - arch/arm/configs/bcm2709_defconfig | 1 + - arch/arm/configs/bcmrpi_defconfig | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index f15f2aea6e000d5a3f416371ce7477723b9007c9..046e272a568a2e0ea7a1437c70d8ddac094d7172 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -450,6 +450,7 @@ CONFIG_DUMMY=m - CONFIG_IFB=m - CONFIG_MACVLAN=m - CONFIG_IPVLAN=m -+CONFIG_VXLAN=m - CONFIG_NETCONSOLE=m - CONFIG_TUN=m - CONFIG_VETH=m -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index b726e62c7beff9b571bf7ab76101609daa418122..2c5d3ec8ccade1c55997a90aeaec31d126f3a22c 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -442,6 +442,7 @@ CONFIG_DUMMY=m - CONFIG_IFB=m - CONFIG_MACVLAN=m - CONFIG_IPVLAN=m -+CONFIG_VXLAN=m - CONFIG_NETCONSOLE=m - CONFIG_TUN=m - CONFIG_VETH=m - -From 52e4995cc1e32e6ff505fec57422df359d88539c Mon Sep 17 00:00:00 2001 -From: Jools Wills -Date: Mon, 8 Aug 2016 11:04:29 +0100 -Subject: [PATCH 154/160] enable gembird joypad support - ---- - arch/arm/configs/bcm2709_defconfig | 1 + - arch/arm/configs/bcmrpi_defconfig | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index 046e272a568a2e0ea7a1437c70d8ddac094d7172..7f3c79bcbdec1aed80d83efb3c48644cf93dffd8 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -897,6 +897,7 @@ CONFIG_HID_EMS_FF=m - CONFIG_HID_ELECOM=m - CONFIG_HID_ELO=m - CONFIG_HID_EZKEY=m -+CONFIG_HID_GEMBIRD=m - CONFIG_HID_HOLTEK=m - CONFIG_HID_KEYTOUCH=m - CONFIG_HID_KYE=m -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 2c5d3ec8ccade1c55997a90aeaec31d126f3a22c..3abe26f65bc5d9406589cc4112d922351fc260c6 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -888,6 +888,7 @@ CONFIG_HID_EMS_FF=m - CONFIG_HID_ELECOM=m - CONFIG_HID_ELO=m - CONFIG_HID_EZKEY=m -+CONFIG_HID_GEMBIRD=m - CONFIG_HID_HOLTEK=m - CONFIG_HID_KEYTOUCH=m - CONFIG_HID_KYE=m - -From a62f6971f96f566e9e13d1f670a682371da109ac Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Thu, 15 Sep 2016 11:36:26 +0100 -Subject: [PATCH 155/160] config: Remove CONFIG_TRIM_UNUSED_KSYMS - ---- - arch/arm/configs/bcm2709_defconfig | 1 - - arch/arm/configs/bcmrpi_defconfig | 1 - - 2 files changed, 2 deletions(-) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index 7f3c79bcbdec1aed80d83efb3c48644cf93dffd8..1fbe104b5d46dce196abb750e65467395eb63dea 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -35,7 +35,6 @@ CONFIG_MODULES=y - CONFIG_MODULE_UNLOAD=y - CONFIG_MODVERSIONS=y - CONFIG_MODULE_SRCVERSION_ALL=y --CONFIG_TRIM_UNUSED_KSYMS=y - CONFIG_BLK_DEV_THROTTLING=y - CONFIG_PARTITION_ADVANCED=y - CONFIG_MAC_PARTITION=y -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 3abe26f65bc5d9406589cc4112d922351fc260c6..b2372c4f366d36a52caa1179a095d6a3e2eeb151 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -34,7 +34,6 @@ CONFIG_MODULES=y - CONFIG_MODULE_UNLOAD=y - CONFIG_MODVERSIONS=y - CONFIG_MODULE_SRCVERSION_ALL=y --CONFIG_TRIM_UNUSED_KSYMS=y - CONFIG_BLK_DEV_THROTTLING=y - CONFIG_PARTITION_ADVANCED=y - CONFIG_MAC_PARTITION=y - -From 094ed6946aac19dee57766766e24b17cec92815d Mon Sep 17 00:00:00 2001 -From: Clive Messer -Date: Mon, 19 Sep 2016 14:01:04 +0100 -Subject: [PATCH 156/160] Allo Piano DAC boards: Initial 2 channel (stereo) - support (#1645) - -Add initial 2 channel (stereo) support for Allo Piano DAC (2.0/2.1) boards, -using allo-piano-dac-pcm512x-audio overlay and allo-piano-dac ALSA ASoC -machine driver. - -NB. The initial support is 2 channel (stereo) ONLY! -(The Piano DAC 2.1 will only support 2 channel (stereo) left/right output, - pending an update to the upstream pcm512x codec driver, which will have - to be submitted via upstream. With the initial downstream support, - provided by this patch, the Piano DAC 2.1 subwoofer outputs will - not function.) - -Signed-off-by: Baswaraj K -Signed-off-by: Clive Messer -Tested-by: Clive Messer ---- - arch/arm/boot/dts/overlays/Makefile | 1 + - arch/arm/boot/dts/overlays/README | 20 +++ - .../allo-piano-dac-pcm512x-audio-overlay.dts | 54 ++++++++ - arch/arm/configs/bcm2709_defconfig | 1 + - arch/arm/configs/bcmrpi_defconfig | 1 + - sound/soc/bcm/Kconfig | 7 + - sound/soc/bcm/Makefile | 2 + - sound/soc/bcm/allo-piano-dac.c | 144 +++++++++++++++++++++ - 8 files changed, 230 insertions(+) - create mode 100644 arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts - create mode 100644 sound/soc/bcm/allo-piano-dac.c - -diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile -index 58bd224d7b1329710ee290c2584a40df565418cc..b6ed1a3c06a7a67d1dd79bb7e55421d8eccba492 100644 ---- a/arch/arm/boot/dts/overlays/Makefile -+++ b/arch/arm/boot/dts/overlays/Makefile -@@ -16,6 +16,7 @@ dtbo-$(RPI_DT_OVERLAYS) += adau1977-adc.dtbo - dtbo-$(RPI_DT_OVERLAYS) += ads1015.dtbo - dtbo-$(RPI_DT_OVERLAYS) += ads7846.dtbo - dtbo-$(RPI_DT_OVERLAYS) += akkordion-iqdacplus.dtbo -+dtbo-$(RPI_DT_OVERLAYS) += allo-piano-dac-pcm512x-audio.dtbo - dtbo-$(RPI_DT_OVERLAYS) += at86rf233.dtbo - dtbo-$(RPI_DT_OVERLAYS) += audioinjector-wm8731-audio.dtbo - dtbo-$(RPI_DT_OVERLAYS) += audremap.dtbo -diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index a6aa2dfaee53026459a48460ae3df409329a53d2..1ebb94c005d68b17792f95bd9792a08679298b26 100644 ---- a/arch/arm/boot/dts/overlays/README -+++ b/arch/arm/boot/dts/overlays/README -@@ -235,6 +235,26 @@ Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec - that does not result in clipping/distortion!) - - -+Name: allo-piano-dac-pcm512x-audio -+Info: Configures the Allo Piano DAC (2.0/2.1) audio cards. -+ (NB. This initial support is for 2.0 channel audio ONLY! ie. stereo. -+ The subwoofer outputs on the Piano 2.1 are not currently supported!) -+Load: dtoverlay=allo-piano-dac-pcm512x-audio, -+Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec -+ Digital volume control. -+ (The default behaviour is that the Digital -+ volume control is limited to a maximum of -+ 0dB. ie. it can attenuate but not provide -+ gain. For most users, this will be desired -+ as it will prevent clipping. By appending -+ the 24db_digital_gain parameter, the Digital -+ volume control will allow up to 24dB of -+ gain. If this parameter is enabled, it is the -+ responsibility of the user to ensure that -+ the Digital volume control is set to a value -+ that does not result in clipping/distortion!) -+ -+ - Name: at86rf233 - Info: Configures the Atmel AT86RF233 802.15.4 low-power WPAN transceiver, - connected to spi0.0 -diff --git a/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts -new file mode 100644 -index 0000000000000000000000000000000000000000..a5468d850a911cd509365cf25f8ffa6ad071b90a ---- /dev/null -+++ b/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts -@@ -0,0 +1,54 @@ -+/* -+ * Definitions for Allo Piano DAC (2.0/2.1) boards -+ * -+ * NB. The Piano DAC 2.1 board contains 2x TI PCM5142 DAC's. One DAC is stereo -+ * (left/right) and the other provides a subwoofer output, using DSP on the -+ * chip for digital high/low pass crossover. -+ * The initial support for this hardware, that doesn't require any codec driver -+ * modifications, uses only one DAC chip for stereo (left/right) output, the -+ * chip with 0x4c slave address. The other chip at 0x4d is currently ignored! -+ */ -+ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "brcm,bcm2708"; -+ -+ fragment@0 { -+ target = <&i2s>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "okay"; -+ -+ pcm5142@4c { -+ #sound-dai-cells = <0>; -+ compatible = "ti,pcm5142"; -+ reg = <0x4c>; -+ status = "okay"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&sound>; -+ piano_dac: __overlay__ { -+ compatible = "allo,piano-dac"; -+ i2s-controller = <&i2s>; -+ status = "okay"; -+ }; -+ }; -+ -+ __overrides__ { -+ 24db_digital_gain = -+ <&piano_dac>,"allo,24db_digital_gain?"; -+ }; -+}; -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index 1fbe104b5d46dce196abb750e65467395eb63dea..dc12da10db38efb54628119f0712ed9bc9082665 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -877,6 +877,7 @@ CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m - CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m - CONFIG_SND_DIGIDAC1_SOUNDCARD=m - CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m -+CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC=m - CONFIG_SND_SOC_ADAU1701=m - CONFIG_SND_SOC_WM8804_I2C=m - CONFIG_SND_SIMPLE_CARD=m -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index b2372c4f366d36a52caa1179a095d6a3e2eeb151..36215a0252a5f6305097319846f13118309b7a21 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -868,6 +868,7 @@ CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m - CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m - CONFIG_SND_DIGIDAC1_SOUNDCARD=m - CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m -+CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC=m - CONFIG_SND_SOC_ADAU1701=m - CONFIG_SND_SOC_WM8804_I2C=m - CONFIG_SND_SIMPLE_CARD=m -diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 8873fd8adce1d17cb543251f5cdc6ac8f4bf523d..23eefb56fdc736660ad682217ce77b4ea1725d15 100644 ---- a/sound/soc/bcm/Kconfig -+++ b/sound/soc/bcm/Kconfig -@@ -114,3 +114,10 @@ config SND_BCM2708_SOC_DIONAUDIO_LOCO - select SND_SOC_PCM5102a - help - Say Y or M if you want to add support for Dion Audio LOCO. -+ -+config SND_BCM2708_SOC_ALLO_PIANO_DAC -+ tristate "Support for Allo Piano DAC" -+ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S -+ select SND_SOC_PCM512x_I2C -+ help -+ Say Y or M if you want to add support for Allo Piano DAC. -diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 17f70f951322239696623c2347e5d846bbef2369..a2b642f10ee676a2c65abf1bd0ea1ba5a01ebda1 100644 ---- a/sound/soc/bcm/Makefile -+++ b/sound/soc/bcm/Makefile -@@ -19,6 +19,7 @@ snd-soc-raspidac3-objs := raspidac3.o - snd-soc-audioinjector-pi-soundcard-objs := audioinjector-pi-soundcard.o - snd-soc-digidac1-soundcard-objs := digidac1-soundcard.o - snd-soc-dionaudio-loco-objs := dionaudio_loco.o -+snd-soc-allo-piano-dac-objs := allo-piano-dac.o - - obj-$(CONFIG_SND_BCM2708_SOC_ADAU1977_ADC) += snd-soc-adau1977-adc.o - obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o -@@ -35,3 +36,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o - obj-$(CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD) += snd-soc-audioinjector-pi-soundcard.o - obj-$(CONFIG_SND_DIGIDAC1_SOUNDCARD) += snd-soc-digidac1-soundcard.o - obj-$(CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO) += snd-soc-dionaudio-loco.o -+obj-$(CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC) += snd-soc-allo-piano-dac.o -diff --git a/sound/soc/bcm/allo-piano-dac.c b/sound/soc/bcm/allo-piano-dac.c -new file mode 100644 -index 0000000000000000000000000000000000000000..8e8e62e5a36a279b425ed4655cfbac99ecd7e4cf ---- /dev/null -+++ b/sound/soc/bcm/allo-piano-dac.c -@@ -0,0 +1,144 @@ -+/* -+ * ALSA ASoC Machine Driver for Allo Piano DAC -+ * -+ * Author: Baswaraj K -+ * Copyright 2016 -+ * based on code by Daniel Matuschek -+ * based on code by Florian Meier -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * version 2 as published by the Free Software Foundation. -+ * -+ * This program is distributed in the hope that it will be useful, but -+ * WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * General Public License for more details. -+ */ -+ -+#include -+#include -+ -+#include -+#include -+#include -+#include -+ -+static bool digital_gain_0db_limit = true; -+ -+static int snd_allo_piano_dac_init(struct snd_soc_pcm_runtime *rtd) -+{ -+ if (digital_gain_0db_limit) { -+ int ret; -+ struct snd_soc_card *card = rtd->card; -+ -+ ret = snd_soc_limit_volume(card, "Digital Playback Volume", -+ 207); -+ if (ret < 0) -+ dev_warn(card->dev, "Failed to set volume limit: %d\n", -+ ret); -+ } -+ -+ return 0; -+} -+ -+static int snd_allo_piano_dac_hw_params( -+ struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) -+{ -+ struct snd_soc_pcm_runtime *rtd = substream->private_data; -+ struct snd_soc_dai *cpu_dai = rtd->cpu_dai; -+ -+ unsigned int sample_bits = -+ snd_pcm_format_physical_width(params_format(params)); -+ -+ return snd_soc_dai_set_bclk_ratio(cpu_dai, sample_bits * 2); -+} -+ -+/* machine stream operations */ -+static struct snd_soc_ops snd_allo_piano_dac_ops = { -+ .hw_params = snd_allo_piano_dac_hw_params, -+}; -+ -+static struct snd_soc_dai_link snd_allo_piano_dac_dai[] = { -+{ -+ .name = "Piano DAC", -+ .stream_name = "Piano DAC HiFi", -+ .cpu_dai_name = "bcm2708-i2s.0", -+ .codec_dai_name = "pcm512x-hifi", -+ .platform_name = "bcm2708-i2s.0", -+ .codec_name = "pcm512x.1-004c", -+ .dai_fmt = SND_SOC_DAIFMT_I2S | -+ SND_SOC_DAIFMT_NB_NF | -+ SND_SOC_DAIFMT_CBS_CFS, -+ .ops = &snd_allo_piano_dac_ops, -+ .init = snd_allo_piano_dac_init, -+}, -+}; -+ -+/* audio machine driver */ -+static struct snd_soc_card snd_allo_piano_dac = { -+ .name = "PianoDAC", -+ .owner = THIS_MODULE, -+ .dai_link = snd_allo_piano_dac_dai, -+ .num_links = ARRAY_SIZE(snd_allo_piano_dac_dai), -+}; -+ -+static int snd_allo_piano_dac_probe(struct platform_device *pdev) -+{ -+ int ret = 0; -+ -+ snd_allo_piano_dac.dev = &pdev->dev; -+ -+ if (pdev->dev.of_node) { -+ struct device_node *i2s_node; -+ struct snd_soc_dai_link *dai; -+ -+ dai = &snd_allo_piano_dac_dai[0]; -+ i2s_node = of_parse_phandle(pdev->dev.of_node, -+ "i2s-controller", 0); -+ -+ if (i2s_node) { -+ dai->cpu_dai_name = NULL; -+ dai->cpu_of_node = i2s_node; -+ dai->platform_name = NULL; -+ dai->platform_of_node = i2s_node; -+ } -+ -+ digital_gain_0db_limit = !of_property_read_bool( -+ pdev->dev.of_node, "allo,24db_digital_gain"); -+ } -+ -+ ret = snd_soc_register_card(&snd_allo_piano_dac); -+ if (ret) -+ dev_err(&pdev->dev, -+ "snd_soc_register_card() failed: %d\n", ret); -+ -+ return ret; -+} -+ -+static int snd_allo_piano_dac_remove(struct platform_device *pdev) -+{ -+ return snd_soc_unregister_card(&snd_allo_piano_dac); -+} -+ -+static const struct of_device_id snd_allo_piano_dac_of_match[] = { -+ { .compatible = "allo,piano-dac", }, -+ { /* sentinel */ }, -+}; -+MODULE_DEVICE_TABLE(of, snd_allo_piano_dac_of_match); -+ -+static struct platform_driver snd_allo_piano_dac_driver = { -+ .driver = { -+ .name = "snd-allo-piano-dac", -+ .owner = THIS_MODULE, -+ .of_match_table = snd_allo_piano_dac_of_match, -+ }, -+ .probe = snd_allo_piano_dac_probe, -+ .remove = snd_allo_piano_dac_remove, -+}; -+ -+module_platform_driver(snd_allo_piano_dac_driver); -+ -+MODULE_AUTHOR("Baswaraj K "); -+MODULE_DESCRIPTION("ALSA ASoC Machine Driver for Allo Piano DAC"); -+MODULE_LICENSE("GPL v2"); - -From c71527dea3b7635e7975232adad862d74bef7366 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Mon, 19 Sep 2016 17:16:09 +0100 -Subject: [PATCH 157/160] overlays: adjust overlays for absent pwm_clk - -Clocks are now managed by cprman, so pwm_clk no longer exists. - -Signed-off-by: Phil Elwell ---- - arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts | 12 +++--------- - arch/arm/boot/dts/overlays/pwm-overlay.dts | 12 +++--------- - 2 files changed, 6 insertions(+), 18 deletions(-) - -diff --git a/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts -index 18e4e4fa9465c87eb96c8d712a9967c4805c7176..abdeddd0f2c873e2b1fffcf6f2b838ee0123768f 100644 ---- a/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts -+++ b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts -@@ -29,25 +29,19 @@ N.B.: - - fragment@1 { - target = <&pwm>; -- __overlay__ { -+ frag1: __overlay__ { - pinctrl-names = "default"; - pinctrl-0 = <&pwm_pins>; -+ assigned-clock-rates = <100000000>; - status = "okay"; - }; - }; - -- fragment@2 { -- target = <&clk_pwm>; -- frag2: __overlay__ { -- clock-frequency = <100000000>; -- }; -- }; +- ret = of_clk_add_provider(dev->of_node, of_clk_src_onecell_get, +- &cprman->onecell); +- if (ret) +- return ret; - - __overrides__ { - pin = <&pwm_pins>,"brcm,pins:0"; - pin2 = <&pwm_pins>,"brcm,pins:4"; - func = <&pwm_pins>,"brcm,function:0"; - func2 = <&pwm_pins>,"brcm,function:4"; -- clock = <&frag2>,"clock-frequency:0"; -+ clock = <&frag1>,"assigned-clock-rates:0"; - }; - }; -diff --git a/arch/arm/boot/dts/overlays/pwm-overlay.dts b/arch/arm/boot/dts/overlays/pwm-overlay.dts -index bf030a6d1545448faf5e7992a0dc5c505522433e..27809e8dc74660a8e922a1aff1bb2ca7186e411c 100644 ---- a/arch/arm/boot/dts/overlays/pwm-overlay.dts -+++ b/arch/arm/boot/dts/overlays/pwm-overlay.dts -@@ -27,23 +27,17 @@ N.B.: - - fragment@1 { - target = <&pwm>; -- __overlay__ { -+ frag1: __overlay__ { - pinctrl-names = "default"; - pinctrl-0 = <&pwm_pins>; -+ assigned-clock-rates = <100000000>; - status = "okay"; - }; - }; - -- fragment@2 { -- target = <&clk_pwm>; -- frag2: __overlay__ { -- clock-frequency = <100000000>; -- }; -- }; +- /* note that we have registered all the clocks */ +- dev_dbg(dev, "registered %d clocks\n", asize); - - __overrides__ { - pin = <&pwm_pins>,"brcm,pins:0"; - func = <&pwm_pins>,"brcm,function:0"; -- clock = <&frag2>,"clock-frequency:0"; -+ clock = <&frag1>,"assigned-clock-rates:0"; - }; - }; - -From 8ed93b25fa736c156dd36ecc0fc3bf8ba7001a49 Mon Sep 17 00:00:00 2001 -From: Blogs14 -Date: Fri, 23 Sep 2016 11:02:56 +0100 -Subject: [PATCH 158/160] Correct typos in spi-gpio35-39-overlay.dts (#1651) - -bcrm,pins corrected to brcm,pins ---- - arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts -index 9648063d5963f2f6ec8f31038f3af5820a8135a6..49803b309f8643385a3c97f6cdd2015f863d2d34 100644 ---- a/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts -+++ b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts -@@ -18,14 +18,14 @@ - fragment@1 { - target = <&spi0_cs_pins>; - __overlay__ { -- bcrm,pins = <36 35>; -+ brcm,pins = <36 35>; - }; - }; +- return 0; ++ return of_clk_add_provider(dev->of_node, of_clk_src_onecell_get, ++ &cprman->onecell); + } - fragment@2 { - target = <&spi0_pins>; - __overlay__ { -- bcrm,pins = <37 38 39>; -+ brcm,pins = <37 38 39>; - }; - }; + static const struct of_device_id bcm2835_clk_of_match[] = { +@@ -1916,11 +1909,7 @@ static struct platform_driver bcm2835_clk_driver = { + .probe = bcm2835_clk_probe, }; + +-static int __init __bcm2835_clk_driver_init(void) +-{ +- return platform_driver_register(&bcm2835_clk_driver); +-} +-core_initcall(__bcm2835_clk_driver_init); ++builtin_platform_driver(bcm2835_clk_driver); + + MODULE_AUTHOR("Eric Anholt "); + MODULE_DESCRIPTION("BCM2835 clock driver"); -From 7c0a61084c55fc7bebcc992ec302b202617fabff Mon Sep 17 00:00:00 2001 +From 1556abe256ec0a9e34cae5ae0a4e2e660aad1cae Mon Sep 17 00:00:00 2001 From: Phil Elwell -Date: Wed, 31 Aug 2016 17:10:09 +0100 -Subject: [PATCH 159/160] brcmfmac: Change stop_ap sequence - -Patch from Broadcom/Cypress to resolve a customer error - -Signed-off-by: Phil Elwell ---- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) - -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -index 4a9a636d85b29eb379fa477dfbc7af80ec380dab..d859202156e7d877eb3d383c7a9386d6d188cba4 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -4663,12 +4663,15 @@ static int brcmf_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev) - err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_DOWN, 1); - if (err < 0) - brcmf_err("BRCMF_C_DOWN error %d\n", err); -- err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_AP, 0); -- if (err < 0) -- brcmf_err("setting AP mode failed %d\n", err); -+ - err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_INFRA, 0); - if (err < 0) - brcmf_err("setting INFRA mode failed %d\n", err); -+ -+ err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_AP, 0); -+ if (err < 0) -+ brcmf_err("setting AP mode failed %d\n", err); -+ - if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS)) - brcmf_fil_iovar_int_set(ifp, "mbss", 0); - err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_REGULATORY, - -From 4ae95a6ee577065dbab1cae66ba1537de0b7a169 Mon Sep 17 00:00:00 2001 -From: Eric Anholt -Date: Thu, 15 Sep 2016 17:52:17 +0100 -Subject: [PATCH 160/160] drm/vc4: Enable limited range RGB output with CEA - modes. +Date: Wed, 12 Oct 2016 15:10:14 +0100 +Subject: [PATCH 132/132] mmc: info (not err) msg on clock probe deferral --- - drivers/gpu/drm/vc4/vc4_hdmi.c | 28 ++++++++++++++++++++++++++-- - drivers/gpu/drm/vc4/vc4_regs.h | 9 ++++++++- - 2 files changed, 34 insertions(+), 3 deletions(-) + drivers/mmc/host/bcm2835-mmc.c | 5 ++++- + drivers/mmc/host/bcm2835-sdhost.c | 5 ++++- + 2 files changed, 8 insertions(+), 2 deletions(-) -diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c -index ed9c5274d06a215331aee44da1f7214a0e1f6e28..5cf6ecbe8f6e1304d77678fc05a7a6fbde63523a 100644 ---- a/drivers/gpu/drm/vc4/vc4_hdmi.c -+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c -@@ -284,6 +284,7 @@ static void vc4_hdmi_encoder_mode_set(struct drm_encoder *encoder, - struct drm_display_mode *unadjusted_mode, - struct drm_display_mode *mode) - { -+ struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder); - struct drm_device *dev = encoder->dev; - struct vc4_dev *vc4 = to_vc4_dev(dev); - bool debug_dump_regs = false; -@@ -299,6 +300,7 @@ static void vc4_hdmi_encoder_mode_set(struct drm_encoder *encoder, - u32 vertb = (VC4_SET_FIELD(0, VC4_HDMI_VERTB_VSPO) | - VC4_SET_FIELD(mode->vtotal - mode->vsync_end, - VC4_HDMI_VERTB_VBP)); -+ u32 csc_ctl; +diff --git a/drivers/mmc/host/bcm2835-mmc.c b/drivers/mmc/host/bcm2835-mmc.c +index ceb37930e167f47c9c848e8de757ad098eec9a19..4fe8d1fe44578fbefcd48f8c327ba3d03f3d0a2a 100644 +--- a/drivers/mmc/host/bcm2835-mmc.c ++++ b/drivers/mmc/host/bcm2835-mmc.c +@@ -1459,8 +1459,11 @@ static int bcm2835_mmc_probe(struct platform_device *pdev) + #endif + clk = devm_clk_get(dev, NULL); + if (IS_ERR(clk)) { +- dev_err(dev, "could not get clk\n"); + ret = PTR_ERR(clk); ++ if (ret == -EPROBE_DEFER) ++ dev_info(dev, "could not get clk, deferring probe\n"); ++ else ++ dev_err(dev, "could not get clk\n"); + goto err; + } - if (debug_dump_regs) { - DRM_INFO("HDMI regs before:\n"); -@@ -337,9 +339,31 @@ static void vc4_hdmi_encoder_mode_set(struct drm_encoder *encoder, - (vsync_pos ? 0 : VC4_HD_VID_CTL_VSYNC_LOW) | - (hsync_pos ? 0 : VC4_HD_VID_CTL_HSYNC_LOW)); +diff --git a/drivers/mmc/host/bcm2835-sdhost.c b/drivers/mmc/host/bcm2835-sdhost.c +index 23dea422182534e248435aeaee3ecb5da69c0d33..9e55d5ac08b5809c40fe391ae6e685fdb4d62df7 100644 +--- a/drivers/mmc/host/bcm2835-sdhost.c ++++ b/drivers/mmc/host/bcm2835-sdhost.c +@@ -2089,8 +2089,11 @@ static int bcm2835_sdhost_probe(struct platform_device *pdev) -+ csc_ctl = VC4_SET_FIELD(VC4_HD_CSC_CTL_ORDER_BGR, -+ VC4_HD_CSC_CTL_ORDER); -+ -+ if (vc4_encoder->hdmi_monitor && drm_match_cea_mode(mode) != 0) { -+ /* Enable limited range RGB output. This matrix is: -+ * [ 0 0 0.8594 16] -+ * [ 0 0.8594 0 16] -+ * [ 0.8594 0 0 16] -+ * [ 0 0 0 1] -+ */ -+ csc_ctl |= VC4_HD_CSC_CTL_ENABLE; -+ csc_ctl |= VC4_HD_CSC_CTL_RGB2YCC; -+ csc_ctl |= VC4_SET_FIELD(VC4_HD_CSC_CTL_MODE_CUSTOM, -+ VC4_HD_CSC_CTL_MODE); -+ -+ HD_WRITE(VC4_HD_CSC_12_11, (0x000 << 16) | 0x000); -+ HD_WRITE(VC4_HD_CSC_14_13, (0x100 << 16) | 0x6e0); -+ HD_WRITE(VC4_HD_CSC_22_21, (0x6e0 << 16) | 0x000); -+ HD_WRITE(VC4_HD_CSC_24_23, (0x100 << 16) | 0x000); -+ HD_WRITE(VC4_HD_CSC_32_31, (0x000 << 16) | 0x6e0); -+ HD_WRITE(VC4_HD_CSC_34_33, (0x100 << 16) | 0x000); -+ } -+ - /* The RGB order applies even when CSC is disabled. */ -- HD_WRITE(VC4_HD_CSC_CTL, VC4_SET_FIELD(VC4_HD_CSC_CTL_ORDER_BGR, -- VC4_HD_CSC_CTL_ORDER)); -+ HD_WRITE(VC4_HD_CSC_CTL, csc_ctl); + clk = devm_clk_get(dev, NULL); + if (IS_ERR(clk)) { +- dev_err(dev, "could not get clk\n"); + ret = PTR_ERR(clk); ++ if (ret == -EPROBE_DEFER) ++ dev_info(dev, "could not get clk, deferring probe\n"); ++ else ++ dev_err(dev, "could not get clk\n"); + goto err; + } - HDMI_WRITE(VC4_HDMI_FIFO_CTL, VC4_HDMI_FIFO_CTL_MASTER_SLAVE_N); - -diff --git a/drivers/gpu/drm/vc4/vc4_regs.h b/drivers/gpu/drm/vc4/vc4_regs.h -index f99eece4cc97200ba664514dc26941cb6879e77d..6d3787739aae39c9f982acb3545e9ce39412a1f5 100644 ---- a/drivers/gpu/drm/vc4/vc4_regs.h -+++ b/drivers/gpu/drm/vc4/vc4_regs.h -@@ -508,10 +508,17 @@ - # define VC4_HD_CSC_CTL_MODE_SHIFT 2 - # define VC4_HD_CSC_CTL_MODE_RGB_TO_SD_YPRPB 0 - # define VC4_HD_CSC_CTL_MODE_RGB_TO_HD_YPRPB 1 --# define VC4_HD_CSC_CTL_MODE_CUSTOM 2 -+# define VC4_HD_CSC_CTL_MODE_CUSTOM 3 - # define VC4_HD_CSC_CTL_RGB2YCC BIT(1) - # define VC4_HD_CSC_CTL_ENABLE BIT(0) - -+#define VC4_HD_CSC_12_11 0x044 -+#define VC4_HD_CSC_14_13 0x048 -+#define VC4_HD_CSC_22_21 0x04c -+#define VC4_HD_CSC_24_23 0x050 -+#define VC4_HD_CSC_32_31 0x054 -+#define VC4_HD_CSC_34_33 0x058 -+ - #define VC4_HD_FRAME_COUNT 0x068 - - /* HVS display list information. */ diff --git a/projects/RPi2/linux/linux.arm.conf b/projects/RPi2/linux/linux.arm.conf index bf547f8b7c..a6567e15e2 100644 --- a/projects/RPi2/linux/linux.arm.conf +++ b/projects/RPi2/linux/linux.arm.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 4.7.0 Kernel Configuration +# Linux/arm 4.8.1 Kernel Configuration # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -192,6 +192,7 @@ CONFIG_SLUB_DEBUG=y # CONFIG_SLAB is not set CONFIG_SLUB=y # CONFIG_SLOB is not set +# CONFIG_SLAB_FREELIST_RANDOM is not set CONFIG_SLUB_CPU_PARTIAL=y # CONFIG_SYSTEM_DATA_VERIFICATION is not set # CONFIG_PROFILING is not set @@ -219,6 +220,8 @@ CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_ARCH_JUMP_LABEL=y CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_GCC_PLUGINS=y +# CONFIG_GCC_PLUGINS is not set CONFIG_HAVE_CC_STACKPROTECTOR=y # CONFIG_CC_STACKPROTECTOR is not set CONFIG_CC_STACKPROTECTOR_NONE=y @@ -322,7 +325,6 @@ CONFIG_MMU=y # CONFIG_ARCH_BCM2708 is not set CONFIG_ARCH_BCM2709=y # CONFIG_ARCH_MULTIPLATFORM is not set -# CONFIG_ARCH_CLPS711X is not set # CONFIG_ARCH_GEMINI is not set # CONFIG_ARCH_EBSA110 is not set # CONFIG_ARCH_EP93XX is not set @@ -401,6 +403,11 @@ CONFIG_MULTI_IRQ_HANDLER=y # CONFIG_ARM_ERRATA_775420 is not set # CONFIG_ARM_ERRATA_798181 is not set # CONFIG_ARM_ERRATA_773022 is not set +# CONFIG_ARM_ERRATA_818325_852422 is not set +# CONFIG_ARM_ERRATA_821420 is not set +# CONFIG_ARM_ERRATA_825619 is not set +# CONFIG_ARM_ERRATA_852421 is not set +# CONFIG_ARM_ERRATA_852423 is not set # # Bus support @@ -561,7 +568,7 @@ CONFIG_CPU_IDLE_GOV_MENU=y CONFIG_VFP=y CONFIG_VFPv3=y CONFIG_NEON=y -# CONFIG_KERNEL_MODE_NEON is not set +CONFIG_KERNEL_MODE_NEON=y # # Userspace binary formats @@ -875,6 +882,7 @@ CONFIG_DNS_RESOLVER=y # CONFIG_HSR is not set # CONFIG_NET_SWITCHDEV is not set # CONFIG_NET_L3_MASTER_DEV is not set +# CONFIG_NET_NCSI is not set CONFIG_RPS=y CONFIG_RFS_ACCEL=y CONFIG_XPS=y @@ -1052,6 +1060,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 # CONFIG_ATA_OVER_ETH is not set # CONFIG_MG_DISK is not set # CONFIG_BLK_DEV_RBD is not set +# CONFIG_NVME_TARGET is not set # # Misc devices @@ -1066,7 +1075,6 @@ CONFIG_BCM2835_SMI=m # CONFIG_ISL29003 is not set # CONFIG_ISL29020 is not set # CONFIG_SENSORS_TSL2550 is not set -# CONFIG_SENSORS_BH1780 is not set # CONFIG_SENSORS_BH1770 is not set # CONFIG_SENSORS_APDS990X is not set # CONFIG_HMC6352 is not set @@ -1135,8 +1143,7 @@ CONFIG_BCM2708_VCHIQ=y # # CONFIG_ECHO is not set # CONFIG_CXL_BASE is not set -# CONFIG_CXL_KERNEL_API is not set -# CONFIG_CXL_EEH is not set +# CONFIG_CXL_AFU_DRIVER_OPS is not set # # SCSI device support @@ -1212,6 +1219,7 @@ CONFIG_VETH=m # # CONFIG_ETHERNET is not set CONFIG_PHYLIB=y +CONFIG_SWPHY=y # # MII PHY device drivers @@ -1239,11 +1247,13 @@ CONFIG_PHYLIB=y # CONFIG_DP83848_PHY is not set # CONFIG_DP83867_PHY is not set # CONFIG_MICROCHIP_PHY is not set -# CONFIG_FIXED_PHY is not set +CONFIG_FIXED_PHY=y # CONFIG_MDIO_BITBANG is not set # CONFIG_MDIO_BUS_MUX_GPIO is not set # CONFIG_MDIO_BUS_MUX_MMIOREG is not set # CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_INTEL_XWAY_PHY is not set +# CONFIG_MDIO_HISI_FEMAC is not set # CONFIG_MICREL_KS8995MA is not set CONFIG_PPP=m CONFIG_PPP_BSDCOMP=m @@ -1529,8 +1539,12 @@ CONFIG_TOUCHSCREEN_USB_3M=y # CONFIG_TOUCHSCREEN_TSC2004 is not set # CONFIG_TOUCHSCREEN_TSC2005 is not set # CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_RM_TS is not set +# CONFIG_TOUCHSCREEN_SILEAD is not set +# CONFIG_TOUCHSCREEN_SIS_I2C is not set CONFIG_TOUCHSCREEN_ST1232=m # CONFIG_TOUCHSCREEN_SUR40 is not set +# CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set # CONFIG_TOUCHSCREEN_SX8654 is not set # CONFIG_TOUCHSCREEN_TPS6507X is not set # CONFIG_TOUCHSCREEN_ZFORCE is not set @@ -1538,6 +1552,7 @@ CONFIG_TOUCHSCREEN_ST1232=m CONFIG_INPUT_MISC=y # CONFIG_INPUT_AD714X is not set # CONFIG_INPUT_ARIZONA_HAPTICS is not set +# CONFIG_INPUT_ATMEL_CAPTOUCH is not set # CONFIG_INPUT_BMA150 is not set # CONFIG_INPUT_E3X0_BUTTON is not set # CONFIG_INPUT_MMA8450 is not set @@ -1629,7 +1644,6 @@ CONFIG_SERIAL_CORE_CONSOLE=y # CONFIG_SERIAL_ALTERA_UART is not set # CONFIG_SERIAL_IFX6X60 is not set # CONFIG_SERIAL_XILINX_PS_UART is not set -# CONFIG_SERIAL_MPS2_UART is not set # CONFIG_SERIAL_ARC is not set # CONFIG_SERIAL_FSL_LPUART is not set # CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set @@ -1876,6 +1890,7 @@ CONFIG_POWER_SUPPLY=y # CONFIG_BATTERY_GAUGE_LTC2941 is not set # CONFIG_CHARGER_RT9455 is not set CONFIG_POWER_RESET=y +# CONFIG_POWER_RESET_BRCMKONA is not set # CONFIG_POWER_RESET_BRCMSTB is not set CONFIG_POWER_RESET_GPIO=y CONFIG_POWER_RESET_GPIO_RESTART=y @@ -1884,6 +1899,7 @@ CONFIG_POWER_RESET_RESTART=y # CONFIG_POWER_RESET_VERSATILE is not set # CONFIG_POWER_RESET_SYSCON is not set # CONFIG_POWER_RESET_SYSCON_POWEROFF is not set +# CONFIG_SYSCON_REBOOT_MODE is not set # CONFIG_POWER_AVS is not set CONFIG_HWMON=y # CONFIG_HWMON_VID is not set @@ -1914,6 +1930,7 @@ CONFIG_HWMON=y # CONFIG_SENSORS_F71805F is not set # CONFIG_SENSORS_F71882FG is not set # CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FTSTEUTATES is not set # CONFIG_SENSORS_GL518SM is not set # CONFIG_SENSORS_GL520SM is not set # CONFIG_SENSORS_G760A is not set @@ -1972,6 +1989,7 @@ CONFIG_HWMON=y # CONFIG_PMBUS is not set # CONFIG_SENSORS_SHT15 is not set # CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x is not set # CONFIG_SENSORS_SHTC1 is not set # CONFIG_SENSORS_DME1737 is not set # CONFIG_SENSORS_EMC1403 is not set @@ -1991,6 +2009,7 @@ CONFIG_HWMON=y # CONFIG_SENSORS_AMC6821 is not set # CONFIG_SENSORS_INA209 is not set # CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA3221 is not set # CONFIG_SENSORS_TC74 is not set # CONFIG_SENSORS_THMC50 is not set # CONFIG_SENSORS_TMP102 is not set @@ -2043,7 +2062,7 @@ CONFIG_WATCHDOG_CORE=y # CONFIG_CADENCE_WATCHDOG is not set # CONFIG_DW_WATCHDOG is not set # CONFIG_MAX63XX_WATCHDOG is not set -CONFIG_BCM2835_WDT=m +CONFIG_BCM2835_WDT=y # CONFIG_MEN_A21_WDT is not set # @@ -2460,6 +2479,8 @@ CONFIG_DVB_M88DS3103=m CONFIG_DVB_DRXK=m CONFIG_DVB_TDA18271C2DD=m CONFIG_DVB_SI2165=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m # # DVB-S (satellite) frontends @@ -2743,6 +2764,7 @@ CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC=m # Allwinner SoC Audio support # # CONFIG_SND_SUN4I_CODEC is not set +# CONFIG_SND_SUN4I_I2S is not set # CONFIG_SND_SUN4I_SPDIF is not set # CONFIG_SND_SOC_XTFPGA_I2S is not set CONFIG_SND_SOC_I2C_AND_SPI=m @@ -2754,13 +2776,16 @@ CONFIG_SND_SOC_I2C_AND_SPI=m # CONFIG_SND_SOC_ADAU1701 is not set CONFIG_SND_SOC_ADAU1977=m CONFIG_SND_SOC_ADAU1977_I2C=m +# CONFIG_SND_SOC_ADAU7002 is not set # CONFIG_SND_SOC_AK4104 is not set # CONFIG_SND_SOC_AK4554 is not set # CONFIG_SND_SOC_AK4613 is not set # CONFIG_SND_SOC_AK4642 is not set # CONFIG_SND_SOC_AK5386 is not set # CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_BT_SCO is not set # CONFIG_SND_SOC_CS35L32 is not set +# CONFIG_SND_SOC_CS35L33 is not set # CONFIG_SND_SOC_CS42L51_I2C is not set # CONFIG_SND_SOC_CS42L52 is not set # CONFIG_SND_SOC_CS42L56 is not set @@ -2771,9 +2796,12 @@ CONFIG_SND_SOC_ADAU1977_I2C=m # CONFIG_SND_SOC_CS4271_SPI is not set # CONFIG_SND_SOC_CS42XX8_I2C is not set # CONFIG_SND_SOC_CS4349 is not set +# CONFIG_SND_SOC_CS53L30 is not set # CONFIG_SND_SOC_ES8328 is not set # CONFIG_SND_SOC_GTM601 is not set # CONFIG_SND_SOC_INNO_RK3036 is not set +# CONFIG_SND_SOC_MAX98504 is not set +# CONFIG_SND_SOC_MAX9860 is not set # CONFIG_SND_SOC_PCM1681 is not set # CONFIG_SND_SOC_PCM179X_I2C is not set # CONFIG_SND_SOC_PCM179X_SPI is not set @@ -2827,6 +2855,7 @@ CONFIG_SND_SOC_WM8804_I2C=m # CONFIG_SND_SOC_WM8962 is not set # CONFIG_SND_SOC_WM8974 is not set # CONFIG_SND_SOC_WM8978 is not set +# CONFIG_SND_SOC_WM8985 is not set CONFIG_SND_SOC_TPA6130A2=m # CONFIG_SND_SIMPLE_CARD is not set # CONFIG_SOUND_PRIME is not set @@ -2877,6 +2906,7 @@ CONFIG_HID_GYRATION=y CONFIG_HID_TWINHAN=y CONFIG_HID_KENSINGTON=y CONFIG_HID_LCPOWER=y +# CONFIG_HID_LED is not set CONFIG_HID_LENOVO=y CONFIG_HID_LOGITECH=y CONFIG_HID_LOGITECH_DJ=y @@ -2888,7 +2918,7 @@ CONFIG_LOGIWHEELS_FF=y # CONFIG_HID_MAGICMOUSE is not set CONFIG_HID_MICROSOFT=y CONFIG_HID_MONTEREY=y -# CONFIG_HID_MULTITOUCH is not set +CONFIG_HID_MULTITOUCH=m # CONFIG_HID_NTRIG is not set CONFIG_HID_ORTEK=y CONFIG_HID_OUYA=y @@ -2922,6 +2952,7 @@ CONFIG_HID_XINMO=y # CONFIG_HID_ZEROPLUS is not set CONFIG_HID_ZYDACRON=y # CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set # # USB HID support @@ -3079,7 +3110,6 @@ CONFIG_USB_SERIAL_PL2303=m # CONFIG_USB_RIO500 is not set # CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LCD is not set -# CONFIG_USB_LED is not set # CONFIG_USB_CYPRESS_CY7C63 is not set # CONFIG_USB_CYTHERM is not set # CONFIG_USB_IDMOUSE is not set @@ -3102,7 +3132,6 @@ CONFIG_USB_SERIAL_PL2303=m # # CONFIG_USB_PHY is not set # CONFIG_NOP_USB_XCEIV is not set -# CONFIG_AM335X_PHY_USB is not set # CONFIG_USB_GPIO_VBUS is not set # CONFIG_USB_ISP1301 is not set # CONFIG_USB_ULPI is not set @@ -3260,6 +3289,7 @@ CONFIG_RTC_DRV_PCF8563=m # CONFIG_RTC_DRV_DS1343 is not set # CONFIG_RTC_DRV_DS1347 is not set # CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6916 is not set # CONFIG_RTC_DRV_R9701 is not set # CONFIG_RTC_DRV_RX4581 is not set # CONFIG_RTC_DRV_RX6110 is not set @@ -3362,7 +3392,7 @@ CONFIG_VT6656=m # # CONFIG_SPEAKUP is not set CONFIG_STAGING_MEDIA=y -CONFIG_DVB_MN88472=m +# CONFIG_MEDIA_CEC is not set CONFIG_LIRC_STAGING=y # CONFIG_LIRC_IMON is not set CONFIG_LIRC_RPI=m @@ -3384,6 +3414,7 @@ CONFIG_LIRC_RPI=m # CONFIG_WILC1000_SDIO is not set # CONFIG_WILC1000_SPI is not set # CONFIG_MOST is not set +# CONFIG_KS7010 is not set # CONFIG_GOLDFISH is not set # CONFIG_CHROME_PLATFORMS is not set CONFIG_CLKDEV_LOOKUP=y @@ -3403,7 +3434,7 @@ CONFIG_COMMON_CLK=y # CONFIG_COMMON_CLK_NXP is not set # CONFIG_COMMON_CLK_PXA is not set # CONFIG_COMMON_CLK_PIC32 is not set -# CONFIG_COMMON_CLK_OXNAS is not set +# CONFIG_SUNXI_CCU is not set # # Hardware Spinlock drivers @@ -3442,7 +3473,11 @@ CONFIG_BCM2835_MBOX=y # # SOC (System On Chip) specific Drivers # -# CONFIG_RASPBERRYPI_POWER is not set + +# +# Broadcom SoC drivers +# +CONFIG_RASPBERRYPI_POWER=y # CONFIG_SOC_BRCMSTB is not set # CONFIG_SUNXI_SRAM is not set # CONFIG_SOC_TI is not set @@ -3464,7 +3499,8 @@ CONFIG_EXTCON_ARIZONA=m CONFIG_IRQCHIP=y CONFIG_ARM_GIC_MAX_NR=1 # CONFIG_IPACK_BUS is not set -# CONFIG_RESET_CONTROLLER is not set +CONFIG_RESET_CONTROLLER=y +# CONFIG_TI_SYSCON_RESET is not set # CONFIG_FMC is not set # @@ -3498,6 +3534,7 @@ CONFIG_ARM_GIC_MAX_NR=1 # # Firmware Drivers # +# CONFIG_ARM_SCPI_PROTOCOL is not set # CONFIG_FIRMWARE_MEMMAP is not set CONFIG_RASPBERRYPI_FIRMWARE=y # CONFIG_FW_CFG_SYSFS is not set @@ -3507,6 +3544,7 @@ CONFIG_HAVE_ARM_SMCCC=y # File systems # CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_FS_IOMAP=y # CONFIG_EXT2_FS is not set # CONFIG_EXT3_FS is not set CONFIG_EXT4_FS=y @@ -3549,6 +3587,7 @@ CONFIG_F2FS_CHECK_FS=y # CONFIG_F2FS_FAULT_INJECTION is not set CONFIG_FS_POSIX_ACL=y CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set CONFIG_FILE_LOCKING=y CONFIG_MANDATORY_FILE_LOCKING=y # CONFIG_FS_ENCRYPTION is not set @@ -3901,6 +3940,9 @@ CONFIG_KEYS=y # CONFIG_SECURITY_DMESG_RESTRICT is not set # CONFIG_SECURITY is not set # CONFIG_SECURITYFS is not set +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y +CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y +# CONFIG_HARDENED_USERCOPY is not set CONFIG_DEFAULT_SECURITY_DAC=y CONFIG_DEFAULT_SECURITY="" CONFIG_XOR_BLOCKS=m @@ -3921,7 +3963,10 @@ CONFIG_CRYPTO_RNG=m CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_RNG_DEFAULT=m CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_KPP2=y # CONFIG_CRYPTO_RSA is not set +# CONFIG_CRYPTO_DH is not set +# CONFIG_CRYPTO_ECDH is not set CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y # CONFIG_CRYPTO_USER is not set @@ -3931,10 +3976,11 @@ CONFIG_CRYPTO_NULL=m CONFIG_CRYPTO_NULL2=y # CONFIG_CRYPTO_PCRYPT is not set CONFIG_CRYPTO_WORKQUEUE=y -# CONFIG_CRYPTO_CRYPTD is not set +CONFIG_CRYPTO_CRYPTD=m # CONFIG_CRYPTO_MCRYPTD is not set # CONFIG_CRYPTO_AUTHENC is not set # CONFIG_CRYPTO_TEST is not set +CONFIG_CRYPTO_ABLK_HELPER=m # # Authenticated Encryption with Associated Data @@ -3980,9 +4026,10 @@ CONFIG_CRYPTO_MD5=y # CONFIG_CRYPTO_RMD160 is not set # CONFIG_CRYPTO_RMD256 is not set # CONFIG_CRYPTO_RMD320 is not set -CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=y # CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_SHA3 is not set # CONFIG_CRYPTO_TGR192 is not set # CONFIG_CRYPTO_WP512 is not set @@ -4036,10 +4083,16 @@ CONFIG_CRYPTO_JITTERENTROPY=m # Certificates for signature checking # CONFIG_ARM_CRYPTO=y -CONFIG_CRYPTO_SHA1_ARM=m +CONFIG_CRYPTO_SHA1_ARM=y +CONFIG_CRYPTO_SHA1_ARM_NEON=y +# CONFIG_CRYPTO_SHA1_ARM_CE is not set +# CONFIG_CRYPTO_SHA2_ARM_CE is not set CONFIG_CRYPTO_SHA256_ARM=m # CONFIG_CRYPTO_SHA512_ARM is not set CONFIG_CRYPTO_AES_ARM=m +CONFIG_CRYPTO_AES_ARM_BS=m +# CONFIG_CRYPTO_AES_ARM_CE is not set +# CONFIG_CRYPTO_GHASH_ARM_CE is not set # CONFIG_BINARY_PRINTF is not set # diff --git a/projects/RPi2/patches/linux/linux-01-RPi_support.patch b/projects/RPi2/patches/linux/linux-01-RPi_support.patch index c50c977a1a..b79210e3e6 100644 --- a/projects/RPi2/patches/linux/linux-01-RPi_support.patch +++ b/projects/RPi2/patches/linux/linux-01-RPi_support.patch @@ -1,7 +1,7 @@ -From b1aece2fa813ff109c29493777e10966bb0319e6 Mon Sep 17 00:00:00 2001 +From 0feed04eba698c3a73470ed2d2dbd539215b3f26 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 27 Apr 2016 17:43:28 +0100 -Subject: [PATCH 001/160] Revert "SUNRPC: Make NFS swap work with multipath" +Subject: [PATCH 001/132] Revert "SUNRPC: Make NFS swap work with multipath" This reverts commit 15001e5a7e1e207b6bd258cd8f187814cd15b6dc. --- @@ -9,10 +9,10 @@ This reverts commit 15001e5a7e1e207b6bd258cd8f187814cd15b6dc. 1 file changed, 42 insertions(+), 24 deletions(-) diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c -index 2808d550d2730ff8e36b6d8c072c65e1631064c4..b362c2f099941c1f3388507983ffbdd1b4cc1241 100644 +index 66f23b376fa04a91134eddf6d8ee22a2f5de5808..f55fe2b0137e8fbefcd20c336b28ad48a7a105c1 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c -@@ -2719,39 +2719,57 @@ void rpc_show_tasks(struct net *net) +@@ -2743,39 +2743,57 @@ void rpc_show_tasks(struct net *net) #endif #if IS_ENABLED(CONFIG_SUNRPC_SWAP) @@ -95,10 +95,10 @@ index 2808d550d2730ff8e36b6d8c072c65e1631064c4..b362c2f099941c1f3388507983ffbdd1 EXPORT_SYMBOL_GPL(rpc_clnt_swap_deactivate); #endif /* CONFIG_SUNRPC_SWAP */ -From bdf04d72a682bc54a9f4caa774eec6792fb241ac Mon Sep 17 00:00:00 2001 +From 61c2fd6b6b40155198041cd0f629642ec36aa0c5 Mon Sep 17 00:00:00 2001 From: Steve Glendinning Date: Thu, 19 Feb 2015 18:47:12 +0000 -Subject: [PATCH 002/160] smsx95xx: fix crimes against truesize +Subject: [PATCH 002/132] smsx95xx: fix crimes against truesize smsc95xx is adjusting truesize when it shouldn't, and following a recent patch from Eric this is now triggering warnings. @@ -145,10 +145,10 @@ index dc989a8b5afbd62b07cd65a2fa5edde67d3cc5fb..116680e3089f16e1e3e9113a3b93e62c usbnet_skb_return(dev, ax_skb); } -From ce8b508e394fc0e4cf6a37de9c88b3a323890756 Mon Sep 17 00:00:00 2001 +From a883acbfdaae6666205749159df57af1c3cba31b Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 17 Apr 2015 16:58:45 +0100 -Subject: [PATCH 003/160] smsc95xx: Disable turbo mode by default +Subject: [PATCH 003/132] smsc95xx: Disable turbo mode by default --- drivers/net/usb/smsc95xx.c | 2 +- @@ -168,10 +168,10 @@ index 116680e3089f16e1e3e9113a3b93e62cb78cc1bb..aa4cb43dcd9ba83b042332bc15a4dce6 MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction"); -From a4c9e26ef898b25f9d8e2e0bf5ed1f4e949b39c3 Mon Sep 17 00:00:00 2001 +From c0a473f810ac26f9c61ed2706f2a332fb8d280a5 Mon Sep 17 00:00:00 2001 From: Sam Nazarko Date: Fri, 1 Apr 2016 17:27:21 +0100 -Subject: [PATCH 004/160] add smsc95xx packetsize module_param +Subject: [PATCH 004/132] add smsc95xx packetsize module_param Signed-off-by: Sam Nazarko --- @@ -213,10 +213,10 @@ index aa4cb43dcd9ba83b042332bc15a4dce68affce28..889bdabd9dea6cebccc361aa4ac569d7 netif_dbg(dev, ifup, dev->net, "rx_urb_size=%ld\n", -From d9e30021dd4c708d0593e9cb53fe798d8d74c6dd Mon Sep 17 00:00:00 2001 +From 1bc556871ead5d8c9f1c2721523d5b80365d308f Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 26 Mar 2013 17:26:38 +0000 -Subject: [PATCH 005/160] Allow mac address to be set in smsc95xx +Subject: [PATCH 005/132] Allow mac address to be set in smsc95xx Signed-off-by: popcornmix --- @@ -312,10 +312,44 @@ index 889bdabd9dea6cebccc361aa4ac569d73681396b..d22a2324085fbf61fbd8920362bfc7b9 eth_hw_addr_random(dev->net); netif_dbg(dev, ifup, dev->net, "MAC address set to eth_random_addr\n"); -From 4ede18cc857f8d7d43d66e4b93b589250cc2175f Mon Sep 17 00:00:00 2001 +From e940173d966e03398e6ebd2f30c8d8012684ebf9 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Tue, 9 Aug 2016 22:19:28 +0100 +Subject: [PATCH 006/132] smsc95xx: Experimental: Enable turbo_mode and + packetsize=2560 by default + +See: http://forum.kodi.tv/showthread.php?tid=285288 +--- + drivers/net/usb/smsc95xx.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c +index d22a2324085fbf61fbd8920362bfc7b9f72bebe3..c846c55075387398d9bcb0957e31f5c82fd7d58d 100644 +--- a/drivers/net/usb/smsc95xx.c ++++ b/drivers/net/usb/smsc95xx.c +@@ -77,7 +77,7 @@ struct smsc95xx_priv { + struct usbnet *dev; + }; + +-static bool turbo_mode = false; ++static bool turbo_mode = true; + module_param(turbo_mode, bool, 0644); + MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction"); + +@@ -85,7 +85,7 @@ static bool truesize_mode = false; + module_param(truesize_mode, bool, 0644); + MODULE_PARM_DESC(truesize_mode, "Report larger truesize value"); + +-static int packetsize = 0; ++static int packetsize = 2560; + module_param(packetsize, int, 0644); + MODULE_PARM_DESC(packetsize, "Override the RX URB packet size"); + + +From f034d07fa73f57a3cb2d17ffdf91c70bc6599e21 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 9 Mar 2016 13:28:24 +0000 -Subject: [PATCH 006/160] serial: Take care starting a hung-up tty's port +Subject: [PATCH 007/132] serial: Take care starting a hung-up tty's port tty_port_hangup sets a port's tty field to NULL (holding the port lock), but uart_tx_stopped, called from __uart_start (with the port lock), @@ -330,10 +364,10 @@ Signed-off-by: Phil Elwell 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h -index a3d7c0d4a03e75016023184a5fea18c91d9d8dbc..d61b4167a03205f917448d0bd71a84d0e1891047 100644 +index 2f44e20136545162d15ee9a39c2eae38352580d1..6b0518ce13ad210b888b73dd6c02a5558798b38f 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h -@@ -406,7 +406,7 @@ int uart_resume_port(struct uart_driver *reg, struct uart_port *port); +@@ -412,7 +412,7 @@ int uart_resume_port(struct uart_driver *reg, struct uart_port *port); static inline int uart_tx_stopped(struct uart_port *port) { struct tty_struct *tty = port->state->port.tty; @@ -343,40 +377,10 @@ index a3d7c0d4a03e75016023184a5fea18c91d9d8dbc..d61b4167a03205f917448d0bd71a84d0 return 0; } -From 581ad04d68f4de8c4a1f7c9ab523b18b23f8ac19 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Wed, 18 Jun 2014 13:42:01 +0100 -Subject: [PATCH 007/160] vmstat: Workaround for issue where dirty page count - goes negative - -See: -https://github.com/raspberrypi/linux/issues/617 -http://www.spinics.net/lists/linux-mm/msg72236.html ---- - include/linux/vmstat.h | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h -index d2da8e053210041bfcefb9e04b59d195880d2d0e..e3258dc35371ee6e528dc02ffc705570c2f555be 100644 ---- a/include/linux/vmstat.h -+++ b/include/linux/vmstat.h -@@ -222,7 +222,11 @@ static inline void __inc_zone_state(struct zone *zone, enum zone_stat_item item) - static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item) - { - atomic_long_dec(&zone->vm_stat[item]); -+ if (item == NR_FILE_DIRTY && unlikely(atomic_long_read(&zone->vm_stat[item]) < 0)) -+ atomic_long_set(&zone->vm_stat[item], 0); - atomic_long_dec(&vm_stat[item]); -+ if (item == NR_FILE_DIRTY && unlikely(atomic_long_read(&vm_stat[item]) < 0)) -+ atomic_long_set(&vm_stat[item], 0); - } - - static inline void __inc_zone_page_state(struct page *page, - -From 657592399723dd4c2d0dbd1e80deeb475700f8f8 Mon Sep 17 00:00:00 2001 +From 21b1c0e3468cfcc15f432e04124428f3bbd698f1 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 13 Mar 2015 12:43:36 +0000 -Subject: [PATCH 008/160] Protect __release_resource against resources without +Subject: [PATCH 008/132] Protect __release_resource against resources without parents Without this patch, removing a device tree overlay can crash here. @@ -404,10 +408,10 @@ index 9b5f04404152c296af3a96132f27cfc80ffa9af9..f8a9af6e6b915812be2ba2c1c2b40106 for (;;) { tmp = *p; -From 543ed3c60dc8498fa3e030502592d7b77e6de04a Mon Sep 17 00:00:00 2001 +From 81e163c07843ca521bd0753a05d8e177b15e9e55 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 18 Dec 2014 16:07:15 -0800 -Subject: [PATCH 009/160] mm: Remove the PFN busy warning +Subject: [PATCH 009/132] mm: Remove the PFN busy warning See commit dae803e165a11bc88ca8dbc07a11077caf97bbcb -- the warning is expected sometimes when using CMA. However, that commit still spams @@ -419,10 +423,10 @@ Signed-off-by: Eric Anholt 1 file changed, 2 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 6e354199151b9f71c3e8671a6f5bdee5fd29f866..9b542a3a16d5ebba8ef2c411489e7b81d6878e4e 100644 +index a2214c64ed3cd04dceaed7a579f593852e458df1..de26bffb1baa5cffa692fcb12b478263d6e03114 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c -@@ -7406,8 +7406,6 @@ int alloc_contig_range(unsigned long start, unsigned long end, +@@ -7308,8 +7308,6 @@ int alloc_contig_range(unsigned long start, unsigned long end, /* Make sure the range is really isolated. */ if (test_pages_isolated(outer_start, end, false)) { @@ -432,10 +436,10 @@ index 6e354199151b9f71c3e8671a6f5bdee5fd29f866..9b542a3a16d5ebba8ef2c411489e7b81 goto done; } -From ab2492b9e21315c561866fc1f50546f76882ecae Mon Sep 17 00:00:00 2001 +From 45978dc4bb5c1454039233e54d19dc333dadf5b9 Mon Sep 17 00:00:00 2001 From: Robert Tiemann Date: Mon, 20 Jul 2015 11:01:25 +0200 -Subject: [PATCH 010/160] BCM2835_DT: Fix I2S register map +Subject: [PATCH 010/132] BCM2835_DT: Fix I2S register map --- Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt | 4 ++-- @@ -473,10 +477,10 @@ index 65783de0aedf3da79adc36fd077b7a89954ddb6b..a89fe4220fdc3f26f75ee66daf187554 dmas = <&dma 2>, <&dma 3>; -From 02cd74e5e7452f68a8106a090d532ff19a26a0a9 Mon Sep 17 00:00:00 2001 +From 4491cdafc08c5475282ed797870970174d4c4ec8 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 4 Dec 2015 17:41:50 +0000 -Subject: [PATCH 011/160] irq-bcm2836: Prevent spurious interrupts, and trap +Subject: [PATCH 011/132] irq-bcm2836: Prevent spurious interrupts, and trap them early The old arch-specific IRQ macros included a dsb to ensure the @@ -491,22 +495,22 @@ though, so trap them early. 1 file changed, 1 insertion(+) diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c -index 72ff1d5c5de67058f4ef22bb233c41b7c737d6e3..de3b3a37a63d00cc82ae4725b2fe8584c084c4dc 100644 +index d96b2c947e74e3edab3917551c64fbd1ced0f34c..93e3f7660c4230c9f1dd3b195958cb498949b0ca 100644 --- a/drivers/irqchip/irq-bcm2836.c +++ b/drivers/irqchip/irq-bcm2836.c @@ -175,6 +175,7 @@ __exception_irq_entry bcm2836_arm_irqchip_handle_irq(struct pt_regs *regs) u32 ipi = ffs(mbox_val) - 1; writel(1 << ipi, mailbox0); -+ dsb(); ++ dsb(sy); handle_IPI(ipi, regs); #endif } else if (stat) { -From 1854e722a9d4ba2eac9676bef7867863cb923379 Mon Sep 17 00:00:00 2001 +From b2d86404d6c139bdf57ac40405cc335872d425a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 12 Jun 2015 19:01:05 +0200 -Subject: [PATCH 012/160] irqchip: bcm2835: Add FIQ support +Subject: [PATCH 012/132] irqchip: bcm2835: Add FIQ support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -524,23 +528,23 @@ Acked-by: Stephen Warren 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig -index 68ab6412392a44b84f4519ff04d725a3505f9bcf..b2385da38949e08787b942e73ba287035b401986 100644 +index 34f0fca0b8472720cd107946e8f5a99d4cfa542a..5f6ab16792a93b2dd2e3f9e647f8ac4062d4fa6d 100644 --- a/arch/arm/mach-bcm/Kconfig +++ b/arch/arm/mach-bcm/Kconfig -@@ -143,6 +143,7 @@ config ARCH_BCM2835 - select ARM_TIMER_SP804 +@@ -153,6 +153,7 @@ config ARCH_BCM2835 select HAVE_ARM_ARCH_TIMER if ARCH_MULTI_V7 select CLKSRC_OF + select BCM2835_TIMER + select FIQ select PINCTRL select PINCTRL_BCM2835 help diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c -index bf9cc5f2e839e845fe1ce65caa672b6212d3ffbc..3f601f98aa884b941fbb84edb349f6c469b940b1 100644 +index 44d7c38dde479d771f3552e914bf8c1c1f5019f7..42ff5e6a8e0d532f5b60a1e7af7cc4d941bd5008 100644 --- a/drivers/irqchip/irq-bcm2835.c +++ b/drivers/irqchip/irq-bcm2835.c -@@ -55,7 +55,7 @@ - #include +@@ -54,7 +54,7 @@ + #include /* Put the bank and irq (32 bits) into the hwirq */ -#define MAKE_HWIRQ(b, n) ((b << 5) | (n)) @@ -548,7 +552,7 @@ index bf9cc5f2e839e845fe1ce65caa672b6212d3ffbc..3f601f98aa884b941fbb84edb349f6c4 #define HWIRQ_BANK(i) (i >> 5) #define HWIRQ_BIT(i) BIT(i & 0x1f) -@@ -71,9 +71,13 @@ +@@ -70,9 +70,13 @@ | SHORTCUT1_MASK | SHORTCUT2_MASK) #define REG_FIQ_CONTROL 0x0c @@ -562,7 +566,7 @@ index bf9cc5f2e839e845fe1ce65caa672b6212d3ffbc..3f601f98aa884b941fbb84edb349f6c4 static const int reg_pending[] __initconst = { 0x00, 0x04, 0x08 }; static const int reg_enable[] __initconst = { 0x18, 0x10, 0x14 }; -@@ -98,14 +102,38 @@ static void __exception_irq_entry bcm2835_handle_irq( +@@ -97,14 +101,38 @@ static void __exception_irq_entry bcm2835_handle_irq( struct pt_regs *regs); static void bcm2836_chained_handle_irq(struct irq_desc *desc); @@ -603,7 +607,7 @@ index bf9cc5f2e839e845fe1ce65caa672b6212d3ffbc..3f601f98aa884b941fbb84edb349f6c4 } static struct irq_chip armctrl_chip = { -@@ -151,8 +179,9 @@ static int __init armctrl_of_init(struct device_node *node, +@@ -150,8 +178,9 @@ static int __init armctrl_of_init(struct device_node *node, panic("%s: unable to map IC registers\n", node->full_name); @@ -615,7 +619,7 @@ index bf9cc5f2e839e845fe1ce65caa672b6212d3ffbc..3f601f98aa884b941fbb84edb349f6c4 if (!intc.domain) panic("%s: unable to create IRQ domain\n", node->full_name); -@@ -182,6 +211,18 @@ static int __init armctrl_of_init(struct device_node *node, +@@ -181,6 +210,18 @@ static int __init armctrl_of_init(struct device_node *node, set_handle_irq(bcm2835_handle_irq); } @@ -635,24 +639,24 @@ index bf9cc5f2e839e845fe1ce65caa672b6212d3ffbc..3f601f98aa884b941fbb84edb349f6c4 } -From 99826eb237003a4a74508f4a01b4bf0b83638815 Mon Sep 17 00:00:00 2001 +From 11338cb04778f32d3debcb3380d14088f9109034 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 23 Oct 2015 16:26:55 +0200 -Subject: [PATCH 013/160] irqchip: irq-bcm2835: Add 2836 FIQ support +Subject: [PATCH 013/132] irqchip: irq-bcm2835: Add 2836 FIQ support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Noralf Trønnes --- - drivers/irqchip/irq-bcm2835.c | 42 ++++++++++++++++++++++++++++++++++++++++-- - 1 file changed, 40 insertions(+), 2 deletions(-) + drivers/irqchip/irq-bcm2835.c | 43 +++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c -index 3f601f98aa884b941fbb84edb349f6c469b940b1..20deb282286834b1f234a65e614b8584688a25d7 100644 +index 42ff5e6a8e0d532f5b60a1e7af7cc4d941bd5008..eccf6ed025299cb480884f5bcbe77abf55a6bbb1 100644 --- a/drivers/irqchip/irq-bcm2835.c +++ b/drivers/irqchip/irq-bcm2835.c -@@ -50,6 +50,8 @@ +@@ -50,8 +50,11 @@ #include #include #include @@ -660,8 +664,11 @@ index 3f601f98aa884b941fbb84edb349f6c469b940b1..20deb282286834b1f234a65e614b8584 +#include #include - #include -@@ -70,6 +72,9 @@ ++#include + + /* Put the bank and irq (32 bits) into the hwirq */ + #define MAKE_HWIRQ(b, n) (((b) << 5) | (n)) +@@ -69,6 +72,9 @@ #define BANK0_VALID_MASK (BANK0_HWIRQ_MASK | BANK1_HWIRQ | BANK2_HWIRQ \ | SHORTCUT1_MASK | SHORTCUT2_MASK) @@ -671,7 +678,7 @@ index 3f601f98aa884b941fbb84edb349f6c469b940b1..20deb282286834b1f234a65e614b8584 #define REG_FIQ_CONTROL 0x0c #define REG_FIQ_ENABLE 0x80 #define REG_FIQ_DISABLE 0 -@@ -95,6 +100,7 @@ struct armctrl_ic { +@@ -94,6 +100,7 @@ struct armctrl_ic { void __iomem *enable[NR_BANKS]; void __iomem *disable[NR_BANKS]; struct irq_domain *domain; @@ -679,7 +686,7 @@ index 3f601f98aa884b941fbb84edb349f6c469b940b1..20deb282286834b1f234a65e614b8584 }; static struct armctrl_ic intc __read_mostly; -@@ -128,12 +134,35 @@ static void armctrl_mask_irq(struct irq_data *d) +@@ -127,12 +134,35 @@ static void armctrl_mask_irq(struct irq_data *d) static void armctrl_unmask_irq(struct irq_data *d) { @@ -717,7 +724,7 @@ index 3f601f98aa884b941fbb84edb349f6c469b940b1..20deb282286834b1f234a65e614b8584 } static struct irq_chip armctrl_chip = { -@@ -211,6 +240,15 @@ static int __init armctrl_of_init(struct device_node *node, +@@ -210,6 +240,15 @@ static int __init armctrl_of_init(struct device_node *node, set_handle_irq(bcm2835_handle_irq); } @@ -734,10 +741,10 @@ index 3f601f98aa884b941fbb84edb349f6c469b940b1..20deb282286834b1f234a65e614b8584 for (b = 0; b < NR_BANKS; b++) { for (i = 0; i < bank_irqs[b]; i++) { -From 2c068b4c7ecb508c63ce57207c0375d7f2d6d473 Mon Sep 17 00:00:00 2001 +From 0dcb9a305c2ce1e15d63394376fe607d3a736e9d Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 14 Jul 2015 10:26:09 +0100 -Subject: [PATCH 014/160] spidev: Add "spidev" compatible string to silence +Subject: [PATCH 014/132] spidev: Add "spidev" compatible string to silence warning See: https://github.com/raspberrypi/linux/issues/1054 @@ -746,10 +753,10 @@ See: https://github.com/raspberrypi/linux/issues/1054 1 file changed, 1 insertion(+) diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c -index e3c19f30f591115a823467033702ff1b232c5ebc..f4963e3c1dbcd13edb9b97e9dad65438214ec9d3 100644 +index 2e05046f866bd01bf87edcdeff0d5b76d4d0aea7..d780491b8013a4e97fa843958964454e4463fe5e 100644 --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c -@@ -695,6 +695,7 @@ static struct class *spidev_class; +@@ -696,6 +696,7 @@ static struct class *spidev_class; static const struct of_device_id spidev_dt_ids[] = { { .compatible = "rohm,dh2228fv" }, { .compatible = "lineartechnology,ltc2488" }, @@ -758,17 +765,17 @@ index e3c19f30f591115a823467033702ff1b232c5ebc..f4963e3c1dbcd13edb9b97e9dad65438 }; MODULE_DEVICE_TABLE(of, spidev_dt_ids); -From d84e83cc45f6aee4e00086530e8e00eca553acbf Mon Sep 17 00:00:00 2001 +From a67d1e46f90073cc31e8dce5be0dbd7b85f40570 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 30 Jun 2015 14:12:42 +0100 -Subject: [PATCH 015/160] serial: 8250: Don't crash when nr_uarts is 0 +Subject: [PATCH 015/132] serial: 8250: Don't crash when nr_uarts is 0 --- drivers/tty/serial/8250/8250_core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c -index 0fbd7c033a251e7d0cb214ed2bbd1ad1f19f0a76..00fc96497968c826978465957454ad73c3fb6042 100644 +index dcf43f66404f12d2bd290a30adfe494dd056162e..0fba189c676ded310b92a09c4e7e8f768d753895 100644 --- a/drivers/tty/serial/8250/8250_core.c +++ b/drivers/tty/serial/8250/8250_core.c @@ -509,6 +509,8 @@ static void __init serial8250_isa_init_ports(void) @@ -781,10 +788,10 @@ index 0fbd7c033a251e7d0cb214ed2bbd1ad1f19f0a76..00fc96497968c826978465957454ad73 for (i = 0; i < nr_uarts; i++) { struct uart_8250_port *up = &serial8250_ports[i]; -From 77f790d85237a37fc6032dc028e96bc167419adc Mon Sep 17 00:00:00 2001 +From 11fb46f18b2fe596dad81cc811001897591a8fca Mon Sep 17 00:00:00 2001 From: notro Date: Thu, 10 Jul 2014 13:59:47 +0200 -Subject: [PATCH 016/160] pinctrl-bcm2835: Set base to 0 give expected gpio +Subject: [PATCH 016/132] pinctrl-bcm2835: Set base to 0 give expected gpio numbering Signed-off-by: Noralf Tronnes @@ -806,10 +813,10 @@ index fa77165fab2c1348163979da507df17e7168c49b..d11e2e4ea189466e686d762cb6c6fef9 .can_sleep = false, }; -From ae07346c42a10dc8a0e9e7a7d0fed9599202da41 Mon Sep 17 00:00:00 2001 +From f8f0689cf95fa9b04fc0f52128542b330ff4f0ef Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 24 Feb 2015 13:40:50 +0000 -Subject: [PATCH 017/160] pinctrl-bcm2835: Fix interrupt handling for GPIOs +Subject: [PATCH 017/132] pinctrl-bcm2835: Fix interrupt handling for GPIOs 28-31 and 46-53 Contrary to the documentation, the BCM2835 GPIO controller actually has @@ -955,10 +962,10 @@ index d11e2e4ea189466e686d762cb6c6fef9111ecf8e..107ad7d58de8f8a7f55e09c9cdcf7d66 }, }; -From 0ee6df28b32a38f956873934d345429f09d58113 Mon Sep 17 00:00:00 2001 +From 595b5d8e6cc8ee5752ab3113825d9f0baa2f8367 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 26 Feb 2015 09:58:22 +0000 -Subject: [PATCH 018/160] pinctrl-bcm2835: Only request the interrupts listed +Subject: [PATCH 018/132] pinctrl-bcm2835: Only request the interrupts listed in the DTB Although the GPIO controller can generate three interrupts (four counting @@ -985,10 +992,10 @@ index 107ad7d58de8f8a7f55e09c9cdcf7d66fa7ab66b..644bdecbcfcb79d3b84a33769265fca5 pc->irq_data[i].irqgroup = i; -From 36cef23145cf1dda514100e8b06e00d585e0bdb2 Mon Sep 17 00:00:00 2001 +From d2da294a1db152547062050cff201b3fe4dadb15 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 6 May 2016 12:32:47 +0100 -Subject: [PATCH 019/160] pinctrl-bcm2835: Return pins to inputs when freed +Subject: [PATCH 019/132] pinctrl-bcm2835: Return pins to inputs when freed When dynamically unloading overlays, it is important that freed pins are restored to being inputs to prevent functions from being enabled in @@ -1029,10 +1036,10 @@ index 644bdecbcfcb79d3b84a33769265fca5d3d0c9e5..81a66cba2ab0f7e3ae179de7edd10122 .get_function_name = bcm2835_pmx_get_function_name, .get_function_groups = bcm2835_pmx_get_function_groups, -From d5d1906d5843c0ee5aeff5e9154eb1e1b3dc4a84 Mon Sep 17 00:00:00 2001 +From 254a5b3a8eadb8d9ee888f98b6a3c05422c0ca7a Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 24 Jun 2015 14:10:44 +0100 -Subject: [PATCH 020/160] spi-bcm2835: Support pin groups other than 7-11 +Subject: [PATCH 020/132] spi-bcm2835: Support pin groups other than 7-11 The spi-bcm2835 driver automatically uses GPIO chip-selects due to some unreliability of the native ones. In doing so it chooses the @@ -1113,10 +1120,47 @@ index f35cc10772f6670397ea923ad30158270dd68578..5dfe20ffc2866fa6789825016c585175 /* and set up the "mode" and level */ dev_info(&spi->dev, "setting up native-CS%i as GPIO %i\n", -From 15eb235ecf2cafcc856ef591249867fed8459fa7 Mon Sep 17 00:00:00 2001 +From 2c660c2523aa3c0ded6cefd5b670a722221655e0 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Fri, 1 Jul 2016 22:09:24 +0100 +Subject: [PATCH 021/132] spi-bcm2835: Disable forced software CS + +Select software CS in bcm2708_common.dtsi, and disable the automatic +conversion in the driver to allow hardware CS to be re-enabled with an +overlay. + +See: https://github.com/raspberrypi/linux/issues/1547 + +Signed-off-by: Phil Elwell +--- + drivers/spi/spi-bcm2835.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c +index 5dfe20ffc2866fa6789825016c585175a29705b6..8493474d286f7a1ac6454a22c61c8c2cef9121bf 100644 +--- a/drivers/spi/spi-bcm2835.c ++++ b/drivers/spi/spi-bcm2835.c +@@ -707,6 +707,7 @@ static int bcm2835_spi_setup(struct spi_device *spi) + return -EINVAL; + } + ++#if 0 + /* now translate native cs to GPIO */ + /* first look for chip select pins in the devices pin groups */ + for (pingroup_index = 0; +@@ -756,6 +757,7 @@ static int bcm2835_spi_setup(struct spi_device *spi) + spi->chip_select, spi->cs_gpio, err); + return err; + } ++#endif + + return 0; + } + +From b20b6c9db3b0ac6b5daad77e06c8390e617c5aa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Wed, 3 Jun 2015 12:26:13 +0200 -Subject: [PATCH 021/160] ARM: bcm2835: Set Serial number and Revision +Subject: [PATCH 022/132] ARM: bcm2835: Set Serial number and Revision MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -1137,16 +1181,16 @@ didn't get in: Signed-off-by: Noralf Trønnes --- - arch/arm/mach-bcm/board_bcm2835.c | 9 +++++++++ - 1 file changed, 9 insertions(+) + arch/arm/mach-bcm/board_bcm2835.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) diff --git a/arch/arm/mach-bcm/board_bcm2835.c b/arch/arm/mach-bcm/board_bcm2835.c -index 834d67684e205a185971c13ebc6620434eeac788..3b68a8d3501a5dcb1b4790c35d921cf5fa641ec7 100644 +index 0c1edfc98696da0e0bb7f4a18cdfbcdd27a9795d..8f152266ba9b470df2eaaed9ebcf158ed2079834 100644 --- a/arch/arm/mach-bcm/board_bcm2835.c +++ b/arch/arm/mach-bcm/board_bcm2835.c -@@ -17,12 +17,16 @@ +@@ -16,13 +16,23 @@ + #include #include - #include #include +#include @@ -1158,13 +1202,8 @@ index 834d67684e205a185971c13ebc6620434eeac788..3b68a8d3501a5dcb1b4790c35d921cf5 + struct device_node *np = of_find_node_by_path("/system"); + u32 val; + u64 val64; - int ret; - ++ bcm2835_init_clocks(); -@@ -33,6 +37,11 @@ static void __init bcm2835_init(void) - pr_err("of_platform_populate failed: %d\n", ret); - BUG(); - } + + if (!of_property_read_u32(np, "linux,revision", &val)) + system_rev = val; @@ -1174,10 +1213,10 @@ index 834d67684e205a185971c13ebc6620434eeac788..3b68a8d3501a5dcb1b4790c35d921cf5 static const char * const bcm2835_compat[] = { -From 4c078e006ef6a56a2a66c99a6dcc8533ca7345db Mon Sep 17 00:00:00 2001 +From a08fd2843c135370ff6d0bd2ddc23abdd27ea947 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Sat, 3 Oct 2015 22:22:55 +0200 -Subject: [PATCH 022/160] dmaengine: bcm2835: Load driver early and support +Subject: [PATCH 023/132] dmaengine: bcm2835: Load driver early and support legacy API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -1195,7 +1234,7 @@ Signed-off-by: Noralf Trønnes 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig -index 8c98779a12b134f3688e1076f1e11211c23e2623..ece64af02387ab867e21b7bc9178e0842bf1ecac 100644 +index 739f797b40d9843b7d75261e955439866c7aaa83..f7b3ac574968b35aeb1fb6b3ba8d4f1bf61599f9 100644 --- a/drivers/dma/Kconfig +++ b/drivers/dma/Kconfig @@ -108,7 +108,7 @@ config COH901318 @@ -1208,7 +1247,7 @@ index 8c98779a12b134f3688e1076f1e11211c23e2623..ece64af02387ab867e21b7bc9178e084 select DMA_VIRTUAL_CHANNELS diff --git a/drivers/dma/bcm2835-dma.c b/drivers/dma/bcm2835-dma.c -index 6149b27c33ad0962a19ed411055d9d05bfb252d3..43265b2847d37b3ee8f71b7528eebea1713f263c 100644 +index e18dc596cf2447fa9ef7e41b62d9396e29043426..80d35f760b4a4a51e60c355a84d538bac3892a4d 100644 --- a/drivers/dma/bcm2835-dma.c +++ b/drivers/dma/bcm2835-dma.c @@ -37,6 +37,7 @@ @@ -1227,7 +1266,7 @@ index 6149b27c33ad0962a19ed411055d9d05bfb252d3..43265b2847d37b3ee8f71b7528eebea1 struct bcm2835_dmadev { struct dma_device ddev; -@@ -921,6 +923,9 @@ static int bcm2835_dma_probe(struct platform_device *pdev) +@@ -922,6 +924,9 @@ static int bcm2835_dma_probe(struct platform_device *pdev) base = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(base)) return PTR_ERR(base); @@ -1237,7 +1276,7 @@ index 6149b27c33ad0962a19ed411055d9d05bfb252d3..43265b2847d37b3ee8f71b7528eebea1 od->base = base; -@@ -958,6 +963,9 @@ static int bcm2835_dma_probe(struct platform_device *pdev) +@@ -959,6 +964,9 @@ static int bcm2835_dma_probe(struct platform_device *pdev) goto err_no_dma; } @@ -1247,7 +1286,7 @@ index 6149b27c33ad0962a19ed411055d9d05bfb252d3..43265b2847d37b3ee8f71b7528eebea1 /* get irqs for each channel that we support */ for (i = 0; i <= BCM2835_DMA_MAX_DMA_CHAN_SUPPORTED; i++) { /* skip masked out channels */ -@@ -1032,6 +1040,7 @@ static int bcm2835_dma_remove(struct platform_device *pdev) +@@ -1033,6 +1041,7 @@ static int bcm2835_dma_remove(struct platform_device *pdev) { struct bcm2835_dmadev *od = platform_get_drvdata(pdev); @@ -1255,7 +1294,7 @@ index 6149b27c33ad0962a19ed411055d9d05bfb252d3..43265b2847d37b3ee8f71b7528eebea1 dma_async_device_unregister(&od->ddev); bcm2835_dma_free(od); -@@ -1047,7 +1056,22 @@ static struct platform_driver bcm2835_dma_driver = { +@@ -1048,7 +1057,22 @@ static struct platform_driver bcm2835_dma_driver = { }, }; @@ -1280,10 +1319,10 @@ index 6149b27c33ad0962a19ed411055d9d05bfb252d3..43265b2847d37b3ee8f71b7528eebea1 MODULE_ALIAS("platform:bcm2835-dma"); MODULE_DESCRIPTION("BCM2835 DMA engine driver"); -From e25a8c81b0db52d1f305698eba1d885a26be101a Mon Sep 17 00:00:00 2001 +From 86eba5c1a1089dc0bad01735f559e37d08525527 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Sat, 15 Aug 2015 20:50:02 +0200 -Subject: [PATCH 023/160] bcm2835: Add support for uart1 +Subject: [PATCH 024/132] bcm2835: Add support for uart1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -1297,10 +1336,10 @@ Signed-off-by: Noralf Trønnes 1 file changed, 25 insertions(+) diff --git a/arch/arm/mach-bcm/board_bcm2835.c b/arch/arm/mach-bcm/board_bcm2835.c -index 3b68a8d3501a5dcb1b4790c35d921cf5fa641ec7..e72e522fbc840c36a39cb6550850b3c663bcff2e 100644 +index 8f152266ba9b470df2eaaed9ebcf158ed2079834..0ef5cd3d1d6ec420360294acc98d40d698d38d8a 100644 --- a/arch/arm/mach-bcm/board_bcm2835.c +++ b/arch/arm/mach-bcm/board_bcm2835.c -@@ -22,6 +22,29 @@ +@@ -21,6 +21,29 @@ #include #include @@ -1330,7 +1369,7 @@ index 3b68a8d3501a5dcb1b4790c35d921cf5fa641ec7..e72e522fbc840c36a39cb6550850b3c6 static void __init bcm2835_init(void) { struct device_node *np = of_find_node_by_path("/system"); -@@ -42,6 +65,8 @@ static void __init bcm2835_init(void) +@@ -33,6 +56,8 @@ static void __init bcm2835_init(void) system_rev = val; if (!of_property_read_u64(np, "linux,serial", &val64)) system_serial_low = val64; @@ -1340,10 +1379,10 @@ index 3b68a8d3501a5dcb1b4790c35d921cf5fa641ec7..e72e522fbc840c36a39cb6550850b3c6 static const char * const bcm2835_compat[] = { -From 64419e9ba75c01a280de0200383f89109da3c4bf Mon Sep 17 00:00:00 2001 +From d14fbca2b82afe7646783c51dfe1e503cb7e8df0 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 25 Jan 2016 17:25:12 +0000 -Subject: [PATCH 024/160] firmware: Updated mailbox header +Subject: [PATCH 025/132] firmware: Updated mailbox header --- include/soc/bcm2835/raspberrypi-firmware.h | 11 +++++++++++ @@ -1406,10 +1445,338 @@ index 3fb357193f09914fe21f8555a4b8613f74f22bc3..227a107214a02deadcca3db202da265e RPI_FIRMWARE_GET_COMMAND_LINE = 0x00050001, RPI_FIRMWARE_GET_DMA_CHANNELS = 0x00060001, -From 1915eb30cab86f0bbebdc8281b08754040840338 Mon Sep 17 00:00:00 2001 +From a7294b259a4fcf36e5073123f513ce622c0a1d31 Mon Sep 17 00:00:00 2001 +From: Eric Anholt +Date: Tue, 26 Apr 2016 11:44:59 -0700 +Subject: [PATCH 026/132] clk: bcm2835: Mark the VPU clock as critical + +The VPU clock is also the clock for our AXI bus, so we really can't +disable it. This might have happened during boot if, for example, +uart1 (aux_uart clock) probed and was then disabled before the other +consumers of the VPU clock had probed. + +v2: Rewrite to use a .flags in bcm2835_clock_data, since other clocks + will need this too. + +Signed-off-by: Eric Anholt +--- + drivers/clk/bcm/clk-bcm2835.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c +index 7a7970865c2d856b6b57113c2bb7e8074140a5dd..d9db03cb3fd84163f320dca6f2e533c61f61b5ad 100644 +--- a/drivers/clk/bcm/clk-bcm2835.c ++++ b/drivers/clk/bcm/clk-bcm2835.c +@@ -443,6 +443,8 @@ struct bcm2835_clock_data { + /* Number of fractional bits in the divider */ + u32 frac_bits; + ++ u32 flags; ++ + bool is_vpu_clock; + bool is_mash_clock; + }; +@@ -1230,7 +1232,7 @@ static struct clk *bcm2835_register_clock(struct bcm2835_cprman *cprman, + init.parent_names = parents; + init.num_parents = data->num_mux_parents; + init.name = data->name; +- init.flags = CLK_IGNORE_UNUSED; ++ init.flags = data->flags | CLK_IGNORE_UNUSED; + + if (data->is_vpu_clock) { + init.ops = &bcm2835_vpu_clock_clk_ops; +@@ -1649,6 +1651,7 @@ static const struct bcm2835_clk_desc clk_desc_array[] = { + .div_reg = CM_VPUDIV, + .int_bits = 12, + .frac_bits = 8, ++ .flags = CLK_IS_CRITICAL, + .is_vpu_clock = true), + + /* clocks with per parent mux */ + +From 90a08a523e50a201c288c783a927688e5a2d5261 Mon Sep 17 00:00:00 2001 +From: Eric Anholt +Date: Mon, 9 May 2016 17:28:18 -0700 +Subject: [PATCH 027/132] clk: bcm2835: Mark GPIO clocks enabled at boot as + critical. + +These divide off of PLLD_PER and are used for the ethernet and wifi +PHYs source PLLs. Neither of them is currently represented by a phy +device that would grab the clock for us. + +This keeps other drivers from killing the networking PHYs when they +disable their own clocks and trigger PLLD_PER's refcount going to 0. + +v2: Skip marking as critical if they aren't on at boot. + +Signed-off-by: Eric Anholt +--- + drivers/clk/bcm/clk-bcm2835.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c +index d9db03cb3fd84163f320dca6f2e533c61f61b5ad..f6bbe8d5929828048114286ec29a33e02519eab8 100644 +--- a/drivers/clk/bcm/clk-bcm2835.c ++++ b/drivers/clk/bcm/clk-bcm2835.c +@@ -1234,6 +1234,15 @@ static struct clk *bcm2835_register_clock(struct bcm2835_cprman *cprman, + init.name = data->name; + init.flags = data->flags | CLK_IGNORE_UNUSED; + ++ /* ++ * Some GPIO clocks for ethernet/wifi PLLs are marked as ++ * critical (since some platforms use them), but if the ++ * firmware didn't have them turned on then they clearly ++ * aren't actually critical. ++ */ ++ if ((cprman_read(cprman, data->ctl_reg) & CM_ENABLE) == 0) ++ init.flags &= ~CLK_IS_CRITICAL; ++ + if (data->is_vpu_clock) { + init.ops = &bcm2835_vpu_clock_clk_ops; + } else { +@@ -1708,13 +1717,15 @@ static const struct bcm2835_clk_desc clk_desc_array[] = { + .div_reg = CM_GP1DIV, + .int_bits = 12, + .frac_bits = 12, ++ .flags = CLK_IS_CRITICAL, + .is_mash_clock = true), + [BCM2835_CLOCK_GP2] = REGISTER_PER_CLK( + .name = "gp2", + .ctl_reg = CM_GP2CTL, + .div_reg = CM_GP2DIV, + .int_bits = 12, +- .frac_bits = 12), ++ .frac_bits = 12, ++ .flags = CLK_IS_CRITICAL), + + /* HDMI state machine */ + [BCM2835_CLOCK_HSM] = REGISTER_PER_CLK( + +From d73c0ce72b3d4b259f73e4ccab38b886035e4fe9 Mon Sep 17 00:00:00 2001 +From: Eric Anholt +Date: Tue, 26 Apr 2016 12:39:45 -0700 +Subject: [PATCH 028/132] clk: bcm2835: Skip PLLC clocks when deciding on a new + clock parent + +If the firmware had set up a clock to source from PLLC, go along with +it. But if we're looking for a new parent, we don't want to switch it +to PLLC because the firmware will force PLLC (and thus the AXI bus +clock) to different frequencies during over-temp/under-voltage, +without notification to Linux. + +On my system, this moves the Linux-enabled HDMI state machine and DSI1 +escape clock over to plld_per from pllc_per. EMMC still ends up on +pllc_per, because the firmware had set it up to use that. + +Signed-off-by: Eric Anholt +Fixes: 41691b8862e2 ("clk: bcm2835: Add support for programming the audio domain clocks") +--- + drivers/clk/bcm/clk-bcm2835.c | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c +index f6bbe8d5929828048114286ec29a33e02519eab8..e527649ee5e32d20cebd762f4badbfca06657a84 100644 +--- a/drivers/clk/bcm/clk-bcm2835.c ++++ b/drivers/clk/bcm/clk-bcm2835.c +@@ -1008,16 +1008,28 @@ static int bcm2835_clock_set_rate(struct clk_hw *hw, + return 0; + } + ++static bool ++bcm2835_clk_is_pllc(struct clk_hw *hw) ++{ ++ if (!hw) ++ return false; ++ ++ return strncmp(clk_hw_get_name(hw), "pllc", 4) == 0; ++} ++ + static int bcm2835_clock_determine_rate(struct clk_hw *hw, + struct clk_rate_request *req) + { + struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw); + struct clk_hw *parent, *best_parent = NULL; ++ bool current_parent_is_pllc; + unsigned long rate, best_rate = 0; + unsigned long prate, best_prate = 0; + size_t i; + u32 div; + ++ current_parent_is_pllc = bcm2835_clk_is_pllc(clk_hw_get_parent(hw)); ++ + /* + * Select parent clock that results in the closest but lower rate + */ +@@ -1025,6 +1037,17 @@ static int bcm2835_clock_determine_rate(struct clk_hw *hw, + parent = clk_hw_get_parent_by_index(hw, i); + if (!parent) + continue; ++ ++ /* ++ * Don't choose a PLLC-derived clock as our parent ++ * unless it had been manually set that way. PLLC's ++ * frequency gets adjusted by the firmware due to ++ * over-temp or under-voltage conditions, without ++ * prior notification to our clock consumer. ++ */ ++ if (bcm2835_clk_is_pllc(parent) && !current_parent_is_pllc) ++ continue; ++ + prate = clk_hw_get_rate(parent); + div = bcm2835_clock_choose_div(hw, req->rate, prate, true); + rate = bcm2835_clock_rate_from_divisor(clock, prate, div); + +From 3a34c414d4eb9aa6921a940cc831550028e33be1 Mon Sep 17 00:00:00 2001 +From: Eric Anholt +Date: Wed, 1 Jun 2016 12:05:35 -0700 +Subject: [PATCH 029/132] clk: bcm2835: Mark the CM SDRAM clock's parent as + critical + +While the SDRAM is being driven by its dedicated PLL most of the time, +there is a little loop running in the firmware that periodically turns +on the CM SDRAM clock (using its pre-initialized parent) and switches +SDRAM to using the CM clock to do PVT recalibration. + +This avoids system hangs if we choose SDRAM's parent for some other +clock, then disable that clock. + +Signed-off-by: Eric Anholt +--- + drivers/clk/bcm/clk-bcm2835.c | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c +index e527649ee5e32d20cebd762f4badbfca06657a84..fbf616021704178a9d007219a0ea2a9f1704f0a6 100644 +--- a/drivers/clk/bcm/clk-bcm2835.c ++++ b/drivers/clk/bcm/clk-bcm2835.c +@@ -36,6 +36,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -1827,6 +1828,25 @@ static const struct bcm2835_clk_desc clk_desc_array[] = { + .ctl_reg = CM_PERIICTL), + }; + ++/* ++ * Permanently take a reference on the parent of the SDRAM clock. ++ * ++ * While the SDRAM is being driven by its dedicated PLL most of the ++ * time, there is a little loop running in the firmware that ++ * periodically switches the SDRAM to using our CM clock to do PVT ++ * recalibration, with the assumption that the previously configured ++ * SDRAM parent is still enabled and running. ++ */ ++static int bcm2835_mark_sdc_parent_critical(struct clk *sdc) ++{ ++ struct clk *parent = clk_get_parent(sdc); ++ ++ if (IS_ERR(parent)) ++ return PTR_ERR(parent); ++ ++ return clk_prepare_enable(parent); ++} ++ + static int bcm2835_clk_probe(struct platform_device *pdev) + { + struct device *dev = &pdev->dev; +@@ -1836,6 +1856,7 @@ static int bcm2835_clk_probe(struct platform_device *pdev) + const struct bcm2835_clk_desc *desc; + const size_t asize = ARRAY_SIZE(clk_desc_array); + size_t i; ++ int ret; + + cprman = devm_kzalloc(dev, + sizeof(*cprman) + asize * sizeof(*clks), +@@ -1866,6 +1887,10 @@ static int bcm2835_clk_probe(struct platform_device *pdev) + clks[i] = desc->clk_register(cprman, desc->data); + } + ++ ret = bcm2835_mark_sdc_parent_critical(clks[BCM2835_CLOCK_SDRAM]); ++ if (ret) ++ return ret; ++ + return of_clk_add_provider(dev->of_node, of_clk_src_onecell_get, + &cprman->onecell); + } + +From 40725d1fe6352be0ade2cad97bbf624ea5db0aef Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Mon, 3 Oct 2016 13:58:40 +0100 +Subject: [PATCH 030/132] Enable upstream BCM2835 auxiliar mini UART support + +--- + drivers/tty/serial/8250/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/tty/serial/8250/Kconfig b/drivers/tty/serial/8250/Kconfig +index 7c6f7afca5ddeed7b25fa6272246fc539bf31b04..748098f900d3474b5d535b24da76ad06e9690335 100644 +--- a/drivers/tty/serial/8250/Kconfig ++++ b/drivers/tty/serial/8250/Kconfig +@@ -291,7 +291,7 @@ config SERIAL_8250_ACORN + + config SERIAL_8250_BCM2835AUX + tristate "BCM2835 auxiliar mini UART support" +- depends on ARCH_BCM2835 || COMPILE_TEST ++ depends on ARCH_BCM2708 || ARCH_BCM2709 || ARCH_BCM2835 || COMPILE_TEST + depends on SERIAL_8250 && SERIAL_8250_SHARE_IRQ + help + Support for the BCM2835 auxiliar mini UART. + +From 132099baa7ca5d311f6ff982f4868ea5c786b356 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 15 Jun 2016 16:48:41 +0100 +Subject: [PATCH 031/132] rtc: Add SPI alias for pcf2123 driver + +Without this alias, Device Tree won't cause the driver +to be loaded. + +See: https://github.com/raspberrypi/linux/pull/1510 +--- + drivers/rtc/rtc-pcf2123.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/rtc/rtc-pcf2123.c b/drivers/rtc/rtc-pcf2123.c +index b4478cc92b55dbd76731ea8ec6a4228677adcebb..6981064d5cbad7d7078b23ce4ed5227e45b1e4e1 100644 +--- a/drivers/rtc/rtc-pcf2123.c ++++ b/drivers/rtc/rtc-pcf2123.c +@@ -471,3 +471,4 @@ module_spi_driver(pcf2123_driver); + MODULE_AUTHOR("Chris Verges "); + MODULE_DESCRIPTION("NXP PCF2123 RTC driver"); + MODULE_LICENSE("GPL"); ++MODULE_ALIAS("spi:rtc-pcf2123"); + +From 242d5204bc3c598defca5f98e3cafb1a589f626c Mon Sep 17 00:00:00 2001 +From: Eric Anholt +Date: Tue, 19 Apr 2016 15:55:02 -0700 +Subject: [PATCH 032/132] ARM: bcm2708: Enable building power domain driver. + +Signed-off-by: Eric Anholt +--- + drivers/soc/bcm/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/soc/bcm/Kconfig b/drivers/soc/bcm/Kconfig +index a39b0d58ddd0fdf0ac1cc7295f8aafb12546e226..7d11a44f36d2e6f8697773cd49a72e53bca3a5a0 100644 +--- a/drivers/soc/bcm/Kconfig ++++ b/drivers/soc/bcm/Kconfig +@@ -2,7 +2,7 @@ menu "Broadcom SoC drivers" + + config RASPBERRYPI_POWER + bool "Raspberry Pi power domain driver" +- depends on ARCH_BCM2835 || (COMPILE_TEST && OF) ++ depends on ARCH_BCM2835 || ARCH_BCM2708 || ARCH_BCM2709 || (COMPILE_TEST && OF) + depends on RASPBERRYPI_FIRMWARE=y + select PM_GENERIC_DOMAINS if PM + help + +From e21a41779b151baa1ea67f50744c5b6c102d66b2 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 12 May 2013 12:24:19 +0100 -Subject: [PATCH 025/160] Main bcm2708/bcm2709 linux port +Subject: [PATCH 033/132] Main bcm2708/bcm2709 linux port MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -1451,9 +1818,9 @@ Signed-off-by: Noralf Trønnes arch/arm/tools/mach-types | 2 + drivers/clocksource/Makefile | 2 +- drivers/irqchip/Makefile | 3 + - drivers/irqchip/irq-bcm2835.c | 3 +- + drivers/irqchip/irq-bcm2835.c | 7 +- include/linux/mmc/host.h | 1 + - 36 files changed, 2147 insertions(+), 5 deletions(-) + 36 files changed, 2151 insertions(+), 5 deletions(-) create mode 100644 arch/arm/mach-bcm2708/Kconfig create mode 100644 arch/arm/mach-bcm2708/Makefile create mode 100644 arch/arm/mach-bcm2708/Makefile.boot @@ -1481,10 +1848,10 @@ Signed-off-by: Noralf Trønnes create mode 100644 arch/arm/mach-bcm2709/vc_mem.c diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index 90542db1220dbcff5bc7f0d27ce233389a6d780d..437c4c3fd3cead08377098ae89de79c40d804df2 100644 +index a9c4e48bb7ec997bec394066914d26f337a2fec4..018ee76322d9e013598887c50ebea9628ecb9ee3 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig -@@ -324,6 +324,52 @@ choice +@@ -326,6 +326,52 @@ choice default ARM_SINGLE_ARMV7M if !MMU default ARCH_MULTIPLATFORM if MMU @@ -1537,7 +1904,7 @@ index 90542db1220dbcff5bc7f0d27ce233389a6d780d..437c4c3fd3cead08377098ae89de79c4 config ARCH_MULTIPLATFORM bool "Allow multiple platforms to be selected" depends on MMU -@@ -725,6 +771,9 @@ config ARCH_VIRT +@@ -711,6 +757,9 @@ config ARCH_VIRT # Kconfigs may be included either alphabetically (according to the # plat- suffix) or along side the corresponding mach-* source. # @@ -1548,10 +1915,10 @@ index 90542db1220dbcff5bc7f0d27ce233389a6d780d..437c4c3fd3cead08377098ae89de79c4 source "arch/arm/mach-alpine/Kconfig" diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug -index 19a3dcf5eb2e5600563cbcd47599ba458a546260..a15dd5cde577cc014de4063b7881d2ce03198df8 100644 +index a9693b6987a6e41c69702f1003d0d8bd2279530e..f47f4e70395635fafeacd680c4392cc51660ea8e 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug -@@ -1294,6 +1294,14 @@ choice +@@ -1312,6 +1312,14 @@ choice options; the platform specific options are deprecated and will be soon removed. @@ -1565,12 +1932,12 @@ index 19a3dcf5eb2e5600563cbcd47599ba458a546260..a15dd5cde577cc014de4063b7881d2ce + endchoice - config DEBUG_EXYNOS_UART + config DEBUG_AT91_UART diff --git a/arch/arm/Makefile b/arch/arm/Makefile -index 274e8a6582f1cd671731d1acbdda6f0f49c358c8..36e8f1e6fc7f169a68aa9476e618b50c79b0b2e3 100644 +index 61f6ccc19cfa94364e777cc68d10ce5a24093c0f..d1e45094ab4338f95dab09e81d358cd723f5eb3d 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile -@@ -153,6 +153,8 @@ textofs-$(CONFIG_ARCH_AXXIA) := 0x00308000 +@@ -152,6 +152,8 @@ textofs-$(CONFIG_ARCH_AXXIA) := 0x00308000 # Machine directory name. This list is sorted alphanumerically # by CONFIG_* macro name. @@ -1599,7 +1966,7 @@ index 04286fd9e09ce7a27259c4d375a05a965e3be0ea..ed826280e744828ebb1c5ae6b7a62d70 ENDPROC(__fixup_a_pv_table) diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c -index 4a803c5a1ff7276859b823a7b9b02dc24ee6e564..c09505c5312860aade6f68f160f657349785d8cd 100644 +index 612eb530f33fcd19bc4539facb26fc30a2583979..0a0332cb13a7475ee0c4d75a97685b7de6475c95 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c @@ -91,6 +91,16 @@ void arch_cpu_idle_exit(void) @@ -3859,20 +4226,20 @@ index 2ed1b8a922ed02b9e3545991873af77b4c1bf871..b52d949ee91d96eb7672fbbb4969bfa1 ics_if_voip MACH_ICS_IF_VOIP ICS_IF_VOIP 3206 wlf_cragg_6410 MACH_WLF_CRAGG_6410 WLF_CRAGG_6410 3207 diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile -index 473974f9590a5cb19da5bf2bccf1e126f45bfb45..dc76b5e1b1f31fa2d802ee3da3dbfda1a88c6574 100644 +index fd9d6df0bbc0993c3b7862a08f89dc3a9725be9d..a60aa840b28f0fa73c496a2e0d5c816eed6f771a 100644 --- a/drivers/clocksource/Makefile +++ b/drivers/clocksource/Makefile @@ -19,7 +19,7 @@ obj-$(CONFIG_CLKSRC_NOMADIK_MTU) += nomadik-mtu.o obj-$(CONFIG_CLKSRC_DBX500_PRCMU) += clksrc-dbx500-prcmu.o obj-$(CONFIG_ARMADA_370_XP_TIMER) += time-armada-370-xp.o obj-$(CONFIG_ORION_TIMER) += time-orion.o --obj-$(CONFIG_ARCH_BCM2835) += bcm2835_timer.o -+obj-$(CONFIG_ARCH_BCM2835)$(CONFIG_ARCH_BCM2708) += bcm2835_timer.o - obj-$(CONFIG_ARCH_CLPS711X) += clps711x-timer.o - obj-$(CONFIG_ARCH_ATLAS7) += timer-atlas7.o - obj-$(CONFIG_ARCH_MOXART) += moxart_timer.o +-obj-$(CONFIG_BCM2835_TIMER) += bcm2835_timer.o ++obj-$(CONFIG_BCM2835_TIMER)$(CONFIG_ARCH_BCM2708) += bcm2835_timer.o + obj-$(CONFIG_CLPS711X_TIMER) += clps711x-timer.o + obj-$(CONFIG_ATLAS7_TIMER) += timer-atlas7.o + obj-$(CONFIG_MOXART_TIMER) += moxart_timer.o diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile -index 38853a187607591555c351bc2586b8ac73450b7f..382a22ab9ec6c02395a3be44d0787c15e2ddba8b 100644 +index 4c203b6b816357dce8d7a768ac81feaba91d431b..75da978fac0e06819d8a9740b95ee3d7035c1059 100644 --- a/drivers/irqchip/Makefile +++ b/drivers/irqchip/Makefile @@ -5,6 +5,9 @@ obj-$(CONFIG_ATH79) += irq-ath79-cpu.o @@ -3886,10 +4253,20 @@ index 38853a187607591555c351bc2586b8ac73450b7f..382a22ab9ec6c02395a3be44d0787c15 obj-$(CONFIG_ARCH_HIP04) += irq-hip04.o obj-$(CONFIG_ARCH_LPC32XX) += irq-lpc32xx.o diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c -index 20deb282286834b1f234a65e614b8584688a25d7..c02bf8a9f9970401dc98c4f656c20c35d8070123 100644 +index eccf6ed025299cb480884f5bcbe77abf55a6bbb1..8ed457fd74bd23bee27b64a2c9e3828ce0e4fb87 100644 --- a/drivers/irqchip/irq-bcm2835.c +++ b/drivers/irqchip/irq-bcm2835.c -@@ -82,6 +82,7 @@ +@@ -54,7 +54,9 @@ + #include + + #include ++#ifndef CONFIG_ARM64 + #include ++#endif + + /* Put the bank and irq (32 bits) into the hwirq */ + #define MAKE_HWIRQ(b, n) (((b) << 5) | (n)) +@@ -82,6 +84,7 @@ #define NR_BANKS 3 #define IRQS_PER_BANK 32 #define NUMBER_IRQS MAKE_HWIRQ(NR_BANKS, 0) @@ -3897,7 +4274,7 @@ index 20deb282286834b1f234a65e614b8584688a25d7..c02bf8a9f9970401dc98c4f656c20c35 #define FIQ_START (NR_IRQS_BANK0 + MAKE_HWIRQ(NR_BANKS - 1, 0)) static const int reg_pending[] __initconst = { 0x00, 0x04, 0x08 }; -@@ -256,7 +257,7 @@ static int __init armctrl_of_init(struct device_node *node, +@@ -256,10 +259,12 @@ static int __init armctrl_of_init(struct device_node *node, MAKE_HWIRQ(b, i) + NUMBER_IRQS); BUG_ON(irq <= 0); irq_set_chip(irq, &armctrl_chip); @@ -3905,24 +4282,29 @@ index 20deb282286834b1f234a65e614b8584688a25d7..c02bf8a9f9970401dc98c4f656c20c35 + irq_set_probe(irq); } } ++#ifndef CONFIG_ARM64 init_FIQ(FIQ_START); ++#endif + + return 0; + } diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h -index 45cde8cd39f2434f5f9ec02c702a91a7f6b971c9..6a01ffa629386bdecf85e5a4736f7c27133869ab 100644 +index aa4bfbf129e4585ebb89b25fca4b03c928925022..89f7a3a539b5a1b84ddcf0a1548160c000103fbb 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h -@@ -302,6 +302,7 @@ struct mmc_host { - #define MMC_CAP2_SDIO_IRQ_NOTHREAD (1 << 17) - #define MMC_CAP2_NO_WRITE_PROTECT (1 << 18) /* No physical write protect pin, assume that card is always read-write */ - #define MMC_CAP2_NO_SDIO (1 << 19) /* Do not send SDIO commands during initialization */ +@@ -311,6 +311,7 @@ struct mmc_host { + #define MMC_CAP2_HS400_ES (1 << 20) /* Host supports enhanced strobe */ + #define MMC_CAP2_NO_SD (1 << 21) /* Do not send SD commands during initialization */ + #define MMC_CAP2_NO_MMC (1 << 22) /* Do not send (e)MMC commands during initialization */ +#define MMC_CAP2_FORCE_MULTIBLOCK (1 << 31) /* Always use multiblock transfers */ mmc_pm_flag_t pm_caps; /* supported pm features */ -From 6c506e0aeb2588c9ce6e319a6f32349ed1ddd2aa Mon Sep 17 00:00:00 2001 +From 362ad8c9c871f54a1636cd6120712008f57c5ce5 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 5 Apr 2016 19:40:12 +0100 -Subject: [PATCH 026/160] reboot: Use power off rather than busy spinning when +Subject: [PATCH 034/132] reboot: Use power off rather than busy spinning when halt is requested --- @@ -3945,33 +4327,32 @@ index 3fa867a2aae672755c6ce6448f4148c989dbf964..80dca8dcd6709034b643c6a3f35729e0 /* -From 3768c27f173f8e566afd47497ca29a7b0278d589 Mon Sep 17 00:00:00 2001 +From 599e58207ac644a3732bae3cc1d5d98da1b53c3a Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 11 Nov 2015 21:01:15 +0000 -Subject: [PATCH 027/160] squash: include ARCH_BCM2708 / ARCH_BCM2709 +Subject: [PATCH 035/132] squash: include ARCH_BCM2708 / ARCH_BCM2709 --- drivers/char/hw_random/Kconfig | 2 +- drivers/clk/bcm/Makefile | 4 ++-- drivers/mailbox/Kconfig | 2 +- drivers/mailbox/bcm2835-mailbox.c | 18 ++++++++++++++++-- - drivers/pinctrl/Makefile | 1 + drivers/pwm/Kconfig | 2 +- drivers/spi/Kconfig | 4 ++-- drivers/watchdog/Kconfig | 2 +- sound/soc/bcm/Kconfig | 2 +- - 9 files changed, 26 insertions(+), 11 deletions(-) + 8 files changed, 25 insertions(+), 11 deletions(-) diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig -index ac51149e977758beb8db91e159175be9525fc13c..7fb001bb8e7609d3640b27cec5ec5180d8dbbcc2 100644 +index 8c0770bf8881351c1d956d310c5d670684090770..205b6b34d32c660d34c885e8391032d682c8870e 100644 --- a/drivers/char/hw_random/Kconfig +++ b/drivers/char/hw_random/Kconfig @@ -90,7 +90,7 @@ config HW_RANDOM_BCM63XX config HW_RANDOM_BCM2835 tristate "Broadcom BCM2835 Random Number Generator support" -- depends on ARCH_BCM2835 -+ depends on ARCH_BCM2835 || ARCH_BCM2708 || ARCH_BCM2709 +- depends on ARCH_BCM2835 || ARCH_BCM_NSP || ARCH_BCM_5301X ++ depends on ARCH_BCM2835 || ARCH_BCM2708 || ARCH_BCM2709 || ARCH_BCM_NSP || ARCH_BCM_5301X default HW_RANDOM ---help--- This driver provides kernel-side support for the Random Number @@ -3991,7 +4372,7 @@ index 1d79bd2c36f004669d1dcf78fa681025c3f074e2..fcf1bb5d792111a31226c33dec6b1da3 obj-$(CONFIG_ARCH_BCM_CYGNUS) += clk-cygnus.o obj-$(CONFIG_ARCH_BCM_NSP) += clk-nsp.o diff --git a/drivers/mailbox/Kconfig b/drivers/mailbox/Kconfig -index 5305923752d283d31a6c2a0435cf7e68dbf200b7..3de0dcbace67415412405903b720db495ebf76a7 100644 +index 7817d40d81e74ad282b1760b1dc50d090d10670d..dc46b41705af8ea405dc961d9230058c7086db7d 100644 --- a/drivers/mailbox/Kconfig +++ b/drivers/mailbox/Kconfig @@ -74,7 +74,7 @@ config ALTERA_MBOX @@ -4052,23 +4433,11 @@ index cfb4b4496dd9f61362dea012176c146120fada07..d9c6c217c4d6a2408abe2665bf7f2700 MODULE_AUTHOR("Lubomir Rintel "); MODULE_DESCRIPTION("BCM2835 mailbox IPC driver"); -diff --git a/drivers/pinctrl/Makefile b/drivers/pinctrl/Makefile -index 42a5c1dddfefaf7414eca1809ef7d1bf75a11628..4c62b88401c5bee3015e74ce95a411d9c62c3dd6 100644 ---- a/drivers/pinctrl/Makefile -+++ b/drivers/pinctrl/Makefile -@@ -35,6 +35,7 @@ obj-$(CONFIG_PINCTRL_TB10X) += pinctrl-tb10x.o - obj-$(CONFIG_PINCTRL_ST) += pinctrl-st.o - obj-$(CONFIG_PINCTRL_ZYNQ) += pinctrl-zynq.o - -+obj-$(CONFIG_ARCH_BCM2708)$(CONFIG_ARCH_BCM2709) += bcm/ - obj-$(CONFIG_ARCH_BCM) += bcm/ - obj-$(CONFIG_PINCTRL_BERLIN) += berlin/ - obj-y += freescale/ diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig -index c182efc62c7bc3ffe31d81a539c88c35f55abac9..fe0f845fa21e1a2fa129814358f172ad3cd4627b 100644 +index 80a566a00d0437dcc8fca7715c1109e7c2d35f67..549cf7a786e27e19863ec0ad53a8b2836afd0c2a 100644 --- a/drivers/pwm/Kconfig +++ b/drivers/pwm/Kconfig -@@ -85,7 +85,7 @@ config PWM_BCM_KONA +@@ -95,7 +95,7 @@ config PWM_BCM_KONA config PWM_BCM2835 tristate "BCM2835 PWM support" @@ -4078,7 +4447,7 @@ index c182efc62c7bc3ffe31d81a539c88c35f55abac9..fe0f845fa21e1a2fa129814358f172ad PWM framework driver for BCM2835 controller (Raspberry Pi) diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig -index 4b931ec8d90b610f498a3e317e0523e9d1aa6900..82528961746f960e9851b4c252f42de5f1fbf298 100644 +index d6fb8d4b778672fd006446c0eab710d35f6e6e3a..4b09be74af155c2a6e0590a6380242db40e6f914 100644 --- a/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig @@ -94,7 +94,7 @@ config SPI_AXI_SPI_ENGINE @@ -4100,10 +4469,10 @@ index 4b931ec8d90b610f498a3e317e0523e9d1aa6900..82528961746f960e9851b4c252f42de5 This selects a driver for the Broadcom BCM2835 SPI aux master. diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig -index b4b3e256491bfbe8c05fa0f7830c003541db8720..eaf2e847254e00b457ad37cb4a8c0b2baee8d1a9 100644 +index 1bffe006ca9a843e2e71bc1a461a2d67e97480c0..9a28f1fdf93a79104049c03ed51abc31d34165d5 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig -@@ -1409,7 +1409,7 @@ config BCM63XX_WDT +@@ -1440,7 +1440,7 @@ config BCM63XX_WDT config BCM2835_WDT tristate "Broadcom BCM2835 hardware watchdog" @@ -4113,7 +4482,7 @@ index b4b3e256491bfbe8c05fa0f7830c003541db8720..eaf2e847254e00b457ad37cb4a8c0b2b help Watchdog driver for the built in watchdog hardware in Broadcom diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 6a834e109f1de47e533d17e87cdc73d8ee86fc4d..c5070aec5996aafb2d9daaf75163e16a29bc6892 100644 +index d528aaceaad95bc6bae2147ebe66249629d2512e..03a303e52d5fe57bbdd8769d24bca59067c54c65 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig @@ -1,6 +1,6 @@ @@ -4125,10 +4494,10 @@ index 6a834e109f1de47e533d17e87cdc73d8ee86fc4d..c5070aec5996aafb2d9daaf75163e16a select REGMAP_MMIO help -From 47797faa4180edede5ac275b9e6831a0cceeddc3 Mon Sep 17 00:00:00 2001 +From 8488874d9857ae014aa5cf49748a0412bdf44490 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 1 May 2013 19:46:17 +0100 -Subject: [PATCH 028/160] Add dwc_otg driver +Subject: [PATCH 036/132] Add dwc_otg driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -4620,6 +4989,8 @@ Make it a default to learn more. See: https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=70437 Signed-off-by: popcornmix + +dwc_otg: Use kzalloc when suitable --- arch/arm/include/asm/irqflags.h | 16 +- arch/arm/kernel/fiqasm.S | 4 + @@ -4655,7 +5026,7 @@ Signed-off-by: popcornmix drivers/usb/host/dwc_common_port/usb.h | 946 +++ drivers/usb/host/dwc_otg/Makefile | 82 + drivers/usb/host/dwc_otg/doc/doxygen.cfg | 224 + - drivers/usb/host/dwc_otg/dummy_audio.c | 1575 +++++ + drivers/usb/host/dwc_otg/dummy_audio.c | 1574 +++++ drivers/usb/host/dwc_otg/dwc_cfi_common.h | 142 + drivers/usb/host/dwc_otg/dwc_otg_adp.c | 854 +++ drivers/usb/host/dwc_otg/dwc_otg_adp.h | 80 + @@ -4685,13 +5056,13 @@ Signed-off-by: popcornmix drivers/usb/host/dwc_otg/dwc_otg_pcd.h | 266 + drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h | 360 + drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c | 5147 ++++++++++++++ - drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c | 1280 ++++ + drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c | 1279 ++++ drivers/usb/host/dwc_otg/dwc_otg_regs.h | 2550 +++++++ drivers/usb/host/dwc_otg/test/Makefile | 16 + drivers/usb/host/dwc_otg/test/dwc_otg_test.pm | 337 + drivers/usb/host/dwc_otg/test/test_mod_param.pl | 133 + drivers/usb/host/dwc_otg/test/test_sysfs.pl | 193 + - 70 files changed, 59885 insertions(+), 16 deletions(-) + 70 files changed, 59883 insertions(+), 16 deletions(-) create mode 100644 drivers/usb/gadget/file_storage.c create mode 100644 drivers/usb/host/dwc_common_port/Makefile create mode 100644 drivers/usb/host/dwc_common_port/Makefile.fbsd @@ -4835,10 +5206,10 @@ index 1d5fc32d06d007a6f64526a531da8ae69e8e6950..ce881480114d0f444f4b1099c713c256 USB_PORT_FEAT_C_OVER_CURRENT); msleep(100); /* Cool down */ diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c -index ea681f157368f245772ab145073594bf4f6fb273..cb9b9c2df9b8fd7df50fa846b37c3f3d5fab6256 100644 +index 0406a59f05510cb1dee98ffbf22b55c0ccd65750..8c3401f7c1ca80e0eedc7aec6cca5d593cf16718 100644 --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c -@@ -1905,6 +1905,85 @@ free_interfaces: +@@ -1906,6 +1906,85 @@ free_interfaces: if (cp->string == NULL && !(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS)) cp->string = usb_cache_string(dev, cp->desc.iConfiguration); @@ -8764,7 +9135,7 @@ index 0000000000000000000000000000000000000000..a896d73f7a9336f5a34015c44ea5a6b0 +} +module_exit(fsg_cleanup); diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig -index d8f5674809e88e4f68d19411473ff752ce6230ef..50322813b65b6d7ddf273db46581c9b58be1c40b 100644 +index 2e710a4cca525915991bf2b2a884dd2cec844281..a94354d1c7574c5cf1fdb7c47165459a5378c2c0 100644 --- a/drivers/usb/host/Kconfig +++ b/drivers/usb/host/Kconfig @@ -762,6 +762,19 @@ config USB_HWA_HCD @@ -19580,10 +19951,10 @@ index 0000000000000000000000000000000000000000..712b057ef7c293e8ddfa95d89e2471fb +SEARCHENGINE = NO diff --git a/drivers/usb/host/dwc_otg/dummy_audio.c b/drivers/usb/host/dwc_otg/dummy_audio.c new file mode 100644 -index 0000000000000000000000000000000000000000..225decf765ce825b896ba98771ccb19c20d99404 +index 0000000000000000000000000000000000000000..f827102fa64414d0f6e6ad47948a87fa4ab97e69 --- /dev/null +++ b/drivers/usb/host/dwc_otg/dummy_audio.c -@@ -0,0 +1,1575 @@ +@@ -0,0 +1,1574 @@ +/* + * zero.c -- Gadget Zero, for USB development + * @@ -20963,10 +21334,9 @@ index 0000000000000000000000000000000000000000..225decf765ce825b896ba98771ccb19c + + + /* ok, we made sense of the hardware ... */ -+ dev = kmalloc (sizeof *dev, SLAB_KERNEL); ++ dev = kzalloc (sizeof *dev, SLAB_KERNEL); + if (!dev) + return -ENOMEM; -+ memset (dev, 0, sizeof *dev); + spin_lock_init (&dev->lock); + dev->gadget = gadget; + set_gadget_data (gadget, dev); @@ -60610,10 +60980,10 @@ index 0000000000000000000000000000000000000000..c8590b527110753b8064d35fab4c3422 +#endif /* DWC_HOST_ONLY */ diff --git a/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c new file mode 100644 -index 0000000000000000000000000000000000000000..0eb0f3572d1230fdd23966c47ba9370d22bb8cb5 +index 0000000000000000000000000000000000000000..5624f32c9ea9117599df451af29fca2e3bca36de --- /dev/null +++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c -@@ -0,0 +1,1280 @@ +@@ -0,0 +1,1279 @@ + /* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd_linux.c $ + * $Revision: #21 $ @@ -60828,12 +61198,11 @@ index 0000000000000000000000000000000000000000..0eb0f3572d1230fdd23966c47ba9370d + DWC_WARN("%s() %s\n", __func__, "Invalid EP!\n"); + return 0; + } -+ usb_req = kmalloc(sizeof(*usb_req), gfp_flags); ++ usb_req = kzalloc(sizeof(*usb_req), gfp_flags); + if (0 == usb_req) { + DWC_WARN("%s() %s\n", __func__, "request allocation failed!\n"); + return 0; + } -+ memset(usb_req, 0, sizeof(*usb_req)); + usb_req->dma = DWC_DMA_ADDR_INVALID; + + return usb_req; @@ -65154,10 +65523,10 @@ index 0000000000000000000000000000000000000000..cdc9963176e5a4a0d5250613b61e26c5 +test_main(); +0; -From a103f6cf9b29546224615565f35e8568dd2359e1 Mon Sep 17 00:00:00 2001 +From be1266206f3c88f565c0d9ec85bf998fd45717a4 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 17 Jun 2015 17:06:34 +0100 -Subject: [PATCH 029/160] bcm2708 framebuffer driver +Subject: [PATCH 037/132] bcm2708 framebuffer driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -68616,10 +68985,10 @@ index 3c14e43b82fefe1d32f591d1b2f61d2cd28d0fa8..7626beb6a5bb8df601ddf0f6e6909d1f +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 -From 5d46a5972c6ff8eed7952dab45d4d83df79dc491 Mon Sep 17 00:00:00 2001 +From c9e7cf342ea0486e4177b2db3e9daf0e32a4437c Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 14:22:53 +0100 -Subject: [PATCH 030/160] dmaengine: Add support for BCM2708 +Subject: [PATCH 038/132] dmaengine: Add support for BCM2708 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -68766,6 +69135,8 @@ Dropping non-DT support means we don't need this driver, but we still need the legacy DMA API. Signed-off-by: Noralf Trønnes + +bcm2708-dmaengine - Fix arm64 portability/build issues --- drivers/dma/Kconfig | 4 + drivers/dma/Makefile | 1 + @@ -68776,10 +69147,10 @@ Signed-off-by: Noralf Trønnes create mode 100644 include/linux/platform_data/dma-bcm2708.h diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig -index ece64af02387ab867e21b7bc9178e0842bf1ecac..ffc92425cbd7bafc23899b7680949e47943f9561 100644 +index f7b3ac574968b35aeb1fb6b3ba8d4f1bf61599f9..2a2108062687ff33ff540c987f6367fa3b8aad9d 100644 --- a/drivers/dma/Kconfig +++ b/drivers/dma/Kconfig -@@ -488,6 +488,10 @@ config TIMB_DMA +@@ -502,6 +502,10 @@ config TIMB_DMA help Enable support for the Timberdale FPGA DMA engine. @@ -68791,7 +69162,7 @@ index ece64af02387ab867e21b7bc9178e0842bf1ecac..ffc92425cbd7bafc23899b7680949e47 tristate "AM33xx CPPI41 DMA support" depends on ARCH_OMAP diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile -index 614f28b0b739de875823b05a66a62186a1e9f45f..598e44dca3e4a9b33cc206e107226de8e0b34111 100644 +index e4dc9cac7ee8427184f821896364c232634a444f..58cc24730ed6ab4fd35a9cb182c4862f8f2d546f 100644 --- a/drivers/dma/Makefile +++ b/drivers/dma/Makefile @@ -18,6 +18,7 @@ obj-$(CONFIG_AT_HDMAC) += at_hdmac.o @@ -68804,7 +69175,7 @@ index 614f28b0b739de875823b05a66a62186a1e9f45f..598e44dca3e4a9b33cc206e107226de8 obj-$(CONFIG_DMA_JZ4780) += dma-jz4780.o diff --git a/drivers/dma/bcm2708-dmaengine.c b/drivers/dma/bcm2708-dmaengine.c new file mode 100644 -index 0000000000000000000000000000000000000000..56f18dc4aa5627625e9620daa9d6482e0098af7e +index 0000000000000000000000000000000000000000..0f4a26983e401c60647655dcb35afd58f37515a8 --- /dev/null +++ b/drivers/dma/bcm2708-dmaengine.c @@ -0,0 +1,281 @@ @@ -68879,7 +69250,7 @@ index 0000000000000000000000000000000000000000..56f18dc4aa5627625e9620daa9d6482e +extern void bcm_dma_start(void __iomem *dma_chan_base, + dma_addr_t control_block) +{ -+ dsb(); /* ARM data synchronization (push) operation */ ++ dsb(sy); /* ARM data synchronization (push) operation */ + + writel(control_block, dma_chan_base + BCM2708_DMA_ADDR); + writel(BCM2708_DMA_ACTIVE, dma_chan_base + BCM2708_DMA_CS); @@ -68888,7 +69259,7 @@ index 0000000000000000000000000000000000000000..56f18dc4aa5627625e9620daa9d6482e + +extern void bcm_dma_wait_idle(void __iomem *dma_chan_base) +{ -+ dsb(); ++ dsb(sy); + + /* ugly busy wait only option for now */ + while (readl(dma_chan_base + BCM2708_DMA_CS) & BCM2708_DMA_ACTIVE) @@ -68898,7 +69269,7 @@ index 0000000000000000000000000000000000000000..56f18dc4aa5627625e9620daa9d6482e + +extern bool bcm_dma_is_busy(void __iomem *dma_chan_base) +{ -+ dsb(); ++ dsb(sy); + + return readl(dma_chan_base + BCM2708_DMA_CS) & BCM2708_DMA_ACTIVE; +} @@ -69091,7 +69462,7 @@ index 0000000000000000000000000000000000000000..56f18dc4aa5627625e9620daa9d6482e +MODULE_LICENSE("GPL"); diff --git a/include/linux/platform_data/dma-bcm2708.h b/include/linux/platform_data/dma-bcm2708.h new file mode 100644 -index 0000000000000000000000000000000000000000..99cc7fdbf543207208bf3638a0d4dbb6ec4ea8c2 +index 0000000000000000000000000000000000000000..c5bfff2765be4606077e6c8af73040ec13ee8974 --- /dev/null +++ b/include/linux/platform_data/dma-bcm2708.h @@ -0,0 +1,143 @@ @@ -69160,13 +69531,13 @@ index 0000000000000000000000000000000000000000..99cc7fdbf543207208bf3638a0d4dbb6 +#define BCM_DMA_FEATURE_COUNT 4 + +struct bcm2708_dma_cb { -+ unsigned long info; -+ unsigned long src; -+ unsigned long dst; -+ unsigned long length; -+ unsigned long stride; -+ unsigned long next; -+ unsigned long pad[2]; ++ u32 info; ++ u32 src; ++ u32 dst; ++ u32 length; ++ u32 stride; ++ u32 next; ++ u32 pad[2]; +}; + +struct scatterlist; @@ -69239,10 +69610,10 @@ index 0000000000000000000000000000000000000000..99cc7fdbf543207208bf3638a0d4dbb6 + +#endif /* _PLAT_BCM2708_DMA_H */ -From 6208a6f79fe50c17eaf41438b0381e96d600cf77 Mon Sep 17 00:00:00 2001 +From e846affe69966a357f3024d7c3846775a29c80e8 Mon Sep 17 00:00:00 2001 From: gellert Date: Fri, 15 Aug 2014 16:35:06 +0100 -Subject: [PATCH 031/160] MMC: added alternative MMC driver +Subject: [PATCH 039/132] MMC: added alternative MMC driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -69333,7 +69704,7 @@ Signed-off-by: Phil Elwell create mode 100644 drivers/mmc/host/bcm2835-mmc.c diff --git a/drivers/mmc/core/quirks.c b/drivers/mmc/core/quirks.c -index fad660b95809224e3a06abde0709be3d50acf307..b79fe14c18f1fe521fadf8adfc136de62140c8b9 100644 +index ca9cade317c7eccee354bb1a075b091f59a62de1..5e9e3518e0eb6be78f6e2847846a90ddd0febb77 100644 --- a/drivers/mmc/core/quirks.c +++ b/drivers/mmc/core/quirks.c @@ -53,6 +53,9 @@ static const struct mmc_fixup mmc_fixup_methods[] = { @@ -69346,7 +69717,7 @@ index fad660b95809224e3a06abde0709be3d50acf307..b79fe14c18f1fe521fadf8adfc136de6 const struct mmc_fixup *f; u64 rev = cid_rev_card(card); -@@ -77,5 +80,12 @@ void mmc_fixup_device(struct mmc_card *card, const struct mmc_fixup *table) +@@ -79,5 +82,12 @@ void mmc_fixup_device(struct mmc_card *card, const struct mmc_fixup *table) f->vendor_fixup(card, f->data); } } @@ -69360,7 +69731,7 @@ index fad660b95809224e3a06abde0709be3d50acf307..b79fe14c18f1fe521fadf8adfc136de6 } EXPORT_SYMBOL(mmc_fixup_device); diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig -index 0aa484c10c0a9b93a4aedc885235d95ffe6872e6..36d00eba1df06946fb2bb9bb9dd1f0d847ef8158 100644 +index 5274f503a39ad9c034e23b634ff0ec6634cbbd78..405d62909dd6ac5351684c002414cc02135d98ba 100644 --- a/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig @@ -4,6 +4,35 @@ @@ -69400,7 +69771,7 @@ index 0aa484c10c0a9b93a4aedc885235d95ffe6872e6..36d00eba1df06946fb2bb9bb9dd1f0d8 tristate "ARM AMBA Multimedia Card Interface support" depends on ARM_AMBA diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile -index af918d261ff9625d1d42146da1173031cd9917dd..3ba94f0af9b1793aa66d95d8fbd9bb661ca82778 100644 +index e2bdaaf431841535b936600af56b8e38f52f9845..5133b680970c93fbb9695f83296f0f70b4977240 100644 --- a/drivers/mmc/host/Makefile +++ b/drivers/mmc/host/Makefile @@ -18,6 +18,7 @@ obj-$(CONFIG_MMC_SDHCI_S3C) += sdhci-s3c.o @@ -70989,10 +71360,10 @@ index 0000000000000000000000000000000000000000..ceb37930e167f47c9c848e8de757ad09 +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Gellert Weisz"); -From 45ac67f6273670af201033904221c78a00aabd65 Mon Sep 17 00:00:00 2001 +From a9424805c97a56bff335d322bdbc951ac3d11c01 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 25 Mar 2015 17:49:47 +0000 -Subject: [PATCH 032/160] Adding bcm2835-sdhost driver, and an overlay to +Subject: [PATCH 040/132] Adding bcm2835-sdhost driver, and an overlay to enable it BCM2835 has two SD card interfaces. This driver uses the other one. @@ -71135,16 +71506,32 @@ Since reprogramming the clock can now involve a round-trip to the firmware it must not be done at atomic context, and a tasklet is not a task. +Signed-off-by: Phil Elwell + +bcm2835-sdhost: Don't exit cmd wait loop on error + +The FAIL flag can be set in the CMD register before command processing +is complete, leading to spurious "failed to complete" errors. This has +the effect of promoting harmless CRC7 errors during CMD1 processing +into errors that can delay and even prevent booting. + +Also: +1) Convert the last KERN_ERROR message in the register dumping to + KERN_INFO. +2) Remove an unnecessary reset call from bcm2835_sdhost_add_host. + +See: https://github.com/raspberrypi/linux/pull/1492 + Signed-off-by: Phil Elwell --- drivers/mmc/host/Kconfig | 10 + drivers/mmc/host/Makefile | 1 + - drivers/mmc/host/bcm2835-sdhost.c | 2189 +++++++++++++++++++++++++++++++++++++ - 3 files changed, 2200 insertions(+) + drivers/mmc/host/bcm2835-sdhost.c | 2185 +++++++++++++++++++++++++++++++++++++ + 3 files changed, 2196 insertions(+) create mode 100644 drivers/mmc/host/bcm2835-sdhost.c diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig -index 36d00eba1df06946fb2bb9bb9dd1f0d847ef8158..97650d32a733251076726a0cecb4239906ff3814 100644 +index 405d62909dd6ac5351684c002414cc02135d98ba..205d836b52e3bbcf8956fec98072c6ee7804a403 100644 --- a/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig @@ -33,6 +33,16 @@ config MMC_BCM2835_PIO_DMA_BARRIER @@ -71165,7 +71552,7 @@ index 36d00eba1df06946fb2bb9bb9dd1f0d847ef8158..97650d32a733251076726a0cecb42399 tristate "ARM AMBA Multimedia Card Interface support" depends on ARM_AMBA diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile -index 3ba94f0af9b1793aa66d95d8fbd9bb661ca82778..8daaa94ab268495bbbf335ccad5a35e2d37b6fe5 100644 +index 5133b680970c93fbb9695f83296f0f70b4977240..adbc4586fec94aa8bd70f5ca3e2c90d123849a34 100644 --- a/drivers/mmc/host/Makefile +++ b/drivers/mmc/host/Makefile @@ -18,6 +18,7 @@ obj-$(CONFIG_MMC_SDHCI_S3C) += sdhci-s3c.o @@ -71178,10 +71565,10 @@ index 3ba94f0af9b1793aa66d95d8fbd9bb661ca82778..8daaa94ab268495bbbf335ccad5a35e2 obj-$(CONFIG_MMC_AU1X) += au1xmmc.o diff --git a/drivers/mmc/host/bcm2835-sdhost.c b/drivers/mmc/host/bcm2835-sdhost.c new file mode 100644 -index 0000000000000000000000000000000000000000..d7b6b5a4e31f7aaa76470d3a79ea78a643184855 +index 0000000000000000000000000000000000000000..23dea422182534e248435aeaee3ecb5da69c0d33 --- /dev/null +++ b/drivers/mmc/host/bcm2835-sdhost.c -@@ -0,0 +1,2189 @@ +@@ -0,0 +1,2185 @@ +/* + * BCM2835 SD host driver. + * @@ -71557,7 +71944,7 @@ index 0000000000000000000000000000000000000000..d7b6b5a4e31f7aaa76470d3a79ea78a6 + pr_info("%s: SDRSP2 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDRSP2)); -+ pr_err("%s: SDRSP3 0x%08x\n", ++ pr_info("%s: SDRSP3 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDRSP3)); + pr_info("%s: SDHSTS 0x%08x\n", @@ -71999,7 +72386,7 @@ index 0000000000000000000000000000000000000000..d7b6b5a4e31f7aaa76470d3a79ea78a6 + if (sg_is_last(sg)) { + BUG_ON(sg->length < len); + sg->length -= len; -+ host->drain_page = (struct page *)sg->page_link; ++ host->drain_page = sg_page(sg); + host->drain_offset = sg->offset + sg->length; + } + } @@ -72367,9 +72754,8 @@ index 0000000000000000000000000000000000000000..d7b6b5a4e31f7aaa76470d3a79ea78a6 + retries = 1; // We've already waited long enough this time + } + -+ retries = host->cmd_quick_poll_retries; + for (sdcmd = bcm2835_sdhost_read(host, SDCMD); -+ (sdcmd & SDCMD_NEW_FLAG) && !(sdcmd & SDCMD_FAIL_FLAG) && retries; ++ (sdcmd & SDCMD_NEW_FLAG) && retries; + retries--) { + cpu_relax(); + sdcmd = bcm2835_sdhost_read(host, SDCMD); @@ -72392,8 +72778,7 @@ index 0000000000000000000000000000000000000000..d7b6b5a4e31f7aaa76470d3a79ea78a6 + usleep_range(1, 10); + spin_lock_irqsave(&host->lock, *irq_flags); + sdcmd = bcm2835_sdhost_read(host, SDCMD); -+ if (!(sdcmd & SDCMD_NEW_FLAG) || -+ (sdcmd & SDCMD_FAIL_FLAG)) ++ if (!(sdcmd & SDCMD_NEW_FLAG)) + break; + } + } @@ -73076,8 +73461,6 @@ index 0000000000000000000000000000000000000000..d7b6b5a4e31f7aaa76470d3a79ea78a6 + + mmc = host->mmc; + -+ bcm2835_sdhost_reset_internal(host); -+ + mmc->f_max = host->max_clk; + mmc->f_min = host->max_clk / SDCDIV_MAX_CDIV; + @@ -73372,10 +73755,10 @@ index 0000000000000000000000000000000000000000..d7b6b5a4e31f7aaa76470d3a79ea78a6 +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Phil Elwell"); -From c59e355fdd64889c528df665168fa4ccb216c1c8 Mon Sep 17 00:00:00 2001 +From 06e7b99225b70df708d47818e3f08f1a0fba0597 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 11 May 2016 12:50:33 +0100 -Subject: [PATCH 033/160] mmc: Add MMC_QUIRK_ERASE_BROKEN for some cards +Subject: [PATCH 041/132] mmc: Add MMC_QUIRK_ERASE_BROKEN for some cards Some SD cards have been found that corrupt data when small blocks are erased. Add a quirk to indicate that ERASE should not be used, @@ -73404,10 +73787,10 @@ Signed-off-by: Phil Elwell 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c -index c5472e3c923126097fd93f2abf31402a1717c228..c55094303b087eb944baf28d4023ab72a61206d5 100644 +index 2206d4477dbbdb5190906e277124580b600d71e0..8c3c361f24ea675cd3a85d9d2d0124f3793adcc9 100644 --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c -@@ -133,6 +133,13 @@ enum { +@@ -134,6 +134,13 @@ enum { module_param(perdev_minors, int, 0444); MODULE_PARM_DESC(perdev_minors, "Minors numbers to allocate per device"); @@ -73421,7 +73804,7 @@ index c5472e3c923126097fd93f2abf31402a1717c228..c55094303b087eb944baf28d4023ab72 static inline int mmc_blk_part_switch(struct mmc_card *card, struct mmc_blk_data *md); static int get_card_status(struct mmc_card *card, u32 *status, int retries); -@@ -2576,6 +2583,17 @@ static const struct mmc_fixup blk_fixups[] = +@@ -2572,6 +2579,17 @@ static const struct mmc_fixup blk_fixups[] = MMC_FIXUP("V10016", CID_MANFID_KINGSTON, CID_OEMID_ANY, add_quirk_mmc, MMC_QUIRK_TRIM_BROKEN), @@ -73439,7 +73822,7 @@ index c5472e3c923126097fd93f2abf31402a1717c228..c55094303b087eb944baf28d4023ab72 END_FIXUP }; -@@ -2583,6 +2601,7 @@ static int mmc_blk_probe(struct mmc_card *card) +@@ -2579,6 +2597,7 @@ static int mmc_blk_probe(struct mmc_card *card) { struct mmc_blk_data *md, *part_md; char cap_str[10]; @@ -73447,7 +73830,7 @@ index c5472e3c923126097fd93f2abf31402a1717c228..c55094303b087eb944baf28d4023ab72 /* * Check that the card supports the command class(es) we need. -@@ -2590,7 +2609,16 @@ static int mmc_blk_probe(struct mmc_card *card) +@@ -2586,7 +2605,16 @@ static int mmc_blk_probe(struct mmc_card *card) if (!(card->csd.cmdclass & CCC_BLOCK_READ)) return -ENODEV; @@ -73465,7 +73848,7 @@ index c5472e3c923126097fd93f2abf31402a1717c228..c55094303b087eb944baf28d4023ab72 md = mmc_blk_alloc(card); if (IS_ERR(md)) -@@ -2598,9 +2626,14 @@ static int mmc_blk_probe(struct mmc_card *card) +@@ -2594,9 +2622,14 @@ static int mmc_blk_probe(struct mmc_card *card) string_get_size((u64)get_capacity(md->disk), 512, STRING_UNITS_2, cap_str, sizeof(cap_str)); @@ -73483,10 +73866,10 @@ index c5472e3c923126097fd93f2abf31402a1717c228..c55094303b087eb944baf28d4023ab72 if (mmc_blk_alloc_parts(card, md)) goto out; diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c -index 8b4dfd45433b73c1ccf6fe4cd4f9ca3338546cff..376ca5e984f1d7e0a10bb6e90893cf81a331c8fa 100644 +index e55cde6d436dddae261c69ef36ca4de93eaa01ac..48e341b6ba6dde26605e7f9e8b9aa84c7ea268fa 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c -@@ -2260,7 +2260,8 @@ EXPORT_SYMBOL(mmc_erase); +@@ -2289,7 +2289,8 @@ EXPORT_SYMBOL(mmc_erase); int mmc_can_erase(struct mmc_card *card) { if ((card->host->caps & MMC_CAP_ERASE) && @@ -73497,11 +73880,11 @@ index 8b4dfd45433b73c1ccf6fe4cd4f9ca3338546cff..376ca5e984f1d7e0a10bb6e90893cf81 return 0; } diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h -index eb0151bac50c1fd796f479d017bc3c3d7017c9e9..fa4e6454456747f02a10621f4f4da3ac1a5be2c1 100644 +index d8673ca968ba2d65fb3da39680583ca5152641e4..510c3872929b3267fb6665bb69d26f5aca740a28 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h -@@ -281,6 +281,9 @@ struct mmc_card { - #define MMC_QUIRK_TRIM_BROKEN (1<<12) /* Skip trim */ +@@ -283,6 +283,9 @@ struct mmc_card { + #define MMC_QUIRK_BROKEN_HPI (1<<13) /* Disable broken HPI support */ +#define MMC_QUIRK_ERASE_BROKEN (1<<31) /* Skip erase */ @@ -73511,10 +73894,10 @@ index eb0151bac50c1fd796f479d017bc3c3d7017c9e9..fa4e6454456747f02a10621f4f4da3ac unsigned int erase_shift; /* if erase unit is power 2 */ unsigned int pref_erase; /* in sectors */ -From aecc64caf2f7a4c8993f4efe6983e3d83b9da8f3 Mon Sep 17 00:00:00 2001 +From f687bd2ac3d0f168d1603d2dce96e1c67ad00a82 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:31:47 +0100 -Subject: [PATCH 034/160] cma: Add vc_cma driver to enable use of CMA +Subject: [PATCH 042/132] cma: Add vc_cma driver to enable use of CMA MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -73546,7 +73929,7 @@ Signed-off-by: Noralf Trønnes create mode 100644 include/linux/broadcom/vc_cma.h diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig -index 601f64fcc8908bad887a2f3fd70cd23fdf34ad1c..a23a93cfa57f01f37777f42fc241f62958fdf1c1 100644 +index dcc09739a54ef860343ac2fca5acf59724ca60e2..6d518c7635ae128f4554945dd3ffd351f9d325bf 100644 --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig @@ -4,6 +4,8 @@ @@ -73559,13 +73942,13 @@ index 601f64fcc8908bad887a2f3fd70cd23fdf34ad1c..a23a93cfa57f01f37777f42fc241f629 config DEVMEM diff --git a/drivers/char/Makefile b/drivers/char/Makefile -index d8a7579300d2df1112446c3a69a29713fd2af163..9d8662e2ccc637cabb56e31c936ca23bcc15e120 100644 +index 6e6c244a66a02c4efd57229b0f31d331377bbc55..67c40b8f2ff25f423cb74b64de9afa6f32479aed 100644 --- a/drivers/char/Makefile +++ b/drivers/char/Makefile @@ -60,3 +60,4 @@ 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 +obj-$(CONFIG_BRCM_CHAR_DRIVERS) += broadcom/ diff --git a/drivers/char/broadcom/Kconfig b/drivers/char/broadcom/Kconfig new file mode 100644 @@ -74857,10 +75240,10 @@ index 0000000000000000000000000000000000000000..be2819d5d41f9d5ed65daf8eedb94c9e + +#endif /* VC_CMA_H */ -From e0ce5ad0ca8eb362d2dd5dd4591361b788e6bb4c Mon Sep 17 00:00:00 2001 +From fd27fd1ac90261925dad77c00c3f901f51ab8abd Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 26 Mar 2012 22:15:50 +0100 -Subject: [PATCH 035/160] bcm2708: alsa sound driver +Subject: [PATCH 043/132] bcm2708: alsa sound driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -74905,16 +75288,25 @@ synchronization within the control callbacks. We most likely need to ensure this manually, so add locking around all access to shared mutable data. In particular, bcm2835_audio_set_ctls() should probably always be called under our own audio lock. + +snd-bcm2835: Don't allow responses from VC to be interrupted by user signals + +There should always be a response, and retry after a signal interruption is not handled, so don't report +we are interruptible. + +See: https://github.com/raspberrypi/linux/issues/1560 + +snd-bcm2835: Use bcm2835_hw params in preallocate --- sound/arm/Kconfig | 8 + sound/arm/Makefile | 5 + - sound/arm/bcm2835-ctl.c | 350 ++++++++++++++ - sound/arm/bcm2835-pcm.c | 561 +++++++++++++++++++++++ - sound/arm/bcm2835-vchiq.c | 902 +++++++++++++++++++++++++++++++++++++ + sound/arm/bcm2835-ctl.c | 350 +++++++++++++++ + sound/arm/bcm2835-pcm.c | 563 +++++++++++++++++++++++ + sound/arm/bcm2835-vchiq.c | 889 +++++++++++++++++++++++++++++++++++++ sound/arm/bcm2835.c | 511 +++++++++++++++++++++ sound/arm/bcm2835.h | 167 +++++++ sound/arm/vc_vchi_audioserv_defs.h | 116 +++++ - 8 files changed, 2620 insertions(+) + 8 files changed, 2609 insertions(+) create mode 100755 sound/arm/bcm2835-ctl.c create mode 100755 sound/arm/bcm2835-pcm.c create mode 100755 sound/arm/bcm2835-vchiq.c @@ -74923,10 +75315,10 @@ probably always be called under our own audio lock. create mode 100644 sound/arm/vc_vchi_audioserv_defs.h diff --git a/sound/arm/Kconfig b/sound/arm/Kconfig -index e0406211716b003daae37efbc8cdfd73213b31f3..7746e5d28d49f2ea9161546b35ae278a718101b5 100644 +index 65171f6657a2984ccc14ce907a4c7c87d77d196b..8883c2f3a3269742e2bf6fc995643fb282f3509a 100644 --- a/sound/arm/Kconfig +++ b/sound/arm/Kconfig -@@ -40,5 +40,13 @@ config SND_PXA2XX_AC97 +@@ -32,6 +32,14 @@ config SND_PXA2XX_AC97 Say Y or M if you want to support any AC97 codec attached to the PXA2xx AC97 interface. @@ -74940,6 +75332,7 @@ index e0406211716b003daae37efbc8cdfd73213b31f3..7746e5d28d49f2ea9161546b35ae278a + endif # SND_ARM + config SND_PXA2XX_LIB diff --git a/sound/arm/Makefile b/sound/arm/Makefile index 8c0c851d464109819beb296c2624bbec7af131e9..6796d7f5c7803ccfdaadbe56b2520c5454678686 100644 --- a/sound/arm/Makefile @@ -75311,10 +75704,10 @@ index 0000000000000000000000000000000000000000..75dc3224be7ce8353378e9676ad2c684 +} diff --git a/sound/arm/bcm2835-pcm.c b/sound/arm/bcm2835-pcm.c new file mode 100755 -index 0000000000000000000000000000000000000000..d2de13cbd76ed16634f27c0843474825671a28eb +index 0000000000000000000000000000000000000000..71b128924affac2b7a01d1169e43d437bb1d0c1a --- /dev/null +++ b/sound/arm/bcm2835-pcm.c -@@ -0,0 +1,561 @@ +@@ -0,0 +1,563 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* @@ -75835,9 +76228,9 @@ index 0000000000000000000000000000000000000000..d2de13cbd76ed16634f27c0843474825 + /* pre-allocation of buffers */ + /* NOTE: this may fail */ + snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, -+ snd_dma_continuous_data -+ (GFP_KERNEL), 64 * 1024, -+ 64 * 1024); ++ snd_dma_continuous_data (GFP_KERNEL), ++ snd_bcm2835_playback_hw.buffer_bytes_max, snd_bcm2835_playback_hw.buffer_bytes_max); ++ + +out: + mutex_unlock(&chip->audio_mutex); @@ -75867,9 +76260,11 @@ index 0000000000000000000000000000000000000000..d2de13cbd76ed16634f27c0843474825 + snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, + &snd_bcm2835_playback_spdif_ops); + ++ /* pre-allocation of buffers */ ++ /* NOTE: this may fail */ + snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, + snd_dma_continuous_data (GFP_KERNEL), -+ 64 * 1024, 64 * 1024); ++ snd_bcm2835_playback_spdif_hw.buffer_bytes_max, snd_bcm2835_playback_spdif_hw.buffer_bytes_max); +out: + mutex_unlock(&chip->audio_mutex); + audio_info(" .. OUT\n"); @@ -75878,10 +76273,10 @@ index 0000000000000000000000000000000000000000..d2de13cbd76ed16634f27c0843474825 +} diff --git a/sound/arm/bcm2835-vchiq.c b/sound/arm/bcm2835-vchiq.c new file mode 100755 -index 0000000000000000000000000000000000000000..3de30945d8155b90d244734881a7caa81930fa7c +index 0000000000000000000000000000000000000000..7ee436ca9fa2903d41d1bdd8f8f0774025d22ae0 --- /dev/null +++ b/sound/arm/bcm2835-vchiq.c -@@ -0,0 +1,902 @@ +@@ -0,0 +1,889 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* @@ -76395,12 +76790,7 @@ index 0000000000000000000000000000000000000000..3de30945d8155b90d244734881a7caa8 + } + + /* We are expecting a reply from the videocore */ -+ ret = wait_for_completion_interruptible(&instance->msg_avail_comp); -+ if (ret) { -+ LOG_DBG("%s: failed on waiting for event (status=%d)\n", -+ __func__, success); -+ goto unlock; -+ } ++ wait_for_completion(&instance->msg_avail_comp); + + if (instance->result != 0) { + LOG_ERR("%s: result=%d\n", __func__, instance->result); @@ -76499,12 +76889,7 @@ index 0000000000000000000000000000000000000000..3de30945d8155b90d244734881a7caa8 + } + + /* We are expecting a reply from the videocore */ -+ ret = wait_for_completion_interruptible(&instance->msg_avail_comp); -+ if (ret) { -+ LOG_DBG("%s: failed on waiting for event (status=%d)\n", -+ __func__, success); -+ goto unlock; -+ } ++ wait_for_completion(&instance->msg_avail_comp); + + if (instance->result != 0) { + LOG_ERR("%s: result=%d", __func__, instance->result); @@ -76645,14 +77030,11 @@ index 0000000000000000000000000000000000000000..3de30945d8155b90d244734881a7caa8 + goto unlock; + } + -+ ret = wait_for_completion_interruptible(&instance->msg_avail_comp); -+ if (ret) { -+ LOG_DBG("%s: failed on waiting for event (status=%d)\n", -+ __func__, success); -+ goto unlock; -+ } ++ /* We are expecting a reply from the videocore */ ++ wait_for_completion(&instance->msg_avail_comp); ++ + if (instance->result != 0) { -+ LOG_ERR("%s: failed result (status=%d)\n", ++ LOG_ERR("%s: failed result (result=%d)\n", + __func__, instance->result); + + ret = -1; @@ -77597,10 +77979,10 @@ index 0000000000000000000000000000000000000000..af3e6eb690113fc32ce9e06bd2f0f294 + +#endif // _VC_AUDIO_DEFS_H_ -From 595fee52bf068a703fdc3c4a517158d4b56c30b7 Mon Sep 17 00:00:00 2001 +From 84e1f14df19a2e7ee78949943a6aeca5b3cb3e95 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 2 Jul 2013 23:42:01 +0100 -Subject: [PATCH 036/160] bcm2708 vchiq driver +Subject: [PATCH 044/132] bcm2708 vchiq driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -77913,10 +78295,10 @@ index 311b9f26fab7dd770bdcd684c7691442b0872d55..9a638f528fcebc9206419a2cc68f3c98 /* * Watchdog diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig -index a216b46677429402168c587c638cc1d710632960..90af750e589982a5dcd854f54e8270d935ea6768 100644 +index d002528289667732e9032f68aa0dba6624abfd9c..dc9a6ae02c2aebd934cb5ff66c7db9eaccb4c0d2 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig -@@ -812,6 +812,7 @@ source "drivers/misc/lis3lv02d/Kconfig" +@@ -802,6 +802,7 @@ source "drivers/misc/lis3lv02d/Kconfig" source "drivers/misc/altera-stapl/Kconfig" source "drivers/misc/mei/Kconfig" source "drivers/misc/vmw_vmci/Kconfig" @@ -77925,10 +78307,10 @@ index a216b46677429402168c587c638cc1d710632960..90af750e589982a5dcd854f54e8270d9 source "drivers/misc/genwqe/Kconfig" source "drivers/misc/echo/Kconfig" diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile -index b2fb6dbffcef0c4999439287b3e1c1a10bdcf264..1a58cf720b9a162ac654b7a8dc21855363f34136 100644 +index fb32516ddfe2e4f8112beee9e831bcc4eb729667..bdf0f5fe7be52b16e12e0bbc79ebfe58a084794d 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile -@@ -51,6 +51,7 @@ obj-$(CONFIG_INTEL_MEI) += mei/ +@@ -50,6 +50,7 @@ obj-$(CONFIG_INTEL_MEI) += mei/ obj-$(CONFIG_VMWARE_VMCI) += vmw_vmci/ obj-$(CONFIG_LATTICE_ECP3_CONFIG) += lattice-ecp3-config.o obj-$(CONFIG_SRAM) += sram.o @@ -90965,10 +91347,10 @@ index 0000000000000000000000000000000000000000..b6bfa21155e431e93bfb2c149d324371 + return vchiq_build_time; +} -From 094dcdbec38f99068b7ee0a5cff6e44301e8c1a0 Mon Sep 17 00:00:00 2001 +From edfaae0f3da398d23ac31dc6fde41b6411c8b89c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 17 Jun 2015 16:07:06 +0100 -Subject: [PATCH 037/160] vc_mem: Add vc_mem driver +Subject: [PATCH 045/132] vc_mem: Add vc_mem driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -91973,10 +92355,10 @@ index 0000000000000000000000000000000000000000..20a475377eb3078ea1ecaef2b24efc35 + +#endif /* _VC_MEM_H */ -From 451be32609d7c3568174a1bdf2177aba4fafbb53 Mon Sep 17 00:00:00 2001 +From 8c5804101002c1f58f24d978ae77abc9e61af245 Mon Sep 17 00:00:00 2001 From: Tim Gover Date: Tue, 22 Jul 2014 15:41:04 +0100 -Subject: [PATCH 038/160] vcsm: VideoCore shared memory service for BCM2835 +Subject: [PATCH 046/132] vcsm: VideoCore shared memory service for BCM2835 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -96394,10 +96776,10 @@ index 0000000000000000000000000000000000000000..334f36d0d697b047df2922b5f2db67f3 + +#endif /* __VMCS_SM_IOCTL_H__INCLUDED__ */ -From 20bab8314e4451630067ca9a6a3e4b1c9497b403 Mon Sep 17 00:00:00 2001 +From 721516601326d191675ed2b19c853579c868e8e0 Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Fri, 21 Aug 2015 23:14:48 +0100 -Subject: [PATCH 039/160] Add /dev/gpiomem device for rootless user GPIO access +Subject: [PATCH 047/132] Add /dev/gpiomem device for rootless user GPIO access Signed-off-by: Luke Wren @@ -96708,10 +97090,10 @@ index 0000000000000000000000000000000000000000..911f5b7393ed48ceed8751f06967ae64 +MODULE_DESCRIPTION("gpiomem driver for accessing GPIO from userspace"); +MODULE_AUTHOR("Luke Wren "); -From 6a7c565f7bf24ec6e269583d91bd175cbc2b0296 Mon Sep 17 00:00:00 2001 +From 1c1b4745deb8c8ef28ae58f5d0251945d0d9664d Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Sat, 5 Sep 2015 01:14:45 +0100 -Subject: [PATCH 040/160] Add SMI driver +Subject: [PATCH 048/132] Add SMI driver Signed-off-by: Luke Wren --- @@ -97243,7 +97625,7 @@ index 0000000000000000000000000000000000000000..d6efd92fdfe46df5cfe219d2123e0dff + "Character device driver for BCM2835's secondary memory interface"); +MODULE_AUTHOR("Luke Wren "); diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig -index 90af750e589982a5dcd854f54e8270d935ea6768..7011b2daec3df832eebf9c7f40f6cb3bc6191595 100644 +index dc9a6ae02c2aebd934cb5ff66c7db9eaccb4c0d2..cff8c3df50c4b13d40fd1143eb86a66756bc097c 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig @@ -10,6 +10,14 @@ config SENSORS_LIS3LV02D @@ -97262,7 +97644,7 @@ index 90af750e589982a5dcd854f54e8270d935ea6768..7011b2daec3df832eebf9c7f40f6cb3b tristate "Analog Devices Digital Potentiometers" depends on (I2C || SPI) && SYSFS diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile -index 1a58cf720b9a162ac654b7a8dc21855363f34136..28989fae581bbfd0bc87f1542d7f6b83e8c3c5cc 100644 +index bdf0f5fe7be52b16e12e0bbc79ebfe58a084794d..d31dd62a64dfb98f07d1cae048b31961600d79f9 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -9,6 +9,7 @@ obj-$(CONFIG_AD525X_DPOT_SPI) += ad525x_dpot-spi.o @@ -98662,10 +99044,183 @@ index 0000000000000000000000000000000000000000..ee3a75edfc033eeb0d90a687ffb68b10 + +#endif /* BCM2835_SMI_H */ -From 18d1090cc3805fbed23a3267d5a4c9c294d68f1c Mon Sep 17 00:00:00 2001 +From 49331b05243323f9bd40e5b78206ddda4afa8118 Mon Sep 17 00:00:00 2001 +From: Martin Sperl +Date: Tue, 26 Apr 2016 14:59:21 +0000 +Subject: [PATCH 049/132] MISC: bcm2835: smi: use clock manager and fix reload + issues + +Use clock manager instead of self-made clockmanager. + +Also fix some error paths that showd up during development +(especially missing release of dma resources on rmmod) + +Signed-off-by: Martin Sperl +--- + drivers/misc/bcm2835_smi.c | 86 +++++++++++++++------------------------------- + 1 file changed, 28 insertions(+), 58 deletions(-) + +diff --git a/drivers/misc/bcm2835_smi.c b/drivers/misc/bcm2835_smi.c +index 63a4ea08b9930a3a31a985f0a1d969b488ed49ec..1261540703127d1d63b9f3c87042c6e50d3fbec2 100644 +--- a/drivers/misc/bcm2835_smi.c ++++ b/drivers/misc/bcm2835_smi.c +@@ -34,6 +34,7 @@ + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + ++#include + #include + #include + #include +@@ -62,7 +63,7 @@ + struct bcm2835_smi_instance { + struct device *dev; + struct smi_settings settings; +- __iomem void *smi_regs_ptr, *cm_smi_regs_ptr; ++ __iomem void *smi_regs_ptr; + dma_addr_t smi_regs_busaddr; + + struct dma_chan *dma_chan; +@@ -72,8 +73,7 @@ struct bcm2835_smi_instance { + + struct scatterlist buffer_sgl; + +- int clock_source; +- int clock_divisor; ++ struct clk *clk; + + /* Sometimes we are called into in an atomic context (e.g. by + JFFS2 + MTD) so we can't use a mutex */ +@@ -82,42 +82,6 @@ struct bcm2835_smi_instance { + + /**************************************************************************** + * +-* SMI clock manager setup +-* +-***************************************************************************/ +- +-static inline void write_smi_cm_reg(struct bcm2835_smi_instance *inst, +- u32 val, unsigned reg) +-{ +- writel(CM_PWD | val, inst->cm_smi_regs_ptr + reg); +-} +- +-static inline u32 read_smi_cm_reg(struct bcm2835_smi_instance *inst, +- unsigned reg) +-{ +- return readl(inst->cm_smi_regs_ptr + reg); +-} +- +-static void smi_setup_clock(struct bcm2835_smi_instance *inst) +-{ +- dev_dbg(inst->dev, "Setting up clock..."); +- /* Disable SMI clock and wait for it to stop. */ +- write_smi_cm_reg(inst, 0, CM_SMI_CTL); +- while (read_smi_cm_reg(inst, CM_SMI_CTL) & CM_SMI_CTL_BUSY) +- ; +- +- write_smi_cm_reg(inst, (inst->clock_divisor << CM_SMI_DIV_DIVI_OFFS), +- CM_SMI_DIV); +- write_smi_cm_reg(inst, (inst->clock_source << CM_SMI_CTL_SRC_OFFS), +- CM_SMI_CTL); +- +- /* Enable the clock */ +- write_smi_cm_reg(inst, (inst->clock_source << CM_SMI_CTL_SRC_OFFS) | +- CM_SMI_CTL_ENAB, CM_SMI_CTL); +-} +- +-/**************************************************************************** +-* + * SMI peripheral setup + * + ***************************************************************************/ +@@ -894,42 +858,40 @@ static int bcm2835_smi_probe(struct platform_device *pdev) + struct device_node *node = dev->of_node; + struct resource *ioresource; + struct bcm2835_smi_instance *inst; ++ const __be32 *addr; + ++ /* We require device tree support */ ++ if (!node) ++ return -EINVAL; + /* Allocate buffers and instance data */ +- + inst = devm_kzalloc(dev, sizeof(struct bcm2835_smi_instance), + GFP_KERNEL); +- + if (!inst) + return -ENOMEM; + + inst->dev = dev; + spin_lock_init(&inst->transaction_lock); + +- /* We require device tree support */ +- if (!node) +- return -EINVAL; +- + ioresource = platform_get_resource(pdev, IORESOURCE_MEM, 0); + inst->smi_regs_ptr = devm_ioremap_resource(dev, ioresource); +- ioresource = platform_get_resource(pdev, IORESOURCE_MEM, 1); +- inst->cm_smi_regs_ptr = devm_ioremap_resource(dev, ioresource); +- inst->smi_regs_busaddr = be32_to_cpu( +- *of_get_address(node, 0, NULL, NULL)); +- of_property_read_u32(node, +- "brcm,smi-clock-source", +- &inst->clock_source); +- of_property_read_u32(node, +- "brcm,smi-clock-divisor", +- &inst->clock_divisor); ++ if (IS_ERR(inst->smi_regs_ptr)) { ++ err = PTR_ERR(inst->smi_regs_ptr); ++ goto err; ++ } ++ addr = of_get_address(node, 0, NULL, NULL); ++ inst->smi_regs_busaddr = be32_to_cpu(addr); + + err = bcm2835_smi_dma_setup(inst); + if (err) +- return err; ++ goto err; + +- /* Finally, do peripheral setup */ ++ /* request clock */ ++ inst->clk = devm_clk_get(dev, NULL); ++ if (!inst->clk) ++ goto err; ++ clk_prepare_enable(inst->clk); + +- smi_setup_clock(inst); ++ /* Finally, do peripheral setup */ + smi_setup_regs(inst); + + platform_set_drvdata(pdev, inst); +@@ -937,6 +899,9 @@ static int bcm2835_smi_probe(struct platform_device *pdev) + dev_info(inst->dev, "initialised"); + + return 0; ++err: ++ kfree(inst); ++ return err; + } + + /**************************************************************************** +@@ -950,6 +915,11 @@ static int bcm2835_smi_remove(struct platform_device *pdev) + struct bcm2835_smi_instance *inst = platform_get_drvdata(pdev); + struct device *dev = inst->dev; + ++ dmaengine_terminate_all(inst->dma_chan); ++ dma_release_channel(inst->dma_chan); ++ ++ clk_disable_unprepare(inst->clk); ++ + dev_info(dev, "SMI device removed - OK"); + return 0; + } + +From 4ed2dd5674f865427386e01ba475c7a944e530f1 Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Sat, 5 Sep 2015 01:16:10 +0100 -Subject: [PATCH 041/160] Add SMI NAND driver +Subject: [PATCH 050/132] Add SMI NAND driver Signed-off-by: Luke Wren --- @@ -98727,7 +99282,7 @@ index 0000000000000000000000000000000000000000..159544d6579070d376d146bd24a86653 +}; \ No newline at end of file diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig -index f05e0e9eb2f73e8b807d97fb30cf4638d07286d9..8c6954116637153776ab2e54ebabcba881ce88cf 100644 +index 21ff58099f3bfd5c042040d2ee7e4bbcbdb6a074..b6a0529b2c15f37983169e3429b67bedb71fb14e 100644 --- a/drivers/mtd/nand/Kconfig +++ b/drivers/mtd/nand/Kconfig @@ -41,6 +41,13 @@ config MTD_SM_COMMON @@ -98745,7 +99300,7 @@ index f05e0e9eb2f73e8b807d97fb30cf4638d07286d9..8c6954116637153776ab2e54ebabcba8 tristate diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile -index f55335373f7c5b755c4363574ed7abc211ec89c7..ea8d647d92ffb3b328e04a35a16430f62d534553 100644 +index cafde6f3d95761263d4c5af1395b11bfc000ca9b..d399ab9c92350596ac0970fb1a2a70fa3ac0094b 100644 --- a/drivers/mtd/nand/Makefile +++ b/drivers/mtd/nand/Makefile @@ -14,6 +14,7 @@ obj-$(CONFIG_MTD_NAND_DENALI) += denali.o @@ -99030,10 +99585,10 @@ index 0000000000000000000000000000000000000000..02adda6da18bd0ba9ab19a104975b79d + ("Driver for NAND chips using Broadcom Secondary Memory Interface"); +MODULE_AUTHOR("Luke Wren "); -From 1ccc9ef25c3dcc1b60a908f770d0ad94c5d5db6c Mon Sep 17 00:00:00 2001 +From a78ebca38932798450723efc61c7ef278f81ed0e Mon Sep 17 00:00:00 2001 From: Aron Szabo Date: Sat, 16 Jun 2012 12:15:55 +0200 -Subject: [PATCH 042/160] lirc: added support for RaspberryPi GPIO +Subject: [PATCH 051/132] lirc: added support for RaspberryPi GPIO lirc_rpi: Use read_current_timer to determine transmitter delay. Thanks to jjmz and others See: https://github.com/raspberrypi/linux/issues/525 @@ -99896,10 +100451,10 @@ index 0000000000000000000000000000000000000000..fb69624ccef00ddbdccf8256d6baf1b1 + +#endif -From 742d973b0060e88c152d8ec43eda3d5a29c04c16 Mon Sep 17 00:00:00 2001 +From 45af8be6c56f3fafdd315d36499041c3f330b3dc Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:49:20 +0100 -Subject: [PATCH 043/160] Add cpufreq driver +Subject: [PATCH 052/132] Add cpufreq driver Signed-off-by: popcornmix --- @@ -100161,10 +100716,10 @@ index 0000000000000000000000000000000000000000..3eb9e9326231b08e6ee95ad486485245 +module_init(bcm2835_cpufreq_module_init); +module_exit(bcm2835_cpufreq_module_exit); -From 2dbfb3a01d29c2e084801450b2c80a4d1d4e8f33 Mon Sep 17 00:00:00 2001 +From 309406e6c75697878ff031b395c3cf36364a239b Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 26 Mar 2013 19:24:24 +0000 -Subject: [PATCH 044/160] Added hwmon/thermal driver for reporting core +Subject: [PATCH 053/132] Added hwmon/thermal driver for reporting core temperature. Thanks Dorian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -100330,10 +100885,10 @@ index 0000000000000000000000000000000000000000..c63fb9f9d143e19612a18fe530c7b2b3 +MODULE_DESCRIPTION("Thermal driver for bcm2835 chip"); +MODULE_LICENSE("GPL"); -From aba1a502c5979ce6f8becdc418862518e0f730b5 Mon Sep 17 00:00:00 2001 +From 54c7d492dc0c915d738bca6398e89007909c9cc8 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 17 Jun 2015 15:44:08 +0100 -Subject: [PATCH 045/160] Add Chris Boot's i2c driver +Subject: [PATCH 054/132] Add Chris Boot's i2c driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -100416,15 +100971,28 @@ i2c-bcm2708: Remove non-DT support Signed-off-by: Noralf Trønnes Set the BSC_CLKT clock streching timeout to 35ms as per SMBus specs. + +Fixes i2c_bcm2708: Write to FIFO correctly - v2 (#1574) + +* i2c: fix i2c_bcm2708: Clear FIFO before sending data + +Make sure FIFO gets cleared before trying to send +data in case of a repeated start (COMBINED=Y). + +* i2c: fix i2c_bcm2708: Only write to FIFO when not full + +Check if FIFO can accept data before writing. +To avoid a peripheral read on the last iteration of a loop, +both bcm2708_bsc_fifo_fill and ~drain are changed as well. --- drivers/i2c/busses/Kconfig | 21 +- drivers/i2c/busses/Makefile | 2 + - drivers/i2c/busses/i2c-bcm2708.c | 508 +++++++++++++++++++++++++++++++++++++++ - 3 files changed, 530 insertions(+), 1 deletion(-) + drivers/i2c/busses/i2c-bcm2708.c | 512 +++++++++++++++++++++++++++++++++++++++ + 3 files changed, 534 insertions(+), 1 deletion(-) create mode 100644 drivers/i2c/busses/i2c-bcm2708.c diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig -index f167021b8c2178b8a9544bd7d750648c641f6c85..85e2de31c26cd03d5815fe397d47b461ad65359c 100644 +index 5c3993b261298ef3c9571e76307fe912548b9538..37f463232d6db91940763345600b095dbd8b5c58 100644 --- a/drivers/i2c/busses/Kconfig +++ b/drivers/i2c/busses/Kconfig @@ -8,6 +8,25 @@ menu "I2C Hardware Bus support" @@ -100453,7 +101021,7 @@ index f167021b8c2178b8a9544bd7d750648c641f6c85..85e2de31c26cd03d5815fe397d47b461 config I2C_ALI1535 tristate "ALI 1535" depends on PCI -@@ -365,7 +384,7 @@ config I2C_AXXIA +@@ -366,7 +385,7 @@ config I2C_AXXIA config I2C_BCM2835 tristate "Broadcom BCM2835 I2C controller" @@ -100477,10 +101045,10 @@ index 37f2819b4560b0e0947b74c214f5c5a0952bc0ae..e309579e691599031f25bd9b9b364307 diff --git a/drivers/i2c/busses/i2c-bcm2708.c b/drivers/i2c/busses/i2c-bcm2708.c new file mode 100644 -index 0000000000000000000000000000000000000000..c9b8e5cb1702e4b20e45214d81a7a40ac709220f +index 0000000000000000000000000000000000000000..962f2e5c7455d91bf32925d785f5f16b83b049f8 --- /dev/null +++ b/drivers/i2c/busses/i2c-bcm2708.c -@@ -0,0 +1,508 @@ +@@ -0,0 +1,512 @@ +/* + * Driver for Broadcom BCM2708 BSC Controllers + * @@ -100598,13 +101166,13 @@ index 0000000000000000000000000000000000000000..c9b8e5cb1702e4b20e45214d81a7a40a + +static inline void bcm2708_bsc_fifo_drain(struct bcm2708_i2c *bi) +{ -+ while ((bcm2708_rd(bi, BSC_S) & BSC_S_RXD) && (bi->pos < bi->msg->len)) ++ while ((bi->pos < bi->msg->len) && (bcm2708_rd(bi, BSC_S) & BSC_S_RXD)) + bi->msg->buf[bi->pos++] = bcm2708_rd(bi, BSC_FIFO); +} + +static inline void bcm2708_bsc_fifo_fill(struct bcm2708_i2c *bi) +{ -+ while ((bcm2708_rd(bi, BSC_S) & BSC_S_TXD) && (bi->pos < bi->msg->len)) ++ while ((bi->pos < bi->msg->len) && (bcm2708_rd(bi, BSC_S) & BSC_S_TXD)) + bcm2708_wr(bi, BSC_FIFO, bi->msg->buf[bi->pos++]); +} + @@ -100638,6 +101206,10 @@ index 0000000000000000000000000000000000000000..c9b8e5cb1702e4b20e45214d81a7a40a + if ( (bi->nmsgs > 1) && + !(bi->msg[0].flags & I2C_M_RD) && (bi->msg[1].flags & I2C_M_RD) && + (bi->msg[0].addr == bi->msg[1].addr) && (bi->msg[0].len <= 16)) { ++ ++ /* Clear FIFO */ ++ bcm2708_wr(bi, BSC_C, BSC_C_CLEAR_1); ++ + /* Fill FIFO with entire write message (16 byte FIFO) */ + while (bi->pos < bi->msg->len) { + bcm2708_wr(bi, BSC_FIFO, bi->msg->buf[bi->pos++]); @@ -100990,10 +101562,10 @@ index 0000000000000000000000000000000000000000..c9b8e5cb1702e4b20e45214d81a7a40a +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" DRV_NAME); -From 907d2d05095364f19a1ba1a28e3f7bb9a8e20856 Mon Sep 17 00:00:00 2001 +From dca6c4fcfcf71265e5f8ec2e98dec0acdbce63d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 26 Jun 2015 14:27:06 +0200 -Subject: [PATCH 046/160] char: broadcom: Add vcio module +Subject: [PATCH 055/132] char: broadcom: Add vcio module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -101219,10 +101791,10 @@ index 0000000000000000000000000000000000000000..c19bc2075c77879563ef5e59038b5a14 +MODULE_DESCRIPTION("Mailbox userspace access"); +MODULE_LICENSE("GPL"); -From 5be66a0a29e985e22e81604a411b4df80477fec1 Mon Sep 17 00:00:00 2001 +From a57044bdab979cdf3f08636caf2f5e528a8c4a3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 26 Jun 2015 14:25:01 +0200 -Subject: [PATCH 047/160] firmware: bcm2835: Support ARCH_BCM270x +Subject: [PATCH 056/132] firmware: bcm2835: Support ARCH_BCM270x MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -101328,10 +101900,10 @@ index dd506cd3a5b874f9e1acd07efb8cd151bb6145d1..b980d531b35b9981a88356ef1c8a7b86 MODULE_AUTHOR("Eric Anholt "); MODULE_DESCRIPTION("Raspberry Pi firmware driver"); -From f940e244201e78de2c51bb3bbe517f63ad78db16 Mon Sep 17 00:00:00 2001 +From a9fc5095ee4589dadaf3e8f7b2f4a5c6c1f219e9 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Wed, 30 Jan 2013 12:45:18 +0000 -Subject: [PATCH 048/160] bcm2835: add v4l2 camera device +Subject: [PATCH 057/132] bcm2835: add v4l2 camera device - Supports raw YUV capture, preview, JPEG and H264. - Uses videobuf2 for data transfer, using dma_buf. @@ -101813,7 +102385,7 @@ index 0000000000000000000000000000000000000000..c585a8fadf91c5a04453e442fc29ed89 + +$ v4l2-ctl --list-formats diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig -index 84e041c0a70e5b2634282f8605f7473efce3ac48..895c7182799dbccebb88e6545be8c5b281fe8518 100644 +index 552b635cfce7f02b4f3e65d1d641e9e39903ec43..d22e5d5dd939451aa62988f69c6a80ae545011d4 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig @@ -11,6 +11,8 @@ menuconfig V4L_PLATFORM_DRIVERS @@ -101826,7 +102398,7 @@ index 84e041c0a70e5b2634282f8605f7473efce3ac48..895c7182799dbccebb88e6545be8c5b2 config VIDEO_VIA_CAMERA diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile -index bbb7bd1eb268d731608aba05305859958eb7b82c..6fe5b3fbceae92ec77ee20c1283418889dcd3d64 100644 +index 21771c1a13fbcf9460900826ae2ecb8e2dbaa469..a7a0df8ab6e7672c2e44714a95c95790f55abeb4 100644 --- a/drivers/media/platform/Makefile +++ b/drivers/media/platform/Makefile @@ -2,6 +2,8 @@ @@ -109063,10 +109635,10 @@ index 0000000000000000000000000000000000000000..9d1d11e4a53e510c04a416d92d195a7d + +#endif /* MMAL_VCHIQ_H */ -From f4c514edf4c8161f785993826884a3ea20e601bf Mon Sep 17 00:00:00 2001 +From f8908aab2504c30c88f484f08c5bcae34c10187d Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 11 May 2015 09:00:42 +0100 -Subject: [PATCH 049/160] scripts: Add mkknlimg and knlinfo scripts from tools +Subject: [PATCH 058/132] scripts: Add mkknlimg and knlinfo scripts from tools repo The Raspberry Pi firmware looks for a trailer on the kernel image to @@ -109578,10 +110150,10 @@ index 0000000000000000000000000000000000000000..78c5845d2f01deb04b477327d83fa606 + return $trailer; +} -From 2341070196390d83cc59c720d14a1ea718b21548 Mon Sep 17 00:00:00 2001 +From 09c70feaf9e84efae6c7a2691179bb0bdf73ea75 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 10 Aug 2015 09:49:15 +0100 -Subject: [PATCH 050/160] scripts/dtc: Update to upstream version 1.4.1 +Subject: [PATCH 059/132] scripts/dtc: Update to upstream version 1.4.1 Includes the new localfixups format. @@ -112432,10 +113004,10 @@ index ad9b05ae698b0495ecbda42ffcf4743555313a27..2595dfda020fd9e03f0beff5006f229d -#define DTC_VERSION "DTC 1.4.1-g53bf130b" +#define DTC_VERSION "DTC 1.4.1-g25efc119" -From dc1d8bc984a5b7519ea278d974c12512c12f4fe0 Mon Sep 17 00:00:00 2001 +From 9be0bede884724e4e2f1aca40eb1f66c4467a60b Mon Sep 17 00:00:00 2001 From: notro Date: Wed, 9 Jul 2014 14:46:08 +0200 -Subject: [PATCH 051/160] BCM2708: Add core Device Tree support +Subject: [PATCH 060/132] BCM2708: Add core Device Tree support Add the bare minimum needed to boot BCM2708 from a Device Tree. @@ -112501,30 +113073,34 @@ squash: Add cprman to dt BCM270X_DT: Use clk_core for I2C interfaces --- - arch/arm/boot/dts/Makefile | 31 + - arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 164 +++ - arch/arm/boot/dts/bcm2708-rpi-b.dts | 154 +++ - arch/arm/boot/dts/bcm2708-rpi-cm.dts | 102 ++ - arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 52 + + arch/arm/boot/dts/Makefile | 32 + + arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 162 +++ + arch/arm/boot/dts/bcm2708-rpi-b.dts | 152 +++ + arch/arm/boot/dts/bcm2708-rpi-cm.dts | 106 ++ + arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 50 + arch/arm/boot/dts/bcm2708.dtsi | 40 + - arch/arm/boot/dts/bcm2708_common.dtsi | 471 ++++++++ - arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 164 +++ + arch/arm/boot/dts/bcm2708_common.dtsi | 436 +++++++ + arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 162 +++ arch/arm/boot/dts/bcm2709.dtsi | 102 ++ - arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 211 ++++ - arch/arm/boot/dts/bcm2710.dtsi | 102 ++ + arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 213 ++++ + arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 162 +++ + arch/arm/boot/dts/bcm2710.dtsi | 165 +++ arch/arm/boot/dts/bcm2835-rpi-cm.dts | 93 ++ arch/arm/boot/dts/bcm2835-rpi-cm.dtsi | 30 + - arch/arm/boot/dts/overlays/Makefile | 105 ++ - arch/arm/boot/dts/overlays/README | 1223 ++++++++++++++++++++ + arch/arm/boot/dts/overlays/Makefile | 111 ++ + arch/arm/boot/dts/overlays/README | 1302 ++++++++++++++++++++ .../arm/boot/dts/overlays/adau1977-adc-overlay.dts | 53 + arch/arm/boot/dts/overlays/ads1015-overlay.dts | 98 ++ arch/arm/boot/dts/overlays/ads7846-overlay.dts | 89 ++ .../dts/overlays/akkordion-iqdacplus-overlay.dts | 46 + + .../allo-piano-dac-pcm512x-audio-overlay.dts | 54 + arch/arm/boot/dts/overlays/at86rf233-overlay.dts | 57 + .../audioinjector-wm8731-audio-overlay.dts | 39 + + arch/arm/boot/dts/overlays/audremap-overlay.dts | 19 + .../dts/overlays/bmp085_i2c-sensor-overlay.dts | 23 + arch/arm/boot/dts/overlays/dht11-overlay.dts | 39 + .../boot/dts/overlays/dionaudio-loco-overlay.dts | 39 + + arch/arm/boot/dts/overlays/dpi18-overlay.dts | 31 + arch/arm/boot/dts/overlays/dpi24-overlay.dts | 31 + arch/arm/boot/dts/overlays/dwc-otg-overlay.dts | 20 + arch/arm/boot/dts/overlays/dwc2-overlay.dts | 29 + @@ -112535,6 +113111,7 @@ BCM270X_DT: Use clk_core for I2C interfaces .../boot/dts/overlays/hifiberry-dac-overlay.dts | 34 + .../dts/overlays/hifiberry-dacplus-overlay.dts | 56 + .../boot/dts/overlays/hifiberry-digi-overlay.dts | 39 + + .../dts/overlays/hifiberry-digi-pro-overlay.dts | 41 + arch/arm/boot/dts/overlays/hy28a-overlay.dts | 93 ++ arch/arm/boot/dts/overlays/hy28b-overlay.dts | 148 +++ arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts | 43 + @@ -112551,6 +113128,7 @@ BCM270X_DT: Use clk_core for I2C interfaces .../boot/dts/overlays/justboom-digi-overlay.dts | 39 + arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts | 57 + arch/arm/boot/dts/overlays/mcp23017-overlay.dts | 54 + + arch/arm/boot/dts/overlays/mcp23s17-overlay.dts | 732 +++++++++++ .../arm/boot/dts/overlays/mcp2515-can0-overlay.dts | 73 ++ .../arm/boot/dts/overlays/mcp2515-can1-overlay.dts | 73 ++ arch/arm/boot/dts/overlays/mmc-overlay.dts | 38 + @@ -112563,9 +113141,9 @@ BCM270X_DT: Use clk_core for I2C interfaces arch/arm/boot/dts/overlays/pitft22-overlay.dts | 69 ++ .../dts/overlays/pitft28-capacitive-overlay.dts | 91 ++ .../dts/overlays/pitft28-resistive-overlay.dts | 121 ++ - arch/arm/boot/dts/overlays/pps-gpio-overlay.dts | 34 + - arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts | 53 + - arch/arm/boot/dts/overlays/pwm-overlay.dts | 49 + + arch/arm/boot/dts/overlays/pps-gpio-overlay.dts | 35 + + arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts | 47 + + arch/arm/boot/dts/overlays/pwm-overlay.dts | 43 + arch/arm/boot/dts/overlays/qca7000-overlay.dts | 52 + arch/arm/boot/dts/overlays/raspidac3-overlay.dts | 45 + .../boot/dts/overlays/rpi-backlight-overlay.dts | 21 + @@ -112575,6 +113153,7 @@ BCM270X_DT: Use clk_core for I2C interfaces arch/arm/boot/dts/overlays/rpi-proto-overlay.dts | 39 + arch/arm/boot/dts/overlays/rpi-sense-overlay.dts | 47 + .../overlays/rra-digidac1-wm8741-audio-overlay.dts | 81 ++ + .../boot/dts/overlays/sc16is750-i2c-overlay.dts | 37 + .../boot/dts/overlays/sc16is752-spi1-overlay.dts | 61 + arch/arm/boot/dts/overlays/sdhost-overlay.dts | 32 + arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts | 36 + @@ -112594,12 +113173,12 @@ BCM270X_DT: Use clk_core for I2C interfaces arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts | 81 ++ arch/arm/boot/dts/overlays/tinylcd35-overlay.dts | 224 ++++ arch/arm/boot/dts/overlays/uart1-overlay.dts | 38 + - arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts | 136 +++ + arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts | 136 ++ arch/arm/boot/dts/overlays/vga666-overlay.dts | 30 + arch/arm/boot/dts/overlays/w1-gpio-overlay.dts | 39 + .../boot/dts/overlays/w1-gpio-pullup-overlay.dts | 41 + arch/arm/boot/dts/overlays/wittypi-overlay.dts | 44 + - 98 files changed, 7729 insertions(+) + 105 files changed, 8906 insertions(+) create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts create mode 100644 arch/arm/boot/dts/bcm2708-rpi-b.dts create mode 100755 arch/arm/boot/dts/bcm2708-rpi-cm.dts @@ -112609,6 +113188,7 @@ BCM270X_DT: Use clk_core for I2C interfaces create mode 100644 arch/arm/boot/dts/bcm2709-rpi-2-b.dts create mode 100644 arch/arm/boot/dts/bcm2709.dtsi create mode 100644 arch/arm/boot/dts/bcm2710-rpi-3-b.dts + create mode 100644 arch/arm/boot/dts/bcm2710-rpi-cm3.dts create mode 100644 arch/arm/boot/dts/bcm2710.dtsi create mode 100644 arch/arm/boot/dts/bcm2835-rpi-cm.dts create mode 100644 arch/arm/boot/dts/bcm2835-rpi-cm.dtsi @@ -112618,11 +113198,14 @@ BCM270X_DT: Use clk_core for I2C interfaces create mode 100644 arch/arm/boot/dts/overlays/ads1015-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/ads7846-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/at86rf233-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/audremap-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/dht11-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/dpi18-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/dpi24-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/dwc-otg-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/dwc2-overlay.dts @@ -112633,6 +113216,7 @@ BCM270X_DT: Use clk_core for I2C interfaces create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/hy28a-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/hy28b-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts @@ -112649,6 +113233,7 @@ BCM270X_DT: Use clk_core for I2C interfaces create mode 100644 arch/arm/boot/dts/overlays/justboom-digi-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/mcp23017-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/mcp23s17-overlay.dts create mode 100755 arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/mmc-overlay.dts @@ -112673,6 +113258,7 @@ BCM270X_DT: Use clk_core for I2C interfaces create mode 100644 arch/arm/boot/dts/overlays/rpi-proto-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/rpi-sense-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts + create mode 100644 arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/sdhost-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/sdio-1bit-overlay.dts @@ -112699,10 +113285,10 @@ BCM270X_DT: Use clk_core for I2C interfaces create mode 100644 arch/arm/boot/dts/overlays/wittypi-overlay.dts diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index 414b42710a366fc0f5708765d4ff0786e53a2b5b..93f2529ccbdfedb4b4e54898abf44911b47d2656 100644 +index faacd52370d24061e705d4e97785c254cf147f8c..71f794ecc710ac533731854bd95961a6a4175b64 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile -@@ -1,5 +1,26 @@ +@@ -1,5 +1,27 @@ ifeq ($(CONFIG_OF),y) +dtb-$(CONFIG_ARCH_BCM2708) += bcm2708-rpi-b.dtb @@ -112711,6 +113297,7 @@ index 414b42710a366fc0f5708765d4ff0786e53a2b5b..93f2529ccbdfedb4b4e54898abf44911 +dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-cm.dtb +dtb-$(CONFIG_ARCH_BCM2709) += bcm2709-rpi-2-b.dtb +dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-3-b.dtb ++dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-cm3.dtb + +# Raspberry Pi +ifeq ($(CONFIG_ARCH_BCM2708),y) @@ -112729,7 +113316,7 @@ index 414b42710a366fc0f5708765d4ff0786e53a2b5b..93f2529ccbdfedb4b4e54898abf44911 dtb-$(CONFIG_ARCH_ALPINE) += \ alpine-db.dtb dtb-$(CONFIG_MACH_ARTPEC6) += \ -@@ -892,10 +913,20 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \ +@@ -919,10 +941,20 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \ dtb-$(CONFIG_ARCH_ZX) += zx296702-ad1.dtb dtb-$(CONFIG_ARCH_ASPEED) += aspeed-bmc-opp-palmetto.dtb \ aspeed-ast2500-evb.dtb @@ -112752,10 +113339,10 @@ index 414b42710a366fc0f5708765d4ff0786e53a2b5b..93f2529ccbdfedb4b4e54898abf44911 +endif diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts new file mode 100644 -index 0000000000000000000000000000000000000000..db2705afa4e2229c961fe88bcae46233a4ce4542 +index 0000000000000000000000000000000000000000..6c16c325cd2887a42c42665273834618c1937918 --- /dev/null +++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts -@@ -0,0 +1,164 @@ +@@ -0,0 +1,162 @@ +/dts-v1/; + +#include "bcm2708.dtsi" @@ -112891,7 +113478,6 @@ index 0000000000000000000000000000000000000000..db2705afa4e2229c961fe88bcae46233 +/ { + __overrides__ { + uart0 = <&uart0>,"status"; -+ uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + uart1 = <&uart1>,"status"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; @@ -112901,7 +113487,6 @@ index 0000000000000000000000000000000000000000..db2705afa4e2229c961fe88bcae46233 + i2c0_baudrate = <&i2c0>,"clock-frequency:0"; + i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -+ core_freq = <&clk_core>,"clock-frequency:0"; + + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; @@ -112922,10 +113507,10 @@ index 0000000000000000000000000000000000000000..db2705afa4e2229c961fe88bcae46233 +}; diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts new file mode 100644 -index 0000000000000000000000000000000000000000..beae0371477cc41f27006ef3f1ef7268839177df +index 0000000000000000000000000000000000000000..7c132437671d43e76445a4bf1184cc9a316b0965 --- /dev/null +++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts -@@ -0,0 +1,154 @@ +@@ -0,0 +1,152 @@ +/dts-v1/; + +#include "bcm2708.dtsi" @@ -113055,7 +113640,6 @@ index 0000000000000000000000000000000000000000..beae0371477cc41f27006ef3f1ef7268 +/ { + __overrides__ { + uart0 = <&uart0>,"status"; -+ uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + uart1 = <&uart1>,"status"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; @@ -113065,7 +113649,6 @@ index 0000000000000000000000000000000000000000..beae0371477cc41f27006ef3f1ef7268 + i2c0_baudrate = <&i2c0>,"clock-frequency:0"; + i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -+ core_freq = <&clk_core>,"clock-frequency:0"; + + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; @@ -113082,10 +113665,10 @@ index 0000000000000000000000000000000000000000..beae0371477cc41f27006ef3f1ef7268 +}; diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dts b/arch/arm/boot/dts/bcm2708-rpi-cm.dts new file mode 100755 -index 0000000000000000000000000000000000000000..cd0e1acc22f8ded801f29d331570828e5582247b +index 0000000000000000000000000000000000000000..ce9f54ff7e4ce76ad25ad0a19cf2ad48ba9df01a --- /dev/null +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts -@@ -0,0 +1,102 @@ +@@ -0,0 +1,106 @@ +/dts-v1/; + +#include "bcm2708-rpi-cm.dtsi" @@ -113123,6 +113706,11 @@ index 0000000000000000000000000000000000000000..cd0e1acc22f8ded801f29d331570828e + brcm,pins = <18 19 20 21>; + brcm,function = <4>; /* alt0 */ + }; ++ ++ audio_pins: audio_pins { ++ brcm,pins; ++ brcm,function; ++ }; +}; + +&spi0 { @@ -113176,7 +113764,6 @@ index 0000000000000000000000000000000000000000..cd0e1acc22f8ded801f29d331570828e +/ { + __overrides__ { + uart0 = <&uart0>,"status"; -+ uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + uart1 = <&uart1>,"status"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; @@ -113190,10 +113777,10 @@ index 0000000000000000000000000000000000000000..cd0e1acc22f8ded801f29d331570828e +}; diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi new file mode 100644 -index 0000000000000000000000000000000000000000..90e330d1978da8624c042d52a38aa5d6d95d2377 +index 0000000000000000000000000000000000000000..d33d462b4090e4a4f967a37212918b9cf500bf76 --- /dev/null +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi -@@ -0,0 +1,52 @@ +@@ -0,0 +1,50 @@ +#include "bcm2708.dtsi" + +&gpio { @@ -113219,9 +113806,9 @@ index 0000000000000000000000000000000000000000..90e330d1978da8624c042d52a38aa5d6 +}; + + -+&mmc { ++&sdhost { + pinctrl-names = "default"; -+ pinctrl-0 = <&mmc_pins>; ++ pinctrl-0 = <&sdhost_pins>; + non-removable; + bus-width = <4>; + status = "okay"; @@ -113234,8 +113821,6 @@ index 0000000000000000000000000000000000000000..90e330d1978da8624c042d52a38aa5d6 + +/ { + __overrides__ { -+ core_freq = <&clk_core>,"clock-frequency:0"; -+ + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; + act_led_trigger = <&act_led>,"linux,default-trigger"; @@ -113294,10 +113879,10 @@ index 0000000000000000000000000000000000000000..f5a44cd4fef0ee221ed6ae1c43ca81da +}; diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi new file mode 100644 -index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa68f750043 +index 0000000000000000000000000000000000000000..6081b2aeb7ab1e1821506bcb93d36de13b5717ef --- /dev/null +++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -0,0 +1,471 @@ +@@ -0,0 +1,436 @@ +#include "dt-bindings/clock/bcm2835.h" +#include +#include "dt-bindings/power/raspberrypi-power.h" @@ -113385,7 +113970,11 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + }; + + intc: interrupt-controller@7e00b200 { ++#ifdef RPI364 ++ compatible = "brcm,bcm2835-armctrl-ic", "brcm,bcm2708-armctrl-ic"; ++#else + compatible = "brcm,bcm2708-armctrl-ic"; ++#endif + reg = <0x7e00b200 0x200>; + interrupt-controller; + #interrupt-cells = <2>; @@ -113413,7 +114002,6 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + * oscillator. + */ + clocks = <&clk_osc>; -+ status = "disabled"; + }; + + random: rng@7e104000 { @@ -113434,11 +114022,12 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + #interrupt-cells = <2>; + }; + -+ uart0: uart@7e201000 { -+ compatible = "arm,pl011", "arm,primecell"; ++ uart0: serial@7e201000 { ++ compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; + reg = <0x7e201000 0x1000>; + interrupts = <2 25>; -+ clocks = <&clk_uart0 &clk_apb_p>; ++ clocks = <&cprman BCM2835_CLOCK_UART>, ++ <&cprman BCM2835_CLOCK_VPU>; + clock-names = "uartclk","apb_pclk"; + arm,primecell-periphid = <0x00241011>; // For an explanation, see + // https://github.com/raspberrypi/linux/commit/13731d862cf5219216533a3b0de052cee4cc5038 @@ -113449,7 +114038,7 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + compatible = "brcm,bcm2835-sdhost"; + reg = <0x7e202000 0x100>; + interrupts = <2 24>; -+ clocks = <&clk_core>; ++ clocks = <&cprman BCM2835_CLOCK_VPU>; + dmas = <&dma 13>; + dma-names = "rx-tx"; + brcm,overclock-50 = <0>; @@ -113460,8 +114049,8 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + i2s: i2s@7e203000 { + compatible = "brcm,bcm2835-i2s"; + #sound-dai-cells = <0>; -+ reg = <0x7e203000 0x24>, -+ <0x7e101098 0x08>; ++ reg = <0x7e203000 0x24>; ++ clocks = <&cprman BCM2835_CLOCK_PCM>; + + dmas = <&dma 2>, <&dma 3>; + dma-names = "tx", "rx"; @@ -113472,7 +114061,7 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + compatible = "brcm,bcm2835-spi"; + reg = <0x7e204000 0x1000>; + interrupts = <2 22>; -+ clocks = <&clk_core>; ++ clocks = <&cprman BCM2835_CLOCK_VPU>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; @@ -113490,7 +114079,7 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + compatible = "brcm,bcm2708-i2c"; + reg = <0x7e205000 0x1000>; + interrupts = <2 21>; -+ clocks = <&clk_core>; ++ clocks = <&cprman BCM2835_CLOCK_VPU>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; @@ -113522,32 +114111,31 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + pwm: pwm@7e20c000 { + compatible = "brcm,bcm2835-pwm"; + reg = <0x7e20c000 0x28>; -+ clocks = <&clk_pwm>; ++ clocks = <&cprman BCM2835_CLOCK_PWM>; ++ assigned-clocks = <&cprman BCM2835_CLOCK_PWM>; ++ assigned-clock-rates = <10000000>; + #pwm-cells = <2>; + status = "disabled"; + }; + -+ aux: aux@0x7e215004 { ++ aux: aux@0x7e215000 { + compatible = "brcm,bcm2835-aux"; + #clock-cells = <1>; + reg = <0x7e215000 0x8>; -+ clocks = <&clk_core>; -+ status = "disabled"; ++ clocks = <&cprman BCM2835_CLOCK_VPU>; + }; + -+ uart1: uart@7e215040 { -+ compatible = "brcm,bcm2835-aux-uart", "ns16550"; ++ uart1: serial@7e215040 { ++ compatible = "brcm,bcm2835-aux-uart"; + reg = <0x7e215040 0x40>; + interrupts = <1 29>; -+ clocks = <&clk_uart1>; -+ reg-shift = <2>; -+ no-loopback-test; ++ clocks = <&aux BCM2835_AUX_CLOCK_UART>; + status = "disabled"; + }; + + spi1: spi@7e215080 { + compatible = "brcm,bcm2835-aux-spi"; -+ reg = <0x7e215080 0x40>, <0x7e215000 0x8>; ++ reg = <0x7e215080 0x40>; + interrupts = <1 29>; + clocks = <&aux BCM2835_AUX_CLOCK_SPI1>; + #address-cells = <1>; @@ -113557,7 +114145,7 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + + spi2: spi@7e2150C0 { + compatible = "brcm,bcm2835-aux-spi"; -+ reg = <0x7e2150C0 0x40>, <0x7e215000 0x8>; ++ reg = <0x7e2150C0 0x40>; + interrupts = <1 29>; + clocks = <&aux BCM2835_AUX_CLOCK_SPI2>; + #address-cells = <1>; @@ -113569,7 +114157,7 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + compatible = "brcm,bcm2835-mmc"; + reg = <0x7e300000 0x100>; + interrupts = <2 30>; -+ clocks = <&clk_mmc>; ++ clocks = <&cprman BCM2835_CLOCK_EMMC>; + dmas = <&dma 11>; + dma-names = "rx-tx"; + brcm,overclock-50 = <0>; @@ -113586,7 +114174,7 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + compatible = "brcm,bcm2708-i2c"; + reg = <0x7e804000 0x1000>; + interrupts = <2 21>; -+ clocks = <&clk_core>; ++ clocks = <&cprman BCM2835_CLOCK_VPU>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; @@ -113599,7 +114187,7 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + compatible = "brcm,bcm2708-i2c"; + reg = <0x7e805000 0x1000>; + interrupts = <2 21>; -+ clocks = <&clk_core>; ++ clocks = <&cprman BCM2835_CLOCK_VPU>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; @@ -113607,10 +114195,11 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + + smi: smi@7e600000 { + compatible = "brcm,bcm2835-smi"; -+ reg = <0x7e600000 0x44>, <0x7e1010b0 0x8>; ++ reg = <0x7e600000 0x100>; + interrupts = <2 16>; -+ brcm,smi-clock-source = <6>; -+ brcm,smi-clock-divisor = <4>; ++ clocks = <&cprman BCM2835_CLOCK_SMI>; ++ assigned-clocks = <&cprman BCM2835_CLOCK_SMI>; ++ assigned-clock-rates = <125000000>; + dmas = <&dma 4>; + dma-names = "rx-tx"; + status = "disabled"; @@ -113635,6 +114224,15 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + status = "disabled"; + }; + ++#ifdef RPI364 ++ usb: usb@7e980000 { ++ compatible = "brcm,bcm2835-usb"; ++ reg = <0x7e980000 0x10000>; ++ interrupts = <1 9>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ }; ++#else + usb: usb@7e980000 { + compatible = "brcm,bcm2708-usb"; + reg = <0x7e980000 0x10000>, @@ -113642,6 +114240,7 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + interrupts = <2 0>, + <1 9>; + }; ++#endif + + v3d: v3d@7ec00000 { + compatible = "brcm,vc4-v3d"; @@ -113706,55 +114305,6 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 + #address-cells = <1>; + #size-cells = <0>; + -+ clk_core: clock@0 { -+ compatible = "fixed-clock"; -+ reg = <0>; -+ #clock-cells = <0>; -+ clock-output-names = "core"; -+ clock-frequency = <250000000>; -+ }; -+ -+ clk_mmc: clock@1 { -+ compatible = "fixed-clock"; -+ reg = <1>; -+ #clock-cells = <0>; -+ clock-output-names = "mmc"; -+ clock-frequency = <250000000>; -+ }; -+ -+ clk_uart0: clock@2 { -+ compatible = "fixed-clock"; -+ reg = <2>; -+ #clock-cells = <0>; -+ clock-output-names = "uart0_pclk"; -+ clock-frequency = <3000000>; -+ }; -+ -+ clk_apb_p: clock@3 { -+ compatible = "fixed-clock"; -+ reg = <3>; -+ #clock-cells = <0>; -+ clock-output-names = "apb_pclk"; -+ clock-frequency = <126000000>; -+ }; -+ -+ clk_pwm: clock@4 { -+ compatible = "fixed-clock"; -+ reg = <4>; -+ #clock-cells = <0>; -+ clock-output-names = "pwm"; -+ clock-frequency = <100000000>; -+ }; -+ -+ clk_uart1: clock@5 { -+ compatible = "fixed-factor-clock"; -+ reg = <5>; -+ clocks = <&clk_core>; -+ #clock-cells = <0>; -+ clock-div = <1>; -+ clock-mult = <2>; -+ }; -+ + /* The oscillator is the root of the clock tree. */ + clk_osc: clock@6 { + compatible = "fixed-clock"; @@ -113771,10 +114321,10 @@ index 0000000000000000000000000000000000000000..74434b986e3fbb257debfc79caef9fa6 +}; diff --git a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts new file mode 100644 -index 0000000000000000000000000000000000000000..eca72bd0d6e891b0096ac97b68c2da92199aa851 +index 0000000000000000000000000000000000000000..74fe4cc1d667e9508ca860bcc8c837fed0cbb855 --- /dev/null +++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts -@@ -0,0 +1,164 @@ +@@ -0,0 +1,162 @@ +/dts-v1/; + +#include "bcm2709.dtsi" @@ -113910,7 +114460,6 @@ index 0000000000000000000000000000000000000000..eca72bd0d6e891b0096ac97b68c2da92 +/ { + __overrides__ { + uart0 = <&uart0>,"status"; -+ uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + uart1 = <&uart1>,"status"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; @@ -113920,7 +114469,6 @@ index 0000000000000000000000000000000000000000..eca72bd0d6e891b0096ac97b68c2da92 + i2c0_baudrate = <&i2c0>,"clock-frequency:0"; + i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -+ core_freq = <&clk_core>,"clock-frequency:0"; + + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; @@ -114049,12 +114597,16 @@ index 0000000000000000000000000000000000000000..a8cfd7c4df5bcf7692d13882833c9785 +}; diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts new file mode 100644 -index 0000000000000000000000000000000000000000..a72e6e5a0ac0b2492db3d8034a5196b3e19ae008 +index 0000000000000000000000000000000000000000..d9ae00f95e6261eea582d7a2c6dfbc221f99953d --- /dev/null +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts -@@ -0,0 +1,211 @@ +@@ -0,0 +1,213 @@ +/dts-v1/; + ++#ifdef RPI364 ++/memreserve/ 0x00000000 0x00001000; ++#endif ++ +#include "bcm2710.dtsi" + +/ { @@ -114239,7 +114791,6 @@ index 0000000000000000000000000000000000000000..a72e6e5a0ac0b2492db3d8034a5196b3 +/ { + __overrides__ { + uart0 = <&uart0>,"status"; -+ uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + uart1 = <&uart1>,"status"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; @@ -114249,7 +114800,174 @@ index 0000000000000000000000000000000000000000..a72e6e5a0ac0b2492db3d8034a5196b3 + i2c0_baudrate = <&i2c0>,"clock-frequency:0"; + i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -+ core_freq = <&clk_core>,"clock-frequency:0"; ++ ++ act_led_gpio = <&act_led>,"gpios:4"; ++ act_led_activelow = <&act_led>,"gpios:8"; ++ act_led_trigger = <&act_led>,"linux,default-trigger"; ++ ++ audio = <&audio>,"status"; ++ watchdog = <&watchdog>,"status"; ++ random = <&random>,"status"; ++ sd_overclock = <&sdhost>,"brcm,overclock-50:0"; ++ sd_force_pio = <&sdhost>,"brcm,force-pio?"; ++ sd_pio_limit = <&sdhost>,"brcm,pio-limit:0"; ++ sd_debug = <&sdhost>,"brcm,debug"; ++ }; ++}; +diff --git a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..20388084b98cf942529eb60c55dc540cfea71886 +--- /dev/null ++++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts +@@ -0,0 +1,162 @@ ++/dts-v1/; ++ ++#include "bcm2710.dtsi" ++ ++/ { ++ compatible = "brcm,bcm2710","brcm,bcm2709"; ++ model = "Raspberry Pi Compute Module 3"; ++}; ++ ++&gpio { ++ ++ mmc_pins: mmc_pins { ++ brcm,pins = <48 49 50 51 52 53>; ++ brcm,function = <7>; /* alt3 */ ++ brcm,pull = <0 2 2 2 2 2>; ++ }; ++ ++ spi0_pins: spi0_pins { ++ brcm,pins = <9 10 11>; ++ brcm,function = <4>; /* alt0 */ ++ }; ++ ++ spi0_cs_pins: spi0_cs_pins { ++ brcm,pins = <8 7>; ++ brcm,function = <1>; /* output */ ++ }; ++ ++ i2c0_pins: i2c0 { ++ brcm,pins = <0 1>; ++ brcm,function = <4>; ++ }; ++ ++ i2c1_pins: i2c1 { ++ brcm,pins = <2 3>; ++ brcm,function = <4>; ++ }; ++ ++ i2s_pins: i2s { ++ brcm,pins = <18 19 20 21>; ++ brcm,function = <4>; /* alt0 */ ++ }; ++ ++ audio_pins: audio_pins { ++ brcm,pins; ++ brcm,function; ++ }; ++}; ++ ++&mmc { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc_pins>; ++ non-removable; ++ bus-width = <4>; ++ status = "okay"; ++ brcm,overclock-50 = <0>; ++}; ++ ++&soc { ++ virtgpio: virtgpio { ++ compatible = "brcm,bcm2835-virtgpio"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ firmware = <&firmware>; ++ status = "okay"; ++ }; ++}; ++ ++&fb { ++ status = "okay"; ++}; ++ ++&spi0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&spi0_pins &spi0_cs_pins>; ++ cs-gpios = <&gpio 8 1>, <&gpio 7 1>; ++ ++ spidev0: spidev@0{ ++ compatible = "spidev"; ++ reg = <0>; /* CE0 */ ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spi-max-frequency = <500000>; ++ }; ++ ++ spidev1: spidev@1{ ++ compatible = "spidev"; ++ reg = <1>; /* CE1 */ ++ #address-cells = <1>; ++ #size-cells = <0>; ++ spi-max-frequency = <500000>; ++ }; ++}; ++ ++&i2c0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c0_pins>; ++ clock-frequency = <100000>; ++}; ++ ++&i2c1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2c1_pins>; ++ clock-frequency = <100000>; ++}; ++ ++&i2c2 { ++ clock-frequency = <100000>; ++}; ++ ++&i2s { ++ #sound-dai-cells = <0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2s_pins>; ++}; ++ ++&random { ++ status = "okay"; ++}; ++ ++&leds { ++ act_led: act { ++ label = "led0"; ++ linux,default-trigger = "mmc0"; ++ gpios = <&virtgpio 0 0>; ++ }; ++}; ++ ++&hdmi { ++ hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>; ++}; ++ ++&audio { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&audio_pins>; ++}; ++ ++/ { ++ __overrides__ { ++ uart0 = <&uart0>,"status"; ++ uart1 = <&uart1>,"status"; ++ i2s = <&i2s>,"status"; ++ spi = <&spi0>,"status"; ++ i2c0 = <&i2c0>,"status"; ++ i2c1 = <&i2c1>,"status"; ++ i2c2_iknowwhatimdoing = <&i2c2>,"status"; ++ i2c0_baudrate = <&i2c0>,"clock-frequency:0"; ++ i2c1_baudrate = <&i2c1>,"clock-frequency:0"; ++ i2c2_baudrate = <&i2c2>,"clock-frequency:0"; + + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; @@ -114266,10 +114984,10 @@ index 0000000000000000000000000000000000000000..a72e6e5a0ac0b2492db3d8034a5196b3 +}; diff --git a/arch/arm/boot/dts/bcm2710.dtsi b/arch/arm/boot/dts/bcm2710.dtsi new file mode 100644 -index 0000000000000000000000000000000000000000..1a48686a15d44dc6fbdddc569d564779f76ae5d1 +index 0000000000000000000000000000000000000000..223bd9627b3dcaac5458909dc59c877eed751ce4 --- /dev/null +++ b/arch/arm/boot/dts/bcm2710.dtsi -@@ -0,0 +1,102 @@ +@@ -0,0 +1,165 @@ +#include "bcm2708_common.dtsi" + +/ { @@ -114284,6 +115002,9 @@ index 0000000000000000000000000000000000000000..1a48686a15d44dc6fbdddc569d564779 + soc { + ranges = <0x7e000000 0x3f000000 0x01000000>, + <0x40000000 0x40000000 0x00040000>; ++#ifdef RPI364 ++ dma-ranges = <0xc0000000 0x00000000 0x3f000000>; ++#endif + + local_intc: local_intc { + compatible = "brcm,bcm2836-l1-intc"; @@ -114294,7 +115015,11 @@ index 0000000000000000000000000000000000000000..1a48686a15d44dc6fbdddc569d564779 + }; + + arm-pmu { ++#ifdef RPI364 ++ compatible = "arm,armv8-pmuv3", "arm,cortex-a7-pmu"; ++#else + compatible = "arm,cortex-a7-pmu"; ++#endif + interrupt-parent = <&local_intc>; + interrupts = <9>; + }; @@ -114306,7 +115031,11 @@ index 0000000000000000000000000000000000000000..1a48686a15d44dc6fbdddc569d564779 + }; + + timer { ++#ifdef RPI364 ++ compatible = "arm,armv8-timer", "arm,armv7-timer"; ++#else + compatible = "arm,armv7-timer"; ++#endif + clock-frequency = <19200000>; + interrupt-parent = <&local_intc>; + interrupts = <0>, // PHYS_SECURE_PPI @@ -114322,6 +115051,54 @@ index 0000000000000000000000000000000000000000..1a48686a15d44dc6fbdddc569d564779 + }; + }; + ++#ifdef RPI364 ++ cpus: cpus { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ v8_cpu0: cpu@0 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a53", "arm,armv8"; ++ reg = <0x0>; ++ clock-frequency = <1200000000>; ++ }; ++ ++ v8_cpu1: cpu@1 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a53", "arm,armv8"; ++ reg = <0x1>; ++ clock-frequency = <1200000000>; ++ enable-method = "spin-table"; ++ cpu-release-addr = <0x0 0x000000e0>; ++ }; ++ ++ v8_cpu2: cpu@2 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a53", "arm,armv8"; ++ reg = <0x2>; ++ clock-frequency = <1200000000>; ++ enable-method = "spin-table"; ++ cpu-release-addr = <0x0 0x000000e8>; ++ }; ++ ++ v8_cpu3: cpu@3 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a53", "arm,armv8"; ++ reg = <0x3>; ++ clock-frequency = <1200000000>; ++ enable-method = "spin-table"; ++ cpu-release-addr = <0x0 0x000000f0>; ++ }; ++ }; ++ ++ __overrides__ { ++ arm_freq = <&v8_cpu0>, "clock-frequency:0", ++ <&v8_cpu1>, "clock-frequency:0", ++ <&v8_cpu2>, "clock-frequency:0", ++ <&v8_cpu3>, "clock-frequency:0"; ++ }; ++ ++#else + cpus: cpus { + #address-cells = <1>; + #size-cells = <0>; @@ -114361,6 +115138,7 @@ index 0000000000000000000000000000000000000000..1a48686a15d44dc6fbdddc569d564779 + <&v7_cpu2>, "clock-frequency:0", + <&v7_cpu3>, "clock-frequency:0"; + }; ++#endif +}; + +&watchdog { @@ -114368,9 +115146,12 @@ index 0000000000000000000000000000000000000000..1a48686a15d44dc6fbdddc569d564779 +}; + +&intc { -+ compatible = "brcm,bcm2836-armctrl-ic"; -+ interrupt-parent = <&local_intc>; -+ interrupts = <8>; ++ compatible = "brcm,bcm2836-armctrl-ic"; ++#ifdef RPI364 ++ reg = <0x7e00b200 0x200>; ++#endif ++ interrupt-parent = <&local_intc>; ++ interrupts = <8>; +}; diff --git a/arch/arm/boot/dts/bcm2835-rpi-cm.dts b/arch/arm/boot/dts/bcm2835-rpi-cm.dts new file mode 100644 @@ -114509,10 +115290,10 @@ index 0000000000000000000000000000000000000000..9c4000fc686a9882b9ddde24fdcf937d +}; diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile new file mode 100644 -index 0000000000000000000000000000000000000000..e6e2bfb85fbc257ea851c9f2afa5f78a87cdc41d +index 0000000000000000000000000000000000000000..b6ed1a3c06a7a67d1dd79bb7e55421d8eccba492 --- /dev/null +++ b/arch/arm/boot/dts/overlays/Makefile -@@ -0,0 +1,105 @@ +@@ -0,0 +1,111 @@ +ifeq ($(CONFIG_OF),y) + +# Overlays for the Raspberry Pi platform @@ -114531,11 +115312,14 @@ index 0000000000000000000000000000000000000000..e6e2bfb85fbc257ea851c9f2afa5f78a +dtbo-$(RPI_DT_OVERLAYS) += ads1015.dtbo +dtbo-$(RPI_DT_OVERLAYS) += ads7846.dtbo +dtbo-$(RPI_DT_OVERLAYS) += akkordion-iqdacplus.dtbo ++dtbo-$(RPI_DT_OVERLAYS) += allo-piano-dac-pcm512x-audio.dtbo +dtbo-$(RPI_DT_OVERLAYS) += at86rf233.dtbo +dtbo-$(RPI_DT_OVERLAYS) += audioinjector-wm8731-audio.dtbo ++dtbo-$(RPI_DT_OVERLAYS) += audremap.dtbo +dtbo-$(RPI_DT_OVERLAYS) += bmp085_i2c-sensor.dtbo +dtbo-$(RPI_DT_OVERLAYS) += dht11.dtbo +dtbo-$(RPI_DT_OVERLAYS) += dionaudio-loco.dtbo ++dtbo-$(RPI_DT_OVERLAYS) += dpi18.dtbo +dtbo-$(RPI_DT_OVERLAYS) += dpi24.dtbo +dtbo-$(RPI_DT_OVERLAYS) += dwc-otg.dtbo +dtbo-$(RPI_DT_OVERLAYS) += dwc2.dtbo @@ -114546,6 +115330,7 @@ index 0000000000000000000000000000000000000000..e6e2bfb85fbc257ea851c9f2afa5f78a +dtbo-$(RPI_DT_OVERLAYS) += hifiberry-dac.dtbo +dtbo-$(RPI_DT_OVERLAYS) += hifiberry-dacplus.dtbo +dtbo-$(RPI_DT_OVERLAYS) += hifiberry-digi.dtbo ++dtbo-$(RPI_DT_OVERLAYS) += hifiberry-digi-pro.dtbo +dtbo-$(RPI_DT_OVERLAYS) += hy28a.dtbo +dtbo-$(RPI_DT_OVERLAYS) += hy28b.dtbo +dtbo-$(RPI_DT_OVERLAYS) += i2c-gpio.dtbo @@ -114562,6 +115347,7 @@ index 0000000000000000000000000000000000000000..e6e2bfb85fbc257ea851c9f2afa5f78a +dtbo-$(RPI_DT_OVERLAYS) += justboom-digi.dtbo +dtbo-$(RPI_DT_OVERLAYS) += lirc-rpi.dtbo +dtbo-$(RPI_DT_OVERLAYS) += mcp23017.dtbo ++dtbo-$(RPI_DT_OVERLAYS) += mcp23s17.dtbo +dtbo-$(RPI_DT_OVERLAYS) += mcp2515-can0.dtbo +dtbo-$(RPI_DT_OVERLAYS) += mcp2515-can1.dtbo +dtbo-$(RPI_DT_OVERLAYS) += mmc.dtbo @@ -114586,6 +115372,7 @@ index 0000000000000000000000000000000000000000..e6e2bfb85fbc257ea851c9f2afa5f78a +dtbo-$(RPI_DT_OVERLAYS) += rpi-proto.dtbo +dtbo-$(RPI_DT_OVERLAYS) += rpi-sense.dtbo +dtbo-$(RPI_DT_OVERLAYS) += rra-digidac1-wm8741-audio.dtbo ++dtbo-$(RPI_DT_OVERLAYS) += sc16is750-i2c.dtbo +dtbo-$(RPI_DT_OVERLAYS) += sc16is752-spi1.dtbo +dtbo-$(RPI_DT_OVERLAYS) += sdhost.dtbo +dtbo-$(RPI_DT_OVERLAYS) += sdio.dtbo @@ -114620,10 +115407,10 @@ index 0000000000000000000000000000000000000000..e6e2bfb85fbc257ea851c9f2afa5f78a +clean-files := *.dtbo diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README new file mode 100644 -index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26caf255d8 +index 0000000000000000000000000000000000000000..1ebb94c005d68b17792f95bd9792a08679298b26 --- /dev/null +++ b/arch/arm/boot/dts/overlays/README -@@ -0,0 +1,1223 @@ +@@ -0,0 +1,1302 @@ +Introduction +============ + @@ -114861,6 +115648,26 @@ index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26 + that does not result in clipping/distortion!) + + ++Name: allo-piano-dac-pcm512x-audio ++Info: Configures the Allo Piano DAC (2.0/2.1) audio cards. ++ (NB. This initial support is for 2.0 channel audio ONLY! ie. stereo. ++ The subwoofer outputs on the Piano 2.1 are not currently supported!) ++Load: dtoverlay=allo-piano-dac-pcm512x-audio, ++Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec ++ Digital volume control. ++ (The default behaviour is that the Digital ++ volume control is limited to a maximum of ++ 0dB. ie. it can attenuate but not provide ++ gain. For most users, this will be desired ++ as it will prevent clipping. By appending ++ the 24db_digital_gain parameter, the Digital ++ volume control will allow up to 24dB of ++ gain. If this parameter is enabled, it is the ++ responsibility of the user to ensure that ++ the Digital volume control is set to a value ++ that does not result in clipping/distortion!) ++ ++ +Name: at86rf233 +Info: Configures the Atmel AT86RF233 802.15.4 low-power WPAN transceiver, + connected to spi0.0 @@ -114879,6 +115686,15 @@ index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26 +Params: + + ++Name: audremap ++Info: Switches PWM sound output to pins 12 (Right) & 13 (Left) ++Load: dtoverlay=audremap,= ++Params: swap_lr Reverse the channel allocation, which will also ++ swap the audio jack outputs (default off) ++ enable_jack Don't switch off the audio jack output ++ (default off) ++ ++ +Name: bmp085_i2c-sensor +Info: Configures the BMP085/BMP180 digital barometric pressure and temperature + sensors from Bosch Sensortec @@ -114900,6 +115716,14 @@ index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26 +Params: + + ++Name: dpi18 ++Info: Overlay for a generic 18-bit DPI display ++ This uses GPIOs 0-21 (so no I2C, uart etc.), and activates the output ++ 2-3 seconds after the kernel has started. ++Load: dtoverlay=dpi18 ++Params: ++ ++ +Name: dpi24 +Info: Overlay for a generic 24-bit DPI display + This uses GPIOs 0-27 (so no I2C, uart etc.), and activates the output @@ -114957,7 +115781,7 @@ index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26 + + +Name: gpio-poweroff -+Info: Drives a GPIO high or low on reboot ++Info: Drives a GPIO high or low on poweroff (including halt) +Load: dtoverlay=gpio-poweroff,= +Params: gpiopin GPIO for signalling (default 26) + @@ -115003,11 +115827,17 @@ index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26 + + +Name: hifiberry-digi -+Info: Configures the HifiBerry Digi audio card ++Info: Configures the HifiBerry Digi and Digi+ audio card +Load: dtoverlay=hifiberry-digi +Params: + + ++Name: hifiberry-digi-pro ++Info: Configures the HifiBerry Digi+ Pro audio card ++Load: dtoverlay=hifiberry-digi-pro ++Params: ++ ++ +Name: hy28a +Info: HY28A - 2.8" TFT LCD Display Module by HAOYU Electronics + Default values match Texy's display shield @@ -115242,6 +116072,30 @@ index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26 + addr I2C address of the MCP23017 (default: 0x20) + + ++Name: mcp23s17 ++Info: Configures the MCP23S08/17 SPI GPIO expanders. ++ If devices are present on SPI1 or SPI2, those interfaces must be enabled ++ with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays. ++ If interrupts are enabled for a device on a given CS# on a SPI bus, that ++ device must be the only one present on that SPI bus/CS#. ++Load: dtoverlay=mcp23s17,= ++Params: s08-spi--present 4-bit integer, bitmap indicating MCP23S08 ++ devices present on SPI, CS# ++ ++ s17-spi--present 8-bit integer, bitmap indicating MCP23S17 ++ devices present on SPI, CS# ++ ++ s08-spi--int-gpio integer, enables interrupts on a single ++ MCP23S08 device on SPI, CS#, specifies ++ the GPIO pin to which INT output of MCP23S08 ++ is connected. ++ ++ s17-spi--int-gpio integer, enables mirrored interrupts on a ++ single MCP23S17 device on SPI, CS#, ++ specifies the GPIO pin to which either INTA ++ or INTB output of MCP23S17 is connected. ++ ++ +Name: mcp2515-can0 +Info: Configures the MCP2515 CAN controller on spi0.0 +Load: dtoverlay=mcp2515-can0,= @@ -115411,6 +116265,8 @@ index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26 +Info: Configures the pps-gpio (pulse-per-second time signal via GPIO). +Load: dtoverlay=pps-gpio,= +Params: gpiopin Input GPIO (default "18") ++ assert_falling_edge When present, assert is indicated by a falling ++ edge, rather than by a rising edge + + +Name: pwm @@ -115514,6 +116370,16 @@ index 0000000000000000000000000000000000000000..3cc6560de2000480294688ec80bc8b26 +Params: + + ++Name: sc16is750-i2c ++Info: Overlay for the NXP SC16IS750 UART with I2C Interface ++ Enables the chip on I2C1 at 0x48. To select another address, ++ please refer to table 10 in reference manual. ++ ++Load: dtoverlay=sc16is750-i2c,= ++Params: int_pin GPIO used for IRQ (default 24) ++ addr Address (default 0x48) ++ ++ +Name: sc16is752-spi1 +Info: Overlay for the NXP SC16IS752 Dual UART with SPI Interface + Enables the chip on SPI1. @@ -116157,6 +117023,66 @@ index 0000000000000000000000000000000000000000..208849d5c39274ed0aa557f63a19430a + 24db_digital_gain = <&frag2>,"iqaudio,24db_digital_gain?"; + }; +}; +diff --git a/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..a5468d850a911cd509365cf25f8ffa6ad071b90a +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts +@@ -0,0 +1,54 @@ ++/* ++ * Definitions for Allo Piano DAC (2.0/2.1) boards ++ * ++ * NB. The Piano DAC 2.1 board contains 2x TI PCM5142 DAC's. One DAC is stereo ++ * (left/right) and the other provides a subwoofer output, using DSP on the ++ * chip for digital high/low pass crossover. ++ * The initial support for this hardware, that doesn't require any codec driver ++ * modifications, uses only one DAC chip for stereo (left/right) output, the ++ * chip with 0x4c slave address. The other chip at 0x4d is currently ignored! ++ */ ++ ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target = <&i2s>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&i2c1>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ pcm5142@4c { ++ #sound-dai-cells = <0>; ++ compatible = "ti,pcm5142"; ++ reg = <0x4c>; ++ status = "okay"; ++ }; ++ }; ++ }; ++ ++ fragment@2 { ++ target = <&sound>; ++ piano_dac: __overlay__ { ++ compatible = "allo,piano-dac"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ }; ++ }; ++ ++ __overrides__ { ++ 24db_digital_gain = ++ <&piano_dac>,"allo,24db_digital_gain?"; ++ }; ++}; diff --git a/arch/arm/boot/dts/overlays/at86rf233-overlay.dts b/arch/arm/boot/dts/overlays/at86rf233-overlay.dts new file mode 100644 index 0000000000000000000000000000000000000000..880c7539d496fb10672ee573f7c51b8a213cecf7 @@ -116265,6 +117191,31 @@ index 0000000000000000000000000000000000000000..4ed66577fa1d59e7b167ffdfd5a3f0de + }; + }; +}; +diff --git a/arch/arm/boot/dts/overlays/audremap-overlay.dts b/arch/arm/boot/dts/overlays/audremap-overlay.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..9582d6ab31218b4ed7b1d42a9190ca6efe9bd531 +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/audremap-overlay.dts +@@ -0,0 +1,19 @@ ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target = <&audio_pins>; ++ frag0: __overlay__ { ++ brcm,pins = < 12 13 >; ++ brcm,function = < 4 >; /* alt0 alt0 */ ++ }; ++ }; ++ ++ __overrides__ { ++ swap_lr = <&frag0>, "swap_lr?"; ++ enable_jack = <&frag0>, "enable_jack?"; ++ }; ++}; diff --git a/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts b/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts new file mode 100644 index 0000000000000000000000000000000000000000..782b1715467e943c18fe936cc76448f3db960fbc @@ -116384,6 +117335,43 @@ index 0000000000000000000000000000000000000000..3930f412bca4454c6673fb19859e607b + }; + }; +}; +diff --git a/arch/arm/boot/dts/overlays/dpi18-overlay.dts b/arch/arm/boot/dts/overlays/dpi18-overlay.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..8098d5e28a71ffbc717db5c6b88305d2ba6e3175 +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/dpi18-overlay.dts +@@ -0,0 +1,31 @@ ++/dts-v1/; ++/plugin/; ++ ++/{ ++ compatible = "brcm,bcm2708"; ++ ++ // There is no DPI driver module, but we need a platform device ++ // node (that doesn't already use pinctrl) to hang the pinctrl ++ // reference on - leds will do ++ ++ fragment@0 { ++ target = <&leds>; ++ __overlay__ { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&dpi18_pins>; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&gpio>; ++ __overlay__ { ++ dpi18_pins: dpi18_pins { ++ brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11 ++ 12 13 14 15 16 17 18 19 20 ++ 21>; ++ brcm,function = <6>; /* alt2 */ ++ brcm,pull = <0>; /* no pull */ ++ }; ++ }; ++ }; ++}; diff --git a/arch/arm/boot/dts/overlays/dpi24-overlay.dts b/arch/arm/boot/dts/overlays/dpi24-overlay.dts new file mode 100644 index 0000000000000000000000000000000000000000..e4dbe40218a008ef4028c1214740c3d6bc574724 @@ -116823,6 +117811,53 @@ index 0000000000000000000000000000000000000000..f5e41f48ba4fed92194ff5a63d13c70b + }; + }; +}; +diff --git a/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..2a26d9cfffb0f3d7958eb3756ca7c4ba28400e1c +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts +@@ -0,0 +1,41 @@ ++// Definitions for HiFiBerry Digi Pro ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target = <&i2s>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&i2c1>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ wm8804@3b { ++ #sound-dai-cells = <0>; ++ compatible = "wlf,wm8804"; ++ reg = <0x3b>; ++ status = "okay"; ++ }; ++ }; ++ }; ++ ++ fragment@2 { ++ target = <&sound>; ++ __overlay__ { ++ compatible = "hifiberry,hifiberry-digi"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ clock44-gpio = <&gpio 5 0>; ++ clock48-gpio = <&gpio 6 0>; ++ }; ++ }; ++}; diff --git a/arch/arm/boot/dts/overlays/hy28a-overlay.dts b/arch/arm/boot/dts/overlays/hy28a-overlay.dts new file mode 100644 index 0000000000000000000000000000000000000000..ac0f3c28ea855a620dc6a3385d9d15009f26358d @@ -117886,6 +118921,744 @@ index 0000000000000000000000000000000000000000..412f966a3cc0a312771b7182310a7045 + }; +}; + +diff --git a/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..7dcbacb3cd007eb15b2b0f165fd8adc7a7b7c580 +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts +@@ -0,0 +1,732 @@ ++// Overlay for MCP23S08/17 GPIO Extenders from Microchip Semiconductor ++ ++// dtparams: ++// s08-spi--present - 4-bit integer, bitmap indicating MCP23S08 devices present on SPI, CS#. ++// s17-spi--present - 8-bit integer, bitmap indicating MCP23S17 devices present on SPI, CS#. ++// s08-spi--int-gpio - integer, enables interrupts on a single MCP23S08 device on SPI, CS#, specifies the GPIO pin to which INT output is connected. ++// s17-spi--int-gpio - integer, enables mirrored interrupts on a single MCP23S17 device on SPI, CS#, specifies the GPIO pin to which either INTA or INTB output is connected. ++// ++// If devices are present on SPI1 or SPI2, those interfaces must be enabled with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays. ++// If interrupts are enabled for a device on a given CS# on a SPI bus, that device must be the only one present on that SPI bus/CS#. ++// ++// Example 1: A single MCP23S17 device on SPI0, CS#0 with its SPI addr set to 0 and INTA output connected to GPIO25: ++// dtoverlay=mcp23s17:s17-spi0-0-present=1,s17-spi0-0-int-gpio=25 ++// ++// Example 2: Two MCP23S08 devices on SPI1, CS#0 with their addrs set to 2 and 3. Three MCP23S17 devices on SPI1, CS#1 with their addrs set to 0, 1 and 7: ++// dtoverlay=spi1-2cs ++// dtoverlay=mcp23s17:s08-spi1-0-present=12,s17-spi1-1-present=131 ++ ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; ++ ++ // disable spi-dev on spi0.0 ++ fragment@0 { ++ target = <&spidev0>; ++ __dormant__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ // disable spi-dev on spi0.1 ++ fragment@1 { ++ target = <&spidev1>; ++ __dormant__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ // disable spi-dev on spi1.0 ++ fragment@2 { ++ target-path = "spi1/spidev@0"; ++ __dormant__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ // disable spi-dev on spi1.1 ++ fragment@3 { ++ target-path = "spi1/spidev@1"; ++ __dormant__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ // disable spi-dev on spi1.2 ++ fragment@4 { ++ target-path = "spi1/spidev@2"; ++ __dormant__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ // disable spi-dev on spi2.0 ++ fragment@5 { ++ target-path = "spi2/spidev@0"; ++ __dormant__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ // disable spi-dev on spi2.1 ++ fragment@6 { ++ target-path = "spi2/spidev@1"; ++ __dormant__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ // disable spi-dev on spi2.2 ++ fragment@7 { ++ target-path = "spi2/spidev@2"; ++ __dormant__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ // enable one or more mcp23s08s on spi0.0 ++ fragment@8 { ++ target = <&spi0>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s08_00: mcp23s08@0 { ++ compatible = "microchip,mcp23s08"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi0-0-present parameter */ ++ reg = <0>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi0-0-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s08s on spi0.1 ++ fragment@9 { ++ target = <&spi0>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s08_01: mcp23s08@1 { ++ compatible = "microchip,mcp23s08"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi0-1-present parameter */ ++ reg = <1>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi0-1-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s08s on spi1.0 ++ fragment@10 { ++ target = <&spi1>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s08_10: mcp23s08@0 { ++ compatible = "microchip,mcp23s08"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-0-present parameter */ ++ reg = <0>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-0-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s08s on spi1.1 ++ fragment@11 { ++ target = <&spi1>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s08_11: mcp23s08@1 { ++ compatible = "microchip,mcp23s08"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-1-present parameter */ ++ reg = <1>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-1-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s08s on spi1.2 ++ fragment@12 { ++ target = <&spi1>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s08_12: mcp23s08@2 { ++ compatible = "microchip,mcp23s08"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-2-present parameter */ ++ reg = <2>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-2-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s08s on spi2.0 ++ fragment@13 { ++ target = <&spi2>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s08_20: mcp23s08@0 { ++ compatible = "microchip,mcp23s08"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-0-present parameter */ ++ reg = <0>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-0-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s08s on spi2.1 ++ fragment@14 { ++ target = <&spi2>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s08_21: mcp23s08@1 { ++ compatible = "microchip,mcp23s08"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-1-present parameter */ ++ reg = <1>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-1-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s08s on spi2.2 ++ fragment@15 { ++ target = <&spi2>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s08_22: mcp23s08@2 { ++ compatible = "microchip,mcp23s08"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-2-present parameter */ ++ reg = <2>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-2-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s17s on spi0.0 ++ fragment@16 { ++ target = <&spi0>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s17_00: mcp23s17@0 { ++ compatible = "microchip,mcp23s17"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi0-0-present parameter */ ++ reg = <0>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi0-0-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s17s on spi0.1 ++ fragment@17 { ++ target = <&spi0>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s17_01: mcp23s17@1 { ++ compatible = "microchip,mcp23s17"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi0-1-present parameter */ ++ reg = <1>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi0-1-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s17s on spi1.0 ++ fragment@18 { ++ target = <&spi1>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s17_10: mcp23s17@0 { ++ compatible = "microchip,mcp23s17"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-0-present parameter */ ++ reg = <0>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-0-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s17s on spi1.1 ++ fragment@19 { ++ target = <&spi1>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s17_11: mcp23s17@1 { ++ compatible = "microchip,mcp23s17"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-1-present parameter */ ++ reg = <1>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-1-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s17s on spi1.2 ++ fragment@20 { ++ target = <&spi1>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s17_12: mcp23s17@2 { ++ compatible = "microchip,mcp23s17"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-2-present parameter */ ++ reg = <2>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-2-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s17s on spi2.0 ++ fragment@21 { ++ target = <&spi2>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s17_20: mcp23s17@0 { ++ compatible = "microchip,mcp23s17"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-0-present parameter */ ++ reg = <0>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-0-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s17s on spi2.1 ++ fragment@22 { ++ target = <&spi2>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s17_21: mcp23s17@1 { ++ compatible = "microchip,mcp23s17"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-1-present parameter */ ++ reg = <1>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-1-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // enable one or more mcp23s17s on spi2.2 ++ fragment@23 { ++ target = <&spi2>; ++ __dormant__ { ++ status = "okay"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ mcp23s17_22: mcp23s17@2 { ++ compatible = "microchip,mcp23s17"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-2-present parameter */ ++ reg = <2>; ++ spi-max-frequency = <500000>; ++ status = "okay"; ++ #interrupt-cells=<2>; ++ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-2-int-gpio parameter */ ++ }; ++ }; ++ }; ++ ++ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.0 as a input with no pull-up/down ++ fragment@24 { ++ target = <&gpio>; ++ __dormant__ { ++ spi0_0_int_pins: spi0_0_int_pins { ++ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi0-0-int-gpio parameter */ ++ brcm,function = <0>; ++ brcm,pull = <0>; ++ }; ++ }; ++ }; ++ ++ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.1 as a input with no pull-up/down ++ fragment@25 { ++ target = <&gpio>; ++ __dormant__ { ++ spi0_1_int_pins: spi0_1_int_pins { ++ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi0-1-int-gpio parameter */ ++ brcm,function = <0>; ++ brcm,pull = <0>; ++ }; ++ }; ++ }; ++ ++ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.0 as a input with no pull-up/down ++ fragment@26 { ++ target = <&gpio>; ++ __dormant__ { ++ spi1_0_int_pins: spi1_0_int_pins { ++ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-0-int-gpio parameter */ ++ brcm,function = <0>; ++ brcm,pull = <0>; ++ }; ++ }; ++ }; ++ ++ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.1 as a input with no pull-up/down ++ fragment@27 { ++ target = <&gpio>; ++ __dormant__ { ++ spi1_1_int_pins: spi1_1_int_pins { ++ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-1-int-gpio parameter */ ++ brcm,function = <0>; ++ brcm,pull = <0>; ++ }; ++ }; ++ }; ++ ++ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.2 as a input with no pull-up/down ++ fragment@28 { ++ target = <&gpio>; ++ __dormant__ { ++ spi1_2_int_pins: spi1_2_int_pins { ++ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-2-int-gpio parameter */ ++ brcm,function = <0>; ++ brcm,pull = <0>; ++ }; ++ }; ++ }; ++ ++ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.0 as a input with no pull-up/down ++ fragment@29 { ++ target = <&gpio>; ++ __dormant__ { ++ spi2_0_int_pins: spi2_0_int_pins { ++ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-0-int-gpio parameter */ ++ brcm,function = <0>; ++ brcm,pull = <0>; ++ }; ++ }; ++ }; ++ ++ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.1 as a input with no pull-up/down ++ fragment@30 { ++ target = <&gpio>; ++ __dormant__ { ++ spi2_1_int_pins: spi2_1_int_pins { ++ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-1-int-gpio parameter */ ++ brcm,function = <0>; ++ brcm,pull = <0>; ++ }; ++ }; ++ }; ++ ++ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.2 as a input with no pull-up/down ++ fragment@31 { ++ target = <&gpio>; ++ __dormant__ { ++ spi2_2_int_pins: spi2_2_int_pins { ++ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-2-int-gpio parameter */ ++ brcm,function = <0>; ++ brcm,pull = <0>; ++ }; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s08 on spi0.0. ++ // Use default active low interrupt signalling. ++ fragment@32 { ++ target = <&mcp23s08_00>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s08 on spi0.1. ++ // Use default active low interrupt signalling. ++ fragment@33 { ++ target = <&mcp23s08_01>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s08 on spi1.0. ++ // Use default active low interrupt signalling. ++ fragment@34 { ++ target = <&mcp23s08_10>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s08 on spi1.1. ++ // Use default active low interrupt signalling. ++ fragment@35 { ++ target = <&mcp23s08_11>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s08 on spi1.2. ++ // Use default active low interrupt signalling. ++ fragment@36 { ++ target = <&mcp23s08_12>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s08 on spi2.0. ++ // Use default active low interrupt signalling. ++ fragment@37 { ++ target = <&mcp23s08_20>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s08 on spi2.1. ++ // Use default active low interrupt signalling. ++ fragment@38 { ++ target = <&mcp23s08_21>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s08 on spi2.2. ++ // Use default active low interrupt signalling. ++ fragment@39 { ++ target = <&mcp23s08_22>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s17 on spi0.0. ++ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. ++ // Use default active low interrupt signalling. ++ fragment@40 { ++ target = <&mcp23s17_00>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ microchip,irq-mirror; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s17 on spi0.1. ++ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. ++ // Configure INTA/B outputs of mcp23s08/17 as active low. ++ fragment@41 { ++ target = <&mcp23s17_01>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ microchip,irq-mirror; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s17 on spi1.0. ++ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. ++ // Configure INTA/B outputs of mcp23s08/17 as active low. ++ fragment@42 { ++ target = <&mcp23s17_10>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ microchip,irq-mirror; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s17 on spi1.1. ++ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. ++ // Configure INTA/B outputs of mcp23s08/17 as active low. ++ fragment@43 { ++ target = <&mcp23s17_11>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ microchip,irq-mirror; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s17 on spi1.2. ++ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. ++ // Configure INTA/B outputs of mcp23s08/17 as active low. ++ fragment@44 { ++ target = <&mcp23s17_12>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ microchip,irq-mirror; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s17 on spi2.0. ++ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. ++ // Configure INTA/B outputs of mcp23s08/17 as active low. ++ fragment@45 { ++ target = <&mcp23s17_20>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ microchip,irq-mirror; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s17 on spi2.1. ++ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. ++ // Configure INTA/B outputs of mcp23s08/17 as active low. ++ fragment@46 { ++ target = <&mcp23s17_21>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ microchip,irq-mirror; ++ }; ++ }; ++ ++ // Enable interrupts for a mcp23s17 on spi2.2. ++ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. ++ // Configure INTA/B outputs of mcp23s08/17 as active low. ++ fragment@47 { ++ target = <&mcp23s17_22>; ++ __dormant__ { ++ interrupt-parent = <&gpio>; ++ interrupt-controller; ++ microchip,irq-mirror; ++ }; ++ }; ++ ++ __overrides__ { ++ s08-spi0-0-present = <0>,"+0+8", <&mcp23s08_00>,"microchip,spi-present-mask:0"; ++ s08-spi0-1-present = <0>,"+1+9", <&mcp23s08_01>,"microchip,spi-present-mask:0"; ++ s08-spi1-0-present = <0>,"+2+10", <&mcp23s08_10>,"microchip,spi-present-mask:0"; ++ s08-spi1-1-present = <0>,"+3+11", <&mcp23s08_11>,"microchip,spi-present-mask:0"; ++ s08-spi1-2-present = <0>,"+4+12", <&mcp23s08_12>,"microchip,spi-present-mask:0"; ++ s08-spi2-0-present = <0>,"+5+13", <&mcp23s08_20>,"microchip,spi-present-mask:0"; ++ s08-spi2-1-present = <0>,"+6+14", <&mcp23s08_21>,"microchip,spi-present-mask:0"; ++ s08-spi2-2-present = <0>,"+7+15", <&mcp23s08_22>,"microchip,spi-present-mask:0"; ++ s17-spi0-0-present = <0>,"+0+16", <&mcp23s17_00>,"microchip,spi-present-mask:0"; ++ s17-spi0-1-present = <0>,"+1+17", <&mcp23s17_01>,"microchip,spi-present-mask:0"; ++ s17-spi1-0-present = <0>,"+2+18", <&mcp23s17_10>,"microchip,spi-present-mask:0"; ++ s17-spi1-1-present = <0>,"+3+19", <&mcp23s17_11>,"microchip,spi-present-mask:0"; ++ s17-spi1-2-present = <0>,"+4+20", <&mcp23s17_12>,"microchip,spi-present-mask:0"; ++ s17-spi2-0-present = <0>,"+5+21", <&mcp23s17_20>,"microchip,spi-present-mask:0"; ++ s17-spi2-1-present = <0>,"+6+22", <&mcp23s17_21>,"microchip,spi-present-mask:0"; ++ s17-spi2-2-present = <0>,"+7+23", <&mcp23s17_22>,"microchip,spi-present-mask:0"; ++ s08-spi0-0-int-gpio = <0>,"+24+32", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s08_00>,"interrupts:0"; ++ s08-spi0-1-int-gpio = <0>,"+25+33", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s08_01>,"interrupts:0"; ++ s08-spi1-0-int-gpio = <0>,"+26+34", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s08_10>,"interrupts:0"; ++ s08-spi1-1-int-gpio = <0>,"+27+35", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s08_11>,"interrupts:0"; ++ s08-spi1-2-int-gpio = <0>,"+28+36", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s08_12>,"interrupts:0"; ++ s08-spi2-0-int-gpio = <0>,"+29+37", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s08_20>,"interrupts:0"; ++ s08-spi2-1-int-gpio = <0>,"+30+38", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s08_21>,"interrupts:0"; ++ s08-spi2-2-int-gpio = <0>,"+31+39", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s08_22>,"interrupts:0"; ++ s17-spi0-0-int-gpio = <0>,"+24+40", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s17_00>,"interrupts:0"; ++ s17-spi0-1-int-gpio = <0>,"+25+41", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s17_01>,"interrupts:0"; ++ s17-spi1-0-int-gpio = <0>,"+26+42", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s17_10>,"interrupts:0"; ++ s17-spi1-1-int-gpio = <0>,"+27+43", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s17_11>,"interrupts:0"; ++ s17-spi1-2-int-gpio = <0>,"+28+44", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s17_12>,"interrupts:0"; ++ s17-spi2-0-int-gpio = <0>,"+29+45", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s17_20>,"interrupts:0"; ++ s17-spi2-1-int-gpio = <0>,"+30+46", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s17_21>,"interrupts:0"; ++ s17-spi2-2-int-gpio = <0>,"+31+47", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s17_22>,"interrupts:0"; ++ }; ++}; ++ diff --git a/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts b/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts new file mode 100755 index 0000000000000000000000000000000000000000..c96cdae27fb15055c4a6ec55d1ee45644768c392 @@ -118246,7 +120019,7 @@ index 0000000000000000000000000000000000000000..14a59dcf13ca64eb0bdbd34d70690a11 +}; diff --git a/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts b/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts new file mode 100644 -index 0000000000000000000000000000000000000000..68f6069dd24cbf6a2ed11365ac0717e36879abe3 +index 0000000000000000000000000000000000000000..87cf345f9641e62c5ed496c238333716cc5b27e6 --- /dev/null +++ b/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts @@ -0,0 +1,46 @@ @@ -118291,14 +120064,14 @@ index 0000000000000000000000000000000000000000..68f6069dd24cbf6a2ed11365ac0717e3 + fragment@3 { + target-path = "/aliases"; + __overlay__ { -+ serial0 = "/soc/uart@7e201000"; -+ serial1 = "/soc/uart@7e215040"; ++ serial0 = "/soc/serial@7e201000"; ++ serial1 = "/soc/serial@7e215040"; + }; + }; +}; diff --git a/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts b/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts new file mode 100644 -index 0000000000000000000000000000000000000000..17d04cf87195a6ff192e1ddbe4f92b1afa9e5ddb +index 0000000000000000000000000000000000000000..18f77453c38dbbf33f3726a5b4cce15b9f20f390 --- /dev/null +++ b/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts @@ -0,0 +1,64 @@ @@ -118361,8 +120134,8 @@ index 0000000000000000000000000000000000000000..17d04cf87195a6ff192e1ddbe4f92b1a + fragment@4 { + target-path = "/aliases"; + __overlay__ { -+ serial0 = "/soc/uart@7e201000"; -+ serial1 = "/soc/uart@7e215040"; ++ serial0 = "/soc/serial@7e201000"; ++ serial1 = "/soc/serial@7e215040"; + }; + }; +}; @@ -118887,10 +120660,10 @@ index 0000000000000000000000000000000000000000..ed2afc2f7fd6528f4e6d75bb2d534307 +}; diff --git a/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts new file mode 100644 -index 0000000000000000000000000000000000000000..40bf0e11015f5abebd0d4139276da888d728d569 +index 0000000000000000000000000000000000000000..50143a4bb215807ba0a0d0562f5827fa29a04de4 --- /dev/null +++ b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts -@@ -0,0 +1,34 @@ +@@ -0,0 +1,35 @@ +/dts-v1/; +/plugin/; + @@ -118923,14 +120696,15 @@ index 0000000000000000000000000000000000000000..40bf0e11015f5abebd0d4139276da888 + __overrides__ { + gpiopin = <&pps>,"gpios:4", + <&pps_pins>,"brcm,pins:0"; ++ assert_falling_edge = <&pps>,"assert-falling-edge?"; + }; +}; diff --git a/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts new file mode 100644 -index 0000000000000000000000000000000000000000..18e4e4fa9465c87eb96c8d712a9967c4805c7176 +index 0000000000000000000000000000000000000000..abdeddd0f2c873e2b1fffcf6f2b838ee0123768f --- /dev/null +++ b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts -@@ -0,0 +1,53 @@ +@@ -0,0 +1,47 @@ +/dts-v1/; +/plugin/; + @@ -118962,34 +120736,28 @@ index 0000000000000000000000000000000000000000..18e4e4fa9465c87eb96c8d712a9967c4 + + fragment@1 { + target = <&pwm>; -+ __overlay__ { ++ frag1: __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&pwm_pins>; ++ assigned-clock-rates = <100000000>; + status = "okay"; + }; + }; + -+ fragment@2 { -+ target = <&clk_pwm>; -+ frag2: __overlay__ { -+ clock-frequency = <100000000>; -+ }; -+ }; -+ + __overrides__ { + pin = <&pwm_pins>,"brcm,pins:0"; + pin2 = <&pwm_pins>,"brcm,pins:4"; + func = <&pwm_pins>,"brcm,function:0"; + func2 = <&pwm_pins>,"brcm,function:4"; -+ clock = <&frag2>,"clock-frequency:0"; ++ clock = <&frag1>,"assigned-clock-rates:0"; + }; +}; diff --git a/arch/arm/boot/dts/overlays/pwm-overlay.dts b/arch/arm/boot/dts/overlays/pwm-overlay.dts new file mode 100644 -index 0000000000000000000000000000000000000000..bf030a6d1545448faf5e7992a0dc5c505522433e +index 0000000000000000000000000000000000000000..27809e8dc74660a8e922a1aff1bb2ca7186e411c --- /dev/null +++ b/arch/arm/boot/dts/overlays/pwm-overlay.dts -@@ -0,0 +1,49 @@ +@@ -0,0 +1,43 @@ +/dts-v1/; +/plugin/; + @@ -119019,24 +120787,18 @@ index 0000000000000000000000000000000000000000..bf030a6d1545448faf5e7992a0dc5c50 + + fragment@1 { + target = <&pwm>; -+ __overlay__ { ++ frag1: __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&pwm_pins>; ++ assigned-clock-rates = <100000000>; + status = "okay"; + }; + }; + -+ fragment@2 { -+ target = <&clk_pwm>; -+ frag2: __overlay__ { -+ clock-frequency = <100000000>; -+ }; -+ }; -+ + __overrides__ { + pin = <&pwm_pins>,"brcm,pins:0"; + func = <&pwm_pins>,"brcm,function:0"; -+ clock = <&frag2>,"clock-frequency:0"; ++ clock = <&frag1>,"assigned-clock-rates:0"; + }; +}; diff --git a/arch/arm/boot/dts/overlays/qca7000-overlay.dts b/arch/arm/boot/dts/overlays/qca7000-overlay.dts @@ -119518,6 +121280,49 @@ index 0000000000000000000000000000000000000000..16b1247bfa618ff85936ddf78c3aea58 + }; + }; +}; +diff --git a/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..339d0d17c01ff182edd0871de9dc4ea744917ad4 +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts +@@ -0,0 +1,37 @@ ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; ++ ++ fragment@0 { ++ target = <&i2c_arm>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ sc16is750: sc16is750@48 { ++ compatible = "nxp,sc16is750"; ++ reg = <0x48>; /* address */ ++ clocks = <&sc16is750_clk>; ++ interrupt-parent = <&gpio>; ++ interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */ ++ #gpio-cells = <2>; ++ ++ sc16is750_clk: sc16is750_clk { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <14745600>; ++ }; ++ }; ++ }; ++ }; ++ ++ ++ __overrides__ { ++ int_pin = <&sc16is750>,"interrupts:0"; ++ addr = <&sc16is750>,"reg:0"; ++ }; ++ ++}; diff --git a/arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts b/arch/arm/boot/dts/overlays/sc16is752-spi1-overlay.dts new file mode 100644 index 0000000000000000000000000000000000000000..d0a9e82dbea143e80249064873d8b9f0b56b2eaa @@ -119880,7 +121685,7 @@ index 0000000000000000000000000000000000000000..095f52c355fd6382233d8a471c3590a4 +}; diff --git a/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts new file mode 100644 -index 0000000000000000000000000000000000000000..9648063d5963f2f6ec8f31038f3af5820a8135a6 +index 0000000000000000000000000000000000000000..49803b309f8643385a3c97f6cdd2015f863d2d34 --- /dev/null +++ b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts @@ -0,0 +1,31 @@ @@ -119904,14 +121709,14 @@ index 0000000000000000000000000000000000000000..9648063d5963f2f6ec8f31038f3af582 + fragment@1 { + target = <&spi0_cs_pins>; + __overlay__ { -+ bcrm,pins = <36 35>; ++ brcm,pins = <36 35>; + }; + }; + + fragment@2 { + target = <&spi0_pins>; + __overlay__ { -+ bcrm,pins = <37 38 39>; ++ brcm,pins = <37 38 39>; + }; + }; +}; @@ -121031,10 +122836,33 @@ index 0000000000000000000000000000000000000000..8498134fdbb3912e9ce18282b53084d8 + +}; -From 6e0a09d770606d1e994d632419d8c926165283e3 Mon Sep 17 00:00:00 2001 +From 7477e3342d98ab2a5ba2b053ec08b233f6cb2716 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 24 Aug 2016 16:28:44 +0100 +Subject: [PATCH 061/132] kbuild: Ignore dtco targets when filtering symbols + +--- + scripts/Kbuild.include | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include +index 179219845dfcdfbeb586d12c5ec1296095d9fbf4..e0743e44f84188667a0c322e8c3d36f18385dcd3 100644 +--- a/scripts/Kbuild.include ++++ b/scripts/Kbuild.include +@@ -284,7 +284,7 @@ ksym_dep_filter = \ + $(CPP) $(call flags_nodeps,c_flags) -D__KSYM_DEPS__ $< ;; \ + as_*_S|cpp_s_S) \ + $(CPP) $(call flags_nodeps,a_flags) -D__KSYM_DEPS__ $< ;; \ +- boot*|build*|*cpp_lds_S|dtc|host*|vdso*) : ;; \ ++ boot*|build*|*cpp_lds_S|dtc*|host*|vdso*) : ;; \ + *) echo "Don't know how to preprocess $(1)" >&2; false ;; \ + esac | tr ";" "\n" | sed -rn 's/^.*=== __KSYM_(.*) ===.*$$/KSYM_\1/p' + + +From 00e56b93428de52f017c603150705a0aed894160 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 13 Mar 2015 20:00:21 +0000 -Subject: [PATCH 052/160] BCM270X_DT: Add a .dtbo target, use for overlays +Subject: [PATCH 062/132] BCM270X_DT: Add a .dtbo target, use for overlays Change the filenames and extensions to keep the pre-DDT style of overlay (-overlay.dtb) distinct from new ones that use a @@ -121096,10 +122924,10 @@ index a1be75d0a5fd3fbf4742e555046896ea6fa6fe65..ad8dc1c93d04bc929b551c5a47f67d24 .PHONY: $(PHONY) diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib -index e7df0f5db7ec273f45b755668815ce96ba1ffe46..8f50f48329b9460b7268322ea4fd99cf764134ec 100644 +index 0a07f9014944ed92a8e2e42983ae43be60b3e471..b1513a7c175885137034b9f7225788c0a7c35027 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib -@@ -311,6 +311,16 @@ cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \ +@@ -312,6 +312,16 @@ cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \ $(obj)/%.dtb: $(src)/%.dts FORCE $(call if_changed_dep,dtc) @@ -121117,10 +122945,10 @@ index e7df0f5db7ec273f45b755668815ce96ba1ffe46..8f50f48329b9460b7268322ea4fd99cf # Bzip2 -From 2edf09289d2a34b13049232e399750abf44be35d Mon Sep 17 00:00:00 2001 +From 1e1759d301aded667d80eeb627445c6b89a2113e Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 8 Apr 2016 17:43:27 +0100 -Subject: [PATCH 053/160] BCM270X_DT: Don't generate "linux,phandle" props +Subject: [PATCH 063/132] BCM270X_DT: Don't generate "linux,phandle" props The EPAPR standard says to use "phandle" properties to store phandles, rather than the deprecated "linux,phandle" version. By default, dtc @@ -121133,10 +122961,10 @@ Signed-off-by: Phil Elwell 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib -index 8f50f48329b9460b7268322ea4fd99cf764134ec..c1c3ceb265a3fd223b8a2a0a548ddad34f88ef4e 100644 +index b1513a7c175885137034b9f7225788c0a7c35027..1d949b7410600dd3b04a3acde8c41cfead15bfa4 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib -@@ -313,7 +313,7 @@ $(obj)/%.dtb: $(src)/%.dts FORCE +@@ -314,7 +314,7 @@ $(obj)/%.dtb: $(src)/%.dts FORCE quiet_cmd_dtco = DTCO $@ cmd_dtco = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ @@ -121146,10 +122974,10 @@ index 8f50f48329b9460b7268322ea4fd99cf764134ec..c1c3ceb265a3fd223b8a2a0a548ddad3 -d $(depfile).dtc.tmp $(dtc-tmp) ; \ cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) -From a91293f6aaffc3eee166d14e32bd5399cd73d315 Mon Sep 17 00:00:00 2001 +From 5590a12b51e0ecd64d1ad41076b4399e6816f426 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 6 Feb 2015 13:50:57 +0000 -Subject: [PATCH 054/160] BCM270x_DT: Add pwr_led, and the required "input" +Subject: [PATCH 064/132] BCM270x_DT: Add pwr_led, and the required "input" trigger The "input" trigger makes the associated GPIO an input. This is to support @@ -121179,7 +123007,7 @@ See: https://github.com/raspberrypi/linux/issues/1064 create mode 100644 drivers/leds/trigger/ledtrig-input.c diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c -index 8229f063b483c77cf993891cb2bc2e7e9239ee6a..7a960e0bc2c7f918c880f724c22c773818f7df23 100644 +index 9b991d46ed848a0de40185eef30d9691c7e07e88..f454881346bbf01ea98aa2662e82f8c66dd11318 100644 --- a/drivers/leds/leds-gpio.c +++ b/drivers/leds/leds-gpio.c @@ -46,8 +46,15 @@ static void gpio_led_set(struct led_classdev *led_cdev, @@ -121223,7 +123051,7 @@ index 8229f063b483c77cf993891cb2bc2e7e9239ee6a..7a960e0bc2c7f918c880f724c22c7738 state = !!gpiod_get_value_cansleep(led_dat->gpiod); else diff --git a/drivers/leds/trigger/Kconfig b/drivers/leds/trigger/Kconfig -index 9893d911390daa4dd77986065ebde50b517d6b72..fbbe765e2fd2a593c2b1b40f71e4cb63d6339d80 100644 +index 3f9ddb9fafa77f1f1fe5535c5e947838761e4f35..c1b6c83f3b63f993452893f136c5da54d0ada8e7 100644 --- a/drivers/leds/trigger/Kconfig +++ b/drivers/leds/trigger/Kconfig @@ -116,6 +116,13 @@ config LEDS_TRIGGER_CAMERA @@ -121241,7 +123069,7 @@ index 9893d911390daa4dd77986065ebde50b517d6b72..fbbe765e2fd2a593c2b1b40f71e4cb63 bool "LED Panic Trigger" depends on LEDS_TRIGGERS diff --git a/drivers/leds/trigger/Makefile b/drivers/leds/trigger/Makefile -index 8cc64a4f4e255c1dd9fafde1ccd72d5a08ccbd5b..9452fe5640fec612f0e5e6a072d1af26d855847d 100644 +index a72c43cffebf43bc7ebfd1eb1103b9ccff73d075..51b90c46890872fd1b148ec748edce0e0ce8fee1 100644 --- a/drivers/leds/trigger/Makefile +++ b/drivers/leds/trigger/Makefile @@ -9,4 +9,5 @@ obj-$(CONFIG_LEDS_TRIGGER_CPU) += ledtrig-cpu.o @@ -121311,7 +123139,7 @@ index 0000000000000000000000000000000000000000..27f8ebea43d86fc51c98db5c953da05b +MODULE_DESCRIPTION("Set LED GPIO to Input \"trigger\""); +MODULE_LICENSE("GPL"); diff --git a/include/linux/leds.h b/include/linux/leds.h -index e5e7f2e80a54dd2f15737a3ef478287458641f6e..68086e559d963ed06a0ceb916f9b1555b213ddf8 100644 +index 8a3b5d29602ffe665cfb26522180f3a696664371..d067976ddc2f34d5476bcd9321856b1c40e17e12 100644 --- a/include/linux/leds.h +++ b/include/linux/leds.h @@ -52,6 +52,9 @@ struct led_classdev { @@ -121325,10 +123153,10 @@ index e5e7f2e80a54dd2f15737a3ef478287458641f6e..68086e559d963ed06a0ceb916f9b1555 /* Set LED brightness level * Must not sleep. Use brightness_set_blocking for drivers -From 770c5750b4704ef9358d31fb40af343e8ba66f72 Mon Sep 17 00:00:00 2001 +From be289b004e57ecf30dd2daa95f73ddedf74f2993 Mon Sep 17 00:00:00 2001 From: Siarhei Siamashka Date: Mon, 17 Jun 2013 13:32:11 +0300 -Subject: [PATCH 055/160] fbdev: add FBIOCOPYAREA ioctl +Subject: [PATCH 065/132] fbdev: add FBIOCOPYAREA ioctl Based on the patch authored by Ali Gholami Rudi at https://lkml.org/lkml/2009/7/13/153 @@ -121338,15 +123166,15 @@ is hardware accelerated (otherwide it does not make any sense). Signed-off-by: Siarhei Siamashka --- - drivers/video/fbdev/core/fbmem.c | 30 ++++++++++++++++++++++++++++++ + drivers/video/fbdev/core/fbmem.c | 36 ++++++++++++++++++++++++++++++++++++ include/uapi/linux/fb.h | 5 +++++ - 2 files changed, 35 insertions(+) + 2 files changed, 41 insertions(+) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c -index 76c1ad96fb37d4f07bbde6462f54825f566acbac..1d3b35ec8e393aac43dca0ec4566f7a7d0d8998a 100644 +index 76c1ad96fb37d4f07bbde6462f54825f566acbac..7bf48e478c056fcd745026902961506d5826615d 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c -@@ -1084,6 +1084,25 @@ fb_blank(struct fb_info *info, int blank) +@@ -1084,6 +1084,31 @@ fb_blank(struct fb_info *info, int blank) } EXPORT_SYMBOL(fb_blank); @@ -121356,7 +123184,13 @@ index 76c1ad96fb37d4f07bbde6462f54825f566acbac..1d3b35ec8e393aac43dca0ec4566f7a7 + int ret = 0; + if (!lock_fb_info(info)) + return -ENODEV; -+ if (copy->dx + copy->width > info->var.xres || ++ if (copy->dx >= info->var.xres || ++ copy->sx >= info->var.xres || ++ copy->width > info->var.xres || ++ copy->dy >= info->var.yres || ++ copy->sy >= info->var.yres || ++ copy->height > info->var.yres || ++ copy->dx + copy->width > info->var.xres || + copy->sx + copy->width > info->var.xres || + copy->dy + copy->height > info->var.yres || + copy->sy + copy->height > info->var.yres) { @@ -121372,7 +123206,7 @@ index 76c1ad96fb37d4f07bbde6462f54825f566acbac..1d3b35ec8e393aac43dca0ec4566f7a7 static long do_fb_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg) { -@@ -1094,6 +1113,7 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd, +@@ -1094,6 +1119,7 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd, struct fb_cmap cmap_from; struct fb_cmap_user cmap; struct fb_event event; @@ -121380,7 +123214,7 @@ index 76c1ad96fb37d4f07bbde6462f54825f566acbac..1d3b35ec8e393aac43dca0ec4566f7a7 void __user *argp = (void __user *)arg; long ret = 0; -@@ -1211,6 +1231,15 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd, +@@ -1211,6 +1237,15 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd, unlock_fb_info(info); console_unlock(); break; @@ -121396,7 +123230,7 @@ index 76c1ad96fb37d4f07bbde6462f54825f566acbac..1d3b35ec8e393aac43dca0ec4566f7a7 default: if (!lock_fb_info(info)) return -ENODEV; -@@ -1365,6 +1394,7 @@ static long fb_compat_ioctl(struct file *file, unsigned int cmd, +@@ -1365,6 +1400,7 @@ static long fb_compat_ioctl(struct file *file, unsigned int cmd, case FBIOPAN_DISPLAY: case FBIOGET_CON2FBMAP: case FBIOPUT_CON2FBMAP: @@ -121421,10 +123255,10 @@ index fb795c3b3c178ad3cd7c9e9e4547ffd492bac181..fa72af0c981710fe80bacf4cf6612f6d #define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */ #define FB_TYPE_PLANES 1 /* Non interleaved planes */ -From 09f78303217c82bcea463be03a7fa78f4fbf2ecf Mon Sep 17 00:00:00 2001 +From f020310cac2f1789749fac6d27a3a57d7914ab3c Mon Sep 17 00:00:00 2001 From: Harm Hanemaaijer Date: Thu, 20 Jun 2013 20:21:39 +0200 -Subject: [PATCH 056/160] Speed up console framebuffer imageblit function +Subject: [PATCH 066/132] Speed up console framebuffer imageblit function Especially on platforms with a slower CPU but a relatively high framebuffer fill bandwidth, like current ARM devices, the existing @@ -121633,10 +123467,10 @@ index a2bb276a8b2463eee98eb237c4647bc00cd93601..436494fba15abecb400ef28688466faf start_index, pitch_index); } else -From 7cd36a36fa32bb664979c11f37815b3ebf77ea57 Mon Sep 17 00:00:00 2001 +From a9bced7271d8d121ddb4e3178063db865d9414ff Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 8 May 2013 11:46:50 +0100 -Subject: [PATCH 057/160] enabling the realtime clock 1-wire chip DS1307 and +Subject: [PATCH 067/132] enabling the realtime clock 1-wire chip DS1307 and 1-wire on GPIO4 (as a module) 1-wire: Add support for configuring pin for w1-gpio kernel module @@ -121886,10 +123720,10 @@ index d58594a3232492e33f1dd4babd3798b03e0f0203..feae94256256316fd9d850c3d83325af unsigned int ext_pullup_enable_pin; unsigned int pullup_duration; -From 4f51b57a1425f129b5ba86caf22ebaf047410f93 Mon Sep 17 00:00:00 2001 +From c9839a81c9fc89a22c7d411993e642b10636b05c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 18 Dec 2013 22:16:19 +0000 -Subject: [PATCH 058/160] config: Enable CONFIG_MEMCG, but leave it disabled +Subject: [PATCH 068/132] config: Enable CONFIG_MEMCG, but leave it disabled (due to memory cost). Enable with cgroup_enable=memory. --- @@ -121897,10 +123731,10 @@ Subject: [PATCH 058/160] config: Enable CONFIG_MEMCG, but leave it disabled 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/kernel/cgroup.c b/kernel/cgroup.c -index 129a7ca5f1590b42e50326ad32e72210ce023c7d..1022c22af38c9ba8aef6551c4bc320f438a3d0af 100644 +index d6b729beba4930bbb1a1ddc4a6a6b8533bbf94e0..69e8d214f663572319f784fe17032b1ef4c588b4 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c -@@ -5592,7 +5592,7 @@ int __init cgroup_init_early(void) +@@ -5609,7 +5609,7 @@ int __init cgroup_init_early(void) return 0; } @@ -121909,7 +123743,7 @@ index 129a7ca5f1590b42e50326ad32e72210ce023c7d..1022c22af38c9ba8aef6551c4bc320f4 /** * cgroup_init - cgroup initialization -@@ -6122,6 +6122,28 @@ static int __init cgroup_no_v1(char *str) +@@ -6139,6 +6139,28 @@ static int __init cgroup_no_v1(char *str) } __setup("cgroup_no_v1=", cgroup_no_v1); @@ -121939,2619 +123773,10 @@ index 129a7ca5f1590b42e50326ad32e72210ce023c7d..1022c22af38c9ba8aef6551c4bc320f4 * css_tryget_online_from_dir - get corresponding css from a cgroup dentry * @dentry: directory dentry of interest -From ead527df060535604ed8b4a62e11b3114594a9d4 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Mon, 13 Apr 2015 17:16:29 +0100 -Subject: [PATCH 059/160] config: Add default configs - ---- - arch/arm/configs/bcm2709_defconfig | 1288 +++++++++++++++++++++++++++++++++++ - arch/arm/configs/bcmrpi_defconfig | 1296 ++++++++++++++++++++++++++++++++++++ - 2 files changed, 2584 insertions(+) - create mode 100644 arch/arm/configs/bcm2709_defconfig - create mode 100644 arch/arm/configs/bcmrpi_defconfig - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -new file mode 100644 -index 0000000000000000000000000000000000000000..af34386096ebc5b3c7d7cf60120e5ad48ba635b8 ---- /dev/null -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -0,0 +1,1288 @@ -+# CONFIG_ARM_PATCH_PHYS_VIRT is not set -+CONFIG_PHYS_OFFSET=0 -+CONFIG_LOCALVERSION="-v7" -+# CONFIG_LOCALVERSION_AUTO is not set -+CONFIG_SYSVIPC=y -+CONFIG_POSIX_MQUEUE=y -+CONFIG_NO_HZ=y -+CONFIG_HIGH_RES_TIMERS=y -+CONFIG_BSD_PROCESS_ACCT=y -+CONFIG_BSD_PROCESS_ACCT_V3=y -+CONFIG_TASKSTATS=y -+CONFIG_TASK_DELAY_ACCT=y -+CONFIG_TASK_XACCT=y -+CONFIG_TASK_IO_ACCOUNTING=y -+CONFIG_IKCONFIG=m -+CONFIG_IKCONFIG_PROC=y -+CONFIG_NMI_LOG_BUF_SHIFT=12 -+CONFIG_MEMCG=y -+CONFIG_BLK_CGROUP=y -+CONFIG_CGROUP_FREEZER=y -+CONFIG_CPUSETS=y -+CONFIG_CGROUP_DEVICE=y -+CONFIG_CGROUP_CPUACCT=y -+CONFIG_NAMESPACES=y -+CONFIG_SCHED_AUTOGROUP=y -+CONFIG_BLK_DEV_INITRD=y -+CONFIG_EMBEDDED=y -+# CONFIG_COMPAT_BRK is not set -+CONFIG_PROFILING=y -+CONFIG_OPROFILE=m -+CONFIG_KPROBES=y -+CONFIG_JUMP_LABEL=y -+CONFIG_MODULES=y -+CONFIG_MODULE_UNLOAD=y -+CONFIG_MODVERSIONS=y -+CONFIG_MODULE_SRCVERSION_ALL=y -+CONFIG_TRIM_UNUSED_KSYMS=y -+CONFIG_BLK_DEV_THROTTLING=y -+CONFIG_PARTITION_ADVANCED=y -+CONFIG_MAC_PARTITION=y -+CONFIG_CFQ_GROUP_IOSCHED=y -+CONFIG_ARCH_BCM2709=y -+# CONFIG_CACHE_L2X0 is not set -+CONFIG_SMP=y -+CONFIG_HAVE_ARM_ARCH_TIMER=y -+CONFIG_VMSPLIT_2G=y -+CONFIG_PREEMPT_VOLUNTARY=y -+CONFIG_AEABI=y -+CONFIG_OABI_COMPAT=y -+# CONFIG_CPU_SW_DOMAIN_PAN is not set -+CONFIG_CLEANCACHE=y -+CONFIG_FRONTSWAP=y -+CONFIG_CMA=y -+CONFIG_ZSMALLOC=m -+CONFIG_PGTABLE_MAPPING=y -+CONFIG_UACCESS_WITH_MEMCPY=y -+CONFIG_SECCOMP=y -+# CONFIG_ATAGS is not set -+CONFIG_ZBOOT_ROM_TEXT=0x0 -+CONFIG_ZBOOT_ROM_BSS=0x0 -+CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" -+CONFIG_CPU_FREQ=y -+CONFIG_CPU_FREQ_STAT=m -+CONFIG_CPU_FREQ_STAT_DETAILS=y -+CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y -+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -+CONFIG_CPU_FREQ_GOV_USERSPACE=y -+CONFIG_CPU_FREQ_GOV_ONDEMAND=y -+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y -+CONFIG_VFP=y -+CONFIG_NEON=y -+CONFIG_KERNEL_MODE_NEON=y -+CONFIG_BINFMT_MISC=m -+# CONFIG_SUSPEND is not set -+CONFIG_PM=y -+CONFIG_NET=y -+CONFIG_PACKET=y -+CONFIG_UNIX=y -+CONFIG_XFRM_USER=y -+CONFIG_NET_KEY=m -+CONFIG_INET=y -+CONFIG_IP_MULTICAST=y -+CONFIG_IP_ADVANCED_ROUTER=y -+CONFIG_IP_MULTIPLE_TABLES=y -+CONFIG_IP_ROUTE_MULTIPATH=y -+CONFIG_IP_ROUTE_VERBOSE=y -+CONFIG_IP_PNP=y -+CONFIG_IP_PNP_DHCP=y -+CONFIG_IP_PNP_RARP=y -+CONFIG_NET_IPIP=m -+CONFIG_NET_IPGRE_DEMUX=m -+CONFIG_NET_IPGRE=m -+CONFIG_IP_MROUTE=y -+CONFIG_IP_MROUTE_MULTIPLE_TABLES=y -+CONFIG_IP_PIMSM_V1=y -+CONFIG_IP_PIMSM_V2=y -+CONFIG_SYN_COOKIES=y -+CONFIG_INET_AH=m -+CONFIG_INET_ESP=m -+CONFIG_INET_IPCOMP=m -+CONFIG_INET_XFRM_MODE_TRANSPORT=m -+CONFIG_INET_XFRM_MODE_TUNNEL=m -+CONFIG_INET_XFRM_MODE_BEET=m -+CONFIG_INET_DIAG=m -+CONFIG_IPV6=m -+CONFIG_IPV6_ROUTER_PREF=y -+CONFIG_INET6_AH=m -+CONFIG_INET6_ESP=m -+CONFIG_INET6_IPCOMP=m -+CONFIG_IPV6_TUNNEL=m -+CONFIG_IPV6_MULTIPLE_TABLES=y -+CONFIG_IPV6_SUBTREES=y -+CONFIG_IPV6_MROUTE=y -+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y -+CONFIG_IPV6_PIMSM_V2=y -+CONFIG_NETFILTER=y -+CONFIG_NF_CONNTRACK=m -+CONFIG_NF_CONNTRACK_ZONES=y -+CONFIG_NF_CONNTRACK_EVENTS=y -+CONFIG_NF_CONNTRACK_TIMESTAMP=y -+CONFIG_NF_CT_PROTO_DCCP=m -+CONFIG_NF_CT_PROTO_UDPLITE=m -+CONFIG_NF_CONNTRACK_AMANDA=m -+CONFIG_NF_CONNTRACK_FTP=m -+CONFIG_NF_CONNTRACK_H323=m -+CONFIG_NF_CONNTRACK_IRC=m -+CONFIG_NF_CONNTRACK_NETBIOS_NS=m -+CONFIG_NF_CONNTRACK_SNMP=m -+CONFIG_NF_CONNTRACK_PPTP=m -+CONFIG_NF_CONNTRACK_SANE=m -+CONFIG_NF_CONNTRACK_SIP=m -+CONFIG_NF_CONNTRACK_TFTP=m -+CONFIG_NF_CT_NETLINK=m -+CONFIG_NETFILTER_XT_SET=m -+CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m -+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -+CONFIG_NETFILTER_XT_TARGET_DSCP=m -+CONFIG_NETFILTER_XT_TARGET_HMARK=m -+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m -+CONFIG_NETFILTER_XT_TARGET_LED=m -+CONFIG_NETFILTER_XT_TARGET_LOG=m -+CONFIG_NETFILTER_XT_TARGET_MARK=m -+CONFIG_NETFILTER_XT_TARGET_NFLOG=m -+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -+CONFIG_NETFILTER_XT_TARGET_TEE=m -+CONFIG_NETFILTER_XT_TARGET_TPROXY=m -+CONFIG_NETFILTER_XT_TARGET_TRACE=m -+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m -+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m -+CONFIG_NETFILTER_XT_MATCH_BPF=m -+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m -+CONFIG_NETFILTER_XT_MATCH_COMMENT=m -+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -+CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m -+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -+CONFIG_NETFILTER_XT_MATCH_CPU=m -+CONFIG_NETFILTER_XT_MATCH_DCCP=m -+CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m -+CONFIG_NETFILTER_XT_MATCH_DSCP=m -+CONFIG_NETFILTER_XT_MATCH_ESP=m -+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -+CONFIG_NETFILTER_XT_MATCH_HELPER=m -+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m -+CONFIG_NETFILTER_XT_MATCH_IPVS=m -+CONFIG_NETFILTER_XT_MATCH_LENGTH=m -+CONFIG_NETFILTER_XT_MATCH_LIMIT=m -+CONFIG_NETFILTER_XT_MATCH_MAC=m -+CONFIG_NETFILTER_XT_MATCH_MARK=m -+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -+CONFIG_NETFILTER_XT_MATCH_NFACCT=m -+CONFIG_NETFILTER_XT_MATCH_OSF=m -+CONFIG_NETFILTER_XT_MATCH_OWNER=m -+CONFIG_NETFILTER_XT_MATCH_POLICY=m -+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m -+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -+CONFIG_NETFILTER_XT_MATCH_QUOTA=m -+CONFIG_NETFILTER_XT_MATCH_RATEEST=m -+CONFIG_NETFILTER_XT_MATCH_REALM=m -+CONFIG_NETFILTER_XT_MATCH_RECENT=m -+CONFIG_NETFILTER_XT_MATCH_SOCKET=m -+CONFIG_NETFILTER_XT_MATCH_STATE=m -+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -+CONFIG_NETFILTER_XT_MATCH_STRING=m -+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -+CONFIG_NETFILTER_XT_MATCH_TIME=m -+CONFIG_NETFILTER_XT_MATCH_U32=m -+CONFIG_IP_SET=m -+CONFIG_IP_SET_BITMAP_IP=m -+CONFIG_IP_SET_BITMAP_IPMAC=m -+CONFIG_IP_SET_BITMAP_PORT=m -+CONFIG_IP_SET_HASH_IP=m -+CONFIG_IP_SET_HASH_IPPORT=m -+CONFIG_IP_SET_HASH_IPPORTIP=m -+CONFIG_IP_SET_HASH_IPPORTNET=m -+CONFIG_IP_SET_HASH_NET=m -+CONFIG_IP_SET_HASH_NETPORT=m -+CONFIG_IP_SET_HASH_NETIFACE=m -+CONFIG_IP_SET_LIST_SET=m -+CONFIG_IP_VS=m -+CONFIG_IP_VS_PROTO_TCP=y -+CONFIG_IP_VS_PROTO_UDP=y -+CONFIG_IP_VS_PROTO_ESP=y -+CONFIG_IP_VS_PROTO_AH=y -+CONFIG_IP_VS_PROTO_SCTP=y -+CONFIG_IP_VS_RR=m -+CONFIG_IP_VS_WRR=m -+CONFIG_IP_VS_LC=m -+CONFIG_IP_VS_WLC=m -+CONFIG_IP_VS_LBLC=m -+CONFIG_IP_VS_LBLCR=m -+CONFIG_IP_VS_DH=m -+CONFIG_IP_VS_SH=m -+CONFIG_IP_VS_SED=m -+CONFIG_IP_VS_NQ=m -+CONFIG_IP_VS_FTP=m -+CONFIG_IP_VS_PE_SIP=m -+CONFIG_NF_CONNTRACK_IPV4=m -+CONFIG_IP_NF_IPTABLES=m -+CONFIG_IP_NF_MATCH_AH=m -+CONFIG_IP_NF_MATCH_ECN=m -+CONFIG_IP_NF_MATCH_RPFILTER=m -+CONFIG_IP_NF_MATCH_TTL=m -+CONFIG_IP_NF_FILTER=m -+CONFIG_IP_NF_TARGET_REJECT=m -+CONFIG_IP_NF_NAT=m -+CONFIG_IP_NF_TARGET_MASQUERADE=m -+CONFIG_IP_NF_TARGET_NETMAP=m -+CONFIG_IP_NF_TARGET_REDIRECT=m -+CONFIG_IP_NF_MANGLE=m -+CONFIG_IP_NF_TARGET_CLUSTERIP=m -+CONFIG_IP_NF_TARGET_ECN=m -+CONFIG_IP_NF_TARGET_TTL=m -+CONFIG_IP_NF_RAW=m -+CONFIG_IP_NF_ARPTABLES=m -+CONFIG_IP_NF_ARPFILTER=m -+CONFIG_IP_NF_ARP_MANGLE=m -+CONFIG_NF_CONNTRACK_IPV6=m -+CONFIG_IP6_NF_IPTABLES=m -+CONFIG_IP6_NF_MATCH_AH=m -+CONFIG_IP6_NF_MATCH_EUI64=m -+CONFIG_IP6_NF_MATCH_FRAG=m -+CONFIG_IP6_NF_MATCH_OPTS=m -+CONFIG_IP6_NF_MATCH_HL=m -+CONFIG_IP6_NF_MATCH_IPV6HEADER=m -+CONFIG_IP6_NF_MATCH_MH=m -+CONFIG_IP6_NF_MATCH_RPFILTER=m -+CONFIG_IP6_NF_MATCH_RT=m -+CONFIG_IP6_NF_TARGET_HL=m -+CONFIG_IP6_NF_FILTER=m -+CONFIG_IP6_NF_TARGET_REJECT=m -+CONFIG_IP6_NF_MANGLE=m -+CONFIG_IP6_NF_RAW=m -+CONFIG_IP6_NF_NAT=m -+CONFIG_IP6_NF_TARGET_MASQUERADE=m -+CONFIG_IP6_NF_TARGET_NPT=m -+CONFIG_BRIDGE_NF_EBTABLES=m -+CONFIG_BRIDGE_EBT_BROUTE=m -+CONFIG_BRIDGE_EBT_T_FILTER=m -+CONFIG_BRIDGE_EBT_T_NAT=m -+CONFIG_BRIDGE_EBT_802_3=m -+CONFIG_BRIDGE_EBT_AMONG=m -+CONFIG_BRIDGE_EBT_ARP=m -+CONFIG_BRIDGE_EBT_IP=m -+CONFIG_BRIDGE_EBT_IP6=m -+CONFIG_BRIDGE_EBT_LIMIT=m -+CONFIG_BRIDGE_EBT_MARK=m -+CONFIG_BRIDGE_EBT_PKTTYPE=m -+CONFIG_BRIDGE_EBT_STP=m -+CONFIG_BRIDGE_EBT_VLAN=m -+CONFIG_BRIDGE_EBT_ARPREPLY=m -+CONFIG_BRIDGE_EBT_DNAT=m -+CONFIG_BRIDGE_EBT_MARK_T=m -+CONFIG_BRIDGE_EBT_REDIRECT=m -+CONFIG_BRIDGE_EBT_SNAT=m -+CONFIG_BRIDGE_EBT_LOG=m -+CONFIG_BRIDGE_EBT_NFLOG=m -+CONFIG_SCTP_COOKIE_HMAC_SHA1=y -+CONFIG_ATM=m -+CONFIG_L2TP=m -+CONFIG_L2TP_V3=y -+CONFIG_L2TP_IP=m -+CONFIG_L2TP_ETH=m -+CONFIG_BRIDGE=m -+CONFIG_VLAN_8021Q=m -+CONFIG_VLAN_8021Q_GVRP=y -+CONFIG_ATALK=m -+CONFIG_6LOWPAN=m -+CONFIG_IEEE802154=m -+CONFIG_IEEE802154_6LOWPAN=m -+CONFIG_MAC802154=m -+CONFIG_NET_SCHED=y -+CONFIG_NET_SCH_CBQ=m -+CONFIG_NET_SCH_HTB=m -+CONFIG_NET_SCH_HFSC=m -+CONFIG_NET_SCH_PRIO=m -+CONFIG_NET_SCH_MULTIQ=m -+CONFIG_NET_SCH_RED=m -+CONFIG_NET_SCH_SFB=m -+CONFIG_NET_SCH_SFQ=m -+CONFIG_NET_SCH_TEQL=m -+CONFIG_NET_SCH_TBF=m -+CONFIG_NET_SCH_GRED=m -+CONFIG_NET_SCH_DSMARK=m -+CONFIG_NET_SCH_NETEM=m -+CONFIG_NET_SCH_DRR=m -+CONFIG_NET_SCH_MQPRIO=m -+CONFIG_NET_SCH_CHOKE=m -+CONFIG_NET_SCH_QFQ=m -+CONFIG_NET_SCH_CODEL=m -+CONFIG_NET_SCH_FQ_CODEL=m -+CONFIG_NET_SCH_INGRESS=m -+CONFIG_NET_SCH_PLUG=m -+CONFIG_NET_CLS_BASIC=m -+CONFIG_NET_CLS_TCINDEX=m -+CONFIG_NET_CLS_ROUTE4=m -+CONFIG_NET_CLS_FW=m -+CONFIG_NET_CLS_U32=m -+CONFIG_CLS_U32_MARK=y -+CONFIG_NET_CLS_RSVP=m -+CONFIG_NET_CLS_RSVP6=m -+CONFIG_NET_CLS_FLOW=m -+CONFIG_NET_CLS_CGROUP=m -+CONFIG_NET_EMATCH=y -+CONFIG_NET_EMATCH_CMP=m -+CONFIG_NET_EMATCH_NBYTE=m -+CONFIG_NET_EMATCH_U32=m -+CONFIG_NET_EMATCH_META=m -+CONFIG_NET_EMATCH_TEXT=m -+CONFIG_NET_EMATCH_IPSET=m -+CONFIG_NET_CLS_ACT=y -+CONFIG_NET_ACT_POLICE=m -+CONFIG_NET_ACT_GACT=m -+CONFIG_GACT_PROB=y -+CONFIG_NET_ACT_MIRRED=m -+CONFIG_NET_ACT_IPT=m -+CONFIG_NET_ACT_NAT=m -+CONFIG_NET_ACT_PEDIT=m -+CONFIG_NET_ACT_SIMP=m -+CONFIG_NET_ACT_SKBEDIT=m -+CONFIG_NET_ACT_CSUM=m -+CONFIG_BATMAN_ADV=m -+CONFIG_OPENVSWITCH=m -+CONFIG_NET_PKTGEN=m -+CONFIG_HAMRADIO=y -+CONFIG_AX25=m -+CONFIG_NETROM=m -+CONFIG_ROSE=m -+CONFIG_MKISS=m -+CONFIG_6PACK=m -+CONFIG_BPQETHER=m -+CONFIG_BAYCOM_SER_FDX=m -+CONFIG_BAYCOM_SER_HDX=m -+CONFIG_YAM=m -+CONFIG_CAN=m -+CONFIG_CAN_VCAN=m -+CONFIG_CAN_MCP251X=m -+CONFIG_IRDA=m -+CONFIG_IRLAN=m -+CONFIG_IRNET=m -+CONFIG_IRCOMM=m -+CONFIG_IRDA_ULTRA=y -+CONFIG_IRDA_CACHE_LAST_LSAP=y -+CONFIG_IRDA_FAST_RR=y -+CONFIG_IRTTY_SIR=m -+CONFIG_KINGSUN_DONGLE=m -+CONFIG_KSDAZZLE_DONGLE=m -+CONFIG_KS959_DONGLE=m -+CONFIG_USB_IRDA=m -+CONFIG_SIGMATEL_FIR=m -+CONFIG_MCS_FIR=m -+CONFIG_BT=m -+CONFIG_BT_RFCOMM=m -+CONFIG_BT_RFCOMM_TTY=y -+CONFIG_BT_BNEP=m -+CONFIG_BT_BNEP_MC_FILTER=y -+CONFIG_BT_BNEP_PROTO_FILTER=y -+CONFIG_BT_HIDP=m -+CONFIG_BT_6LOWPAN=m -+CONFIG_BT_HCIBTUSB=m -+CONFIG_BT_HCIUART=m -+CONFIG_BT_HCIUART_3WIRE=y -+CONFIG_BT_HCIUART_BCM=y -+CONFIG_BT_HCIBCM203X=m -+CONFIG_BT_HCIBPA10X=m -+CONFIG_BT_HCIBFUSB=m -+CONFIG_BT_HCIVHCI=m -+CONFIG_BT_MRVL=m -+CONFIG_BT_MRVL_SDIO=m -+CONFIG_BT_ATH3K=m -+CONFIG_BT_WILINK=m -+CONFIG_MAC80211=m -+CONFIG_MAC80211_MESH=y -+CONFIG_WIMAX=m -+CONFIG_RFKILL=m -+CONFIG_RFKILL_INPUT=y -+CONFIG_NET_9P=m -+CONFIG_NFC=m -+CONFIG_DEVTMPFS=y -+CONFIG_DEVTMPFS_MOUNT=y -+CONFIG_DMA_CMA=y -+CONFIG_CMA_SIZE_MBYTES=5 -+CONFIG_MTD=m -+CONFIG_MTD_BLOCK=m -+CONFIG_MTD_NAND=m -+CONFIG_MTD_UBI=m -+CONFIG_OF_CONFIGFS=y -+CONFIG_ZRAM=m -+CONFIG_ZRAM_LZ4_COMPRESS=y -+CONFIG_BLK_DEV_LOOP=y -+CONFIG_BLK_DEV_CRYPTOLOOP=m -+CONFIG_BLK_DEV_DRBD=m -+CONFIG_BLK_DEV_NBD=m -+CONFIG_BLK_DEV_RAM=y -+CONFIG_CDROM_PKTCDVD=m -+CONFIG_ATA_OVER_ETH=m -+CONFIG_EEPROM_AT24=m -+CONFIG_TI_ST=m -+CONFIG_SCSI=y -+# CONFIG_SCSI_PROC_FS is not set -+CONFIG_BLK_DEV_SD=y -+CONFIG_CHR_DEV_ST=m -+CONFIG_CHR_DEV_OSST=m -+CONFIG_BLK_DEV_SR=m -+CONFIG_CHR_DEV_SG=m -+CONFIG_SCSI_ISCSI_ATTRS=y -+CONFIG_ISCSI_TCP=m -+CONFIG_ISCSI_BOOT_SYSFS=m -+CONFIG_MD=y -+CONFIG_MD_LINEAR=m -+CONFIG_MD_RAID0=m -+CONFIG_BLK_DEV_DM=m -+CONFIG_DM_CRYPT=m -+CONFIG_DM_SNAPSHOT=m -+CONFIG_DM_THIN_PROVISIONING=m -+CONFIG_DM_MIRROR=m -+CONFIG_DM_LOG_USERSPACE=m -+CONFIG_DM_RAID=m -+CONFIG_DM_ZERO=m -+CONFIG_DM_DELAY=m -+CONFIG_NETDEVICES=y -+CONFIG_BONDING=m -+CONFIG_DUMMY=m -+CONFIG_IFB=m -+CONFIG_MACVLAN=m -+CONFIG_NETCONSOLE=m -+CONFIG_TUN=m -+CONFIG_VETH=m -+CONFIG_ENC28J60=m -+CONFIG_QCA7000=m -+CONFIG_MDIO_BITBANG=m -+CONFIG_PPP=m -+CONFIG_PPP_BSDCOMP=m -+CONFIG_PPP_DEFLATE=m -+CONFIG_PPP_FILTER=y -+CONFIG_PPP_MPPE=m -+CONFIG_PPP_MULTILINK=y -+CONFIG_PPPOATM=m -+CONFIG_PPPOE=m -+CONFIG_PPPOL2TP=m -+CONFIG_PPP_ASYNC=m -+CONFIG_PPP_SYNC_TTY=m -+CONFIG_SLIP=m -+CONFIG_SLIP_COMPRESSED=y -+CONFIG_SLIP_SMART=y -+CONFIG_USB_CATC=m -+CONFIG_USB_KAWETH=m -+CONFIG_USB_PEGASUS=m -+CONFIG_USB_RTL8150=m -+CONFIG_USB_RTL8152=m -+CONFIG_USB_USBNET=y -+CONFIG_USB_NET_AX8817X=m -+CONFIG_USB_NET_AX88179_178A=m -+CONFIG_USB_NET_CDCETHER=m -+CONFIG_USB_NET_CDC_EEM=m -+CONFIG_USB_NET_CDC_NCM=m -+CONFIG_USB_NET_HUAWEI_CDC_NCM=m -+CONFIG_USB_NET_CDC_MBIM=m -+CONFIG_USB_NET_DM9601=m -+CONFIG_USB_NET_SR9700=m -+CONFIG_USB_NET_SR9800=m -+CONFIG_USB_NET_SMSC75XX=m -+CONFIG_USB_NET_SMSC95XX=y -+CONFIG_USB_NET_GL620A=m -+CONFIG_USB_NET_NET1080=m -+CONFIG_USB_NET_PLUSB=m -+CONFIG_USB_NET_MCS7830=m -+CONFIG_USB_NET_CDC_SUBSET=m -+CONFIG_USB_ALI_M5632=y -+CONFIG_USB_AN2720=y -+CONFIG_USB_EPSON2888=y -+CONFIG_USB_KC2190=y -+CONFIG_USB_NET_ZAURUS=m -+CONFIG_USB_NET_CX82310_ETH=m -+CONFIG_USB_NET_KALMIA=m -+CONFIG_USB_NET_QMI_WWAN=m -+CONFIG_USB_HSO=m -+CONFIG_USB_NET_INT51X1=m -+CONFIG_USB_IPHETH=m -+CONFIG_USB_SIERRA_NET=m -+CONFIG_USB_VL600=m -+CONFIG_ATH9K=m -+CONFIG_ATH9K_HTC=m -+CONFIG_CARL9170=m -+CONFIG_ATH6KL=m -+CONFIG_ATH6KL_USB=m -+CONFIG_AR5523=m -+CONFIG_AT76C50X_USB=m -+CONFIG_B43=m -+# CONFIG_B43_PHY_N is not set -+CONFIG_B43LEGACY=m -+CONFIG_BRCMFMAC=m -+CONFIG_BRCMFMAC_USB=y -+CONFIG_HOSTAP=m -+CONFIG_P54_COMMON=m -+CONFIG_P54_USB=m -+CONFIG_LIBERTAS=m -+CONFIG_LIBERTAS_USB=m -+CONFIG_LIBERTAS_SDIO=m -+CONFIG_LIBERTAS_THINFIRM=m -+CONFIG_LIBERTAS_THINFIRM_USB=m -+CONFIG_MWIFIEX=m -+CONFIG_MWIFIEX_SDIO=m -+CONFIG_MT7601U=m -+CONFIG_RT2X00=m -+CONFIG_RT2500USB=m -+CONFIG_RT73USB=m -+CONFIG_RT2800USB=m -+CONFIG_RT2800USB_RT3573=y -+CONFIG_RT2800USB_RT53XX=y -+CONFIG_RT2800USB_RT55XX=y -+CONFIG_RT2800USB_UNKNOWN=y -+CONFIG_RTL8187=m -+CONFIG_RTL8192CU=m -+CONFIG_USB_ZD1201=m -+CONFIG_ZD1211RW=m -+CONFIG_MAC80211_HWSIM=m -+CONFIG_USB_NET_RNDIS_WLAN=m -+CONFIG_WIMAX_I2400M_USB=m -+CONFIG_IEEE802154_AT86RF230=m -+CONFIG_IEEE802154_MRF24J40=m -+CONFIG_IEEE802154_CC2520=m -+CONFIG_INPUT_POLLDEV=m -+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -+CONFIG_INPUT_JOYDEV=m -+CONFIG_INPUT_EVDEV=m -+# CONFIG_KEYBOARD_ATKBD is not set -+CONFIG_KEYBOARD_GPIO=m -+# CONFIG_INPUT_MOUSE is not set -+CONFIG_INPUT_JOYSTICK=y -+CONFIG_JOYSTICK_IFORCE=m -+CONFIG_JOYSTICK_IFORCE_USB=y -+CONFIG_JOYSTICK_XPAD=m -+CONFIG_JOYSTICK_XPAD_FF=y -+CONFIG_JOYSTICK_XPAD_LEDS=y -+CONFIG_JOYSTICK_RPISENSE=m -+CONFIG_INPUT_TOUCHSCREEN=y -+CONFIG_TOUCHSCREEN_ADS7846=m -+CONFIG_TOUCHSCREEN_EGALAX=m -+CONFIG_TOUCHSCREEN_FT6236=m -+CONFIG_TOUCHSCREEN_RPI_FT5406=m -+CONFIG_TOUCHSCREEN_USB_COMPOSITE=m -+CONFIG_TOUCHSCREEN_STMPE=m -+CONFIG_INPUT_MISC=y -+CONFIG_INPUT_AD714X=m -+CONFIG_INPUT_ATI_REMOTE2=m -+CONFIG_INPUT_KEYSPAN_REMOTE=m -+CONFIG_INPUT_POWERMATE=m -+CONFIG_INPUT_YEALINK=m -+CONFIG_INPUT_CM109=m -+CONFIG_INPUT_UINPUT=m -+CONFIG_INPUT_GPIO_ROTARY_ENCODER=m -+CONFIG_INPUT_ADXL34X=m -+CONFIG_INPUT_CMA3000=m -+CONFIG_SERIO=m -+CONFIG_SERIO_RAW=m -+CONFIG_GAMEPORT=m -+CONFIG_GAMEPORT_NS558=m -+CONFIG_GAMEPORT_L4=m -+CONFIG_BRCM_CHAR_DRIVERS=y -+CONFIG_BCM_VC_CMA=y -+CONFIG_BCM_VCIO=y -+CONFIG_BCM_VC_SM=y -+CONFIG_DEVPTS_MULTIPLE_INSTANCES=y -+# CONFIG_LEGACY_PTYS is not set -+# CONFIG_DEVKMEM is not set -+CONFIG_SERIAL_8250=y -+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set -+CONFIG_SERIAL_8250_CONSOLE=y -+# CONFIG_SERIAL_8250_DMA is not set -+CONFIG_SERIAL_8250_NR_UARTS=1 -+CONFIG_SERIAL_8250_RUNTIME_UARTS=0 -+CONFIG_SERIAL_OF_PLATFORM=y -+CONFIG_SERIAL_AMBA_PL011=y -+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -+CONFIG_TTY_PRINTK=y -+CONFIG_HW_RANDOM=y -+CONFIG_RAW_DRIVER=y -+CONFIG_I2C=y -+CONFIG_I2C_CHARDEV=m -+CONFIG_I2C_MUX_PCA954x=m -+CONFIG_I2C_BCM2708=m -+CONFIG_I2C_GPIO=m -+CONFIG_SPI=y -+CONFIG_SPI_BCM2835=m -+CONFIG_SPI_BCM2835AUX=m -+CONFIG_SPI_SPIDEV=y -+CONFIG_PPS=m -+CONFIG_PPS_CLIENT_LDISC=m -+CONFIG_PPS_CLIENT_GPIO=m -+CONFIG_GPIO_SYSFS=y -+CONFIG_GPIO_BCM_VIRT=y -+CONFIG_GPIO_ARIZONA=m -+CONFIG_GPIO_STMPE=y -+CONFIG_GPIO_MCP23S08=m -+CONFIG_W1=m -+CONFIG_W1_MASTER_DS2490=m -+CONFIG_W1_MASTER_DS2482=m -+CONFIG_W1_MASTER_DS1WM=m -+CONFIG_W1_MASTER_GPIO=m -+CONFIG_W1_SLAVE_THERM=m -+CONFIG_W1_SLAVE_SMEM=m -+CONFIG_W1_SLAVE_DS2408=m -+CONFIG_W1_SLAVE_DS2413=m -+CONFIG_W1_SLAVE_DS2406=m -+CONFIG_W1_SLAVE_DS2423=m -+CONFIG_W1_SLAVE_DS2431=m -+CONFIG_W1_SLAVE_DS2433=m -+CONFIG_W1_SLAVE_DS2760=m -+CONFIG_W1_SLAVE_DS2780=m -+CONFIG_W1_SLAVE_DS2781=m -+CONFIG_W1_SLAVE_DS28E04=m -+CONFIG_W1_SLAVE_BQ27000=m -+CONFIG_BATTERY_DS2760=m -+CONFIG_POWER_RESET=y -+CONFIG_POWER_RESET_GPIO=y -+CONFIG_HWMON=m -+CONFIG_SENSORS_SHT21=m -+CONFIG_SENSORS_SHTC1=m -+CONFIG_THERMAL=y -+CONFIG_THERMAL_BCM2835=y -+CONFIG_WATCHDOG=y -+CONFIG_BCM2835_WDT=m -+CONFIG_UCB1400_CORE=m -+CONFIG_MFD_STMPE=y -+CONFIG_STMPE_SPI=y -+CONFIG_MFD_ARIZONA_I2C=m -+CONFIG_MFD_ARIZONA_SPI=m -+CONFIG_MFD_WM5102=y -+CONFIG_MEDIA_SUPPORT=m -+CONFIG_MEDIA_CAMERA_SUPPORT=y -+CONFIG_MEDIA_ANALOG_TV_SUPPORT=y -+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y -+CONFIG_MEDIA_RADIO_SUPPORT=y -+CONFIG_MEDIA_RC_SUPPORT=y -+CONFIG_MEDIA_CONTROLLER=y -+CONFIG_LIRC=m -+CONFIG_RC_DEVICES=y -+CONFIG_RC_ATI_REMOTE=m -+CONFIG_IR_IMON=m -+CONFIG_IR_MCEUSB=m -+CONFIG_IR_REDRAT3=m -+CONFIG_IR_STREAMZAP=m -+CONFIG_IR_IGUANA=m -+CONFIG_IR_TTUSBIR=m -+CONFIG_RC_LOOPBACK=m -+CONFIG_IR_GPIO_CIR=m -+CONFIG_MEDIA_USB_SUPPORT=y -+CONFIG_USB_VIDEO_CLASS=m -+CONFIG_USB_M5602=m -+CONFIG_USB_STV06XX=m -+CONFIG_USB_GL860=m -+CONFIG_USB_GSPCA_BENQ=m -+CONFIG_USB_GSPCA_CONEX=m -+CONFIG_USB_GSPCA_CPIA1=m -+CONFIG_USB_GSPCA_DTCS033=m -+CONFIG_USB_GSPCA_ETOMS=m -+CONFIG_USB_GSPCA_FINEPIX=m -+CONFIG_USB_GSPCA_JEILINJ=m -+CONFIG_USB_GSPCA_JL2005BCD=m -+CONFIG_USB_GSPCA_KINECT=m -+CONFIG_USB_GSPCA_KONICA=m -+CONFIG_USB_GSPCA_MARS=m -+CONFIG_USB_GSPCA_MR97310A=m -+CONFIG_USB_GSPCA_NW80X=m -+CONFIG_USB_GSPCA_OV519=m -+CONFIG_USB_GSPCA_OV534=m -+CONFIG_USB_GSPCA_OV534_9=m -+CONFIG_USB_GSPCA_PAC207=m -+CONFIG_USB_GSPCA_PAC7302=m -+CONFIG_USB_GSPCA_PAC7311=m -+CONFIG_USB_GSPCA_SE401=m -+CONFIG_USB_GSPCA_SN9C2028=m -+CONFIG_USB_GSPCA_SN9C20X=m -+CONFIG_USB_GSPCA_SONIXB=m -+CONFIG_USB_GSPCA_SONIXJ=m -+CONFIG_USB_GSPCA_SPCA500=m -+CONFIG_USB_GSPCA_SPCA501=m -+CONFIG_USB_GSPCA_SPCA505=m -+CONFIG_USB_GSPCA_SPCA506=m -+CONFIG_USB_GSPCA_SPCA508=m -+CONFIG_USB_GSPCA_SPCA561=m -+CONFIG_USB_GSPCA_SPCA1528=m -+CONFIG_USB_GSPCA_SQ905=m -+CONFIG_USB_GSPCA_SQ905C=m -+CONFIG_USB_GSPCA_SQ930X=m -+CONFIG_USB_GSPCA_STK014=m -+CONFIG_USB_GSPCA_STK1135=m -+CONFIG_USB_GSPCA_STV0680=m -+CONFIG_USB_GSPCA_SUNPLUS=m -+CONFIG_USB_GSPCA_T613=m -+CONFIG_USB_GSPCA_TOPRO=m -+CONFIG_USB_GSPCA_TV8532=m -+CONFIG_USB_GSPCA_VC032X=m -+CONFIG_USB_GSPCA_VICAM=m -+CONFIG_USB_GSPCA_XIRLINK_CIT=m -+CONFIG_USB_GSPCA_ZC3XX=m -+CONFIG_USB_PWC=m -+CONFIG_VIDEO_CPIA2=m -+CONFIG_USB_ZR364XX=m -+CONFIG_USB_STKWEBCAM=m -+CONFIG_USB_S2255=m -+CONFIG_VIDEO_USBTV=m -+CONFIG_VIDEO_PVRUSB2=m -+CONFIG_VIDEO_HDPVR=m -+CONFIG_VIDEO_USBVISION=m -+CONFIG_VIDEO_STK1160_COMMON=m -+CONFIG_VIDEO_STK1160_AC97=y -+CONFIG_VIDEO_GO7007=m -+CONFIG_VIDEO_GO7007_USB=m -+CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m -+CONFIG_VIDEO_AU0828=m -+CONFIG_VIDEO_AU0828_RC=y -+CONFIG_VIDEO_CX231XX=m -+CONFIG_VIDEO_CX231XX_ALSA=m -+CONFIG_VIDEO_CX231XX_DVB=m -+CONFIG_VIDEO_TM6000=m -+CONFIG_VIDEO_TM6000_ALSA=m -+CONFIG_VIDEO_TM6000_DVB=m -+CONFIG_DVB_USB=m -+CONFIG_DVB_USB_A800=m -+CONFIG_DVB_USB_DIBUSB_MB=m -+CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y -+CONFIG_DVB_USB_DIBUSB_MC=m -+CONFIG_DVB_USB_DIB0700=m -+CONFIG_DVB_USB_UMT_010=m -+CONFIG_DVB_USB_CXUSB=m -+CONFIG_DVB_USB_M920X=m -+CONFIG_DVB_USB_DIGITV=m -+CONFIG_DVB_USB_VP7045=m -+CONFIG_DVB_USB_VP702X=m -+CONFIG_DVB_USB_GP8PSK=m -+CONFIG_DVB_USB_NOVA_T_USB2=m -+CONFIG_DVB_USB_TTUSB2=m -+CONFIG_DVB_USB_DTT200U=m -+CONFIG_DVB_USB_OPERA1=m -+CONFIG_DVB_USB_AF9005=m -+CONFIG_DVB_USB_AF9005_REMOTE=m -+CONFIG_DVB_USB_PCTV452E=m -+CONFIG_DVB_USB_DW2102=m -+CONFIG_DVB_USB_CINERGY_T2=m -+CONFIG_DVB_USB_DTV5100=m -+CONFIG_DVB_USB_FRIIO=m -+CONFIG_DVB_USB_AZ6027=m -+CONFIG_DVB_USB_TECHNISAT_USB2=m -+CONFIG_DVB_USB_V2=m -+CONFIG_DVB_USB_AF9015=m -+CONFIG_DVB_USB_AF9035=m -+CONFIG_DVB_USB_ANYSEE=m -+CONFIG_DVB_USB_AU6610=m -+CONFIG_DVB_USB_AZ6007=m -+CONFIG_DVB_USB_CE6230=m -+CONFIG_DVB_USB_EC168=m -+CONFIG_DVB_USB_GL861=m -+CONFIG_DVB_USB_LME2510=m -+CONFIG_DVB_USB_MXL111SF=m -+CONFIG_DVB_USB_RTL28XXU=m -+CONFIG_DVB_USB_DVBSKY=m -+CONFIG_SMS_USB_DRV=m -+CONFIG_DVB_B2C2_FLEXCOP_USB=m -+CONFIG_DVB_AS102=m -+CONFIG_VIDEO_EM28XX=m -+CONFIG_VIDEO_EM28XX_V4L2=m -+CONFIG_VIDEO_EM28XX_ALSA=m -+CONFIG_VIDEO_EM28XX_DVB=m -+CONFIG_V4L_PLATFORM_DRIVERS=y -+CONFIG_VIDEO_BCM2835=y -+CONFIG_VIDEO_BCM2835_MMAL=m -+CONFIG_RADIO_SI470X=y -+CONFIG_USB_SI470X=m -+CONFIG_I2C_SI470X=m -+CONFIG_RADIO_SI4713=m -+CONFIG_I2C_SI4713=m -+CONFIG_USB_MR800=m -+CONFIG_USB_DSBR=m -+CONFIG_RADIO_SHARK=m -+CONFIG_RADIO_SHARK2=m -+CONFIG_USB_KEENE=m -+CONFIG_USB_MA901=m -+CONFIG_RADIO_TEA5764=m -+CONFIG_RADIO_SAA7706H=m -+CONFIG_RADIO_TEF6862=m -+CONFIG_RADIO_WL1273=m -+CONFIG_RADIO_WL128X=m -+# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set -+CONFIG_VIDEO_UDA1342=m -+CONFIG_VIDEO_SONY_BTF_MPX=m -+CONFIG_VIDEO_TVP5150=m -+CONFIG_VIDEO_TW2804=m -+CONFIG_VIDEO_TW9903=m -+CONFIG_VIDEO_TW9906=m -+CONFIG_VIDEO_OV7640=m -+CONFIG_VIDEO_MT9V011=m -+CONFIG_DRM=m -+CONFIG_DRM_LOAD_EDID_FIRMWARE=y -+CONFIG_DRM_UDL=m -+CONFIG_DRM_VC4=m -+CONFIG_FB=y -+CONFIG_FB_BCM2708=y -+CONFIG_FB_UDL=m -+CONFIG_FB_SSD1307=m -+CONFIG_FB_RPISENSE=m -+# CONFIG_BACKLIGHT_GENERIC is not set -+CONFIG_BACKLIGHT_RPI=m -+CONFIG_BACKLIGHT_GPIO=m -+CONFIG_FRAMEBUFFER_CONSOLE=y -+CONFIG_LOGO=y -+# CONFIG_LOGO_LINUX_MONO is not set -+# CONFIG_LOGO_LINUX_VGA16 is not set -+CONFIG_SOUND=y -+CONFIG_SND=m -+CONFIG_SND_SEQUENCER=m -+CONFIG_SND_SEQ_DUMMY=m -+CONFIG_SND_MIXER_OSS=m -+CONFIG_SND_PCM_OSS=m -+CONFIG_SND_SEQUENCER_OSS=y -+CONFIG_SND_HRTIMER=m -+CONFIG_SND_DUMMY=m -+CONFIG_SND_ALOOP=m -+CONFIG_SND_VIRMIDI=m -+CONFIG_SND_MTPAV=m -+CONFIG_SND_SERIAL_U16550=m -+CONFIG_SND_MPU401=m -+CONFIG_SND_BCM2835=m -+CONFIG_SND_USB_AUDIO=m -+CONFIG_SND_USB_UA101=m -+CONFIG_SND_USB_CAIAQ=m -+CONFIG_SND_USB_CAIAQ_INPUT=y -+CONFIG_SND_USB_6FIRE=m -+CONFIG_SND_SOC=m -+CONFIG_SND_BCM2835_SOC_I2S=m -+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m -+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m -+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m -+CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m -+CONFIG_SND_BCM2708_SOC_RPI_DAC=m -+CONFIG_SND_BCM2708_SOC_RPI_PROTO=m -+CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m -+CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m -+CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m -+CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m -+CONFIG_SND_BCM2708_SOC_RASPIDAC3=m -+CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m -+CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m -+CONFIG_SND_DIGIDAC1_SOUNDCARD=m -+CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m -+CONFIG_SND_SOC_ADAU1701=m -+CONFIG_SND_SOC_WM8804_I2C=m -+CONFIG_SND_SIMPLE_CARD=m -+CONFIG_SOUND_PRIME=m -+CONFIG_HIDRAW=y -+CONFIG_UHID=m -+CONFIG_HID_A4TECH=m -+CONFIG_HID_ACRUX=m -+CONFIG_HID_APPLE=m -+CONFIG_HID_BELKIN=m -+CONFIG_HID_BETOP_FF=m -+CONFIG_HID_CHERRY=m -+CONFIG_HID_CHICONY=m -+CONFIG_HID_CYPRESS=m -+CONFIG_HID_DRAGONRISE=m -+CONFIG_HID_EMS_FF=m -+CONFIG_HID_ELECOM=m -+CONFIG_HID_ELO=m -+CONFIG_HID_EZKEY=m -+CONFIG_HID_HOLTEK=m -+CONFIG_HID_KEYTOUCH=m -+CONFIG_HID_KYE=m -+CONFIG_HID_UCLOGIC=m -+CONFIG_HID_WALTOP=m -+CONFIG_HID_GYRATION=m -+CONFIG_HID_TWINHAN=m -+CONFIG_HID_KENSINGTON=m -+CONFIG_HID_LCPOWER=m -+CONFIG_HID_LOGITECH=m -+CONFIG_HID_LOGITECH_DJ=m -+CONFIG_LOGITECH_FF=y -+CONFIG_LOGIRUMBLEPAD2_FF=y -+CONFIG_LOGIG940_FF=y -+CONFIG_HID_MAGICMOUSE=m -+CONFIG_HID_MICROSOFT=m -+CONFIG_HID_MONTEREY=m -+CONFIG_HID_MULTITOUCH=m -+CONFIG_HID_NTRIG=m -+CONFIG_HID_ORTEK=m -+CONFIG_HID_PANTHERLORD=m -+CONFIG_HID_PETALYNX=m -+CONFIG_HID_PICOLCD=m -+CONFIG_HID_ROCCAT=m -+CONFIG_HID_SAMSUNG=m -+CONFIG_HID_SONY=m -+CONFIG_HID_SPEEDLINK=m -+CONFIG_HID_SUNPLUS=m -+CONFIG_HID_GREENASIA=m -+CONFIG_HID_SMARTJOYPLUS=m -+CONFIG_HID_TOPSEED=m -+CONFIG_HID_THINGM=m -+CONFIG_HID_THRUSTMASTER=m -+CONFIG_HID_WACOM=m -+CONFIG_HID_WIIMOTE=m -+CONFIG_HID_XINMO=m -+CONFIG_HID_ZEROPLUS=m -+CONFIG_HID_ZYDACRON=m -+CONFIG_HID_PID=y -+CONFIG_USB_HIDDEV=y -+CONFIG_USB=y -+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -+CONFIG_USB_MON=m -+CONFIG_USB_DWCOTG=y -+CONFIG_USB_PRINTER=m -+CONFIG_USB_STORAGE=y -+CONFIG_USB_STORAGE_REALTEK=m -+CONFIG_USB_STORAGE_DATAFAB=m -+CONFIG_USB_STORAGE_FREECOM=m -+CONFIG_USB_STORAGE_ISD200=m -+CONFIG_USB_STORAGE_USBAT=m -+CONFIG_USB_STORAGE_SDDR09=m -+CONFIG_USB_STORAGE_SDDR55=m -+CONFIG_USB_STORAGE_JUMPSHOT=m -+CONFIG_USB_STORAGE_ALAUDA=m -+CONFIG_USB_STORAGE_ONETOUCH=m -+CONFIG_USB_STORAGE_KARMA=m -+CONFIG_USB_STORAGE_CYPRESS_ATACB=m -+CONFIG_USB_STORAGE_ENE_UB6250=m -+CONFIG_USB_MDC800=m -+CONFIG_USB_MICROTEK=m -+CONFIG_USBIP_CORE=m -+CONFIG_USBIP_VHCI_HCD=m -+CONFIG_USBIP_HOST=m -+CONFIG_USB_SERIAL=m -+CONFIG_USB_SERIAL_GENERIC=y -+CONFIG_USB_SERIAL_AIRCABLE=m -+CONFIG_USB_SERIAL_ARK3116=m -+CONFIG_USB_SERIAL_BELKIN=m -+CONFIG_USB_SERIAL_CH341=m -+CONFIG_USB_SERIAL_WHITEHEAT=m -+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m -+CONFIG_USB_SERIAL_CP210X=m -+CONFIG_USB_SERIAL_CYPRESS_M8=m -+CONFIG_USB_SERIAL_EMPEG=m -+CONFIG_USB_SERIAL_FTDI_SIO=m -+CONFIG_USB_SERIAL_VISOR=m -+CONFIG_USB_SERIAL_IPAQ=m -+CONFIG_USB_SERIAL_IR=m -+CONFIG_USB_SERIAL_EDGEPORT=m -+CONFIG_USB_SERIAL_EDGEPORT_TI=m -+CONFIG_USB_SERIAL_F81232=m -+CONFIG_USB_SERIAL_GARMIN=m -+CONFIG_USB_SERIAL_IPW=m -+CONFIG_USB_SERIAL_IUU=m -+CONFIG_USB_SERIAL_KEYSPAN_PDA=m -+CONFIG_USB_SERIAL_KEYSPAN=m -+CONFIG_USB_SERIAL_KLSI=m -+CONFIG_USB_SERIAL_KOBIL_SCT=m -+CONFIG_USB_SERIAL_MCT_U232=m -+CONFIG_USB_SERIAL_METRO=m -+CONFIG_USB_SERIAL_MOS7720=m -+CONFIG_USB_SERIAL_MOS7840=m -+CONFIG_USB_SERIAL_NAVMAN=m -+CONFIG_USB_SERIAL_PL2303=m -+CONFIG_USB_SERIAL_OTI6858=m -+CONFIG_USB_SERIAL_QCAUX=m -+CONFIG_USB_SERIAL_QUALCOMM=m -+CONFIG_USB_SERIAL_SPCP8X5=m -+CONFIG_USB_SERIAL_SAFE=m -+CONFIG_USB_SERIAL_SIERRAWIRELESS=m -+CONFIG_USB_SERIAL_SYMBOL=m -+CONFIG_USB_SERIAL_TI=m -+CONFIG_USB_SERIAL_CYBERJACK=m -+CONFIG_USB_SERIAL_XIRCOM=m -+CONFIG_USB_SERIAL_OPTION=m -+CONFIG_USB_SERIAL_OMNINET=m -+CONFIG_USB_SERIAL_OPTICON=m -+CONFIG_USB_SERIAL_XSENS_MT=m -+CONFIG_USB_SERIAL_WISHBONE=m -+CONFIG_USB_SERIAL_SSU100=m -+CONFIG_USB_SERIAL_QT2=m -+CONFIG_USB_SERIAL_DEBUG=m -+CONFIG_USB_EMI62=m -+CONFIG_USB_EMI26=m -+CONFIG_USB_ADUTUX=m -+CONFIG_USB_SEVSEG=m -+CONFIG_USB_RIO500=m -+CONFIG_USB_LEGOTOWER=m -+CONFIG_USB_LCD=m -+CONFIG_USB_LED=m -+CONFIG_USB_CYPRESS_CY7C63=m -+CONFIG_USB_CYTHERM=m -+CONFIG_USB_IDMOUSE=m -+CONFIG_USB_FTDI_ELAN=m -+CONFIG_USB_APPLEDISPLAY=m -+CONFIG_USB_LD=m -+CONFIG_USB_TRANCEVIBRATOR=m -+CONFIG_USB_IOWARRIOR=m -+CONFIG_USB_TEST=m -+CONFIG_USB_ISIGHTFW=m -+CONFIG_USB_YUREX=m -+CONFIG_USB_ATM=m -+CONFIG_USB_SPEEDTOUCH=m -+CONFIG_USB_CXACRU=m -+CONFIG_USB_UEAGLEATM=m -+CONFIG_USB_XUSBATM=m -+CONFIG_MMC=y -+CONFIG_MMC_BLOCK_MINORS=32 -+CONFIG_MMC_BCM2835=y -+CONFIG_MMC_BCM2835_DMA=y -+CONFIG_MMC_BCM2835_SDHOST=y -+CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_PLTFM=y -+CONFIG_MMC_SPI=m -+CONFIG_LEDS_CLASS=y -+CONFIG_LEDS_GPIO=y -+CONFIG_LEDS_TRIGGER_TIMER=y -+CONFIG_LEDS_TRIGGER_ONESHOT=y -+CONFIG_LEDS_TRIGGER_HEARTBEAT=y -+CONFIG_LEDS_TRIGGER_BACKLIGHT=y -+CONFIG_LEDS_TRIGGER_CPU=y -+CONFIG_LEDS_TRIGGER_GPIO=y -+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y -+CONFIG_LEDS_TRIGGER_TRANSIENT=m -+CONFIG_LEDS_TRIGGER_CAMERA=m -+CONFIG_LEDS_TRIGGER_INPUT=y -+CONFIG_LEDS_TRIGGER_PANIC=y -+CONFIG_RTC_CLASS=y -+# CONFIG_RTC_HCTOSYS is not set -+CONFIG_RTC_DRV_DS1307=m -+CONFIG_RTC_DRV_DS1374=m -+CONFIG_RTC_DRV_DS1672=m -+CONFIG_RTC_DRV_MAX6900=m -+CONFIG_RTC_DRV_RS5C372=m -+CONFIG_RTC_DRV_ISL1208=m -+CONFIG_RTC_DRV_ISL12022=m -+CONFIG_RTC_DRV_ISL12057=m -+CONFIG_RTC_DRV_X1205=m -+CONFIG_RTC_DRV_PCF8523=m -+CONFIG_RTC_DRV_PCF8563=m -+CONFIG_RTC_DRV_PCF8583=m -+CONFIG_RTC_DRV_M41T80=m -+CONFIG_RTC_DRV_BQ32K=m -+CONFIG_RTC_DRV_S35390A=m -+CONFIG_RTC_DRV_FM3130=m -+CONFIG_RTC_DRV_RX8581=m -+CONFIG_RTC_DRV_RX8025=m -+CONFIG_RTC_DRV_EM3027=m -+CONFIG_RTC_DRV_M41T93=m -+CONFIG_RTC_DRV_M41T94=m -+CONFIG_RTC_DRV_DS1302=m -+CONFIG_RTC_DRV_DS1305=m -+CONFIG_RTC_DRV_DS1390=m -+CONFIG_RTC_DRV_R9701=m -+CONFIG_RTC_DRV_RX4581=m -+CONFIG_RTC_DRV_RS5C348=m -+CONFIG_RTC_DRV_MAX6902=m -+CONFIG_RTC_DRV_PCF2123=m -+CONFIG_RTC_DRV_DS3232=m -+CONFIG_RTC_DRV_PCF2127=m -+CONFIG_RTC_DRV_RV3029C2=m -+CONFIG_DMADEVICES=y -+CONFIG_DMA_BCM2835=y -+CONFIG_DMA_BCM2708=y -+CONFIG_UIO=m -+CONFIG_UIO_PDRV_GENIRQ=m -+CONFIG_STAGING=y -+CONFIG_PRISM2_USB=m -+CONFIG_R8712U=m -+CONFIG_R8188EU=m -+CONFIG_R8723AU=m -+CONFIG_VT6656=m -+CONFIG_SPEAKUP=m -+CONFIG_SPEAKUP_SYNTH_SOFT=m -+CONFIG_STAGING_MEDIA=y -+CONFIG_LIRC_STAGING=y -+CONFIG_LIRC_IMON=m -+CONFIG_LIRC_RPI=m -+CONFIG_LIRC_SASEM=m -+CONFIG_LIRC_SERIAL=m -+CONFIG_FB_TFT=m -+CONFIG_FB_TFT_AGM1264K_FL=m -+CONFIG_FB_TFT_BD663474=m -+CONFIG_FB_TFT_HX8340BN=m -+CONFIG_FB_TFT_HX8347D=m -+CONFIG_FB_TFT_HX8353D=m -+CONFIG_FB_TFT_ILI9163=m -+CONFIG_FB_TFT_ILI9320=m -+CONFIG_FB_TFT_ILI9325=m -+CONFIG_FB_TFT_ILI9340=m -+CONFIG_FB_TFT_ILI9341=m -+CONFIG_FB_TFT_ILI9481=m -+CONFIG_FB_TFT_ILI9486=m -+CONFIG_FB_TFT_PCD8544=m -+CONFIG_FB_TFT_RA8875=m -+CONFIG_FB_TFT_S6D02A1=m -+CONFIG_FB_TFT_S6D1121=m -+CONFIG_FB_TFT_SSD1289=m -+CONFIG_FB_TFT_SSD1306=m -+CONFIG_FB_TFT_SSD1331=m -+CONFIG_FB_TFT_SSD1351=m -+CONFIG_FB_TFT_ST7735R=m -+CONFIG_FB_TFT_TINYLCD=m -+CONFIG_FB_TFT_TLS8204=m -+CONFIG_FB_TFT_UC1701=m -+CONFIG_FB_TFT_UPD161704=m -+CONFIG_FB_TFT_WATTEROTT=m -+CONFIG_FB_FLEX=m -+CONFIG_FB_TFT_FBTFT_DEVICE=m -+CONFIG_MAILBOX=y -+CONFIG_BCM2835_MBOX=y -+# CONFIG_IOMMU_SUPPORT is not set -+CONFIG_RASPBERRYPI_POWER=y -+CONFIG_EXTCON=m -+CONFIG_EXTCON_ARIZONA=m -+CONFIG_IIO=m -+CONFIG_IIO_BUFFER=y -+CONFIG_IIO_BUFFER_CB=m -+CONFIG_IIO_KFIFO_BUF=m -+CONFIG_MCP320X=m -+CONFIG_MCP3422=m -+CONFIG_DHT11=m -+CONFIG_PWM_BCM2835=m -+CONFIG_PWM_PCA9685=m -+CONFIG_RASPBERRYPI_FIRMWARE=y -+CONFIG_EXT4_FS=y -+CONFIG_EXT4_FS_POSIX_ACL=y -+CONFIG_EXT4_FS_SECURITY=y -+CONFIG_REISERFS_FS=m -+CONFIG_REISERFS_FS_XATTR=y -+CONFIG_REISERFS_FS_POSIX_ACL=y -+CONFIG_REISERFS_FS_SECURITY=y -+CONFIG_JFS_FS=m -+CONFIG_JFS_POSIX_ACL=y -+CONFIG_JFS_SECURITY=y -+CONFIG_JFS_STATISTICS=y -+CONFIG_XFS_FS=m -+CONFIG_XFS_QUOTA=y -+CONFIG_XFS_POSIX_ACL=y -+CONFIG_XFS_RT=y -+CONFIG_GFS2_FS=m -+CONFIG_OCFS2_FS=m -+CONFIG_BTRFS_FS=m -+CONFIG_BTRFS_FS_POSIX_ACL=y -+CONFIG_NILFS2_FS=m -+CONFIG_F2FS_FS=y -+CONFIG_FANOTIFY=y -+CONFIG_QFMT_V1=m -+CONFIG_QFMT_V2=m -+CONFIG_AUTOFS4_FS=y -+CONFIG_FUSE_FS=m -+CONFIG_CUSE=m -+CONFIG_OVERLAY_FS=m -+CONFIG_FSCACHE=y -+CONFIG_FSCACHE_STATS=y -+CONFIG_FSCACHE_HISTOGRAM=y -+CONFIG_CACHEFILES=y -+CONFIG_ISO9660_FS=m -+CONFIG_JOLIET=y -+CONFIG_ZISOFS=y -+CONFIG_UDF_FS=m -+CONFIG_MSDOS_FS=y -+CONFIG_VFAT_FS=y -+CONFIG_FAT_DEFAULT_IOCHARSET="ascii" -+CONFIG_NTFS_FS=m -+CONFIG_NTFS_RW=y -+CONFIG_TMPFS=y -+CONFIG_TMPFS_POSIX_ACL=y -+CONFIG_ECRYPT_FS=m -+CONFIG_HFS_FS=m -+CONFIG_HFSPLUS_FS=m -+CONFIG_JFFS2_FS=m -+CONFIG_JFFS2_SUMMARY=y -+CONFIG_UBIFS_FS=m -+CONFIG_SQUASHFS=m -+CONFIG_SQUASHFS_XATTR=y -+CONFIG_SQUASHFS_LZO=y -+CONFIG_SQUASHFS_XZ=y -+CONFIG_NFS_FS=y -+CONFIG_NFS_V3_ACL=y -+CONFIG_NFS_V4=y -+CONFIG_NFS_SWAP=y -+CONFIG_ROOT_NFS=y -+CONFIG_NFS_FSCACHE=y -+CONFIG_NFSD=m -+CONFIG_NFSD_V3_ACL=y -+CONFIG_NFSD_V4=y -+CONFIG_CIFS=m -+CONFIG_CIFS_WEAK_PW_HASH=y -+CONFIG_CIFS_UPCALL=y -+CONFIG_CIFS_XATTR=y -+CONFIG_CIFS_POSIX=y -+CONFIG_CIFS_ACL=y -+CONFIG_CIFS_DFS_UPCALL=y -+CONFIG_CIFS_SMB2=y -+CONFIG_CIFS_FSCACHE=y -+CONFIG_9P_FS=m -+CONFIG_9P_FS_POSIX_ACL=y -+CONFIG_NLS_DEFAULT="utf8" -+CONFIG_NLS_CODEPAGE_437=y -+CONFIG_NLS_CODEPAGE_737=m -+CONFIG_NLS_CODEPAGE_775=m -+CONFIG_NLS_CODEPAGE_850=m -+CONFIG_NLS_CODEPAGE_852=m -+CONFIG_NLS_CODEPAGE_855=m -+CONFIG_NLS_CODEPAGE_857=m -+CONFIG_NLS_CODEPAGE_860=m -+CONFIG_NLS_CODEPAGE_861=m -+CONFIG_NLS_CODEPAGE_862=m -+CONFIG_NLS_CODEPAGE_863=m -+CONFIG_NLS_CODEPAGE_864=m -+CONFIG_NLS_CODEPAGE_865=m -+CONFIG_NLS_CODEPAGE_866=m -+CONFIG_NLS_CODEPAGE_869=m -+CONFIG_NLS_CODEPAGE_936=m -+CONFIG_NLS_CODEPAGE_950=m -+CONFIG_NLS_CODEPAGE_932=m -+CONFIG_NLS_CODEPAGE_949=m -+CONFIG_NLS_CODEPAGE_874=m -+CONFIG_NLS_ISO8859_8=m -+CONFIG_NLS_CODEPAGE_1250=m -+CONFIG_NLS_CODEPAGE_1251=m -+CONFIG_NLS_ASCII=y -+CONFIG_NLS_ISO8859_1=m -+CONFIG_NLS_ISO8859_2=m -+CONFIG_NLS_ISO8859_3=m -+CONFIG_NLS_ISO8859_4=m -+CONFIG_NLS_ISO8859_5=m -+CONFIG_NLS_ISO8859_6=m -+CONFIG_NLS_ISO8859_7=m -+CONFIG_NLS_ISO8859_9=m -+CONFIG_NLS_ISO8859_13=m -+CONFIG_NLS_ISO8859_14=m -+CONFIG_NLS_ISO8859_15=m -+CONFIG_NLS_KOI8_R=m -+CONFIG_NLS_KOI8_U=m -+CONFIG_DLM=m -+CONFIG_PRINTK_TIME=y -+CONFIG_BOOT_PRINTK_DELAY=y -+CONFIG_DEBUG_MEMORY_INIT=y -+CONFIG_DETECT_HUNG_TASK=y -+CONFIG_TIMER_STATS=y -+CONFIG_IRQSOFF_TRACER=y -+CONFIG_SCHED_TRACER=y -+CONFIG_STACK_TRACER=y -+CONFIG_BLK_DEV_IO_TRACE=y -+# CONFIG_KPROBE_EVENT is not set -+CONFIG_FUNCTION_PROFILER=y -+CONFIG_KGDB=y -+CONFIG_KGDB_KDB=y -+CONFIG_KDB_KEYBOARD=y -+CONFIG_CRYPTO_USER=m -+CONFIG_CRYPTO_CBC=y -+CONFIG_CRYPTO_CTS=m -+CONFIG_CRYPTO_XTS=m -+CONFIG_CRYPTO_XCBC=m -+CONFIG_CRYPTO_TGR192=m -+CONFIG_CRYPTO_WP512=m -+CONFIG_CRYPTO_CAST5=m -+CONFIG_CRYPTO_DES=y -+CONFIG_CRYPTO_USER_API_SKCIPHER=m -+# CONFIG_CRYPTO_HW is not set -+CONFIG_ARM_CRYPTO=y -+CONFIG_CRYPTO_SHA1_ARM_NEON=m -+CONFIG_CRYPTO_AES_ARM_BS=m -+CONFIG_CRC_ITU_T=y -+CONFIG_LIBCRC32C=y -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -new file mode 100644 -index 0000000000000000000000000000000000000000..da2df3d30e15a55a34b45d3ebbf98e906da6379c ---- /dev/null -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -0,0 +1,1296 @@ -+# CONFIG_ARM_PATCH_PHYS_VIRT is not set -+CONFIG_PHYS_OFFSET=0 -+# CONFIG_LOCALVERSION_AUTO is not set -+CONFIG_SYSVIPC=y -+CONFIG_POSIX_MQUEUE=y -+CONFIG_NO_HZ=y -+CONFIG_HIGH_RES_TIMERS=y -+CONFIG_BSD_PROCESS_ACCT=y -+CONFIG_BSD_PROCESS_ACCT_V3=y -+CONFIG_TASKSTATS=y -+CONFIG_TASK_DELAY_ACCT=y -+CONFIG_TASK_XACCT=y -+CONFIG_TASK_IO_ACCOUNTING=y -+CONFIG_IKCONFIG=m -+CONFIG_IKCONFIG_PROC=y -+CONFIG_NMI_LOG_BUF_SHIFT=12 -+CONFIG_MEMCG=y -+CONFIG_BLK_CGROUP=y -+CONFIG_CGROUP_FREEZER=y -+CONFIG_CPUSETS=y -+CONFIG_CGROUP_DEVICE=y -+CONFIG_CGROUP_CPUACCT=y -+CONFIG_NAMESPACES=y -+CONFIG_SCHED_AUTOGROUP=y -+CONFIG_BLK_DEV_INITRD=y -+CONFIG_EMBEDDED=y -+# CONFIG_COMPAT_BRK is not set -+CONFIG_PROFILING=y -+CONFIG_OPROFILE=m -+CONFIG_KPROBES=y -+CONFIG_JUMP_LABEL=y -+CONFIG_MODULES=y -+CONFIG_MODULE_UNLOAD=y -+CONFIG_MODVERSIONS=y -+CONFIG_MODULE_SRCVERSION_ALL=y -+CONFIG_TRIM_UNUSED_KSYMS=y -+CONFIG_BLK_DEV_THROTTLING=y -+CONFIG_PARTITION_ADVANCED=y -+CONFIG_MAC_PARTITION=y -+CONFIG_CFQ_GROUP_IOSCHED=y -+CONFIG_ARCH_BCM2708=y -+CONFIG_PREEMPT_VOLUNTARY=y -+CONFIG_AEABI=y -+CONFIG_OABI_COMPAT=y -+# CONFIG_CPU_SW_DOMAIN_PAN is not set -+CONFIG_CLEANCACHE=y -+CONFIG_FRONTSWAP=y -+CONFIG_CMA=y -+CONFIG_ZSMALLOC=m -+CONFIG_PGTABLE_MAPPING=y -+CONFIG_UACCESS_WITH_MEMCPY=y -+CONFIG_SECCOMP=y -+# CONFIG_ATAGS is not set -+CONFIG_ZBOOT_ROM_TEXT=0x0 -+CONFIG_ZBOOT_ROM_BSS=0x0 -+CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" -+CONFIG_CPU_FREQ=y -+CONFIG_CPU_FREQ_STAT=m -+CONFIG_CPU_FREQ_STAT_DETAILS=y -+CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y -+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -+CONFIG_CPU_FREQ_GOV_USERSPACE=y -+CONFIG_CPU_FREQ_GOV_ONDEMAND=y -+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -+CONFIG_VFP=y -+CONFIG_BINFMT_MISC=m -+# CONFIG_SUSPEND is not set -+CONFIG_PM=y -+CONFIG_NET=y -+CONFIG_PACKET=y -+CONFIG_UNIX=y -+CONFIG_XFRM_USER=y -+CONFIG_NET_KEY=m -+CONFIG_INET=y -+CONFIG_IP_MULTICAST=y -+CONFIG_IP_ADVANCED_ROUTER=y -+CONFIG_IP_MULTIPLE_TABLES=y -+CONFIG_IP_ROUTE_MULTIPATH=y -+CONFIG_IP_ROUTE_VERBOSE=y -+CONFIG_IP_PNP=y -+CONFIG_IP_PNP_DHCP=y -+CONFIG_IP_PNP_RARP=y -+CONFIG_NET_IPIP=m -+CONFIG_NET_IPGRE_DEMUX=m -+CONFIG_NET_IPGRE=m -+CONFIG_IP_MROUTE=y -+CONFIG_IP_MROUTE_MULTIPLE_TABLES=y -+CONFIG_IP_PIMSM_V1=y -+CONFIG_IP_PIMSM_V2=y -+CONFIG_SYN_COOKIES=y -+CONFIG_INET_AH=m -+CONFIG_INET_ESP=m -+CONFIG_INET_IPCOMP=m -+CONFIG_INET_XFRM_MODE_TRANSPORT=m -+CONFIG_INET_XFRM_MODE_TUNNEL=m -+CONFIG_INET_XFRM_MODE_BEET=m -+CONFIG_INET_DIAG=m -+CONFIG_IPV6=m -+CONFIG_IPV6_ROUTER_PREF=y -+CONFIG_INET6_AH=m -+CONFIG_INET6_ESP=m -+CONFIG_INET6_IPCOMP=m -+CONFIG_IPV6_TUNNEL=m -+CONFIG_IPV6_MULTIPLE_TABLES=y -+CONFIG_IPV6_SUBTREES=y -+CONFIG_IPV6_MROUTE=y -+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y -+CONFIG_IPV6_PIMSM_V2=y -+CONFIG_NETFILTER=y -+CONFIG_NF_CONNTRACK=m -+CONFIG_NF_CONNTRACK_ZONES=y -+CONFIG_NF_CONNTRACK_EVENTS=y -+CONFIG_NF_CONNTRACK_TIMESTAMP=y -+CONFIG_NF_CT_PROTO_DCCP=m -+CONFIG_NF_CT_PROTO_UDPLITE=m -+CONFIG_NF_CONNTRACK_AMANDA=m -+CONFIG_NF_CONNTRACK_FTP=m -+CONFIG_NF_CONNTRACK_H323=m -+CONFIG_NF_CONNTRACK_IRC=m -+CONFIG_NF_CONNTRACK_NETBIOS_NS=m -+CONFIG_NF_CONNTRACK_SNMP=m -+CONFIG_NF_CONNTRACK_PPTP=m -+CONFIG_NF_CONNTRACK_SANE=m -+CONFIG_NF_CONNTRACK_SIP=m -+CONFIG_NF_CONNTRACK_TFTP=m -+CONFIG_NF_CT_NETLINK=m -+CONFIG_NETFILTER_XT_SET=m -+CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m -+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -+CONFIG_NETFILTER_XT_TARGET_DSCP=m -+CONFIG_NETFILTER_XT_TARGET_HMARK=m -+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m -+CONFIG_NETFILTER_XT_TARGET_LED=m -+CONFIG_NETFILTER_XT_TARGET_LOG=m -+CONFIG_NETFILTER_XT_TARGET_MARK=m -+CONFIG_NETFILTER_XT_TARGET_NFLOG=m -+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -+CONFIG_NETFILTER_XT_TARGET_TEE=m -+CONFIG_NETFILTER_XT_TARGET_TPROXY=m -+CONFIG_NETFILTER_XT_TARGET_TRACE=m -+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m -+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m -+CONFIG_NETFILTER_XT_MATCH_BPF=m -+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m -+CONFIG_NETFILTER_XT_MATCH_COMMENT=m -+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -+CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m -+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m -+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -+CONFIG_NETFILTER_XT_MATCH_CPU=m -+CONFIG_NETFILTER_XT_MATCH_DCCP=m -+CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m -+CONFIG_NETFILTER_XT_MATCH_DSCP=m -+CONFIG_NETFILTER_XT_MATCH_ESP=m -+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -+CONFIG_NETFILTER_XT_MATCH_HELPER=m -+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m -+CONFIG_NETFILTER_XT_MATCH_IPVS=m -+CONFIG_NETFILTER_XT_MATCH_LENGTH=m -+CONFIG_NETFILTER_XT_MATCH_LIMIT=m -+CONFIG_NETFILTER_XT_MATCH_MAC=m -+CONFIG_NETFILTER_XT_MATCH_MARK=m -+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -+CONFIG_NETFILTER_XT_MATCH_NFACCT=m -+CONFIG_NETFILTER_XT_MATCH_OSF=m -+CONFIG_NETFILTER_XT_MATCH_OWNER=m -+CONFIG_NETFILTER_XT_MATCH_POLICY=m -+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m -+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -+CONFIG_NETFILTER_XT_MATCH_QUOTA=m -+CONFIG_NETFILTER_XT_MATCH_RATEEST=m -+CONFIG_NETFILTER_XT_MATCH_REALM=m -+CONFIG_NETFILTER_XT_MATCH_RECENT=m -+CONFIG_NETFILTER_XT_MATCH_SOCKET=m -+CONFIG_NETFILTER_XT_MATCH_STATE=m -+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -+CONFIG_NETFILTER_XT_MATCH_STRING=m -+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -+CONFIG_NETFILTER_XT_MATCH_TIME=m -+CONFIG_NETFILTER_XT_MATCH_U32=m -+CONFIG_IP_SET=m -+CONFIG_IP_SET_BITMAP_IP=m -+CONFIG_IP_SET_BITMAP_IPMAC=m -+CONFIG_IP_SET_BITMAP_PORT=m -+CONFIG_IP_SET_HASH_IP=m -+CONFIG_IP_SET_HASH_IPPORT=m -+CONFIG_IP_SET_HASH_IPPORTIP=m -+CONFIG_IP_SET_HASH_IPPORTNET=m -+CONFIG_IP_SET_HASH_NET=m -+CONFIG_IP_SET_HASH_NETPORT=m -+CONFIG_IP_SET_HASH_NETIFACE=m -+CONFIG_IP_SET_LIST_SET=m -+CONFIG_IP_VS=m -+CONFIG_IP_VS_PROTO_TCP=y -+CONFIG_IP_VS_PROTO_UDP=y -+CONFIG_IP_VS_PROTO_ESP=y -+CONFIG_IP_VS_PROTO_AH=y -+CONFIG_IP_VS_PROTO_SCTP=y -+CONFIG_IP_VS_RR=m -+CONFIG_IP_VS_WRR=m -+CONFIG_IP_VS_LC=m -+CONFIG_IP_VS_WLC=m -+CONFIG_IP_VS_LBLC=m -+CONFIG_IP_VS_LBLCR=m -+CONFIG_IP_VS_DH=m -+CONFIG_IP_VS_SH=m -+CONFIG_IP_VS_SED=m -+CONFIG_IP_VS_NQ=m -+CONFIG_IP_VS_FTP=m -+CONFIG_IP_VS_PE_SIP=m -+CONFIG_NF_CONNTRACK_IPV4=m -+CONFIG_IP_NF_IPTABLES=m -+CONFIG_IP_NF_MATCH_AH=m -+CONFIG_IP_NF_MATCH_ECN=m -+CONFIG_IP_NF_MATCH_RPFILTER=m -+CONFIG_IP_NF_MATCH_TTL=m -+CONFIG_IP_NF_FILTER=m -+CONFIG_IP_NF_TARGET_REJECT=m -+CONFIG_IP_NF_NAT=m -+CONFIG_IP_NF_TARGET_MASQUERADE=m -+CONFIG_IP_NF_TARGET_NETMAP=m -+CONFIG_IP_NF_TARGET_REDIRECT=m -+CONFIG_IP_NF_MANGLE=m -+CONFIG_IP_NF_TARGET_CLUSTERIP=m -+CONFIG_IP_NF_TARGET_ECN=m -+CONFIG_IP_NF_TARGET_TTL=m -+CONFIG_IP_NF_RAW=m -+CONFIG_IP_NF_ARPTABLES=m -+CONFIG_IP_NF_ARPFILTER=m -+CONFIG_IP_NF_ARP_MANGLE=m -+CONFIG_NF_CONNTRACK_IPV6=m -+CONFIG_IP6_NF_IPTABLES=m -+CONFIG_IP6_NF_MATCH_AH=m -+CONFIG_IP6_NF_MATCH_EUI64=m -+CONFIG_IP6_NF_MATCH_FRAG=m -+CONFIG_IP6_NF_MATCH_OPTS=m -+CONFIG_IP6_NF_MATCH_HL=m -+CONFIG_IP6_NF_MATCH_IPV6HEADER=m -+CONFIG_IP6_NF_MATCH_MH=m -+CONFIG_IP6_NF_MATCH_RPFILTER=m -+CONFIG_IP6_NF_MATCH_RT=m -+CONFIG_IP6_NF_TARGET_HL=m -+CONFIG_IP6_NF_FILTER=m -+CONFIG_IP6_NF_TARGET_REJECT=m -+CONFIG_IP6_NF_MANGLE=m -+CONFIG_IP6_NF_RAW=m -+CONFIG_IP6_NF_NAT=m -+CONFIG_IP6_NF_TARGET_MASQUERADE=m -+CONFIG_IP6_NF_TARGET_NPT=m -+CONFIG_BRIDGE_NF_EBTABLES=m -+CONFIG_BRIDGE_EBT_BROUTE=m -+CONFIG_BRIDGE_EBT_T_FILTER=m -+CONFIG_BRIDGE_EBT_T_NAT=m -+CONFIG_BRIDGE_EBT_802_3=m -+CONFIG_BRIDGE_EBT_AMONG=m -+CONFIG_BRIDGE_EBT_ARP=m -+CONFIG_BRIDGE_EBT_IP=m -+CONFIG_BRIDGE_EBT_IP6=m -+CONFIG_BRIDGE_EBT_LIMIT=m -+CONFIG_BRIDGE_EBT_MARK=m -+CONFIG_BRIDGE_EBT_PKTTYPE=m -+CONFIG_BRIDGE_EBT_STP=m -+CONFIG_BRIDGE_EBT_VLAN=m -+CONFIG_BRIDGE_EBT_ARPREPLY=m -+CONFIG_BRIDGE_EBT_DNAT=m -+CONFIG_BRIDGE_EBT_MARK_T=m -+CONFIG_BRIDGE_EBT_REDIRECT=m -+CONFIG_BRIDGE_EBT_SNAT=m -+CONFIG_BRIDGE_EBT_LOG=m -+CONFIG_BRIDGE_EBT_NFLOG=m -+CONFIG_SCTP_COOKIE_HMAC_SHA1=y -+CONFIG_ATM=m -+CONFIG_L2TP=m -+CONFIG_L2TP_V3=y -+CONFIG_L2TP_IP=m -+CONFIG_L2TP_ETH=m -+CONFIG_BRIDGE=m -+CONFIG_VLAN_8021Q=m -+CONFIG_VLAN_8021Q_GVRP=y -+CONFIG_ATALK=m -+CONFIG_6LOWPAN=m -+CONFIG_IEEE802154=m -+CONFIG_IEEE802154_6LOWPAN=m -+CONFIG_MAC802154=m -+CONFIG_NET_SCHED=y -+CONFIG_NET_SCH_CBQ=m -+CONFIG_NET_SCH_HTB=m -+CONFIG_NET_SCH_HFSC=m -+CONFIG_NET_SCH_PRIO=m -+CONFIG_NET_SCH_MULTIQ=m -+CONFIG_NET_SCH_RED=m -+CONFIG_NET_SCH_SFB=m -+CONFIG_NET_SCH_SFQ=m -+CONFIG_NET_SCH_TEQL=m -+CONFIG_NET_SCH_TBF=m -+CONFIG_NET_SCH_GRED=m -+CONFIG_NET_SCH_DSMARK=m -+CONFIG_NET_SCH_NETEM=m -+CONFIG_NET_SCH_DRR=m -+CONFIG_NET_SCH_MQPRIO=m -+CONFIG_NET_SCH_CHOKE=m -+CONFIG_NET_SCH_QFQ=m -+CONFIG_NET_SCH_CODEL=m -+CONFIG_NET_SCH_FQ_CODEL=m -+CONFIG_NET_SCH_INGRESS=m -+CONFIG_NET_SCH_PLUG=m -+CONFIG_NET_CLS_BASIC=m -+CONFIG_NET_CLS_TCINDEX=m -+CONFIG_NET_CLS_ROUTE4=m -+CONFIG_NET_CLS_FW=m -+CONFIG_NET_CLS_U32=m -+CONFIG_CLS_U32_MARK=y -+CONFIG_NET_CLS_RSVP=m -+CONFIG_NET_CLS_RSVP6=m -+CONFIG_NET_CLS_FLOW=m -+CONFIG_NET_CLS_CGROUP=m -+CONFIG_NET_EMATCH=y -+CONFIG_NET_EMATCH_CMP=m -+CONFIG_NET_EMATCH_NBYTE=m -+CONFIG_NET_EMATCH_U32=m -+CONFIG_NET_EMATCH_META=m -+CONFIG_NET_EMATCH_TEXT=m -+CONFIG_NET_EMATCH_IPSET=m -+CONFIG_NET_CLS_ACT=y -+CONFIG_NET_ACT_POLICE=m -+CONFIG_NET_ACT_GACT=m -+CONFIG_GACT_PROB=y -+CONFIG_NET_ACT_MIRRED=m -+CONFIG_NET_ACT_IPT=m -+CONFIG_NET_ACT_NAT=m -+CONFIG_NET_ACT_PEDIT=m -+CONFIG_NET_ACT_SIMP=m -+CONFIG_NET_ACT_SKBEDIT=m -+CONFIG_NET_ACT_CSUM=m -+CONFIG_BATMAN_ADV=m -+CONFIG_OPENVSWITCH=m -+CONFIG_NET_PKTGEN=m -+CONFIG_HAMRADIO=y -+CONFIG_AX25=m -+CONFIG_NETROM=m -+CONFIG_ROSE=m -+CONFIG_MKISS=m -+CONFIG_6PACK=m -+CONFIG_BPQETHER=m -+CONFIG_BAYCOM_SER_FDX=m -+CONFIG_BAYCOM_SER_HDX=m -+CONFIG_YAM=m -+CONFIG_CAN=m -+CONFIG_CAN_VCAN=m -+CONFIG_CAN_MCP251X=m -+CONFIG_IRDA=m -+CONFIG_IRLAN=m -+CONFIG_IRNET=m -+CONFIG_IRCOMM=m -+CONFIG_IRDA_ULTRA=y -+CONFIG_IRDA_CACHE_LAST_LSAP=y -+CONFIG_IRDA_FAST_RR=y -+CONFIG_IRTTY_SIR=m -+CONFIG_KINGSUN_DONGLE=m -+CONFIG_KSDAZZLE_DONGLE=m -+CONFIG_KS959_DONGLE=m -+CONFIG_USB_IRDA=m -+CONFIG_SIGMATEL_FIR=m -+CONFIG_MCS_FIR=m -+CONFIG_BT=m -+CONFIG_BT_RFCOMM=m -+CONFIG_BT_RFCOMM_TTY=y -+CONFIG_BT_BNEP=m -+CONFIG_BT_BNEP_MC_FILTER=y -+CONFIG_BT_BNEP_PROTO_FILTER=y -+CONFIG_BT_HIDP=m -+CONFIG_BT_6LOWPAN=m -+CONFIG_BT_HCIBTUSB=m -+CONFIG_BT_HCIUART=m -+CONFIG_BT_HCIUART_3WIRE=y -+CONFIG_BT_HCIUART_BCM=y -+CONFIG_BT_HCIBCM203X=m -+CONFIG_BT_HCIBPA10X=m -+CONFIG_BT_HCIBFUSB=m -+CONFIG_BT_HCIVHCI=m -+CONFIG_BT_MRVL=m -+CONFIG_BT_MRVL_SDIO=m -+CONFIG_BT_ATH3K=m -+CONFIG_BT_WILINK=m -+CONFIG_MAC80211=m -+CONFIG_MAC80211_MESH=y -+CONFIG_WIMAX=m -+CONFIG_RFKILL=m -+CONFIG_RFKILL_INPUT=y -+CONFIG_NET_9P=m -+CONFIG_NFC=m -+CONFIG_DEVTMPFS=y -+CONFIG_DEVTMPFS_MOUNT=y -+CONFIG_DMA_CMA=y -+CONFIG_CMA_SIZE_MBYTES=5 -+CONFIG_MTD=m -+CONFIG_MTD_BLOCK=m -+CONFIG_MTD_NAND=m -+CONFIG_MTD_UBI=m -+CONFIG_OF_CONFIGFS=y -+CONFIG_ZRAM=m -+CONFIG_ZRAM_LZ4_COMPRESS=y -+CONFIG_BLK_DEV_LOOP=y -+CONFIG_BLK_DEV_CRYPTOLOOP=m -+CONFIG_BLK_DEV_DRBD=m -+CONFIG_BLK_DEV_NBD=m -+CONFIG_BLK_DEV_RAM=y -+CONFIG_CDROM_PKTCDVD=m -+CONFIG_ATA_OVER_ETH=m -+CONFIG_EEPROM_AT24=m -+CONFIG_TI_ST=m -+CONFIG_SCSI=y -+# CONFIG_SCSI_PROC_FS is not set -+CONFIG_BLK_DEV_SD=y -+CONFIG_CHR_DEV_ST=m -+CONFIG_CHR_DEV_OSST=m -+CONFIG_BLK_DEV_SR=m -+CONFIG_CHR_DEV_SG=m -+CONFIG_SCSI_ISCSI_ATTRS=y -+CONFIG_ISCSI_TCP=m -+CONFIG_ISCSI_BOOT_SYSFS=m -+CONFIG_MD=y -+CONFIG_MD_LINEAR=m -+CONFIG_MD_RAID0=m -+CONFIG_BLK_DEV_DM=m -+CONFIG_DM_CRYPT=m -+CONFIG_DM_SNAPSHOT=m -+CONFIG_DM_THIN_PROVISIONING=m -+CONFIG_DM_MIRROR=m -+CONFIG_DM_LOG_USERSPACE=m -+CONFIG_DM_RAID=m -+CONFIG_DM_ZERO=m -+CONFIG_DM_DELAY=m -+CONFIG_NETDEVICES=y -+CONFIG_BONDING=m -+CONFIG_DUMMY=m -+CONFIG_IFB=m -+CONFIG_MACVLAN=m -+CONFIG_NETCONSOLE=m -+CONFIG_TUN=m -+CONFIG_VETH=m -+CONFIG_ENC28J60=m -+CONFIG_QCA7000=m -+CONFIG_MDIO_BITBANG=m -+CONFIG_PPP=m -+CONFIG_PPP_BSDCOMP=m -+CONFIG_PPP_DEFLATE=m -+CONFIG_PPP_FILTER=y -+CONFIG_PPP_MPPE=m -+CONFIG_PPP_MULTILINK=y -+CONFIG_PPPOATM=m -+CONFIG_PPPOE=m -+CONFIG_PPPOL2TP=m -+CONFIG_PPP_ASYNC=m -+CONFIG_PPP_SYNC_TTY=m -+CONFIG_SLIP=m -+CONFIG_SLIP_COMPRESSED=y -+CONFIG_SLIP_SMART=y -+CONFIG_USB_CATC=m -+CONFIG_USB_KAWETH=m -+CONFIG_USB_PEGASUS=m -+CONFIG_USB_RTL8150=m -+CONFIG_USB_RTL8152=m -+CONFIG_USB_USBNET=y -+CONFIG_USB_NET_AX8817X=m -+CONFIG_USB_NET_AX88179_178A=m -+CONFIG_USB_NET_CDCETHER=m -+CONFIG_USB_NET_CDC_EEM=m -+CONFIG_USB_NET_CDC_NCM=m -+CONFIG_USB_NET_HUAWEI_CDC_NCM=m -+CONFIG_USB_NET_CDC_MBIM=m -+CONFIG_USB_NET_DM9601=m -+CONFIG_USB_NET_SR9700=m -+CONFIG_USB_NET_SR9800=m -+CONFIG_USB_NET_SMSC75XX=m -+CONFIG_USB_NET_SMSC95XX=y -+CONFIG_USB_NET_GL620A=m -+CONFIG_USB_NET_NET1080=m -+CONFIG_USB_NET_PLUSB=m -+CONFIG_USB_NET_MCS7830=m -+CONFIG_USB_NET_CDC_SUBSET=m -+CONFIG_USB_ALI_M5632=y -+CONFIG_USB_AN2720=y -+CONFIG_USB_EPSON2888=y -+CONFIG_USB_KC2190=y -+CONFIG_USB_NET_ZAURUS=m -+CONFIG_USB_NET_CX82310_ETH=m -+CONFIG_USB_NET_KALMIA=m -+CONFIG_USB_NET_QMI_WWAN=m -+CONFIG_USB_HSO=m -+CONFIG_USB_NET_INT51X1=m -+CONFIG_USB_IPHETH=m -+CONFIG_USB_SIERRA_NET=m -+CONFIG_USB_VL600=m -+CONFIG_ATH9K=m -+CONFIG_ATH9K_HTC=m -+CONFIG_CARL9170=m -+CONFIG_ATH6KL=m -+CONFIG_ATH6KL_USB=m -+CONFIG_AR5523=m -+CONFIG_AT76C50X_USB=m -+CONFIG_B43=m -+# CONFIG_B43_PHY_N is not set -+CONFIG_B43LEGACY=m -+CONFIG_BRCMFMAC=m -+CONFIG_BRCMFMAC_USB=y -+CONFIG_HOSTAP=m -+CONFIG_P54_COMMON=m -+CONFIG_P54_USB=m -+CONFIG_LIBERTAS=m -+CONFIG_LIBERTAS_USB=m -+CONFIG_LIBERTAS_SDIO=m -+CONFIG_LIBERTAS_THINFIRM=m -+CONFIG_LIBERTAS_THINFIRM_USB=m -+CONFIG_MWIFIEX=m -+CONFIG_MWIFIEX_SDIO=m -+CONFIG_MT7601U=m -+CONFIG_RT2X00=m -+CONFIG_RT2500USB=m -+CONFIG_RT73USB=m -+CONFIG_RT2800USB=m -+CONFIG_RT2800USB_RT3573=y -+CONFIG_RT2800USB_RT53XX=y -+CONFIG_RT2800USB_RT55XX=y -+CONFIG_RT2800USB_UNKNOWN=y -+CONFIG_RTL8187=m -+CONFIG_RTL8192CU=m -+CONFIG_USB_ZD1201=m -+CONFIG_ZD1211RW=m -+CONFIG_MAC80211_HWSIM=m -+CONFIG_USB_NET_RNDIS_WLAN=m -+CONFIG_WIMAX_I2400M_USB=m -+CONFIG_IEEE802154_AT86RF230=m -+CONFIG_IEEE802154_MRF24J40=m -+CONFIG_IEEE802154_CC2520=m -+CONFIG_INPUT_POLLDEV=m -+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -+CONFIG_INPUT_JOYDEV=m -+CONFIG_INPUT_EVDEV=m -+# CONFIG_KEYBOARD_ATKBD is not set -+CONFIG_KEYBOARD_GPIO=m -+# CONFIG_INPUT_MOUSE is not set -+CONFIG_INPUT_JOYSTICK=y -+CONFIG_JOYSTICK_IFORCE=m -+CONFIG_JOYSTICK_IFORCE_USB=y -+CONFIG_JOYSTICK_XPAD=m -+CONFIG_JOYSTICK_XPAD_FF=y -+CONFIG_JOYSTICK_XPAD_LEDS=y -+CONFIG_JOYSTICK_RPISENSE=m -+CONFIG_INPUT_TOUCHSCREEN=y -+CONFIG_TOUCHSCREEN_ADS7846=m -+CONFIG_TOUCHSCREEN_EGALAX=m -+CONFIG_TOUCHSCREEN_FT6236=m -+CONFIG_TOUCHSCREEN_RPI_FT5406=m -+CONFIG_TOUCHSCREEN_USB_COMPOSITE=m -+CONFIG_TOUCHSCREEN_STMPE=m -+CONFIG_INPUT_MISC=y -+CONFIG_INPUT_AD714X=m -+CONFIG_INPUT_ATI_REMOTE2=m -+CONFIG_INPUT_KEYSPAN_REMOTE=m -+CONFIG_INPUT_POWERMATE=m -+CONFIG_INPUT_YEALINK=m -+CONFIG_INPUT_CM109=m -+CONFIG_INPUT_UINPUT=m -+CONFIG_INPUT_GPIO_ROTARY_ENCODER=m -+CONFIG_INPUT_ADXL34X=m -+CONFIG_INPUT_CMA3000=m -+CONFIG_SERIO=m -+CONFIG_SERIO_RAW=m -+CONFIG_GAMEPORT=m -+CONFIG_GAMEPORT_NS558=m -+CONFIG_GAMEPORT_L4=m -+CONFIG_BRCM_CHAR_DRIVERS=y -+CONFIG_BCM_VC_CMA=y -+CONFIG_BCM_VCIO=y -+CONFIG_BCM_VC_SM=y -+# CONFIG_LEGACY_PTYS is not set -+# CONFIG_DEVKMEM is not set -+CONFIG_SERIAL_8250=y -+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set -+CONFIG_SERIAL_8250_CONSOLE=y -+# CONFIG_SERIAL_8250_DMA is not set -+CONFIG_SERIAL_8250_NR_UARTS=1 -+CONFIG_SERIAL_8250_RUNTIME_UARTS=0 -+CONFIG_SERIAL_OF_PLATFORM=y -+CONFIG_SERIAL_AMBA_PL011=y -+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -+CONFIG_TTY_PRINTK=y -+CONFIG_HW_RANDOM=y -+CONFIG_RAW_DRIVER=y -+CONFIG_I2C=y -+CONFIG_I2C_CHARDEV=m -+CONFIG_I2C_MUX_PCA954x=m -+CONFIG_I2C_BCM2708=m -+CONFIG_I2C_GPIO=m -+CONFIG_SPI=y -+CONFIG_SPI_BCM2835=m -+CONFIG_SPI_BCM2835AUX=m -+CONFIG_SPI_SPIDEV=y -+CONFIG_PPS=m -+CONFIG_PPS_CLIENT_LDISC=m -+CONFIG_PPS_CLIENT_GPIO=m -+CONFIG_GPIO_SYSFS=y -+CONFIG_GPIO_ARIZONA=m -+CONFIG_GPIO_STMPE=y -+CONFIG_GPIO_MCP23S08=m -+CONFIG_W1=m -+CONFIG_W1_MASTER_DS2490=m -+CONFIG_W1_MASTER_DS2482=m -+CONFIG_W1_MASTER_DS1WM=m -+CONFIG_W1_MASTER_GPIO=m -+CONFIG_W1_SLAVE_THERM=m -+CONFIG_W1_SLAVE_SMEM=m -+CONFIG_W1_SLAVE_DS2408=m -+CONFIG_W1_SLAVE_DS2413=m -+CONFIG_W1_SLAVE_DS2406=m -+CONFIG_W1_SLAVE_DS2423=m -+CONFIG_W1_SLAVE_DS2431=m -+CONFIG_W1_SLAVE_DS2433=m -+CONFIG_W1_SLAVE_DS2760=m -+CONFIG_W1_SLAVE_DS2780=m -+CONFIG_W1_SLAVE_DS2781=m -+CONFIG_W1_SLAVE_DS28E04=m -+CONFIG_W1_SLAVE_BQ27000=m -+CONFIG_BATTERY_DS2760=m -+CONFIG_POWER_RESET=y -+CONFIG_POWER_RESET_GPIO=y -+CONFIG_HWMON=m -+CONFIG_SENSORS_SHT21=m -+CONFIG_SENSORS_SHTC1=m -+CONFIG_THERMAL=y -+CONFIG_THERMAL_BCM2835=y -+CONFIG_WATCHDOG=y -+CONFIG_BCM2835_WDT=m -+CONFIG_UCB1400_CORE=m -+CONFIG_MFD_STMPE=y -+CONFIG_STMPE_SPI=y -+CONFIG_MFD_ARIZONA_I2C=m -+CONFIG_MFD_ARIZONA_SPI=m -+CONFIG_MFD_WM5102=y -+CONFIG_MEDIA_SUPPORT=m -+CONFIG_MEDIA_CAMERA_SUPPORT=y -+CONFIG_MEDIA_ANALOG_TV_SUPPORT=y -+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y -+CONFIG_MEDIA_RADIO_SUPPORT=y -+CONFIG_MEDIA_RC_SUPPORT=y -+CONFIG_MEDIA_CONTROLLER=y -+CONFIG_LIRC=m -+CONFIG_RC_DEVICES=y -+CONFIG_RC_ATI_REMOTE=m -+CONFIG_IR_IMON=m -+CONFIG_IR_MCEUSB=m -+CONFIG_IR_REDRAT3=m -+CONFIG_IR_STREAMZAP=m -+CONFIG_IR_IGUANA=m -+CONFIG_IR_TTUSBIR=m -+CONFIG_RC_LOOPBACK=m -+CONFIG_IR_GPIO_CIR=m -+CONFIG_MEDIA_USB_SUPPORT=y -+CONFIG_USB_VIDEO_CLASS=m -+CONFIG_USB_M5602=m -+CONFIG_USB_STV06XX=m -+CONFIG_USB_GL860=m -+CONFIG_USB_GSPCA_BENQ=m -+CONFIG_USB_GSPCA_CONEX=m -+CONFIG_USB_GSPCA_CPIA1=m -+CONFIG_USB_GSPCA_DTCS033=m -+CONFIG_USB_GSPCA_ETOMS=m -+CONFIG_USB_GSPCA_FINEPIX=m -+CONFIG_USB_GSPCA_JEILINJ=m -+CONFIG_USB_GSPCA_JL2005BCD=m -+CONFIG_USB_GSPCA_KINECT=m -+CONFIG_USB_GSPCA_KONICA=m -+CONFIG_USB_GSPCA_MARS=m -+CONFIG_USB_GSPCA_MR97310A=m -+CONFIG_USB_GSPCA_NW80X=m -+CONFIG_USB_GSPCA_OV519=m -+CONFIG_USB_GSPCA_OV534=m -+CONFIG_USB_GSPCA_OV534_9=m -+CONFIG_USB_GSPCA_PAC207=m -+CONFIG_USB_GSPCA_PAC7302=m -+CONFIG_USB_GSPCA_PAC7311=m -+CONFIG_USB_GSPCA_SE401=m -+CONFIG_USB_GSPCA_SN9C2028=m -+CONFIG_USB_GSPCA_SN9C20X=m -+CONFIG_USB_GSPCA_SONIXB=m -+CONFIG_USB_GSPCA_SONIXJ=m -+CONFIG_USB_GSPCA_SPCA500=m -+CONFIG_USB_GSPCA_SPCA501=m -+CONFIG_USB_GSPCA_SPCA505=m -+CONFIG_USB_GSPCA_SPCA506=m -+CONFIG_USB_GSPCA_SPCA508=m -+CONFIG_USB_GSPCA_SPCA561=m -+CONFIG_USB_GSPCA_SPCA1528=m -+CONFIG_USB_GSPCA_SQ905=m -+CONFIG_USB_GSPCA_SQ905C=m -+CONFIG_USB_GSPCA_SQ930X=m -+CONFIG_USB_GSPCA_STK014=m -+CONFIG_USB_GSPCA_STK1135=m -+CONFIG_USB_GSPCA_STV0680=m -+CONFIG_USB_GSPCA_SUNPLUS=m -+CONFIG_USB_GSPCA_T613=m -+CONFIG_USB_GSPCA_TOPRO=m -+CONFIG_USB_GSPCA_TV8532=m -+CONFIG_USB_GSPCA_VC032X=m -+CONFIG_USB_GSPCA_VICAM=m -+CONFIG_USB_GSPCA_XIRLINK_CIT=m -+CONFIG_USB_GSPCA_ZC3XX=m -+CONFIG_USB_PWC=m -+CONFIG_VIDEO_CPIA2=m -+CONFIG_USB_ZR364XX=m -+CONFIG_USB_STKWEBCAM=m -+CONFIG_USB_S2255=m -+CONFIG_VIDEO_USBTV=m -+CONFIG_VIDEO_PVRUSB2=m -+CONFIG_VIDEO_HDPVR=m -+CONFIG_VIDEO_USBVISION=m -+CONFIG_VIDEO_STK1160_COMMON=m -+CONFIG_VIDEO_STK1160_AC97=y -+CONFIG_VIDEO_GO7007=m -+CONFIG_VIDEO_GO7007_USB=m -+CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m -+CONFIG_VIDEO_AU0828=m -+CONFIG_VIDEO_AU0828_RC=y -+CONFIG_VIDEO_CX231XX=m -+CONFIG_VIDEO_CX231XX_ALSA=m -+CONFIG_VIDEO_CX231XX_DVB=m -+CONFIG_VIDEO_TM6000=m -+CONFIG_VIDEO_TM6000_ALSA=m -+CONFIG_VIDEO_TM6000_DVB=m -+CONFIG_DVB_USB=m -+CONFIG_DVB_USB_A800=m -+CONFIG_DVB_USB_DIBUSB_MB=m -+CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y -+CONFIG_DVB_USB_DIBUSB_MC=m -+CONFIG_DVB_USB_DIB0700=m -+CONFIG_DVB_USB_UMT_010=m -+CONFIG_DVB_USB_CXUSB=m -+CONFIG_DVB_USB_M920X=m -+CONFIG_DVB_USB_DIGITV=m -+CONFIG_DVB_USB_VP7045=m -+CONFIG_DVB_USB_VP702X=m -+CONFIG_DVB_USB_GP8PSK=m -+CONFIG_DVB_USB_NOVA_T_USB2=m -+CONFIG_DVB_USB_TTUSB2=m -+CONFIG_DVB_USB_DTT200U=m -+CONFIG_DVB_USB_OPERA1=m -+CONFIG_DVB_USB_AF9005=m -+CONFIG_DVB_USB_AF9005_REMOTE=m -+CONFIG_DVB_USB_PCTV452E=m -+CONFIG_DVB_USB_DW2102=m -+CONFIG_DVB_USB_CINERGY_T2=m -+CONFIG_DVB_USB_DTV5100=m -+CONFIG_DVB_USB_FRIIO=m -+CONFIG_DVB_USB_AZ6027=m -+CONFIG_DVB_USB_TECHNISAT_USB2=m -+CONFIG_DVB_USB_V2=m -+CONFIG_DVB_USB_AF9015=m -+CONFIG_DVB_USB_AF9035=m -+CONFIG_DVB_USB_ANYSEE=m -+CONFIG_DVB_USB_AU6610=m -+CONFIG_DVB_USB_AZ6007=m -+CONFIG_DVB_USB_CE6230=m -+CONFIG_DVB_USB_EC168=m -+CONFIG_DVB_USB_GL861=m -+CONFIG_DVB_USB_LME2510=m -+CONFIG_DVB_USB_MXL111SF=m -+CONFIG_DVB_USB_RTL28XXU=m -+CONFIG_DVB_USB_DVBSKY=m -+CONFIG_SMS_USB_DRV=m -+CONFIG_DVB_B2C2_FLEXCOP_USB=m -+CONFIG_DVB_AS102=m -+CONFIG_VIDEO_EM28XX=m -+CONFIG_VIDEO_EM28XX_V4L2=m -+CONFIG_VIDEO_EM28XX_ALSA=m -+CONFIG_VIDEO_EM28XX_DVB=m -+CONFIG_V4L_PLATFORM_DRIVERS=y -+CONFIG_VIDEO_BCM2835=y -+CONFIG_VIDEO_BCM2835_MMAL=m -+CONFIG_RADIO_SI470X=y -+CONFIG_USB_SI470X=m -+CONFIG_I2C_SI470X=m -+CONFIG_RADIO_SI4713=m -+CONFIG_I2C_SI4713=m -+CONFIG_USB_MR800=m -+CONFIG_USB_DSBR=m -+CONFIG_RADIO_SHARK=m -+CONFIG_RADIO_SHARK2=m -+CONFIG_USB_KEENE=m -+CONFIG_USB_MA901=m -+CONFIG_RADIO_TEA5764=m -+CONFIG_RADIO_SAA7706H=m -+CONFIG_RADIO_TEF6862=m -+CONFIG_RADIO_WL1273=m -+CONFIG_RADIO_WL128X=m -+# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set -+CONFIG_VIDEO_UDA1342=m -+CONFIG_VIDEO_SONY_BTF_MPX=m -+CONFIG_VIDEO_TVP5150=m -+CONFIG_VIDEO_TW2804=m -+CONFIG_VIDEO_TW9903=m -+CONFIG_VIDEO_TW9906=m -+CONFIG_VIDEO_OV7640=m -+CONFIG_VIDEO_MT9V011=m -+CONFIG_DRM=m -+CONFIG_DRM_LOAD_EDID_FIRMWARE=y -+CONFIG_DRM_UDL=m -+CONFIG_DRM_VC4=m -+CONFIG_FB=y -+CONFIG_FB_BCM2708=y -+CONFIG_FB_UDL=m -+CONFIG_FB_SSD1307=m -+CONFIG_FB_RPISENSE=m -+# CONFIG_BACKLIGHT_GENERIC is not set -+CONFIG_BACKLIGHT_RPI=m -+CONFIG_BACKLIGHT_GPIO=m -+CONFIG_FRAMEBUFFER_CONSOLE=y -+CONFIG_LOGO=y -+# CONFIG_LOGO_LINUX_MONO is not set -+# CONFIG_LOGO_LINUX_VGA16 is not set -+CONFIG_SOUND=y -+CONFIG_SND=m -+CONFIG_SND_SEQUENCER=m -+CONFIG_SND_SEQ_DUMMY=m -+CONFIG_SND_MIXER_OSS=m -+CONFIG_SND_PCM_OSS=m -+CONFIG_SND_SEQUENCER_OSS=y -+CONFIG_SND_HRTIMER=m -+CONFIG_SND_DUMMY=m -+CONFIG_SND_ALOOP=m -+CONFIG_SND_VIRMIDI=m -+CONFIG_SND_MTPAV=m -+CONFIG_SND_SERIAL_U16550=m -+CONFIG_SND_MPU401=m -+CONFIG_SND_BCM2835=m -+CONFIG_SND_USB_AUDIO=m -+CONFIG_SND_USB_UA101=m -+CONFIG_SND_USB_CAIAQ=m -+CONFIG_SND_USB_CAIAQ_INPUT=y -+CONFIG_SND_USB_6FIRE=m -+CONFIG_SND_SOC=m -+CONFIG_SND_BCM2835_SOC_I2S=m -+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m -+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m -+CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m -+CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m -+CONFIG_SND_BCM2708_SOC_RPI_DAC=m -+CONFIG_SND_BCM2708_SOC_RPI_PROTO=m -+CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m -+CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m -+CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m -+CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m -+CONFIG_SND_BCM2708_SOC_RASPIDAC3=m -+CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m -+CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m -+CONFIG_SND_DIGIDAC1_SOUNDCARD=m -+CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m -+CONFIG_SND_SOC_ADAU1701=m -+CONFIG_SND_SOC_WM8804_I2C=m -+CONFIG_SND_SIMPLE_CARD=m -+CONFIG_SOUND_PRIME=m -+CONFIG_HIDRAW=y -+CONFIG_UHID=m -+CONFIG_HID_A4TECH=m -+CONFIG_HID_ACRUX=m -+CONFIG_HID_APPLE=m -+CONFIG_HID_BELKIN=m -+CONFIG_HID_BETOP_FF=m -+CONFIG_HID_CHERRY=m -+CONFIG_HID_CHICONY=m -+CONFIG_HID_CYPRESS=m -+CONFIG_HID_DRAGONRISE=m -+CONFIG_HID_EMS_FF=m -+CONFIG_HID_ELECOM=m -+CONFIG_HID_ELO=m -+CONFIG_HID_EZKEY=m -+CONFIG_HID_HOLTEK=m -+CONFIG_HID_KEYTOUCH=m -+CONFIG_HID_KYE=m -+CONFIG_HID_UCLOGIC=m -+CONFIG_HID_WALTOP=m -+CONFIG_HID_GYRATION=m -+CONFIG_HID_TWINHAN=m -+CONFIG_HID_KENSINGTON=m -+CONFIG_HID_LCPOWER=m -+CONFIG_HID_LOGITECH=m -+CONFIG_HID_LOGITECH_DJ=m -+CONFIG_LOGITECH_FF=y -+CONFIG_LOGIRUMBLEPAD2_FF=y -+CONFIG_LOGIG940_FF=y -+CONFIG_HID_MAGICMOUSE=m -+CONFIG_HID_MICROSOFT=m -+CONFIG_HID_MONTEREY=m -+CONFIG_HID_MULTITOUCH=m -+CONFIG_HID_NTRIG=m -+CONFIG_HID_ORTEK=m -+CONFIG_HID_PANTHERLORD=m -+CONFIG_HID_PETALYNX=m -+CONFIG_HID_PICOLCD=m -+CONFIG_HID_ROCCAT=m -+CONFIG_HID_SAMSUNG=m -+CONFIG_HID_SONY=m -+CONFIG_HID_SPEEDLINK=m -+CONFIG_HID_SUNPLUS=m -+CONFIG_HID_GREENASIA=m -+CONFIG_HID_SMARTJOYPLUS=m -+CONFIG_HID_TOPSEED=m -+CONFIG_HID_THINGM=m -+CONFIG_HID_THRUSTMASTER=m -+CONFIG_HID_WACOM=m -+CONFIG_HID_WIIMOTE=m -+CONFIG_HID_XINMO=m -+CONFIG_HID_ZEROPLUS=m -+CONFIG_HID_ZYDACRON=m -+CONFIG_HID_PID=y -+CONFIG_USB_HIDDEV=y -+CONFIG_USB=y -+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -+CONFIG_USB_MON=m -+CONFIG_USB_DWCOTG=y -+CONFIG_USB_PRINTER=m -+CONFIG_USB_STORAGE=y -+CONFIG_USB_STORAGE_REALTEK=m -+CONFIG_USB_STORAGE_DATAFAB=m -+CONFIG_USB_STORAGE_FREECOM=m -+CONFIG_USB_STORAGE_ISD200=m -+CONFIG_USB_STORAGE_USBAT=m -+CONFIG_USB_STORAGE_SDDR09=m -+CONFIG_USB_STORAGE_SDDR55=m -+CONFIG_USB_STORAGE_JUMPSHOT=m -+CONFIG_USB_STORAGE_ALAUDA=m -+CONFIG_USB_STORAGE_ONETOUCH=m -+CONFIG_USB_STORAGE_KARMA=m -+CONFIG_USB_STORAGE_CYPRESS_ATACB=m -+CONFIG_USB_STORAGE_ENE_UB6250=m -+CONFIG_USB_MDC800=m -+CONFIG_USB_MICROTEK=m -+CONFIG_USBIP_CORE=m -+CONFIG_USBIP_VHCI_HCD=m -+CONFIG_USBIP_HOST=m -+CONFIG_USB_DWC2=m -+CONFIG_USB_SERIAL=m -+CONFIG_USB_SERIAL_GENERIC=y -+CONFIG_USB_SERIAL_AIRCABLE=m -+CONFIG_USB_SERIAL_ARK3116=m -+CONFIG_USB_SERIAL_BELKIN=m -+CONFIG_USB_SERIAL_CH341=m -+CONFIG_USB_SERIAL_WHITEHEAT=m -+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m -+CONFIG_USB_SERIAL_CP210X=m -+CONFIG_USB_SERIAL_CYPRESS_M8=m -+CONFIG_USB_SERIAL_EMPEG=m -+CONFIG_USB_SERIAL_FTDI_SIO=m -+CONFIG_USB_SERIAL_VISOR=m -+CONFIG_USB_SERIAL_IPAQ=m -+CONFIG_USB_SERIAL_IR=m -+CONFIG_USB_SERIAL_EDGEPORT=m -+CONFIG_USB_SERIAL_EDGEPORT_TI=m -+CONFIG_USB_SERIAL_F81232=m -+CONFIG_USB_SERIAL_GARMIN=m -+CONFIG_USB_SERIAL_IPW=m -+CONFIG_USB_SERIAL_IUU=m -+CONFIG_USB_SERIAL_KEYSPAN_PDA=m -+CONFIG_USB_SERIAL_KEYSPAN=m -+CONFIG_USB_SERIAL_KLSI=m -+CONFIG_USB_SERIAL_KOBIL_SCT=m -+CONFIG_USB_SERIAL_MCT_U232=m -+CONFIG_USB_SERIAL_METRO=m -+CONFIG_USB_SERIAL_MOS7720=m -+CONFIG_USB_SERIAL_MOS7840=m -+CONFIG_USB_SERIAL_NAVMAN=m -+CONFIG_USB_SERIAL_PL2303=m -+CONFIG_USB_SERIAL_OTI6858=m -+CONFIG_USB_SERIAL_QCAUX=m -+CONFIG_USB_SERIAL_QUALCOMM=m -+CONFIG_USB_SERIAL_SPCP8X5=m -+CONFIG_USB_SERIAL_SAFE=m -+CONFIG_USB_SERIAL_SIERRAWIRELESS=m -+CONFIG_USB_SERIAL_SYMBOL=m -+CONFIG_USB_SERIAL_TI=m -+CONFIG_USB_SERIAL_CYBERJACK=m -+CONFIG_USB_SERIAL_XIRCOM=m -+CONFIG_USB_SERIAL_OPTION=m -+CONFIG_USB_SERIAL_OMNINET=m -+CONFIG_USB_SERIAL_OPTICON=m -+CONFIG_USB_SERIAL_XSENS_MT=m -+CONFIG_USB_SERIAL_WISHBONE=m -+CONFIG_USB_SERIAL_SSU100=m -+CONFIG_USB_SERIAL_QT2=m -+CONFIG_USB_SERIAL_DEBUG=m -+CONFIG_USB_EMI62=m -+CONFIG_USB_EMI26=m -+CONFIG_USB_ADUTUX=m -+CONFIG_USB_SEVSEG=m -+CONFIG_USB_RIO500=m -+CONFIG_USB_LEGOTOWER=m -+CONFIG_USB_LCD=m -+CONFIG_USB_LED=m -+CONFIG_USB_CYPRESS_CY7C63=m -+CONFIG_USB_CYTHERM=m -+CONFIG_USB_IDMOUSE=m -+CONFIG_USB_FTDI_ELAN=m -+CONFIG_USB_APPLEDISPLAY=m -+CONFIG_USB_LD=m -+CONFIG_USB_TRANCEVIBRATOR=m -+CONFIG_USB_IOWARRIOR=m -+CONFIG_USB_TEST=m -+CONFIG_USB_ISIGHTFW=m -+CONFIG_USB_YUREX=m -+CONFIG_USB_ATM=m -+CONFIG_USB_SPEEDTOUCH=m -+CONFIG_USB_CXACRU=m -+CONFIG_USB_UEAGLEATM=m -+CONFIG_USB_XUSBATM=m -+CONFIG_USB_GADGET=m -+CONFIG_USB_ZERO=m -+CONFIG_USB_AUDIO=m -+CONFIG_USB_ETH=m -+CONFIG_USB_GADGETFS=m -+CONFIG_USB_MASS_STORAGE=m -+CONFIG_USB_G_SERIAL=m -+CONFIG_USB_MIDI_GADGET=m -+CONFIG_USB_G_PRINTER=m -+CONFIG_USB_CDC_COMPOSITE=m -+CONFIG_USB_G_ACM_MS=m -+CONFIG_USB_G_MULTI=m -+CONFIG_USB_G_HID=m -+CONFIG_USB_G_WEBCAM=m -+CONFIG_MMC=y -+CONFIG_MMC_BLOCK_MINORS=32 -+CONFIG_MMC_BCM2835=y -+CONFIG_MMC_BCM2835_DMA=y -+CONFIG_MMC_BCM2835_SDHOST=y -+CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_PLTFM=y -+CONFIG_MMC_SPI=m -+CONFIG_LEDS_CLASS=y -+CONFIG_LEDS_GPIO=y -+CONFIG_LEDS_TRIGGER_TIMER=y -+CONFIG_LEDS_TRIGGER_ONESHOT=y -+CONFIG_LEDS_TRIGGER_HEARTBEAT=y -+CONFIG_LEDS_TRIGGER_BACKLIGHT=y -+CONFIG_LEDS_TRIGGER_CPU=y -+CONFIG_LEDS_TRIGGER_GPIO=y -+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y -+CONFIG_LEDS_TRIGGER_TRANSIENT=m -+CONFIG_LEDS_TRIGGER_CAMERA=m -+CONFIG_LEDS_TRIGGER_INPUT=y -+CONFIG_LEDS_TRIGGER_PANIC=y -+CONFIG_RTC_CLASS=y -+# CONFIG_RTC_HCTOSYS is not set -+CONFIG_RTC_DRV_DS1307=m -+CONFIG_RTC_DRV_DS1374=m -+CONFIG_RTC_DRV_DS1672=m -+CONFIG_RTC_DRV_MAX6900=m -+CONFIG_RTC_DRV_RS5C372=m -+CONFIG_RTC_DRV_ISL1208=m -+CONFIG_RTC_DRV_ISL12022=m -+CONFIG_RTC_DRV_ISL12057=m -+CONFIG_RTC_DRV_X1205=m -+CONFIG_RTC_DRV_PCF8523=m -+CONFIG_RTC_DRV_PCF8563=m -+CONFIG_RTC_DRV_PCF8583=m -+CONFIG_RTC_DRV_M41T80=m -+CONFIG_RTC_DRV_BQ32K=m -+CONFIG_RTC_DRV_S35390A=m -+CONFIG_RTC_DRV_FM3130=m -+CONFIG_RTC_DRV_RX8581=m -+CONFIG_RTC_DRV_RX8025=m -+CONFIG_RTC_DRV_EM3027=m -+CONFIG_RTC_DRV_M41T93=m -+CONFIG_RTC_DRV_M41T94=m -+CONFIG_RTC_DRV_DS1302=m -+CONFIG_RTC_DRV_DS1305=m -+CONFIG_RTC_DRV_DS1390=m -+CONFIG_RTC_DRV_R9701=m -+CONFIG_RTC_DRV_RX4581=m -+CONFIG_RTC_DRV_RS5C348=m -+CONFIG_RTC_DRV_MAX6902=m -+CONFIG_RTC_DRV_PCF2123=m -+CONFIG_RTC_DRV_DS3232=m -+CONFIG_RTC_DRV_PCF2127=m -+CONFIG_RTC_DRV_RV3029C2=m -+CONFIG_DMADEVICES=y -+CONFIG_DMA_BCM2835=y -+CONFIG_DMA_BCM2708=y -+CONFIG_UIO=m -+CONFIG_UIO_PDRV_GENIRQ=m -+CONFIG_STAGING=y -+CONFIG_PRISM2_USB=m -+CONFIG_R8712U=m -+CONFIG_R8188EU=m -+CONFIG_R8723AU=m -+CONFIG_VT6656=m -+CONFIG_SPEAKUP=m -+CONFIG_SPEAKUP_SYNTH_SOFT=m -+CONFIG_STAGING_MEDIA=y -+CONFIG_LIRC_STAGING=y -+CONFIG_LIRC_IMON=m -+CONFIG_LIRC_RPI=m -+CONFIG_LIRC_SASEM=m -+CONFIG_LIRC_SERIAL=m -+CONFIG_FB_TFT=m -+CONFIG_FB_TFT_AGM1264K_FL=m -+CONFIG_FB_TFT_BD663474=m -+CONFIG_FB_TFT_HX8340BN=m -+CONFIG_FB_TFT_HX8347D=m -+CONFIG_FB_TFT_HX8353D=m -+CONFIG_FB_TFT_ILI9163=m -+CONFIG_FB_TFT_ILI9320=m -+CONFIG_FB_TFT_ILI9325=m -+CONFIG_FB_TFT_ILI9340=m -+CONFIG_FB_TFT_ILI9341=m -+CONFIG_FB_TFT_ILI9481=m -+CONFIG_FB_TFT_ILI9486=m -+CONFIG_FB_TFT_PCD8544=m -+CONFIG_FB_TFT_RA8875=m -+CONFIG_FB_TFT_S6D02A1=m -+CONFIG_FB_TFT_S6D1121=m -+CONFIG_FB_TFT_SSD1289=m -+CONFIG_FB_TFT_SSD1306=m -+CONFIG_FB_TFT_SSD1331=m -+CONFIG_FB_TFT_SSD1351=m -+CONFIG_FB_TFT_ST7735R=m -+CONFIG_FB_TFT_TINYLCD=m -+CONFIG_FB_TFT_TLS8204=m -+CONFIG_FB_TFT_UC1701=m -+CONFIG_FB_TFT_UPD161704=m -+CONFIG_FB_TFT_WATTEROTT=m -+CONFIG_FB_FLEX=m -+CONFIG_FB_TFT_FBTFT_DEVICE=m -+CONFIG_MAILBOX=y -+CONFIG_BCM2835_MBOX=y -+# CONFIG_IOMMU_SUPPORT is not set -+CONFIG_RASPBERRYPI_POWER=y -+CONFIG_EXTCON=m -+CONFIG_EXTCON_ARIZONA=m -+CONFIG_IIO=m -+CONFIG_IIO_BUFFER=y -+CONFIG_IIO_BUFFER_CB=m -+CONFIG_IIO_KFIFO_BUF=m -+CONFIG_MCP320X=m -+CONFIG_MCP3422=m -+CONFIG_DHT11=m -+CONFIG_PWM_BCM2835=m -+CONFIG_PWM_PCA9685=m -+CONFIG_RASPBERRYPI_FIRMWARE=y -+CONFIG_EXT4_FS=y -+CONFIG_EXT4_FS_POSIX_ACL=y -+CONFIG_EXT4_FS_SECURITY=y -+CONFIG_REISERFS_FS=m -+CONFIG_REISERFS_FS_XATTR=y -+CONFIG_REISERFS_FS_POSIX_ACL=y -+CONFIG_REISERFS_FS_SECURITY=y -+CONFIG_JFS_FS=m -+CONFIG_JFS_POSIX_ACL=y -+CONFIG_JFS_SECURITY=y -+CONFIG_JFS_STATISTICS=y -+CONFIG_XFS_FS=m -+CONFIG_XFS_QUOTA=y -+CONFIG_XFS_POSIX_ACL=y -+CONFIG_XFS_RT=y -+CONFIG_GFS2_FS=m -+CONFIG_OCFS2_FS=m -+CONFIG_BTRFS_FS=m -+CONFIG_BTRFS_FS_POSIX_ACL=y -+CONFIG_NILFS2_FS=m -+CONFIG_F2FS_FS=y -+CONFIG_FANOTIFY=y -+CONFIG_QFMT_V1=m -+CONFIG_QFMT_V2=m -+CONFIG_AUTOFS4_FS=y -+CONFIG_FUSE_FS=m -+CONFIG_CUSE=m -+CONFIG_OVERLAY_FS=m -+CONFIG_FSCACHE=y -+CONFIG_FSCACHE_STATS=y -+CONFIG_FSCACHE_HISTOGRAM=y -+CONFIG_CACHEFILES=y -+CONFIG_ISO9660_FS=m -+CONFIG_JOLIET=y -+CONFIG_ZISOFS=y -+CONFIG_UDF_FS=m -+CONFIG_MSDOS_FS=y -+CONFIG_VFAT_FS=y -+CONFIG_FAT_DEFAULT_IOCHARSET="ascii" -+CONFIG_NTFS_FS=m -+CONFIG_NTFS_RW=y -+CONFIG_TMPFS=y -+CONFIG_TMPFS_POSIX_ACL=y -+CONFIG_ECRYPT_FS=m -+CONFIG_HFS_FS=m -+CONFIG_HFSPLUS_FS=m -+CONFIG_JFFS2_FS=m -+CONFIG_JFFS2_SUMMARY=y -+CONFIG_UBIFS_FS=m -+CONFIG_SQUASHFS=m -+CONFIG_SQUASHFS_XATTR=y -+CONFIG_SQUASHFS_LZO=y -+CONFIG_SQUASHFS_XZ=y -+CONFIG_NFS_FS=y -+CONFIG_NFS_V3_ACL=y -+CONFIG_NFS_V4=y -+CONFIG_NFS_SWAP=y -+CONFIG_ROOT_NFS=y -+CONFIG_NFS_FSCACHE=y -+CONFIG_NFSD=m -+CONFIG_NFSD_V3_ACL=y -+CONFIG_NFSD_V4=y -+CONFIG_CIFS=m -+CONFIG_CIFS_WEAK_PW_HASH=y -+CONFIG_CIFS_UPCALL=y -+CONFIG_CIFS_XATTR=y -+CONFIG_CIFS_POSIX=y -+CONFIG_CIFS_ACL=y -+CONFIG_CIFS_DFS_UPCALL=y -+CONFIG_CIFS_SMB2=y -+CONFIG_CIFS_FSCACHE=y -+CONFIG_9P_FS=m -+CONFIG_9P_FS_POSIX_ACL=y -+CONFIG_NLS_DEFAULT="utf8" -+CONFIG_NLS_CODEPAGE_437=y -+CONFIG_NLS_CODEPAGE_737=m -+CONFIG_NLS_CODEPAGE_775=m -+CONFIG_NLS_CODEPAGE_850=m -+CONFIG_NLS_CODEPAGE_852=m -+CONFIG_NLS_CODEPAGE_855=m -+CONFIG_NLS_CODEPAGE_857=m -+CONFIG_NLS_CODEPAGE_860=m -+CONFIG_NLS_CODEPAGE_861=m -+CONFIG_NLS_CODEPAGE_862=m -+CONFIG_NLS_CODEPAGE_863=m -+CONFIG_NLS_CODEPAGE_864=m -+CONFIG_NLS_CODEPAGE_865=m -+CONFIG_NLS_CODEPAGE_866=m -+CONFIG_NLS_CODEPAGE_869=m -+CONFIG_NLS_CODEPAGE_936=m -+CONFIG_NLS_CODEPAGE_950=m -+CONFIG_NLS_CODEPAGE_932=m -+CONFIG_NLS_CODEPAGE_949=m -+CONFIG_NLS_CODEPAGE_874=m -+CONFIG_NLS_ISO8859_8=m -+CONFIG_NLS_CODEPAGE_1250=m -+CONFIG_NLS_CODEPAGE_1251=m -+CONFIG_NLS_ASCII=y -+CONFIG_NLS_ISO8859_1=m -+CONFIG_NLS_ISO8859_2=m -+CONFIG_NLS_ISO8859_3=m -+CONFIG_NLS_ISO8859_4=m -+CONFIG_NLS_ISO8859_5=m -+CONFIG_NLS_ISO8859_6=m -+CONFIG_NLS_ISO8859_7=m -+CONFIG_NLS_ISO8859_9=m -+CONFIG_NLS_ISO8859_13=m -+CONFIG_NLS_ISO8859_14=m -+CONFIG_NLS_ISO8859_15=m -+CONFIG_NLS_KOI8_R=m -+CONFIG_NLS_KOI8_U=m -+CONFIG_DLM=m -+CONFIG_PRINTK_TIME=y -+CONFIG_BOOT_PRINTK_DELAY=y -+CONFIG_DEBUG_MEMORY_INIT=y -+CONFIG_DETECT_HUNG_TASK=y -+CONFIG_TIMER_STATS=y -+CONFIG_LATENCYTOP=y -+CONFIG_IRQSOFF_TRACER=y -+CONFIG_SCHED_TRACER=y -+CONFIG_STACK_TRACER=y -+CONFIG_BLK_DEV_IO_TRACE=y -+# CONFIG_KPROBE_EVENT is not set -+CONFIG_FUNCTION_PROFILER=y -+CONFIG_KGDB=y -+CONFIG_KGDB_KDB=y -+CONFIG_KDB_KEYBOARD=y -+CONFIG_CRYPTO_USER=m -+CONFIG_CRYPTO_CRYPTD=m -+CONFIG_CRYPTO_CBC=y -+CONFIG_CRYPTO_CTS=m -+CONFIG_CRYPTO_XTS=m -+CONFIG_CRYPTO_XCBC=m -+CONFIG_CRYPTO_SHA512=m -+CONFIG_CRYPTO_TGR192=m -+CONFIG_CRYPTO_WP512=m -+CONFIG_CRYPTO_CAST5=m -+CONFIG_CRYPTO_DES=y -+CONFIG_CRYPTO_USER_API_SKCIPHER=m -+# CONFIG_CRYPTO_HW is not set -+CONFIG_ARM_CRYPTO=y -+CONFIG_CRYPTO_SHA1_ARM=m -+CONFIG_CRYPTO_AES_ARM=m -+CONFIG_CRC_ITU_T=y -+CONFIG_LIBCRC32C=y - -From c9be7ac6056fe07e3ab84240f94d92206d3f4881 Mon Sep 17 00:00:00 2001 +From dc368908f8fcfb41839bb91331830dc83e941716 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 14 Jul 2014 22:02:09 +0100 -Subject: [PATCH 060/160] hid: Reduce default mouse polling interval to 60Hz +Subject: [PATCH 069/132] hid: Reduce default mouse polling interval to 60Hz Reduces overhead when using X --- @@ -124587,10 +123812,10 @@ index ae83af649a607f67239f1a64bf45dd4b5770cc7d..4a7af9d0b910f59d17421ce14138400d ret = -ENOMEM; if (usb_endpoint_dir_in(endpoint)) { -From e0958c670c72e29f0bd64823c374cb390fa66448 Mon Sep 17 00:00:00 2001 +From 0d492c154d455c8b31d7f62d45c518b78d37a974 Mon Sep 17 00:00:00 2001 From: Gordon Hollingworth Date: Tue, 12 May 2015 14:47:56 +0100 -Subject: [PATCH 061/160] rpi-ft5406: Add touchscreen driver for pi LCD display +Subject: [PATCH 070/132] rpi-ft5406: Add touchscreen driver for pi LCD display Fix driver detection failure Check that the buffer response is non-zero meaning the touchscreen was detected @@ -124603,7 +123828,7 @@ rpi-ft5406: Use firmware API create mode 100644 drivers/input/touchscreen/rpi-ft5406.c diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig -index 8ecdc38fd489c0dfe8eb383a81259983a99d7d96..1e4e7a005b58dc9eee1c4e7034d6652a30151827 100644 +index 2fb1f430a4318fcddf65a85a813aae96861da09c..f43fc4561170d1649d77e5b4918ca56ec48e95e8 100644 --- a/drivers/input/touchscreen/Kconfig +++ b/drivers/input/touchscreen/Kconfig @@ -630,6 +630,13 @@ config TOUCHSCREEN_EDT_FT5X06 @@ -124619,9 +123844,9 @@ index 8ecdc38fd489c0dfe8eb383a81259983a99d7d96..1e4e7a005b58dc9eee1c4e7034d6652a + config TOUCHSCREEN_MIGOR tristate "Renesas MIGO-R touchscreen" - depends on SH_MIGOR && I2C + depends on (SH_MIGOR || COMPILE_TEST) && I2C diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile -index f42975e719e07205081f08d4e4cd882a792518dc..92590b30828b5c5a5411c2f3510bcb28a7f69afd 100644 +index b4373d6be4021687c1f4fc4b4bc0faa054141ec0..9665772864cff27a33c0533e5147f29656e791bd 100644 --- a/drivers/input/touchscreen/Makefile +++ b/drivers/input/touchscreen/Makefile @@ -29,6 +29,7 @@ obj-$(CONFIG_TOUCHSCREEN_DA9034) += da9034-ts.o @@ -124885,10 +124110,10 @@ index 0000000000000000000000000000000000000000..b27dbee8f56773dbd2a5503dc864747d +MODULE_DESCRIPTION("Touchscreen driver for memory based FT5406"); +MODULE_LICENSE("GPL"); -From 21ff858d132f5514ec1802961c725f8c8ea5c356 Mon Sep 17 00:00:00 2001 +From 3e8caf58c5bb19c589d5312b8087eea832d87491 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 13 Oct 2014 11:47:53 +0100 -Subject: [PATCH 062/160] Improve __copy_to_user and __copy_from_user +Subject: [PATCH 071/132] Improve __copy_to_user and __copy_from_user performance Provide a __copy_from_user that uses memcpy. On BCM2708, use @@ -124945,10 +124170,10 @@ index cf4f3aad0fc1c2154c6cf3839ff21bb1c46d6499..9fe7780002ce1847b9009ff9b741b56f #define memset(p,v,n) \ diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h -index 35c9db857ebe9c7d53715ec42518a6e9fbe1dc6e..52d3401ae932b565f732294e5ef2f7a4c184f0ed 100644 +index a93c0f99acf7767c680158cf96acef87d1f0da51..cbad0e035c6b8f39463007071539797da586e620 100644 --- a/arch/arm/include/asm/uaccess.h +++ b/arch/arm/include/asm/uaccess.h -@@ -493,6 +493,9 @@ do { \ +@@ -477,6 +477,9 @@ do { \ extern unsigned long __must_check arm_copy_from_user(void *to, const void __user *from, unsigned long n); @@ -124959,7 +124184,7 @@ index 35c9db857ebe9c7d53715ec42518a6e9fbe1dc6e..52d3401ae932b565f732294e5ef2f7a4 __copy_from_user(void *to, const void __user *from, unsigned long n) { diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile -index d8a780799506b59bc2edd3f6a513021bcb45ebc0..9c7dc5bc616311a5181a11c479da7cee64208f58 100644 +index 27f4d96258a2e66193d6a3701bb4cf9a44399aad..5235717443bd221df0b190adeb7d90231a5e5693 100644 --- a/arch/arm/lib/Makefile +++ b/arch/arm/lib/Makefile @@ -6,9 +6,8 @@ @@ -126444,10 +125669,10 @@ index 6bd1089b07e0960830ed6bd6a8345202b7efd8b0..cd17dd11ebe7bbe00089e70cd2ccea74 static unsigned long noinline __clear_user_memset(void __user *addr, unsigned long n) -From 031f0b6d975ca80b44ba8b8f29d9b918007762cf Mon Sep 17 00:00:00 2001 +From 41b0f618231c4e858944cfc0924e9669732d4e9a Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 25 Jun 2015 12:16:11 +0100 -Subject: [PATCH 063/160] gpio-poweroff: Allow it to work on Raspberry Pi +Subject: [PATCH 072/132] gpio-poweroff: Allow it to work on Raspberry Pi The Raspberry Pi firmware manages the power-down and reboot process. To do this it installs a pm_power_off handler, causing @@ -126482,17 +125707,17 @@ index be3d81ff51cc3f510d85e4eed7a52960e51e7bc1..a030ae9fb1fca325061c093696e82186 "%s: pm_power_off function already registered", __func__); -From da8934b960150acfa1f626edb90b308ff51545e3 Mon Sep 17 00:00:00 2001 +From d86bf4db3160515144406a4910973e9236667d95 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 14 Jul 2015 14:32:47 +0100 -Subject: [PATCH 064/160] mfd: Add Raspberry Pi Sense HAT core driver +Subject: [PATCH 073/132] mfd: Add Raspberry Pi Sense HAT core driver --- drivers/input/joystick/Kconfig | 8 + drivers/input/joystick/Makefile | 1 + drivers/input/joystick/rpisense-js.c | 153 ++++++++++++++++ drivers/mfd/Kconfig | 8 + - drivers/mfd/Makefile | 2 + + drivers/mfd/Makefile | 1 + drivers/mfd/rpisense-core.c | 157 +++++++++++++++++ drivers/video/fbdev/Kconfig | 13 ++ drivers/video/fbdev/Makefile | 1 + @@ -126500,7 +125725,7 @@ Subject: [PATCH 064/160] mfd: Add Raspberry Pi Sense HAT core driver include/linux/mfd/rpisense/core.h | 47 +++++ include/linux/mfd/rpisense/framebuffer.h | 32 ++++ include/linux/mfd/rpisense/joystick.h | 35 ++++ - 12 files changed, 750 insertions(+) + 12 files changed, 749 insertions(+) create mode 100644 drivers/input/joystick/rpisense-js.c create mode 100644 drivers/mfd/rpisense-core.c create mode 100644 drivers/video/fbdev/rpisense-fb.c @@ -126695,7 +125920,7 @@ index 0000000000000000000000000000000000000000..6a416769065d2198344792eb02d8e38d +MODULE_AUTHOR("Serge Schneider "); +MODULE_LICENSE("GPL"); diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig -index 1bcf601de5bcea35c6844362811213bfd9b406c7..c264e883b54f4538a64db1536e9583193b322014 100644 +index 2d1fb64205924de8ab87e14608004fc169557cea..7c78a0dca1fd4048aac9e2c9317c39da2abeed08 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -10,6 +10,14 @@ config MFD_CORE @@ -126714,14 +125939,13 @@ index 1bcf601de5bcea35c6844362811213bfd9b406c7..c264e883b54f4538a64db1536e958319 tristate "AMD CS5535 and CS5536 southbridge core functions" select MFD_CORE diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile -index 42a66e19e191da93b5036cd9fd8bb9e1cb1340bd..8806f37c52ec1a378804acdf4184ef6729aa815a 100644 +index 2ba3ba35f745309de62050ab8442cea87a0edb2e..6f2b1d39e4a5c7860dcf971c47096759c578b6fc 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile -@@ -205,3 +205,5 @@ intel-soc-pmic-objs := intel_soc_pmic_core.o intel_soc_pmic_crc.o - intel-soc-pmic-$(CONFIG_INTEL_PMC_IPC) += intel_soc_pmic_bxtwc.o - obj-$(CONFIG_INTEL_SOC_PMIC) += intel-soc-pmic.o +@@ -207,3 +207,4 @@ obj-$(CONFIG_INTEL_SOC_PMIC) += intel-soc-pmic.o obj-$(CONFIG_MFD_MT6397) += mt6397-core.o -+ + + obj-$(CONFIG_MFD_ALTERA_A10SR) += altera-a10sr.o +obj-$(CONFIG_MFD_RPISENSE_CORE) += rpisense-core.o diff --git a/drivers/mfd/rpisense-core.c b/drivers/mfd/rpisense-core.c new file mode 100644 @@ -127351,10 +126575,10 @@ index 0000000000000000000000000000000000000000..56196dc2af10e464a1e3f98b028dca1c + +#endif -From 42604d2d20e4618c60a9cb6e0eddf7ee28fe2891 Mon Sep 17 00:00:00 2001 +From 0e9373ce2fc58deb517e817386b9816e4dc2771b Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 19:19:08 +0100 -Subject: [PATCH 065/160] ASoC: Add support for HifiBerry DAC +Subject: [PATCH 074/132] ASoC: Add support for HifiBerry DAC This adds a machine driver for the HifiBerry DAC. It is a sound card that can @@ -127362,20 +126586,23 @@ be stacked onto the Raspberry Pi. Signed-off-by: Florian Meier --- - sound/soc/bcm/Kconfig | 7 +++ + sound/soc/bcm/Kconfig | 9 +++- sound/soc/bcm/Makefile | 4 ++ sound/soc/bcm/hifiberry_dac.c | 123 ++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 134 insertions(+) + 3 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 sound/soc/bcm/hifiberry_dac.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index c5070aec5996aafb2d9daaf75163e16a29bc6892..ce81f14a88d08c90fb565cf3d60321a9b9a1fcee 100644 +index 03a303e52d5fe57bbdd8769d24bca59067c54c65..42e1358aa1e0f67a08912af7ea17b8756ab06b1c 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -7,3 +7,10 @@ config SND_BCM2835_SOC_I2S - Say Y or M if you want to add support for codecs attached to - the BCM2835 I2S interface. You will also need - to select the audio interfaces to support below. +@@ -15,4 +15,11 @@ config SND_SOC_CYGNUS + Say Y if you want to add support for ASoC audio on Broadcom + Cygnus chips (bcm958300, bcm958305, bcm911360) + +- If you don't know what to do here, say N. +\ No newline at end of file ++ If you don't know what to do here, say N. + +config SND_BCM2708_SOC_HIFIBERRY_DAC + tristate "Support for HifiBerry DAC" @@ -127384,12 +126611,12 @@ index c5070aec5996aafb2d9daaf75163e16a29bc6892..ce81f14a88d08c90fb565cf3d60321a9 + help + Say Y or M if you want to add support for HifiBerry DAC. diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index bc816b71e5a40958953bf7bf7e7bd08342e87738..b877d386363d935deefda3664089a4ae5b33b889 100644 +index fc739d0078842680802389500dea19334da8fb7b..be80079de3cefbd52f4b78db20ee9a5d554b04c6 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -3,3 +3,7 @@ snd-soc-bcm2835-i2s-objs := bcm2835-i2s.o +@@ -8,3 +8,7 @@ snd-soc-cygnus-objs := cygnus-pcm.o cygnus-ssp.o - obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o + obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o +# BCM2708 Machine Support +snd-soc-hifiberry-dac-objs := hifiberry_dac.o @@ -127525,10 +126752,10 @@ index 0000000000000000000000000000000000000000..29ecc08a227cdd4b3c6141935d0c5d21 +MODULE_DESCRIPTION("ASoC Driver for HifiBerry DAC"); +MODULE_LICENSE("GPL v2"); -From ee783716b27484b9b0c4903a2afaca2cf2f4eb44 Mon Sep 17 00:00:00 2001 +From 01e252694eb7b4252c959cdafbbcd237c602f864 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Mon, 25 Jan 2016 15:48:59 +0000 -Subject: [PATCH 066/160] ASoC: Add support for Rpi-DAC +Subject: [PATCH 075/132] ASoC: Add support for Rpi-DAC --- sound/soc/bcm/Kconfig | 7 +++ @@ -127542,10 +126769,10 @@ Subject: [PATCH 066/160] ASoC: Add support for Rpi-DAC create mode 100644 sound/soc/codecs/pcm1794a.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index ce81f14a88d08c90fb565cf3d60321a9b9a1fcee..900de22369a66758bbe49861238b647bd2ca037e 100644 +index 42e1358aa1e0f67a08912af7ea17b8756ab06b1c..8c1e353458a3460f2c3fe26991498ee16f19ecd1 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -14,3 +14,10 @@ config SND_BCM2708_SOC_HIFIBERRY_DAC +@@ -23,3 +23,10 @@ config SND_BCM2708_SOC_HIFIBERRY_DAC select SND_SOC_PCM5102A help Say Y or M if you want to add support for HifiBerry DAC. @@ -127557,10 +126784,10 @@ index ce81f14a88d08c90fb565cf3d60321a9b9a1fcee..900de22369a66758bbe49861238b647b + help + Say Y or M if you want to add support for RPi-DAC. diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index b877d386363d935deefda3664089a4ae5b33b889..99c96b4c41e46c17c38c8691e7a8a33b1bc7b3bb 100644 +index be80079de3cefbd52f4b78db20ee9a5d554b04c6..09501910f8152b8d516e098433339b5fc2640d0f 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -5,5 +5,7 @@ obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o +@@ -10,5 +10,7 @@ obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o # BCM2708 Machine Support snd-soc-hifiberry-dac-objs := hifiberry_dac.o @@ -127694,10 +126921,10 @@ index 0000000000000000000000000000000000000000..59dc89ecabc082c0a1ed8adacdc4f0f1 +MODULE_DESCRIPTION("ASoC Driver for RPi-DAC"); +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig -index f3fb98f0a995bb41dd473ccc4443164e404c9883..4a53fa058a6837b93d2e66b15fda7183cf355058 100644 +index 1cd6ab344d67def61db455d956ac2d7075a1f6d8..9a51aad8c267f08ce568b2eb23da0951b1dc246e 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig -@@ -93,6 +93,7 @@ config SND_SOC_ALL_CODECS +@@ -97,6 +97,7 @@ config SND_SOC_ALL_CODECS select SND_SOC_PCM1681 if I2C select SND_SOC_PCM179X_I2C if I2C select SND_SOC_PCM179X_SPI if SPI_MASTER @@ -127705,7 +126932,7 @@ index f3fb98f0a995bb41dd473ccc4443164e404c9883..4a53fa058a6837b93d2e66b15fda7183 select SND_SOC_PCM3008 select SND_SOC_PCM3168A_I2C if I2C select SND_SOC_PCM3168A_SPI if SPI_MASTER -@@ -648,6 +649,10 @@ config SND_SOC_RT5616 +@@ -681,6 +682,10 @@ config SND_SOC_RT5616 tristate "Realtek RT5616 CODEC" depends on I2C @@ -127717,10 +126944,10 @@ index f3fb98f0a995bb41dd473ccc4443164e404c9883..4a53fa058a6837b93d2e66b15fda7183 tristate "Realtek ALC5631/RT5631 CODEC" depends on I2C diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile -index 0f548fd34ca3fd9e8a1b080cd2d38a480c3c5212..96b312249d197b2083b157d1c07eb106bc34ba7f 100644 +index 58036af2c7d9837b347ea2b6cdccaad72a711a53..d781f6c90383b3865ae2cc6516e7581bde004d9b 100644 --- a/sound/soc/codecs/Makefile +++ b/sound/soc/codecs/Makefile -@@ -87,6 +87,7 @@ snd-soc-pcm1681-objs := pcm1681.o +@@ -92,6 +92,7 @@ snd-soc-pcm1681-objs := pcm1681.o snd-soc-pcm179x-codec-objs := pcm179x.o snd-soc-pcm179x-i2c-objs := pcm179x-i2c.o snd-soc-pcm179x-spi-objs := pcm179x-spi.o @@ -127728,7 +126955,7 @@ index 0f548fd34ca3fd9e8a1b080cd2d38a480c3c5212..96b312249d197b2083b157d1c07eb106 snd-soc-pcm3008-objs := pcm3008.o snd-soc-pcm3168a-objs := pcm3168a.o snd-soc-pcm3168a-i2c-objs := pcm3168a-i2c.o -@@ -309,6 +310,7 @@ obj-$(CONFIG_SND_SOC_PCM5102A) += snd-soc-pcm5102a.o +@@ -321,6 +322,7 @@ obj-$(CONFIG_SND_SOC_PCM5102A) += snd-soc-pcm5102a.o obj-$(CONFIG_SND_SOC_PCM512x) += snd-soc-pcm512x.o obj-$(CONFIG_SND_SOC_PCM512x_I2C) += snd-soc-pcm512x-i2c.o obj-$(CONFIG_SND_SOC_PCM512x_SPI) += snd-soc-pcm512x-spi.o @@ -127812,10 +127039,10 @@ index 0000000000000000000000000000000000000000..afe1b419582aa40c4b2729d242bb13cd +MODULE_AUTHOR("Florian Meier "); +MODULE_LICENSE("GPL v2"); -From 8a2c53c5e980ba38e40796f4e22e40d50d31f641 Mon Sep 17 00:00:00 2001 +From 3f384f61e5c62914e50dfc10714d3004a4a6c8fd Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Wed, 15 Jan 2014 21:41:23 +0100 -Subject: [PATCH 067/160] ASoC: wm8804: Implement MCLK configuration options, +Subject: [PATCH 076/132] ASoC: wm8804: Implement MCLK configuration options, add 32bit support WM8804 can run with PLL frequencies of 256xfs and 128xfs for most sample rates. At 192kHz only 128xfs is supported. The existing driver selects 128xfs automatically for some lower samples rates. By using an @@ -127864,10 +127091,10 @@ index 8d914702cae4a3fe2c0ca0599cd1ec79f7322c83..c846716b4ed1027ade5512e8be90801d .dapm_widgets = wm8804_dapm_widgets, .num_dapm_widgets = ARRAY_SIZE(wm8804_dapm_widgets), -From 27e13ac032f7dff2ef29b05d6dd5ff1ee5154d0f Mon Sep 17 00:00:00 2001 +From 1f118ca6d879769d9b244f6b993577bf1d5eb224 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Wed, 15 Jan 2014 21:42:08 +0100 -Subject: [PATCH 068/160] ASoC: BCM:Add support for HiFiBerry Digi. Driver is +Subject: [PATCH 077/132] ASoC: BCM:Add support for HiFiBerry Digi. Driver is based on the patched WM8804 driver. Signed-off-by: Daniel Matuschek @@ -127893,10 +127120,10 @@ adds the sample rate bits in the SPDIF status block. create mode 100644 sound/soc/bcm/hifiberry_digi.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 900de22369a66758bbe49861238b647bd2ca037e..a34aff27bb3010f58773edb942adccc193ea0d26 100644 +index 8c1e353458a3460f2c3fe26991498ee16f19ecd1..ac1fbf74b808789641aa53b0418632bfee858e79 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -15,6 +15,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DAC +@@ -24,6 +24,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DAC help Say Y or M if you want to add support for HifiBerry DAC. @@ -127911,10 +127138,10 @@ index 900de22369a66758bbe49861238b647bd2ca037e..a34aff27bb3010f58773edb942adccc1 tristate "Support for RPi-DAC" depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 99c96b4c41e46c17c38c8691e7a8a33b1bc7b3bb..4d53c58dc6ba41116d1fa210b6ba08ee75526dd2 100644 +index 09501910f8152b8d516e098433339b5fc2640d0f..862f00fb43bfb0b8dc75d577df47ea4e8336d00a 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -5,7 +5,9 @@ obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o +@@ -10,7 +10,9 @@ obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o # BCM2708 Machine Support snd-soc-hifiberry-dac-objs := hifiberry_dac.o @@ -128155,10 +127382,10 @@ index 0000000000000000000000000000000000000000..9840e15d3e2be6396bc3ce6e74749408 +MODULE_DESCRIPTION("ASoC Driver for HifiBerry Digi"); +MODULE_LICENSE("GPL v2"); -From ba6309554cc58b901538be9b4bbe8c37b089abe6 Mon Sep 17 00:00:00 2001 +From fdceac66c456c3eb1981a87ff951f2f041ea5d7e Mon Sep 17 00:00:00 2001 From: Gordon Garrity Date: Sat, 8 Mar 2014 16:56:57 +0000 -Subject: [PATCH 069/160] Add IQaudIO Sound Card support for Raspberry Pi +Subject: [PATCH 078/132] Add IQaudIO Sound Card support for Raspberry Pi Set a limit of 0dB on Digital Volume Control @@ -128219,10 +127446,10 @@ Signed-off-by: DigitalDreamtime create mode 100644 sound/soc/bcm/iqaudio-dac.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index a34aff27bb3010f58773edb942adccc193ea0d26..38dcdd975b406b9308e151f5d3a80dbca5163be5 100644 +index ac1fbf74b808789641aa53b0418632bfee858e79..fa4a8fd28bb977edc66dd4e9bd5ebc8ce5e47916 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -28,3 +28,10 @@ config SND_BCM2708_SOC_RPI_DAC +@@ -37,3 +37,10 @@ config SND_BCM2708_SOC_RPI_DAC select SND_SOC_PCM1794A help Say Y or M if you want to add support for RPi-DAC. @@ -128234,10 +127461,10 @@ index a34aff27bb3010f58773edb942adccc193ea0d26..38dcdd975b406b9308e151f5d3a80dbc + help + Say Y or M if you want to add support for IQaudIO-DAC. diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 4d53c58dc6ba41116d1fa210b6ba08ee75526dd2..08e4dc55757855fedec6845b82fc5f9f91f1584b 100644 +index 862f00fb43bfb0b8dc75d577df47ea4e8336d00a..fcac518ca9b46ab2074fc859b8d2f1ff850ebc19 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -7,7 +7,9 @@ obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o +@@ -12,7 +12,9 @@ obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o snd-soc-hifiberry-dac-objs := hifiberry_dac.o snd-soc-hifiberry-digi-objs := hifiberry_digi.o snd-soc-rpi-dac-objs := rpi-dac.o @@ -128488,10 +127715,10 @@ index 0000000000000000000000000000000000000000..4e8e6dec14bcf4a1ff286c43742d4097 +MODULE_DESCRIPTION("ASoC Driver for IQAudio DAC"); +MODULE_LICENSE("GPL v2"); -From ffcbd40bc8a2ed4d2ce7381e2007697ca993b17c Mon Sep 17 00:00:00 2001 +From 177df4583e9dacd9bba08970a0f7156bba7fb1b1 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 25 Jul 2016 17:06:50 +0100 -Subject: [PATCH 070/160] iqaudio-dac: Compile fix - untested +Subject: [PATCH 079/132] iqaudio-dac: Compile fix - untested --- sound/soc/bcm/iqaudio-dac.c | 6 +++++- @@ -128515,10 +127742,10 @@ index 4e8e6dec14bcf4a1ff286c43742d4097249d6777..aa15bc4b49ca95edec905fddd8fd0a6d if (dapm->dev != codec_dai->dev) return 0; -From ee0f5fb9901c80371cdf31b9ef7b656ef69a7a70 Mon Sep 17 00:00:00 2001 +From 5cba13f62442fe19faa0f3f92fbbe106dfb5b663 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Mon, 4 Aug 2014 10:06:56 +0200 -Subject: [PATCH 071/160] Added support for HiFiBerry DAC+ +Subject: [PATCH 080/132] Added support for HiFiBerry DAC+ The driver is based on the HiFiBerry DAC driver. However HiFiBerry DAC+ uses a different codec chip (PCM5122), therefore a new driver is necessary. @@ -128555,11 +127782,11 @@ Signed-off-by: DigitalDreamtime create mode 100644 sound/soc/bcm/hifiberry_dacplus.c diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile -index dcc5e698ff6dd4d61255dd274dafadb1af239161..1f7a766d4edb9c6115486b8ec4d9017b5f87b074 100644 +index 3b6f9cf3464aaddca0a54886aa575a108c21b7ca..698a88576e9d760feaf824683edf4c9adcbe7c49 100644 --- a/drivers/clk/Makefile +++ b/drivers/clk/Makefile -@@ -25,6 +25,7 @@ obj-$(CONFIG_COMMON_CLK_CS2000_CP) += clk-cs2000-cp.o - obj-$(CONFIG_ARCH_CLPS711X) += clk-clps711x.o +@@ -26,6 +26,7 @@ obj-$(CONFIG_ARCH_CLPS711X) += clk-clps711x.o + obj-$(CONFIG_COMMON_CLK_CS2000_CP) += clk-cs2000-cp.o obj-$(CONFIG_ARCH_EFM32) += clk-efm32gg.o obj-$(CONFIG_ARCH_HIGHBANK) += clk-highbank.o +obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += clk-hifiberry-dacpro.o @@ -128733,10 +127960,10 @@ index 0000000000000000000000000000000000000000..99cee2b1706c43170b4fc35c0023349b +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:clk-hifiberry-dacpro"); diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 38dcdd975b406b9308e151f5d3a80dbca5163be5..8c338b5803042ad3834ee46a8dc93f53c53953f6 100644 +index fa4a8fd28bb977edc66dd4e9bd5ebc8ce5e47916..3477304b789c87ebe75fde3876cb4a3a572b1bb8 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -15,6 +15,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DAC +@@ -24,6 +24,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DAC help Say Y or M if you want to add support for HifiBerry DAC. @@ -128751,10 +127978,10 @@ index 38dcdd975b406b9308e151f5d3a80dbca5163be5..8c338b5803042ad3834ee46a8dc93f53 tristate "Support for HifiBerry Digi" depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 08e4dc55757855fedec6845b82fc5f9f91f1584b..a29538e56b62ef6e7098b81b81e1389a22beeafa 100644 +index fcac518ca9b46ab2074fc859b8d2f1ff850ebc19..203afc03167acbcad15e836209956bc5ab151157 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -5,11 +5,13 @@ obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o +@@ -10,11 +10,13 @@ obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o # BCM2708 Machine Support snd-soc-hifiberry-dac-objs := hifiberry_dac.o @@ -129147,10 +128374,10 @@ index 047c48953a20cd4075000ac294a17fe59baedcde..090fe0ee08e8765f9edbb62777413bb6 dev_err(dev, "No LRCLK?\n"); return -EINVAL; -From 71404fa18b3b3d09e4909ee90e77054e0ff17c2c Mon Sep 17 00:00:00 2001 +From 1170ce69019f41099281c740ca16debdc345f351 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Mon, 4 Aug 2014 11:09:58 +0200 -Subject: [PATCH 072/160] Added driver for HiFiBerry Amp amplifier add-on board +Subject: [PATCH 081/132] Added driver for HiFiBerry Amp amplifier add-on board The driver contains a low-level hardware driver for the TAS5713 and the drivers for the Raspberry Pi I2S subsystem. @@ -129179,10 +128406,10 @@ Some code to load the driver based on device-tree-overlays was missing. This is create mode 100644 sound/soc/codecs/tas5713.h diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 8c338b5803042ad3834ee46a8dc93f53c53953f6..7677c898773e6dd87c3ef385e380aa42c85e66d8 100644 +index 3477304b789c87ebe75fde3876cb4a3a572b1bb8..f764110b86b790a2b639cc66b965e187d9f52ce3 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -29,6 +29,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DIGI +@@ -38,6 +38,13 @@ config SND_BCM2708_SOC_HIFIBERRY_DIGI help Say Y or M if you want to add support for HifiBerry Digi S/PDIF output board. @@ -129197,10 +128424,10 @@ index 8c338b5803042ad3834ee46a8dc93f53c53953f6..7677c898773e6dd87c3ef385e380aa42 tristate "Support for RPi-DAC" depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index a29538e56b62ef6e7098b81b81e1389a22beeafa..30db4951129c2d853c5cf631f4cd1263926692d0 100644 +index 203afc03167acbcad15e836209956bc5ab151157..a4838e2cf8e93c9285836f95f4151daea33e1bd1 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -7,11 +7,13 @@ obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o +@@ -12,11 +12,13 @@ obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o snd-soc-hifiberry-dac-objs := hifiberry_dac.o snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o snd-soc-hifiberry-digi-objs := hifiberry_digi.o @@ -129349,10 +128576,10 @@ index 0000000000000000000000000000000000000000..0bb12e4761ce60d3364c66b2bd0f8f7d +MODULE_DESCRIPTION("ASoC driver for HiFiBerry-AMP"); +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig -index 4a53fa058a6837b93d2e66b15fda7183cf355058..010fd5f0338988fd58095cf7d2bfbad82aa62b2c 100644 +index 9a51aad8c267f08ce568b2eb23da0951b1dc246e..37674869e4ef2dc33b59ace8ef36e404d5a809a2 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig -@@ -132,6 +132,7 @@ config SND_SOC_ALL_CODECS +@@ -136,6 +136,7 @@ config SND_SOC_ALL_CODECS select SND_SOC_TFA9879 if I2C select SND_SOC_TLV320AIC23_I2C if I2C select SND_SOC_TLV320AIC23_SPI if SPI_MASTER @@ -129360,7 +128587,7 @@ index 4a53fa058a6837b93d2e66b15fda7183cf355058..010fd5f0338988fd58095cf7d2bfbad8 select SND_SOC_TLV320AIC26 if SPI_MASTER select SND_SOC_TLV320AIC31XX if I2C select SND_SOC_TLV320AIC32X4_I2C if I2C -@@ -774,6 +775,9 @@ config SND_SOC_TFA9879 +@@ -807,6 +808,9 @@ config SND_SOC_TFA9879 tristate "NXP Semiconductors TFA9879 amplifier" depends on I2C @@ -129371,10 +128598,10 @@ index 4a53fa058a6837b93d2e66b15fda7183cf355058..010fd5f0338988fd58095cf7d2bfbad8 tristate diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile -index 96b312249d197b2083b157d1c07eb106bc34ba7f..2f39e6b9d488ea5341ba40282eef12dac899e6af 100644 +index d781f6c90383b3865ae2cc6516e7581bde004d9b..c21145c8a55a9a25e6a37d6e06c1ab5d37ddf603 100644 --- a/sound/soc/codecs/Makefile +++ b/sound/soc/codecs/Makefile -@@ -135,6 +135,7 @@ snd-soc-tas5086-objs := tas5086.o +@@ -141,6 +141,7 @@ snd-soc-tas5086-objs := tas5086.o snd-soc-tas571x-objs := tas571x.o snd-soc-tas5720-objs := tas5720.o snd-soc-tfa9879-objs := tfa9879.o @@ -129382,7 +128609,7 @@ index 96b312249d197b2083b157d1c07eb106bc34ba7f..2f39e6b9d488ea5341ba40282eef12da snd-soc-tlv320aic23-objs := tlv320aic23.o snd-soc-tlv320aic23-i2c-objs := tlv320aic23-i2c.o snd-soc-tlv320aic23-spi-objs := tlv320aic23-spi.o -@@ -347,6 +348,7 @@ obj-$(CONFIG_SND_SOC_TAS5086) += snd-soc-tas5086.o +@@ -360,6 +361,7 @@ obj-$(CONFIG_SND_SOC_TAS5086) += snd-soc-tas5086.o obj-$(CONFIG_SND_SOC_TAS571X) += snd-soc-tas571x.o obj-$(CONFIG_SND_SOC_TAS5720) += snd-soc-tas5720.o obj-$(CONFIG_SND_SOC_TFA9879) += snd-soc-tfa9879.o @@ -129982,102 +129209,16 @@ index 0000000000000000000000000000000000000000..8f019e04898754d2f87e9630137be9e8 + +#endif /* _TAS5713_H */ -From 36a6d992a8d76bee9a3140bbb2324736d21d9224 Mon Sep 17 00:00:00 2001 +From 9520aaed4fbc1e0875305b0adfc6ce98edecf72a Mon Sep 17 00:00:00 2001 From: "Daniel Matuschek (HiFiBerry)" Date: Tue, 26 Jul 2016 19:16:25 +0200 -Subject: [PATCH 073/160] Added HiFiBerry Digi+ Pro driver +Subject: [PATCH 082/132] Added HiFiBerry Digi+ Pro driver Signed-off-by: Daniel Matuschek --- - arch/arm/boot/dts/overlays/Makefile | 1 + - arch/arm/boot/dts/overlays/README | 8 +++- - .../dts/overlays/hifiberry-digi-pro-overlay.dts | 41 +++++++++++++++++ - sound/soc/bcm/hifiberry_digi.c | 51 ++++++++++++++++++++++ - 4 files changed, 100 insertions(+), 1 deletion(-) - create mode 100644 arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts + sound/soc/bcm/hifiberry_digi.c | 51 ++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 51 insertions(+) -diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile -index e6e2bfb85fbc257ea851c9f2afa5f78a87cdc41d..68832129f46b9c8320d0d2634c780bdb330314c9 100644 ---- a/arch/arm/boot/dts/overlays/Makefile -+++ b/arch/arm/boot/dts/overlays/Makefile -@@ -31,6 +31,7 @@ dtbo-$(RPI_DT_OVERLAYS) += hifiberry-amp.dtbo - dtbo-$(RPI_DT_OVERLAYS) += hifiberry-dac.dtbo - dtbo-$(RPI_DT_OVERLAYS) += hifiberry-dacplus.dtbo - dtbo-$(RPI_DT_OVERLAYS) += hifiberry-digi.dtbo -+dtbo-$(RPI_DT_OVERLAYS) += hifiberry-digi-pro.dtbo - dtbo-$(RPI_DT_OVERLAYS) += hy28a.dtbo - dtbo-$(RPI_DT_OVERLAYS) += hy28b.dtbo - dtbo-$(RPI_DT_OVERLAYS) += i2c-gpio.dtbo -diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index 3cc6560de2000480294688ec80bc8b26caf255d8..b32bca8ada3b10aa40a5c718a1823e1fa4f7f5b2 100644 ---- a/arch/arm/boot/dts/overlays/README -+++ b/arch/arm/boot/dts/overlays/README -@@ -377,11 +377,17 @@ Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec - - - Name: hifiberry-digi --Info: Configures the HifiBerry Digi audio card -+Info: Configures the HifiBerry Digi and Digi+ audio card - Load: dtoverlay=hifiberry-digi - Params: - - -+Name: hifiberry-digi-pro -+Info: Configures the HifiBerry Digi+ Pro audio card -+Load: dtoverlay=hifiberry-digi-pro -+Params: -+ -+ - Name: hy28a - Info: HY28A - 2.8" TFT LCD Display Module by HAOYU Electronics - Default values match Texy's display shield -diff --git a/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts -new file mode 100644 -index 0000000000000000000000000000000000000000..2a26d9cfffb0f3d7958eb3756ca7c4ba28400e1c ---- /dev/null -+++ b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts -@@ -0,0 +1,41 @@ -+// Definitions for HiFiBerry Digi Pro -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "brcm,bcm2708"; -+ -+ fragment@0 { -+ target = <&i2s>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "okay"; -+ -+ wm8804@3b { -+ #sound-dai-cells = <0>; -+ compatible = "wlf,wm8804"; -+ reg = <0x3b>; -+ status = "okay"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&sound>; -+ __overlay__ { -+ compatible = "hifiberry,hifiberry-digi"; -+ i2s-controller = <&i2s>; -+ status = "okay"; -+ clock44-gpio = <&gpio 5 0>; -+ clock48-gpio = <&gpio 6 0>; -+ }; -+ }; -+}; diff --git a/sound/soc/bcm/hifiberry_digi.c b/sound/soc/bcm/hifiberry_digi.c index 9840e15d3e2be6396bc3ce6e74749408cc28c333..52ab9dea2e724c4238986ca53c59c8492f64e345 100644 --- a/sound/soc/bcm/hifiberry_digi.c @@ -130179,10 +129320,10 @@ index 9840e15d3e2be6396bc3ce6e74749408cc28c333..52ab9dea2e724c4238986ca53c59c849 ret = snd_soc_register_card(&snd_rpi_hifiberry_digi); -From 0e46362eb887897ca852e0028b8246f4f3aa3ffd Mon Sep 17 00:00:00 2001 +From 85d6e88a7e8d605e6ecc9508a31e814a847aa1c5 Mon Sep 17 00:00:00 2001 From: Ryan Coe Date: Sat, 31 Jan 2015 18:25:49 -0700 -Subject: [PATCH 074/160] Update ds1307 driver for device-tree support +Subject: [PATCH 083/132] Update ds1307 driver for device-tree support Signed-off-by: Ryan Coe --- @@ -130190,10 +129331,10 @@ Signed-off-by: Ryan Coe 1 file changed, 8 insertions(+) diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c -index f25f7dce6e1fb29c51c0e0be734a6337244b8fc1..1d1751c524ddd326ef593e0ff1b20483383d040c 100644 +index 8e1c5cb6ece6f60619e5cafcea4271e056d96778..f9536679b270a39a4d9639fdbd3420fecbf1d169 100644 --- a/drivers/rtc/rtc-ds1307.c +++ b/drivers/rtc/rtc-ds1307.c -@@ -1636,6 +1636,14 @@ static int ds1307_remove(struct i2c_client *client) +@@ -1631,6 +1631,14 @@ static int ds1307_remove(struct i2c_client *client) return 0; } @@ -130209,10 +129350,10 @@ index f25f7dce6e1fb29c51c0e0be734a6337244b8fc1..1d1751c524ddd326ef593e0ff1b20483 .driver = { .name = "rtc-ds1307", -From 173867b34518ca0066d757c9bcef7f650c3f4ec7 Mon Sep 17 00:00:00 2001 +From 16d6dfd2cf096ce0f03ef1b4071c8b2dfae7f20b Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Wed, 25 Mar 2015 09:26:17 +0100 -Subject: [PATCH 075/160] Add driver for rpi-proto +Subject: [PATCH 084/132] Add driver for rpi-proto Forward port of 3.10.x driver from https://github.com/koalo We are using a custom board and would like to use rpi 3.18.x @@ -130232,10 +129373,10 @@ Signed-off-by: Waldemar Brodkorb create mode 100644 sound/soc/bcm/rpi-proto.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 7677c898773e6dd87c3ef385e380aa42c85e66d8..8669a9ac9734c465c7dc3f40c864f71b68a6de75 100644 +index f764110b86b790a2b639cc66b965e187d9f52ce3..5b08c4dfb71597d6f6381146c4ce79e57f551b9c 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -43,6 +43,13 @@ config SND_BCM2708_SOC_RPI_DAC +@@ -52,6 +52,13 @@ config SND_BCM2708_SOC_RPI_DAC help Say Y or M if you want to add support for RPi-DAC. @@ -130250,10 +129391,10 @@ index 7677c898773e6dd87c3ef385e380aa42c85e66d8..8669a9ac9734c465c7dc3f40c864f71b tristate "Support for IQaudIO-DAC" depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 30db4951129c2d853c5cf631f4cd1263926692d0..4f5ab1fa4414e64a164eaa4575ffaa06d1cbf332 100644 +index a4838e2cf8e93c9285836f95f4151daea33e1bd1..680d1b6d5e16819094fbfaa6c42b458267b54819 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -9,6 +9,7 @@ snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o +@@ -14,6 +14,7 @@ snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o snd-soc-hifiberry-digi-objs := hifiberry_digi.o snd-soc-hifiberry-amp-objs := hifiberry_amp.o snd-soc-rpi-dac-objs := rpi-dac.o @@ -130261,7 +129402,7 @@ index 30db4951129c2d853c5cf631f4cd1263926692d0..4f5ab1fa4414e64a164eaa4575ffaa06 snd-soc-iqaudio-dac-objs := iqaudio-dac.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o -@@ -16,4 +17,5 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o +@@ -21,4 +22,5 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) += snd-soc-hifiberry-digi.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o @@ -130428,10 +129569,10 @@ index 0000000000000000000000000000000000000000..9db678e885efd63d84d60a098a84ed67 +MODULE_DESCRIPTION("ASoC Driver for Raspberry Pi connected to PROTO board (WM8731)"); +MODULE_LICENSE("GPL"); -From e94da4ada1e1e6e792a0fd9f778e88e89bff1457 Mon Sep 17 00:00:00 2001 +From 0370e991cf8e3bc2656bad03ebee88efca6f2483 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Mon, 24 Aug 2015 16:03:47 +0100 -Subject: [PATCH 076/160] RaspiDAC3 support +Subject: [PATCH 085/132] RaspiDAC3 support Signed-off-by: Jan Grulich @@ -130444,15 +129585,15 @@ Signed-off-by: Matthias Reichl --- sound/soc/bcm/Kconfig | 8 ++ sound/soc/bcm/Makefile | 2 + - sound/soc/bcm/raspidac3.c | 192 ++++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 202 insertions(+) + sound/soc/bcm/raspidac3.c | 186 ++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 196 insertions(+) create mode 100644 sound/soc/bcm/raspidac3.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 8669a9ac9734c465c7dc3f40c864f71b68a6de75..1a3f8264403d64690fef60d41df38d21d3eb6030 100644 +index 5b08c4dfb71597d6f6381146c4ce79e57f551b9c..e07f8b74497fe3b271290cc4e6a1c49a2e84c29c 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -56,3 +56,11 @@ config SND_BCM2708_SOC_IQAUDIO_DAC +@@ -65,3 +65,11 @@ config SND_BCM2708_SOC_IQAUDIO_DAC select SND_SOC_PCM512x_I2C help Say Y or M if you want to add support for IQaudIO-DAC. @@ -130465,10 +129606,10 @@ index 8669a9ac9734c465c7dc3f40c864f71b68a6de75..1a3f8264403d64690fef60d41df38d21 + help + Say Y or M if you want to add support for RaspiDAC Rev.3x. diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 4f5ab1fa4414e64a164eaa4575ffaa06d1cbf332..b21e11ee36e17a29bfae9c4eda78f73ca9c23d48 100644 +index 680d1b6d5e16819094fbfaa6c42b458267b54819..18253b39addf831780fefe85578e72007c0d51d9 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -11,6 +11,7 @@ snd-soc-hifiberry-amp-objs := hifiberry_amp.o +@@ -16,6 +16,7 @@ snd-soc-hifiberry-amp-objs := hifiberry_amp.o snd-soc-rpi-dac-objs := rpi-dac.o snd-soc-rpi-proto-objs := rpi-proto.o snd-soc-iqaudio-dac-objs := iqaudio-dac.o @@ -130476,17 +129617,17 @@ index 4f5ab1fa4414e64a164eaa4575ffaa06d1cbf332..b21e11ee36e17a29bfae9c4eda78f73c obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o -@@ -19,3 +20,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o +@@ -24,3 +25,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o obj-$(CONFIG_SND_BCM2708_SOC_RPI_PROTO) += snd-soc-rpi-proto.o obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o +obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o diff --git a/sound/soc/bcm/raspidac3.c b/sound/soc/bcm/raspidac3.c new file mode 100644 -index 0000000000000000000000000000000000000000..e7422e2dd3d70622a48ab3b2e192986931235764 +index 0000000000000000000000000000000000000000..dd9eeea2af0382307f437e6db09d15468c1a470a --- /dev/null +++ b/sound/soc/bcm/raspidac3.c -@@ -0,0 +1,192 @@ +@@ -0,0 +1,186 @@ +/* + * ASoC Driver for RaspiDAC v3 + * @@ -130534,10 +129675,6 @@ index 0000000000000000000000000000000000000000..e7422e2dd3d70622a48ab3b2e1929869 + else { + struct snd_kcontrol *kctl; + -+ ret = tpa6130a2_add_controls(codec); -+ if (ret < 0) -+ dev_warn(card->dev, "Failed to add TPA6130A2 controls: %d\n", -+ ret); + ret = snd_soc_limit_volume(card, + "TPA6130A2 Headphone Playback Volume", + 54); @@ -130579,7 +129716,6 @@ index 0000000000000000000000000000000000000000..e7422e2dd3d70622a48ab3b2e1929869 + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_codec *codec = rtd->codec; + snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08,0x08); -+ tpa6130a2_stereo_enable(codec, 1); + return 0; +} + @@ -130588,7 +129724,6 @@ index 0000000000000000000000000000000000000000..e7422e2dd3d70622a48ab3b2e1929869 + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_codec *codec = rtd->codec; + snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08,0x00); -+ tpa6130a2_stereo_enable(codec, 0); +} + +/* machine stream operations */ @@ -130680,18 +129815,18 @@ index 0000000000000000000000000000000000000000..e7422e2dd3d70622a48ab3b2e1929869 +MODULE_DESCRIPTION("ASoC Driver for RaspiDAC Rev.3x"); +MODULE_LICENSE("GPL v2"); -From b9705ca1098e28ebbd6220aebd196e41267d53bb Mon Sep 17 00:00:00 2001 -From: Jan Grulich -Date: Mon, 24 Aug 2015 16:02:34 +0100 -Subject: [PATCH 077/160] tpa6130a2: Add headphone switch control +From 17c6235ccbac2cab84022d62da2ac617dc63f974 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Tue, 9 Aug 2016 14:49:23 +0100 +Subject: [PATCH 086/132] tpa6130a2: Add headphone switch control Signed-off-by: Jan Grulich --- - sound/soc/codecs/tpa6130a2.c | 29 ++++++++++++++++++++++++++--- - 1 file changed, 26 insertions(+), 3 deletions(-) + sound/soc/codecs/tpa6130a2.c | 60 ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 60 insertions(+) diff --git a/sound/soc/codecs/tpa6130a2.c b/sound/soc/codecs/tpa6130a2.c -index 11d85c5c787addb8d8add7fc2b52ab91cc49b63d..3caaa17e28e91e995d6781ca7f88b747da542e9b 100644 +index f1ea052a822e1f584eb55cbc876b8e079e813ccd..3bf0163956c5665683d7950798df527fa1b57b59 100644 --- a/sound/soc/codecs/tpa6130a2.c +++ b/sound/soc/codecs/tpa6130a2.c @@ -4,6 +4,7 @@ @@ -130702,39 +129837,21 @@ index 11d85c5c787addb8d8add7fc2b52ab91cc49b63d..3caaa17e28e91e995d6781ca7f88b747 * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License -@@ -52,6 +53,8 @@ struct tpa6130a2_data { +@@ -50,6 +51,8 @@ struct tpa6130a2_data { enum tpa_model id; }; +static void tpa6130a2_channel_enable(u8 channel, int enable); + - static int tpa6130a2_i2c_read(int reg) + static int tpa6130a2_power(struct tpa6130a2_data *data, bool enable) { - struct tpa6130a2_data *data; -@@ -189,7 +192,7 @@ exit: - } - - static int tpa6130a2_get_volsw(struct snd_kcontrol *kcontrol, -- struct snd_ctl_elem_value *ucontrol) -+ struct snd_ctl_elem_value *ucontrol) - { - struct soc_mixer_control *mc = - (struct soc_mixer_control *)kcontrol->private_value; -@@ -218,7 +221,7 @@ static int tpa6130a2_get_volsw(struct snd_kcontrol *kcontrol, - } - - static int tpa6130a2_put_volsw(struct snd_kcontrol *kcontrol, -- struct snd_ctl_elem_value *ucontrol) -+ struct snd_ctl_elem_value *ucontrol) - { - struct soc_mixer_control *mc = - (struct soc_mixer_control *)kcontrol->private_value; -@@ -255,8 +258,22 @@ static int tpa6130a2_put_volsw(struct snd_kcontrol *kcontrol, - return 1; + int ret; +@@ -109,6 +112,20 @@ static int tpa6130a2_power_event(struct snd_soc_dapm_widget *w, + return 0; } +static int tpa6130a2_put_hp_sw(struct snd_kcontrol *kcontrol, -+ struct snd_ctl_elem_value *ucontrol) ++ struct snd_ctl_elem_value *ucontrol) +{ + int enable = ucontrol->value.integer.value[0]; + unsigned int state; @@ -130748,14 +129865,11 @@ index 11d85c5c787addb8d8add7fc2b52ab91cc49b63d..3caaa17e28e91e995d6781ca7f88b747 +} + /* -- * TPA6130 volume. From -59.5 to 4 dB with increasing step size when going -+ * TPA6130 volume. From -59.5 to +4.0 dB with increasing step size when going + * TPA6130 volume. From -59.5 to 4 dB with increasing step size when going * down in gain. - */ - static const DECLARE_TLV_DB_RANGE(tpa6130_tlv, -@@ -277,6 +294,9 @@ static const struct snd_kcontrol_new tpa6130a2_controls[] = { +@@ -130,6 +147,9 @@ static const struct snd_kcontrol_new tpa6130a2_controls[] = { + SOC_SINGLE_TLV("Headphone Playback Volume", TPA6130A2_REG_VOL_MUTE, 0, 0x3f, 0, - tpa6130a2_get_volsw, tpa6130a2_put_volsw, tpa6130_tlv), + SOC_SINGLE_EXT("TPA6130A2 Headphone Playback Switch", + TPA6130A2_REG_VOL_MUTE, 7, 1, 1, @@ -130763,21 +129877,172 @@ index 11d85c5c787addb8d8add7fc2b52ab91cc49b63d..3caaa17e28e91e995d6781ca7f88b747 }; static const DECLARE_TLV_DB_RANGE(tpa6140_tlv, -@@ -290,6 +310,9 @@ static const struct snd_kcontrol_new tpa6140a2_controls[] = { +@@ -142,8 +162,48 @@ static const struct snd_kcontrol_new tpa6140a2_controls[] = { + SOC_SINGLE_TLV("Headphone Playback Volume", TPA6130A2_REG_VOL_MUTE, 1, 0x1f, 0, - tpa6130a2_get_volsw, tpa6130a2_put_volsw, tpa6140_tlv), + SOC_SINGLE_EXT("TPA6140A2 Headphone Playback Switch", + TPA6130A2_REG_VOL_MUTE, 7, 1, 1, + tpa6130a2_get_volsw, tpa6130a2_put_hp_sw), }; - /* ++/* ++ * Enable or disable channel (left or right) ++ * The bit number for mute and amplifier are the same per channel: ++ * bit 6: Right channel ++ * bit 7: Left channel ++ * in both registers. ++ */ ++static void tpa6130a2_channel_enable(u8 channel, int enable) ++{ ++ u8 val; ++ ++ if (enable) { ++ /* Enable channel */ ++ /* Enable amplifier */ ++ val = tpa6130a2_read(TPA6130A2_REG_CONTROL); ++ val |= channel; ++ val &= ~TPA6130A2_SWS; ++ tpa6130a2_i2c_write(TPA6130A2_REG_CONTROL, val); ++ ++ /* Unmute channel */ ++ val = tpa6130a2_read(TPA6130A2_REG_VOL_MUTE); ++ val &= ~channel; ++ tpa6130a2_i2c_write(TPA6130A2_REG_VOL_MUTE, val); ++ } else { ++ /* Disable channel */ ++ /* Mute channel */ ++ val = tpa6130a2_read(TPA6130A2_REG_VOL_MUTE); ++ val |= channel; ++ tpa6130a2_i2c_write(TPA6130A2_REG_VOL_MUTE, val); ++ ++ /* Disable amplifier */ ++ val = tpa6130a2_read(TPA6130A2_REG_CONTROL); ++ val &= ~channel; ++ tpa6130a2_i2c_write(TPA6130A2_REG_CONTROL, val); ++ } ++} ++ + static int tpa6130a2_component_probe(struct snd_soc_component *component) + { + struct tpa6130a2_data *data = snd_soc_component_get_drvdata(component); -From d89a32bef1e441fa9e1a2eb9dfa75b85369be999 Mon Sep 17 00:00:00 2001 +From 4c8998e9cbfacc80e915ab8d998d384b0f62d752 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Tue, 9 Aug 2016 14:49:29 +0100 +Subject: [PATCH 087/132] Revert "tpa6130a2: Add headphone switch control" + +This reverts commit 860574af506a7a28782ca373feb880e7846943f9. +--- + sound/soc/codecs/tpa6130a2.c | 60 -------------------------------------------- + 1 file changed, 60 deletions(-) + +diff --git a/sound/soc/codecs/tpa6130a2.c b/sound/soc/codecs/tpa6130a2.c +index 3bf0163956c5665683d7950798df527fa1b57b59..f1ea052a822e1f584eb55cbc876b8e079e813ccd 100644 +--- a/sound/soc/codecs/tpa6130a2.c ++++ b/sound/soc/codecs/tpa6130a2.c +@@ -4,7 +4,6 @@ + * Copyright (C) Nokia Corporation + * + * Author: Peter Ujfalusi +- * Modified: Jan Grulich + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License +@@ -51,8 +50,6 @@ struct tpa6130a2_data { + enum tpa_model id; + }; + +-static void tpa6130a2_channel_enable(u8 channel, int enable); +- + static int tpa6130a2_power(struct tpa6130a2_data *data, bool enable) + { + int ret; +@@ -112,20 +109,6 @@ static int tpa6130a2_power_event(struct snd_soc_dapm_widget *w, + return 0; + } + +-static int tpa6130a2_put_hp_sw(struct snd_kcontrol *kcontrol, +- struct snd_ctl_elem_value *ucontrol) +-{ +- int enable = ucontrol->value.integer.value[0]; +- unsigned int state; +- +- state = (tpa6130a2_read(TPA6130A2_REG_VOL_MUTE) & 0x80) == 0; +- if (state == enable) +- return 0; /* No change */ +- +- tpa6130a2_channel_enable(TPA6130A2_HP_EN_R | TPA6130A2_HP_EN_L, enable); +- return 1; /* Changed */ +-} +- + /* + * TPA6130 volume. From -59.5 to 4 dB with increasing step size when going + * down in gain. +@@ -147,9 +130,6 @@ static const struct snd_kcontrol_new tpa6130a2_controls[] = { + SOC_SINGLE_TLV("Headphone Playback Volume", + TPA6130A2_REG_VOL_MUTE, 0, 0x3f, 0, + tpa6130_tlv), +- SOC_SINGLE_EXT("TPA6130A2 Headphone Playback Switch", +- TPA6130A2_REG_VOL_MUTE, 7, 1, 1, +- tpa6130a2_get_volsw, tpa6130a2_put_hp_sw), + }; + + static const DECLARE_TLV_DB_RANGE(tpa6140_tlv, +@@ -162,48 +142,8 @@ static const struct snd_kcontrol_new tpa6140a2_controls[] = { + SOC_SINGLE_TLV("Headphone Playback Volume", + TPA6130A2_REG_VOL_MUTE, 1, 0x1f, 0, + tpa6140_tlv), +- SOC_SINGLE_EXT("TPA6140A2 Headphone Playback Switch", +- TPA6130A2_REG_VOL_MUTE, 7, 1, 1, +- tpa6130a2_get_volsw, tpa6130a2_put_hp_sw), + }; + +-/* +- * Enable or disable channel (left or right) +- * The bit number for mute and amplifier are the same per channel: +- * bit 6: Right channel +- * bit 7: Left channel +- * in both registers. +- */ +-static void tpa6130a2_channel_enable(u8 channel, int enable) +-{ +- u8 val; +- +- if (enable) { +- /* Enable channel */ +- /* Enable amplifier */ +- val = tpa6130a2_read(TPA6130A2_REG_CONTROL); +- val |= channel; +- val &= ~TPA6130A2_SWS; +- tpa6130a2_i2c_write(TPA6130A2_REG_CONTROL, val); +- +- /* Unmute channel */ +- val = tpa6130a2_read(TPA6130A2_REG_VOL_MUTE); +- val &= ~channel; +- tpa6130a2_i2c_write(TPA6130A2_REG_VOL_MUTE, val); +- } else { +- /* Disable channel */ +- /* Mute channel */ +- val = tpa6130a2_read(TPA6130A2_REG_VOL_MUTE); +- val |= channel; +- tpa6130a2_i2c_write(TPA6130A2_REG_VOL_MUTE, val); +- +- /* Disable amplifier */ +- val = tpa6130a2_read(TPA6130A2_REG_CONTROL); +- val &= ~channel; +- tpa6130a2_i2c_write(TPA6130A2_REG_CONTROL, val); +- } +-} +- + static int tpa6130a2_component_probe(struct snd_soc_component *component) + { + struct tpa6130a2_data *data = snd_soc_component_get_drvdata(component); + +From f1e74deb9cc5a67e30e7efdfd54f628b20bd3ba9 Mon Sep 17 00:00:00 2001 From: Aaron Shaw Date: Thu, 7 Apr 2016 21:26:21 +0100 -Subject: [PATCH 078/160] Add Support for JustBoom Audio boards +Subject: [PATCH 088/132] Add Support for JustBoom Audio boards justboom-dac: Adjust for ALSA API change @@ -130795,10 +130060,10 @@ Signed-off-by: Phil Elwell create mode 100644 sound/soc/bcm/justboom-digi.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 1a3f8264403d64690fef60d41df38d21d3eb6030..e2e2782a2f8af27c1782993bd63747b620f26e1e 100644 +index e07f8b74497fe3b271290cc4e6a1c49a2e84c29c..b8fcd82f1e9ccabaae307b07fa17bdec57c173a1 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -50,6 +50,20 @@ config SND_BCM2708_SOC_RPI_PROTO +@@ -59,6 +59,20 @@ config SND_BCM2708_SOC_RPI_PROTO help Say Y or M if you want to add support for Audio Codec Board PROTO (WM8731). @@ -130820,10 +130085,10 @@ index 1a3f8264403d64690fef60d41df38d21d3eb6030..e2e2782a2f8af27c1782993bd63747b6 tristate "Support for IQaudIO-DAC" depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index b21e11ee36e17a29bfae9c4eda78f73ca9c23d48..6c9714c377375b38c2210ac98be8f3759224e76c 100644 +index 18253b39addf831780fefe85578e72007c0d51d9..ddffe5d69f29878afb4f286abe69c2c787cf169e 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -8,6 +8,8 @@ snd-soc-hifiberry-dac-objs := hifiberry_dac.o +@@ -13,6 +13,8 @@ snd-soc-hifiberry-dac-objs := hifiberry_dac.o snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o snd-soc-hifiberry-digi-objs := hifiberry_digi.o snd-soc-hifiberry-amp-objs := hifiberry_amp.o @@ -130832,7 +130097,7 @@ index b21e11ee36e17a29bfae9c4eda78f73ca9c23d48..6c9714c377375b38c2210ac98be8f375 snd-soc-rpi-dac-objs := rpi-dac.o snd-soc-rpi-proto-objs := rpi-proto.o snd-soc-iqaudio-dac-objs := iqaudio-dac.o -@@ -17,6 +19,8 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o +@@ -22,6 +24,8 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) += snd-soc-hifiberry-digi.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o @@ -131231,10 +130496,10 @@ index 0000000000000000000000000000000000000000..91acb666380faa3c0deb2230f8a0f8bb +MODULE_DESCRIPTION("ASoC Driver for JustBoom PI Digi HAT Sound Card"); +MODULE_LICENSE("GPL v2"); -From 790a707552d5a921f43dec1bf75eb3a4bb226c8d Mon Sep 17 00:00:00 2001 +From b49176f288664983a1cd5b8e2f2cba3d165b51e6 Mon Sep 17 00:00:00 2001 From: Andrey Grodzovsky Date: Tue, 3 May 2016 22:10:59 -0400 -Subject: [PATCH 079/160] ARM: adau1977-adc: Add basic machine driver for +Subject: [PATCH 089/132] ARM: adau1977-adc: Add basic machine driver for adau1977 codec driver. This commit adds basic support for the codec usage including: Device tree overlay, @@ -131250,10 +130515,10 @@ Signed-off-by: Andrey Grodzovsky create mode 100644 sound/soc/bcm/adau1977-adc.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index e2e2782a2f8af27c1782993bd63747b620f26e1e..59890cc0d6b531021e20d8117b0e3fa26a5343ee 100644 +index b8fcd82f1e9ccabaae307b07fa17bdec57c173a1..cacc10431c5b82b000f5b71b1c1256f19073dc16 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -78,3 +78,10 @@ config SND_BCM2708_SOC_RASPIDAC3 +@@ -87,3 +87,10 @@ config SND_BCM2708_SOC_RASPIDAC3 select SND_SOC_TPA6130A2 help Say Y or M if you want to add support for RaspiDAC Rev.3x. @@ -131265,18 +130530,18 @@ index e2e2782a2f8af27c1782993bd63747b620f26e1e..59890cc0d6b531021e20d8117b0e3fa2 + help + Say Y or M if you want to add support for ADAU1977 ADC. diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 6c9714c377375b38c2210ac98be8f3759224e76c..d3124f579475524a739ced533f6dff69394eee1c 100644 +index ddffe5d69f29878afb4f286abe69c2c787cf169e..63584bc364ed266b8e9eb30afab0a631b97b145c 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -4,6 +4,7 @@ snd-soc-bcm2835-i2s-objs := bcm2835-i2s.o - obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o +@@ -9,6 +9,7 @@ snd-soc-cygnus-objs := cygnus-pcm.o cygnus-ssp.o + obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o # BCM2708 Machine Support +snd-soc-adau1977-adc-objs := adau1977-adc.o snd-soc-hifiberry-dac-objs := hifiberry_dac.o snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o snd-soc-hifiberry-digi-objs := hifiberry_digi.o -@@ -15,6 +16,7 @@ snd-soc-rpi-proto-objs := rpi-proto.o +@@ -20,6 +21,7 @@ snd-soc-rpi-proto-objs := rpi-proto.o snd-soc-iqaudio-dac-objs := iqaudio-dac.o snd-soc-raspidac3-objs := raspidac3.o @@ -131416,10 +130681,10 @@ index 0000000000000000000000000000000000000000..6e2ee027926ee63c89222f75ceb89e3d +MODULE_DESCRIPTION("ASoC Driver for ADAU1977 ADC"); +MODULE_LICENSE("GPL v2"); -From c7ed387f541489099022f5463d48d7d4479de1d9 Mon Sep 17 00:00:00 2001 +From 2ab9f6e38fd5027df4b6e61506723de9144d69f8 Mon Sep 17 00:00:00 2001 From: Matt Flax Date: Mon, 16 May 2016 21:36:31 +1000 -Subject: [PATCH 080/160] New AudioInjector.net Pi soundcard with low jitter +Subject: [PATCH 090/132] New AudioInjector.net Pi soundcard with low jitter audio in and out. Contains the sound/soc/bcm ALSA machine driver and necessary alterations to the Kconfig and Makefile. @@ -131438,10 +130703,10 @@ This patch adds headphone and microphone capability to the Audio Injector sound create mode 100644 sound/soc/bcm/audioinjector-pi-soundcard.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 59890cc0d6b531021e20d8117b0e3fa26a5343ee..e2e40eda90f447a4700767071715e263bfa9a6e7 100644 +index cacc10431c5b82b000f5b71b1c1256f19073dc16..214aa1314ef97dff7422a4743024ddb4ae114912 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -85,3 +85,10 @@ config SND_BCM2708_SOC_ADAU1977_ADC +@@ -94,3 +94,10 @@ config SND_BCM2708_SOC_ADAU1977_ADC select SND_SOC_ADAU1977_I2C help Say Y or M if you want to add support for ADAU1977 ADC. @@ -131453,10 +130718,10 @@ index 59890cc0d6b531021e20d8117b0e3fa26a5343ee..e2e40eda90f447a4700767071715e263 + help + Say Y or M if you want to add support for audioinjector.net Pi Hat diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index d3124f579475524a739ced533f6dff69394eee1c..3353192be30394bd595423dccec17838e3054a1d 100644 +index 63584bc364ed266b8e9eb30afab0a631b97b145c..eb21e3baff008959ba41b5c816ecaff4462900ed 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -15,6 +15,7 @@ snd-soc-rpi-dac-objs := rpi-dac.o +@@ -20,6 +20,7 @@ snd-soc-rpi-dac-objs := rpi-dac.o snd-soc-rpi-proto-objs := rpi-proto.o snd-soc-iqaudio-dac-objs := iqaudio-dac.o snd-soc-raspidac3-objs := raspidac3.o @@ -131464,7 +130729,7 @@ index d3124f579475524a739ced533f6dff69394eee1c..3353192be30394bd595423dccec17838 obj-$(CONFIG_SND_BCM2708_SOC_ADAU1977_ADC) += snd-soc-adau1977-adc.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o -@@ -27,3 +28,5 @@ obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o +@@ -32,3 +33,5 @@ obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o obj-$(CONFIG_SND_BCM2708_SOC_RPI_PROTO) += snd-soc-rpi-proto.o obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o @@ -131668,10 +130933,10 @@ index 0000000000000000000000000000000000000000..5ff0985e07efb96b95634a65995f09f7 +MODULE_ALIAS("platform:audioinjector-pi-soundcard"); + -From 723981ea784a59717a05dd7c7c76f2204bf670df Mon Sep 17 00:00:00 2001 +From bbe8e1c22742ea605d30e21fc8b7551a2ad2bd7d Mon Sep 17 00:00:00 2001 From: DigitalDreamtime Date: Thu, 30 Jun 2016 18:38:42 +0100 -Subject: [PATCH 081/160] Add IQAudIO Digi WM8804 board support +Subject: [PATCH 091/132] Add IQAudIO Digi WM8804 board support Support IQAudIO Digi board with iqaudio_digi machine driver and iqaudio-digi-wm8804-audio overlay. @@ -131688,10 +130953,10 @@ Signed-off-by: DigitalDreamtime create mode 100644 sound/soc/bcm/iqaudio_digi.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index e2e40eda90f447a4700767071715e263bfa9a6e7..616f47e72a2300df0ed79f082c67ba0af13067ee 100644 +index 214aa1314ef97dff7422a4743024ddb4ae114912..f85c6b1e8835e1a76bfa5be1bee69aaeec631a70 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -71,6 +71,13 @@ config SND_BCM2708_SOC_IQAUDIO_DAC +@@ -80,6 +80,13 @@ config SND_BCM2708_SOC_IQAUDIO_DAC help Say Y or M if you want to add support for IQaudIO-DAC. @@ -131706,10 +130971,10 @@ index e2e40eda90f447a4700767071715e263bfa9a6e7..616f47e72a2300df0ed79f082c67ba0a tristate "Support for RaspiDAC Rev.3x" depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 3353192be30394bd595423dccec17838e3054a1d..fb3e44d2668bda0494751d4e6c925f34a5ce2bc3 100644 +index eb21e3baff008959ba41b5c816ecaff4462900ed..0316dcaa3148dc60dfe9d10dabb6b4d0b0eea875 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -14,6 +14,7 @@ snd-soc-justboom-digi-objs := justboom-digi.o +@@ -19,6 +19,7 @@ snd-soc-justboom-digi-objs := justboom-digi.o snd-soc-rpi-dac-objs := rpi-dac.o snd-soc-rpi-proto-objs := rpi-proto.o snd-soc-iqaudio-dac-objs := iqaudio-dac.o @@ -131717,7 +130982,7 @@ index 3353192be30394bd595423dccec17838e3054a1d..fb3e44d2668bda0494751d4e6c925f34 snd-soc-raspidac3-objs := raspidac3.o snd-soc-audioinjector-pi-soundcard-objs := audioinjector-pi-soundcard.o -@@ -27,6 +28,7 @@ obj-$(CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI) += snd-soc-justboom-digi.o +@@ -32,6 +33,7 @@ obj-$(CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI) += snd-soc-justboom-digi.o obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o obj-$(CONFIG_SND_BCM2708_SOC_RPI_PROTO) += snd-soc-rpi-proto.o obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o @@ -131971,10 +131236,10 @@ index 0000000000000000000000000000000000000000..9b6e829bcb5b1762a853775e78163196 +MODULE_DESCRIPTION("ASoC Driver for IQAudIO WM8804 Digi"); +MODULE_LICENSE("GPL v2"); -From cfcaed0a9a8b1fde8e4abf0bb0f8e252bf8cdfbe Mon Sep 17 00:00:00 2001 +From 147e07a5a396c806eec79762799782afe7825878 Mon Sep 17 00:00:00 2001 From: escalator2015 Date: Tue, 24 May 2016 16:20:09 +0100 -Subject: [PATCH 082/160] New driver for RRA DigiDAC1 soundcard using WM8741 + +Subject: [PATCH 092/132] New driver for RRA DigiDAC1 soundcard using WM8741 + WM8804 --- @@ -131985,10 +131250,10 @@ Subject: [PATCH 082/160] New driver for RRA DigiDAC1 soundcard using WM8741 + create mode 100644 sound/soc/bcm/digidac1-soundcard.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 616f47e72a2300df0ed79f082c67ba0af13067ee..a7e4e25ccf2de23f7a3793af66f795825e69fbb8 100644 +index f85c6b1e8835e1a76bfa5be1bee69aaeec631a70..04edcfdbb6ce5910a0704e6f1d1edd6fd97631e3 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -99,3 +99,11 @@ config SND_AUDIOINJECTOR_PI_SOUNDCARD +@@ -108,3 +108,11 @@ config SND_AUDIOINJECTOR_PI_SOUNDCARD select SND_SOC_WM8731 help Say Y or M if you want to add support for audioinjector.net Pi Hat @@ -132001,10 +131266,10 @@ index 616f47e72a2300df0ed79f082c67ba0af13067ee..a7e4e25ccf2de23f7a3793af66f79582 + help + Say Y or M if you want to add support for Red Rocks Audio DigiDAC1 board. diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index fb3e44d2668bda0494751d4e6c925f34a5ce2bc3..781037a9e323834ba62ec55c6cf28a95c769c2cb 100644 +index 0316dcaa3148dc60dfe9d10dabb6b4d0b0eea875..b407091a168af15062df7bc6410e48e3f92acd49 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -17,6 +17,7 @@ snd-soc-iqaudio-dac-objs := iqaudio-dac.o +@@ -22,6 +22,7 @@ snd-soc-iqaudio-dac-objs := iqaudio-dac.o snd-soc-iqaudio-digi-objs := iqaudio_digi.o snd-soc-raspidac3-objs := raspidac3.o snd-soc-audioinjector-pi-soundcard-objs := audioinjector-pi-soundcard.o @@ -132012,7 +131277,7 @@ index fb3e44d2668bda0494751d4e6c925f34a5ce2bc3..781037a9e323834ba62ec55c6cf28a95 obj-$(CONFIG_SND_BCM2708_SOC_ADAU1977_ADC) += snd-soc-adau1977-adc.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o -@@ -31,4 +32,5 @@ obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o +@@ -36,4 +37,5 @@ obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI) += snd-soc-iqaudio-digi.o obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o obj-$(CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD) += snd-soc-audioinjector-pi-soundcard.o @@ -132447,10 +131712,10 @@ index 0000000000000000000000000000000000000000..446796e7e4c14a7d95b2f2a01211d9a0 +MODULE_DESCRIPTION("ASoC Driver for RRA DigiDAC1"); +MODULE_LICENSE("GPL v2"); -From 8ef6e8e835cd2537dc7dfa652ed4dc7bb073d9ee Mon Sep 17 00:00:00 2001 +From 44dcde3a72f00896f48d3260014320d10a5daa7a Mon Sep 17 00:00:00 2001 From: DigitalDreamtime Date: Sat, 2 Jul 2016 16:26:19 +0100 -Subject: [PATCH 083/160] Add support for Dion Audio LOCO DAC-AMP HAT +Subject: [PATCH 093/132] Add support for Dion Audio LOCO DAC-AMP HAT Using dedicated machine driver and pcm5102a codec driver. @@ -132463,10 +131728,10 @@ Signed-off-by: DigitalDreamtime create mode 100644 sound/soc/bcm/dionaudio_loco.c diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index a7e4e25ccf2de23f7a3793af66f795825e69fbb8..8873fd8adce1d17cb543251f5cdc6ac8f4bf523d 100644 +index 04edcfdbb6ce5910a0704e6f1d1edd6fd97631e3..7eafe2c62d716d490df87f9c6fd92bf3b9100124 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig -@@ -107,3 +107,10 @@ config SND_DIGIDAC1_SOUNDCARD +@@ -116,3 +116,10 @@ config SND_DIGIDAC1_SOUNDCARD select SND_SOC_WM8741 help Say Y or M if you want to add support for Red Rocks Audio DigiDAC1 board. @@ -132478,10 +131743,10 @@ index a7e4e25ccf2de23f7a3793af66f795825e69fbb8..8873fd8adce1d17cb543251f5cdc6ac8 + help + Say Y or M if you want to add support for Dion Audio LOCO. diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 781037a9e323834ba62ec55c6cf28a95c769c2cb..17f70f951322239696623c2347e5d846bbef2369 100644 +index b407091a168af15062df7bc6410e48e3f92acd49..2c233080c40938c38f11bed79304830fda851ae4 100644 --- a/sound/soc/bcm/Makefile +++ b/sound/soc/bcm/Makefile -@@ -18,6 +18,7 @@ snd-soc-iqaudio-digi-objs := iqaudio_digi.o +@@ -23,6 +23,7 @@ snd-soc-iqaudio-digi-objs := iqaudio_digi.o snd-soc-raspidac3-objs := raspidac3.o snd-soc-audioinjector-pi-soundcard-objs := audioinjector-pi-soundcard.o snd-soc-digidac1-soundcard-objs := digidac1-soundcard.o @@ -132489,7 +131754,7 @@ index 781037a9e323834ba62ec55c6cf28a95c769c2cb..17f70f951322239696623c2347e5d846 obj-$(CONFIG_SND_BCM2708_SOC_ADAU1977_ADC) += snd-soc-adau1977-adc.o obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o -@@ -33,4 +34,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI) += snd-soc-iqaudio-digi.o +@@ -38,4 +39,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI) += snd-soc-iqaudio-digi.o obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o obj-$(CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD) += snd-soc-audioinjector-pi-soundcard.o obj-$(CONFIG_SND_DIGIDAC1_SOUNDCARD) += snd-soc-digidac1-soundcard.o @@ -132623,52 +131888,220 @@ index 0000000000000000000000000000000000000000..89e65317512bc774453ac8d0d5b0ff98 +MODULE_DESCRIPTION("ASoC Driver for DionAudio LOCO"); +MODULE_LICENSE("GPL v2"); -From 48c75118c6d99cc04e97cd9cd312b0cc9eb0a5f0 Mon Sep 17 00:00:00 2001 -From: Matt Flax -Date: Fri, 17 Jun 2016 14:48:16 +1000 -Subject: [PATCH 084/160] ASoc: wm8731: add 32bit mode. +From 7bf2d8d29d92a03713da62a89d41202fe9c29d16 Mon Sep 17 00:00:00 2001 +From: Clive Messer +Date: Mon, 19 Sep 2016 14:01:04 +0100 +Subject: [PATCH 094/132] Allo Piano DAC boards: Initial 2 channel (stereo) + support (#1645) -commit cf5ef3a299ba32f6ac24c3c6ba18c1b7f1b5475f upstream. +Add initial 2 channel (stereo) support for Allo Piano DAC (2.0/2.1) boards, +using allo-piano-dac-pcm512x-audio overlay and allo-piano-dac ALSA ASoC +machine driver. -This patch adds 32 bit word capability to the wm8731 driver. The wm8731 -codec is capable of handling 32 bit word sizes, however that has not -previously been activated in the codec driver. +NB. The initial support is 2 channel (stereo) ONLY! +(The Piano DAC 2.1 will only support 2 channel (stereo) left/right output, + pending an update to the upstream pcm512x codec driver, which will have + to be submitted via upstream. With the initial downstream support, + provided by this patch, the Piano DAC 2.1 subwoofer outputs will + not function.) -Signed-off-by: Matt Flax -Acked-by: Charles Keepax -Signed-off-by: Mark Brown +Signed-off-by: Baswaraj K +Signed-off-by: Clive Messer +Tested-by: Clive Messer --- - sound/soc/codecs/wm8731.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) + sound/soc/bcm/Kconfig | 7 ++ + sound/soc/bcm/Makefile | 2 + + sound/soc/bcm/allo-piano-dac.c | 144 +++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 153 insertions(+) + create mode 100644 sound/soc/bcm/allo-piano-dac.c -diff --git a/sound/soc/codecs/wm8731.c b/sound/soc/codecs/wm8731.c -index 4bcf5f8ece50f3681948a9fbc47b85400d9a8b51..d18261a442560cd2c108c34295bd5b1776a6ebf4 100644 ---- a/sound/soc/codecs/wm8731.c -+++ b/sound/soc/codecs/wm8731.c -@@ -358,6 +358,9 @@ static int wm8731_hw_params(struct snd_pcm_substream *substream, - case 24: - iface |= 0x0008; - break; -+ case 32: -+ iface |= 0x000c; -+ break; - } +diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig +index 7eafe2c62d716d490df87f9c6fd92bf3b9100124..4ccaba67a887432afe7f527569c4e2865925734b 100644 +--- a/sound/soc/bcm/Kconfig ++++ b/sound/soc/bcm/Kconfig +@@ -123,3 +123,10 @@ config SND_BCM2708_SOC_DIONAUDIO_LOCO + select SND_SOC_PCM5102a + help + Say Y or M if you want to add support for Dion Audio LOCO. ++ ++config SND_BCM2708_SOC_ALLO_PIANO_DAC ++ tristate "Support for Allo Piano DAC" ++ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S ++ select SND_SOC_PCM512x_I2C ++ help ++ Say Y or M if you want to add support for Allo Piano DAC. +diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile +index 2c233080c40938c38f11bed79304830fda851ae4..b9f98f0bcf3ee0d6b490e1bb185ba0de8f0f9701 100644 +--- a/sound/soc/bcm/Makefile ++++ b/sound/soc/bcm/Makefile +@@ -24,6 +24,7 @@ snd-soc-raspidac3-objs := raspidac3.o + snd-soc-audioinjector-pi-soundcard-objs := audioinjector-pi-soundcard.o + snd-soc-digidac1-soundcard-objs := digidac1-soundcard.o + snd-soc-dionaudio-loco-objs := dionaudio_loco.o ++snd-soc-allo-piano-dac-objs := allo-piano-dac.o - wm8731_set_deemph(codec); -@@ -541,7 +544,7 @@ static int wm8731_startup(struct snd_pcm_substream *substream, - #define WM8731_RATES SNDRV_PCM_RATE_8000_96000 - - #define WM8731_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\ -- SNDRV_PCM_FMTBIT_S24_LE) -+ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) - - static const struct snd_soc_dai_ops wm8731_dai_ops = { - .startup = wm8731_startup, + obj-$(CONFIG_SND_BCM2708_SOC_ADAU1977_ADC) += snd-soc-adau1977-adc.o + obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o +@@ -40,3 +41,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o + obj-$(CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD) += snd-soc-audioinjector-pi-soundcard.o + obj-$(CONFIG_SND_DIGIDAC1_SOUNDCARD) += snd-soc-digidac1-soundcard.o + obj-$(CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO) += snd-soc-dionaudio-loco.o ++obj-$(CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC) += snd-soc-allo-piano-dac.o +diff --git a/sound/soc/bcm/allo-piano-dac.c b/sound/soc/bcm/allo-piano-dac.c +new file mode 100644 +index 0000000000000000000000000000000000000000..8e8e62e5a36a279b425ed4655cfbac99ecd7e4cf +--- /dev/null ++++ b/sound/soc/bcm/allo-piano-dac.c +@@ -0,0 +1,144 @@ ++/* ++ * ALSA ASoC Machine Driver for Allo Piano DAC ++ * ++ * Author: Baswaraj K ++ * Copyright 2016 ++ * based on code by Daniel Matuschek ++ * based on code by Florian Meier ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * version 2 as published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, but ++ * WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * General Public License for more details. ++ */ ++ ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++static bool digital_gain_0db_limit = true; ++ ++static int snd_allo_piano_dac_init(struct snd_soc_pcm_runtime *rtd) ++{ ++ if (digital_gain_0db_limit) { ++ int ret; ++ struct snd_soc_card *card = rtd->card; ++ ++ ret = snd_soc_limit_volume(card, "Digital Playback Volume", ++ 207); ++ if (ret < 0) ++ dev_warn(card->dev, "Failed to set volume limit: %d\n", ++ ret); ++ } ++ ++ return 0; ++} ++ ++static int snd_allo_piano_dac_hw_params( ++ struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) ++{ ++ struct snd_soc_pcm_runtime *rtd = substream->private_data; ++ struct snd_soc_dai *cpu_dai = rtd->cpu_dai; ++ ++ unsigned int sample_bits = ++ snd_pcm_format_physical_width(params_format(params)); ++ ++ return snd_soc_dai_set_bclk_ratio(cpu_dai, sample_bits * 2); ++} ++ ++/* machine stream operations */ ++static struct snd_soc_ops snd_allo_piano_dac_ops = { ++ .hw_params = snd_allo_piano_dac_hw_params, ++}; ++ ++static struct snd_soc_dai_link snd_allo_piano_dac_dai[] = { ++{ ++ .name = "Piano DAC", ++ .stream_name = "Piano DAC HiFi", ++ .cpu_dai_name = "bcm2708-i2s.0", ++ .codec_dai_name = "pcm512x-hifi", ++ .platform_name = "bcm2708-i2s.0", ++ .codec_name = "pcm512x.1-004c", ++ .dai_fmt = SND_SOC_DAIFMT_I2S | ++ SND_SOC_DAIFMT_NB_NF | ++ SND_SOC_DAIFMT_CBS_CFS, ++ .ops = &snd_allo_piano_dac_ops, ++ .init = snd_allo_piano_dac_init, ++}, ++}; ++ ++/* audio machine driver */ ++static struct snd_soc_card snd_allo_piano_dac = { ++ .name = "PianoDAC", ++ .owner = THIS_MODULE, ++ .dai_link = snd_allo_piano_dac_dai, ++ .num_links = ARRAY_SIZE(snd_allo_piano_dac_dai), ++}; ++ ++static int snd_allo_piano_dac_probe(struct platform_device *pdev) ++{ ++ int ret = 0; ++ ++ snd_allo_piano_dac.dev = &pdev->dev; ++ ++ if (pdev->dev.of_node) { ++ struct device_node *i2s_node; ++ struct snd_soc_dai_link *dai; ++ ++ dai = &snd_allo_piano_dac_dai[0]; ++ i2s_node = of_parse_phandle(pdev->dev.of_node, ++ "i2s-controller", 0); ++ ++ if (i2s_node) { ++ dai->cpu_dai_name = NULL; ++ dai->cpu_of_node = i2s_node; ++ dai->platform_name = NULL; ++ dai->platform_of_node = i2s_node; ++ } ++ ++ digital_gain_0db_limit = !of_property_read_bool( ++ pdev->dev.of_node, "allo,24db_digital_gain"); ++ } ++ ++ ret = snd_soc_register_card(&snd_allo_piano_dac); ++ if (ret) ++ dev_err(&pdev->dev, ++ "snd_soc_register_card() failed: %d\n", ret); ++ ++ return ret; ++} ++ ++static int snd_allo_piano_dac_remove(struct platform_device *pdev) ++{ ++ return snd_soc_unregister_card(&snd_allo_piano_dac); ++} ++ ++static const struct of_device_id snd_allo_piano_dac_of_match[] = { ++ { .compatible = "allo,piano-dac", }, ++ { /* sentinel */ }, ++}; ++MODULE_DEVICE_TABLE(of, snd_allo_piano_dac_of_match); ++ ++static struct platform_driver snd_allo_piano_dac_driver = { ++ .driver = { ++ .name = "snd-allo-piano-dac", ++ .owner = THIS_MODULE, ++ .of_match_table = snd_allo_piano_dac_of_match, ++ }, ++ .probe = snd_allo_piano_dac_probe, ++ .remove = snd_allo_piano_dac_remove, ++}; ++ ++module_platform_driver(snd_allo_piano_dac_driver); ++ ++MODULE_AUTHOR("Baswaraj K "); ++MODULE_DESCRIPTION("ALSA ASoC Machine Driver for Allo Piano DAC"); ++MODULE_LICENSE("GPL v2"); -From 72d595d2182adfdc41ec8830fff9aa8c5fda7a60 Mon Sep 17 00:00:00 2001 +From 809a407805f599d485e09df4639298503b304d64 Mon Sep 17 00:00:00 2001 From: P33M Date: Wed, 21 Oct 2015 14:55:21 +0100 -Subject: [PATCH 085/160] rpi_display: add backlight driver and overlay +Subject: [PATCH 095/132] rpi_display: add backlight driver and overlay Add a mailbox-driven backlight controller for the Raspberry Pi DSI touchscreen display. Requires updated GPU firmware to recognise the @@ -132837,10 +132270,10 @@ index 0000000000000000000000000000000000000000..14a0d9b037395497c1fdae2961feccd5 +MODULE_DESCRIPTION("Raspberry Pi mailbox based Backlight Driver"); +MODULE_LICENSE("GPL"); -From c84b856fb00c5bd6867bf8d5b45f0c2ce9f81f7a Mon Sep 17 00:00:00 2001 +From fe57ea2b39063f2dc50066949ccfb25eeb9c9272 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 23 Feb 2016 19:56:04 +0000 -Subject: [PATCH 086/160] bcm2835-virtgpio: Virtual GPIO driver +Subject: [PATCH 096/132] bcm2835-virtgpio: Virtual GPIO driver Add a virtual GPIO driver that uses the firmware mailbox interface to request that the VPU toggles LEDs. @@ -132852,7 +132285,7 @@ request that the VPU toggles LEDs. create mode 100644 drivers/gpio/gpio-bcm-virt.c diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig -index 5d457ff613259b5921e96eb1e3fab22bc5dd0d42..3f4fa61d2213c2996e5ac8fb9bbab977ebfbb2ac 100644 +index 24caedb00a7a34f141bced4062f07a8d72439a63..343adff44f82b78d0a09d41518a2890c602fc83d 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -144,6 +144,12 @@ config GPIO_BCM_KONA @@ -132869,7 +132302,7 @@ index 5d457ff613259b5921e96eb1e3fab22bc5dd0d42..3f4fa61d2213c2996e5ac8fb9bbab977 tristate "BRCMSTB GPIO support" default y if (ARCH_BRCMSTB || BMIPS_GENERIC) diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile -index 991598ea3fba09ee9e5724a11f41666d5a95f085..281648f98f5e65baa293719fd48e3f01e62926f0 100644 +index 2a035ed8f168196ec7596d303685b439b2c2938e..e6ccf796193b93a9e3d9bb190316c6a152f5eb9f 100644 --- a/drivers/gpio/Makefile +++ b/drivers/gpio/Makefile @@ -29,6 +29,7 @@ obj-$(CONFIG_GPIO_AMDPT) += gpio-amdpt.o @@ -133066,10 +132499,10 @@ index 0000000000000000000000000000000000000000..f3e0f1620b979e4fa3c7e556eb785ac2 +MODULE_DESCRIPTION("brcmvirt GPIO driver"); +MODULE_ALIAS("platform:brcmvirt-gpio"); -From 51228330d8b829e050750967eccaef413d9702ad Mon Sep 17 00:00:00 2001 +From fa89892be9127b8a994dd2d11fa1752a4e1c3932 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 4 Mar 2016 12:49:09 +0000 -Subject: [PATCH 087/160] DRM_VC4: Allow to be built for ARCH_BCM270x +Subject: [PATCH 097/132] DRM_VC4: Allow to be built for ARCH_BCM270x --- drivers/gpu/drm/vc4/Kconfig | 2 +- @@ -133088,10 +132521,10 @@ index e53df59cb139f25f8e6ae916bca93abf0c49e063..f6e938208b73512f20eab46a383ca91b select DRM_KMS_HELPER select DRM_KMS_CMA_HELPER -From 9dd0b8c6915f3760b0402a980f6cc9a6fd97dc70 Mon Sep 17 00:00:00 2001 +From 6176494514c32fc50941d25cc699294bcef80be2 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 23 Feb 2016 17:26:48 +0000 -Subject: [PATCH 088/160] amba_pl011: Don't use DT aliases for numbering +Subject: [PATCH 098/132] amba_pl011: Don't use DT aliases for numbering The pl011 driver looks for DT aliases of the form "serial", and if found uses as the device ID. This can cause @@ -133103,7 +132536,7 @@ use the same logic. 1 file changed, 5 insertions(+) diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c -index 1b7331e40d795e1ec5482d6a82871bd5ce050b60..a04d27ef682792808301ac2d2bfb67d5802fd7e3 100644 +index 8a9e213387a79fcc335caad27520a68edf03f446..4a5a1c5cf9b345e255f4d79714a7ae461728fce0 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c @@ -2414,7 +2414,12 @@ static int pl011_setup_port(struct device *dev, struct uart_amba_port *uap, @@ -133120,10 +132553,10 @@ index 1b7331e40d795e1ec5482d6a82871bd5ce050b60..a04d27ef682792808301ac2d2bfb67d5 uap->old_cr = 0; uap->port.dev = dev; -From 1bed4ae1aaefffbe3b2d281d1d5c9fdf95db3f16 Mon Sep 17 00:00:00 2001 +From 9393f652240ffbaf01bd959a6b0eba633e7f8459 Mon Sep 17 00:00:00 2001 From: Pantelis Antoniou Date: Wed, 3 Dec 2014 13:23:28 +0200 -Subject: [PATCH 089/160] OF: DT-Overlay configfs interface +Subject: [PATCH 099/132] OF: DT-Overlay configfs interface This is a port of Pantelis Antoniou's v3 port that makes use of the new upstreamed configfs support for binary attributes. @@ -133212,10 +132645,10 @@ index 0000000000000000000000000000000000000000..5fa43e0643072c7963daddc18cec7772 +intended to be used by hardware managers in the kernel, while the copy interface +make sense for developers (since it avoids problems with namespaces). diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig -index b3bec3aaa45d8a34dd206593fec0c13271034b07..4d9a6ba4c8bed537b41a4ff80600c89d775a1e29 100644 +index bc07ad30c9bfa91fe0fcb0b544f2f07412a26680..f0fa9639d98a99bf7ac209f5b62283ed56a102f7 100644 --- a/drivers/of/Kconfig +++ b/drivers/of/Kconfig -@@ -115,4 +115,11 @@ config OF_OVERLAY +@@ -116,4 +116,11 @@ config OF_OVERLAY config OF_NUMA bool @@ -133555,10 +132988,10 @@ index 0000000000000000000000000000000000000000..0037e6868a6cda8706c88194c6a4454b +} +late_initcall(of_cfs_init); -From 8e9f62d59ada79fe62941f58e72546caf41bc8a6 Mon Sep 17 00:00:00 2001 +From 08841d9fecbdb8e294cbdf4adf1bc42170cea3ac Mon Sep 17 00:00:00 2001 From: Cheong2K Date: Fri, 26 Feb 2016 18:20:10 +0800 -Subject: [PATCH 090/160] brcm: adds support for BCM43341 wifi +Subject: [PATCH 100/132] brcm: adds support for BCM43341 wifi --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 ++ @@ -133566,7 +132999,7 @@ Subject: [PATCH 090/160] brcm: adds support for BCM43341 wifi 2 files changed, 3 insertions(+) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -index 67e69bff2545f442c95d80726cbe6ed16584e80d..ea66454a3d7444f51827964aea01bf7573f2b473 100644 +index 68ab3ac156500864fbe27187311541986334ff3a..a008d3c264730e1611ce817b5a4a788b872c886c 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -603,6 +603,7 @@ BRCMF_FW_NVRAM_DEF(4329, "brcmfmac4329-sdio.bin", "brcmfmac4329-sdio.txt"); @@ -133586,7 +133019,7 @@ index 67e69bff2545f442c95d80726cbe6ed16584e80d..ea66454a3d7444f51827964aea01bf75 BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFFFFFE, 43362), BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4339_CHIP_ID, 0xFFFFFFFF, 4339), diff --git a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h -index 699f2c2782ee9d898a25c95e0c5d45744d0777ff..15598b3687a213d8c00d45965a6b9351759f47fc 100644 +index 3cc42bef6245529c37320f0ec6ab5e7b77f1d2f6..2ae9d0c9dbaaab6bc16610ac012039cd04886ada 100644 --- a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h +++ b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h @@ -35,6 +35,7 @@ @@ -133598,10 +133031,10 @@ index 699f2c2782ee9d898a25c95e0c5d45744d0777ff..15598b3687a213d8c00d45965a6b9351 #define BRCM_CC_4335_CHIP_ID 0x4335 #define BRCM_CC_4339_CHIP_ID 0x4339 -From 5ac878636a9fc12795b5439858b0c49631232ea1 Mon Sep 17 00:00:00 2001 +From 1810a52ac0184f4e960d8e28da9f261b5641576e Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 9 Mar 2016 17:25:59 +0000 -Subject: [PATCH 091/160] brcmfmac: Disable power management +Subject: [PATCH 101/132] brcmfmac: Disable power management Disable wireless power saving in the brcmfmac WLAN driver. This is a temporary measure until the connectivity loss resulting from power @@ -133613,10 +133046,10 @@ Signed-off-by: Phil Elwell 1 file changed, 2 insertions(+) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -index 121baba7acb194c4bba69fb78526f80e19223b65..541d07591218bff5809b6122c623b2e5ce47230b 100644 +index b8aec5e5ef93e28dfb70c95557d7388fd9b67bef..a13351c4f8401263c04ae1f2dd81e84f28303c12 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -2699,6 +2699,8 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, +@@ -2759,6 +2759,8 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, * preference in cfg struct to apply this to * FW later while initializing the dongle */ @@ -133626,10 +133059,10 @@ index 121baba7acb194c4bba69fb78526f80e19223b65..541d07591218bff5809b6122c623b2e5 if (!check_vif_up(ifp->vif)) { -From 1ae4fbf1c8f1b8f707cc87f95b0dd9754875c438 Mon Sep 17 00:00:00 2001 +From 12808ddd2f37500e83c87f594d0b27a150dfd2c7 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 28 Apr 2016 17:13:47 +0100 -Subject: [PATCH 092/160] brcmfmac: Use original country code as a fallback +Subject: [PATCH 102/132] brcmfmac: Use original country code as a fallback Commit 73345fd212980d2e28a5c6d83801c903bd773680: @@ -133645,10 +133078,10 @@ Signed-off-by: Phil Elwell 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -index 541d07591218bff5809b6122c623b2e5ce47230b..14d84a0975bbad24a04dc026824092514932d7c8 100644 +index a13351c4f8401263c04ae1f2dd81e84f28303c12..25efa073602397780e308bf00416e949c60ab678 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -6597,12 +6597,18 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], +@@ -6737,12 +6737,18 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], struct brcmfmac_pd_cc *country_codes; struct brcmfmac_pd_cc_entry *cc; s32 found_index; @@ -133669,7 +133102,7 @@ index 541d07591218bff5809b6122c623b2e5ce47230b..14d84a0975bbad24a04dc02682409251 } if ((alpha2[0] == ccreq->country_abbrev[0]) && -@@ -6626,10 +6632,14 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], +@@ -6766,10 +6772,14 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], brcmf_dbg(TRACE, "No country code match found\n"); return -EINVAL; } @@ -133688,10 +133121,10 @@ index 541d07591218bff5809b6122c623b2e5ce47230b..14d84a0975bbad24a04dc02682409251 ccreq->country_abbrev[1] = alpha2[1]; ccreq->country_abbrev[2] = 0; -From efe911c9fdbc8480c0e6b84adbdd057d3337c710 Mon Sep 17 00:00:00 2001 +From 8916cf63474b87d1d0f87ff04f618b85dc778dd0 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 19 May 2016 15:36:09 +0100 -Subject: [PATCH 093/160] brcmfmac: Plug memory leak in brcmf_fill_bss_param +Subject: [PATCH 103/132] brcmfmac: Plug memory leak in brcmf_fill_bss_param See: https://github.com/raspberrypi/linux/issues/1471 @@ -133701,10 +133134,10 @@ Signed-off-by: Phil Elwell 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -index 14d84a0975bbad24a04dc026824092514932d7c8..4a9a636d85b29eb379fa477dfbc7af80ec380dab 100644 +index 25efa073602397780e308bf00416e949c60ab678..9f50ef00a8823011a806a2b86775abb8d5f9de54 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -2473,7 +2473,7 @@ static void brcmf_fill_bss_param(struct brcmf_if *ifp, struct station_info *si) +@@ -2533,7 +2533,7 @@ static void brcmf_fill_bss_param(struct brcmf_if *ifp, struct station_info *si) WL_BSS_INFO_MAX); if (err) { brcmf_err("Failed to get bss info (%d)\n", err); @@ -133713,7 +133146,7 @@ index 14d84a0975bbad24a04dc026824092514932d7c8..4a9a636d85b29eb379fa477dfbc7af80 } si->filled |= BIT(NL80211_STA_INFO_BSS_PARAM); si->bss_param.beacon_interval = le16_to_cpu(buf->bss_le.beacon_period); -@@ -2485,6 +2485,9 @@ static void brcmf_fill_bss_param(struct brcmf_if *ifp, struct station_info *si) +@@ -2545,6 +2545,9 @@ static void brcmf_fill_bss_param(struct brcmf_if *ifp, struct station_info *si) si->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_PREAMBLE; if (capability & WLAN_CAPABILITY_SHORT_SLOT_TIME) si->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_SLOT_TIME; @@ -133724,10 +133157,73 @@ index 14d84a0975bbad24a04dc026824092514932d7c8..4a9a636d85b29eb379fa477dfbc7af80 static s32 -From de58cf9827cd5b1d6545259d5147d4c9243371fd Mon Sep 17 00:00:00 2001 +From 4a9b7eb4d9a127c5e9a3b312b155aca8759b2e89 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Tue, 13 Sep 2016 16:32:37 +0100 +Subject: [PATCH 104/132] brcmfmac: do not use internal roaming engine by + default + +Some evidence of curing disconnects with this disabled, so make it a default. +Can be overridden with module parameter roamoff=0 +See: http://projectable.me/optimize-my-pi-wi-fi/ +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c +index 3e15d64c64813513bc22202dd9e468588699abb0..4051780f64f44a5ce522babe6c371a1beb79a824 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c +@@ -69,7 +69,7 @@ static int brcmf_fcmode; + module_param_named(fcmode, brcmf_fcmode, int, 0); + MODULE_PARM_DESC(fcmode, "Mode of firmware signalled flow control"); + +-static int brcmf_roamoff; ++static int brcmf_roamoff = 1; + module_param_named(roamoff, brcmf_roamoff, int, S_IRUSR); + MODULE_PARM_DESC(roamoff, "Do not use internal roaming engine"); + + +From 06babc46e3a8a0e535ccccbc5c04e6c9bad0bbaf Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 31 Aug 2016 17:10:09 +0100 +Subject: [PATCH 105/132] brcmfmac: Change stop_ap sequence + +Patch from Broadcom/Cypress to resolve a customer error + +Signed-off-by: Phil Elwell +--- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +index 9f50ef00a8823011a806a2b86775abb8d5f9de54..b3ef2bb5642ce3ff0b74c5bab97114f7a9c219dc 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +@@ -4750,12 +4750,15 @@ static int brcmf_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev) + err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_DOWN, 1); + if (err < 0) + brcmf_err("BRCMF_C_DOWN error %d\n", err); +- err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_AP, 0); +- if (err < 0) +- brcmf_err("setting AP mode failed %d\n", err); ++ + err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_INFRA, 0); + if (err < 0) + brcmf_err("setting INFRA mode failed %d\n", err); ++ ++ err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_AP, 0); ++ if (err < 0) ++ brcmf_err("setting AP mode failed %d\n", err); ++ + if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS)) + brcmf_fil_iovar_int_set(ifp, "mbss", 0); + err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_REGULATORY, + +From 37879fec89021edae1356d5100c35ef8fb181b26 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 17 Dec 2015 13:37:07 +0000 -Subject: [PATCH 094/160] hci_h5: Don't send conf_req when ACTIVE +Subject: [PATCH 106/132] hci_h5: Don't send conf_req when ACTIVE Without this patch, a modem and kernel can continuously bombard each other with conf_req and conf_rsp messages, in a demented game of tag. @@ -133750,10 +133246,10 @@ index 0879d64b1caf58afb6e5d494c07d9ab7e7cdf983..5161ab30fd533d50f516bb93d5b9f402 if (H5_HDR_LEN(hdr) > 2) h5->tx_win = (data[2] & 0x07); -From 0dccfd3648a06cc947898ab255d34fa977c0301c Mon Sep 17 00:00:00 2001 +From c6c7dff9121eabb02205027177beb97ce7707986 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 22 Jan 2016 13:06:39 -0800 -Subject: [PATCH 095/160] drm/vc4: Add a debugfs node for tracking execution +Subject: [PATCH 107/132] drm/vc4: Add a debugfs node for tracking execution state. Signed-off-by: Eric Anholt @@ -133776,10 +133272,10 @@ index 245115d49c46a1244ef3e460a03fde397f763de8..94f2154c3685255e2e67d225f77dea37 {"hvs_regs", vc4_hvs_debugfs_regs, 0}, {"crtc0_regs", vc4_crtc_debugfs_regs, 0, (void *)(uintptr_t)0}, diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h -index 2e24616cd84a1c187bbe7ccb9327f4c69aa1c4c5..417461826ca927dd3226576e013ca98b6663a150 100644 +index 428e24919ef11919a027b67225f7145173430d98..3874b838102886dd4111830ce12254ae6c798f4c 100644 --- a/drivers/gpu/drm/vc4/vc4_drv.h +++ b/drivers/gpu/drm/vc4/vc4_drv.h -@@ -454,6 +454,7 @@ void vc4_job_handle_completed(struct vc4_dev *vc4); +@@ -464,6 +464,7 @@ void vc4_job_handle_completed(struct vc4_dev *vc4); int vc4_queue_seqno_cb(struct drm_device *dev, struct vc4_seqno_cb *cb, uint64_t seqno, void (*func)(struct vc4_seqno_cb *cb)); @@ -133788,7 +133284,7 @@ index 2e24616cd84a1c187bbe7ccb9327f4c69aa1c4c5..417461826ca927dd3226576e013ca98b /* vc4_hdmi.c */ extern struct platform_driver vc4_hdmi_driver; diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c -index 78ab08e8f87eb064e3eeec761b26c19f11c1f4e5..be22d00baa43dedd80f49045bed89f74589a0edf 100644 +index b262c5c26f109702572ed613fa0965f06a993ef9..27f42023fa49c7e62e643dc007e9e121efa930f5 100644 --- a/drivers/gpu/drm/vc4/vc4_gem.c +++ b/drivers/gpu/drm/vc4/vc4_gem.c @@ -32,6 +32,20 @@ @@ -133813,10 +133309,10 @@ index 78ab08e8f87eb064e3eeec761b26c19f11c1f4e5..be22d00baa43dedd80f49045bed89f74 vc4_queue_hangcheck(struct drm_device *dev) { -From 93e1ba3d50740bcb6cf0023b17d85033c250bd7d Mon Sep 17 00:00:00 2001 +From 07bfab04d29dbdea5e0a652b5f09340593f13c3a Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 25 Jan 2016 13:03:33 -0800 -Subject: [PATCH 096/160] drm/vc4: Include vc4_drm.h in uapi in downstream +Subject: [PATCH 108/132] drm/vc4: Include vc4_drm.h in uapi in downstream build. Signed-off-by: Eric Anholt @@ -133837,44 +133333,10 @@ index 9355dd8eff3ba39401dfe37e7fbf7737f0397f11..68828bf586f05a8d9b0a6ab409ee91a7 header-y += vmwgfx_drm.h header-y += msm_drm.h -From e639e422bb452d499a1d65706e8c9e7891c1244f Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Wed, 30 Mar 2016 17:23:15 +0100 -Subject: [PATCH 097/160] cpufreq: Temporarily ignore io_is_busy=1 - -To speed testing of the new sdhost driver that adapts to changes in -core_freq, hack the on-demand governor to treat io_is_busy=1 as -io_is_busy=0. The io_is_busy feature can still be forced using -io_is_busy=2. - -Signed-off-by: Phil Elwell ---- - drivers/cpufreq/cpufreq_ondemand.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c -index 300163430516766d56b842d8d12dc33175eee66b..9ab7b40005cb7ddfafc3917dc874eea8bdd5ad04 100644 ---- a/drivers/cpufreq/cpufreq_ondemand.c -+++ b/drivers/cpufreq/cpufreq_ondemand.c -@@ -217,7 +217,12 @@ static ssize_t store_io_is_busy(struct gov_attr_set *attr_set, const char *buf, - ret = sscanf(buf, "%u", &input); - if (ret != 1) - return -EINVAL; -- dbs_data->io_is_busy = !!input; -+ // XXX temporary hack -+ if (input > 1) -+ input = 1; -+ else -+ input = 0; -+ dbs_data->io_is_busy = input; - - /* we need to re-evaluate prev_cpu_idle */ - gov_update_cpu_data(dbs_data); - -From 8cd66366c78e069988cea2a8cc9ece14d9f6ad9a Mon Sep 17 00:00:00 2001 +From 11f6f5ab0528f97e9da3f199f55f32240d00153a Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 14 Oct 2015 11:32:14 -0700 -Subject: [PATCH 098/160] drm/vc4: Force HDMI to connected. +Subject: [PATCH 109/132] drm/vc4: Force HDMI to connected. For some reason on the downstream tree, the HPD GPIO isn't working. @@ -133884,7 +133346,7 @@ Signed-off-by: Eric Anholt 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c -index fd2644d231ff867a4409840eba7f8234a4a1faba..ed9c5274d06a215331aee44da1f7214a0e1f6e28 100644 +index 4452f3631cacea37bbd5dc8a594367631e308adc..3a622f70a077c2ebe214830f5d700cd8fe16e442 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -166,6 +166,8 @@ vc4_hdmi_connector_detect(struct drm_connector *connector, bool force) @@ -133897,1875 +133359,7561 @@ index fd2644d231ff867a4409840eba7f8234a4a1faba..ed9c5274d06a215331aee44da1f7214a if (gpio_get_value_cansleep(vc4->hdmi->hpd_gpio) ^ vc4->hdmi->hpd_active_low) -From 74827eeb2029fa6546fc20170ed424a78e19d7bf Mon Sep 17 00:00:00 2001 -From: Eric Anholt -Date: Tue, 19 Apr 2016 15:55:02 -0700 -Subject: [PATCH 099/160] ARM: bcm2708: Enable building power domain driver. +From 3eb321b6925776b8d6784a7bec7893cee9991993 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Mon, 13 Apr 2015 17:16:29 +0100 +Subject: [PATCH 110/132] config: Add default configs -Signed-off-by: Eric Anholt --- - drivers/soc/bcm/Kconfig | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + arch/arm/configs/bcm2709_defconfig | 1294 +++++++++++++++++++++++++++++++++++ + arch/arm/configs/bcmrpi_defconfig | 1303 ++++++++++++++++++++++++++++++++++++ + 2 files changed, 2597 insertions(+) + create mode 100644 arch/arm/configs/bcm2709_defconfig + create mode 100644 arch/arm/configs/bcmrpi_defconfig -diff --git a/drivers/soc/bcm/Kconfig b/drivers/soc/bcm/Kconfig -index 3066edea184d765a670ded0cead470597654abc1..e23518142ceac6651641cc30c327d60dded319d5 100644 ---- a/drivers/soc/bcm/Kconfig -+++ b/drivers/soc/bcm/Kconfig -@@ -1,6 +1,6 @@ - config RASPBERRYPI_POWER - bool "Raspberry Pi power domain driver" -- depends on ARCH_BCM2835 || COMPILE_TEST -+ depends on ARCH_BCM2835 || ARCH_BCM2708 || ARCH_BCM2709 || COMPILE_TEST - depends on RASPBERRYPI_FIRMWARE=y - select PM_GENERIC_DOMAINS if PM - select PM_GENERIC_DOMAINS_OF if PM +diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig +new file mode 100644 +index 0000000000000000000000000000000000000000..dfbb3406e38b50bf38db84071f82c3a556da8057 +--- /dev/null ++++ b/arch/arm/configs/bcm2709_defconfig +@@ -0,0 +1,1294 @@ ++# CONFIG_ARM_PATCH_PHYS_VIRT is not set ++CONFIG_PHYS_OFFSET=0 ++CONFIG_LOCALVERSION="-v7" ++# CONFIG_LOCALVERSION_AUTO is not set ++CONFIG_SYSVIPC=y ++CONFIG_POSIX_MQUEUE=y ++CONFIG_NO_HZ=y ++CONFIG_HIGH_RES_TIMERS=y ++CONFIG_BSD_PROCESS_ACCT=y ++CONFIG_BSD_PROCESS_ACCT_V3=y ++CONFIG_TASKSTATS=y ++CONFIG_TASK_DELAY_ACCT=y ++CONFIG_TASK_XACCT=y ++CONFIG_TASK_IO_ACCOUNTING=y ++CONFIG_IKCONFIG=m ++CONFIG_IKCONFIG_PROC=y ++CONFIG_NMI_LOG_BUF_SHIFT=12 ++CONFIG_MEMCG=y ++CONFIG_BLK_CGROUP=y ++CONFIG_CGROUP_FREEZER=y ++CONFIG_CPUSETS=y ++CONFIG_CGROUP_DEVICE=y ++CONFIG_CGROUP_CPUACCT=y ++CONFIG_NAMESPACES=y ++CONFIG_USER_NS=y ++CONFIG_SCHED_AUTOGROUP=y ++CONFIG_BLK_DEV_INITRD=y ++CONFIG_EMBEDDED=y ++# CONFIG_COMPAT_BRK is not set ++CONFIG_PROFILING=y ++CONFIG_OPROFILE=m ++CONFIG_KPROBES=y ++CONFIG_JUMP_LABEL=y ++CONFIG_MODULES=y ++CONFIG_MODULE_UNLOAD=y ++CONFIG_MODVERSIONS=y ++CONFIG_MODULE_SRCVERSION_ALL=y ++CONFIG_BLK_DEV_THROTTLING=y ++CONFIG_PARTITION_ADVANCED=y ++CONFIG_MAC_PARTITION=y ++CONFIG_CFQ_GROUP_IOSCHED=y ++CONFIG_ARCH_BCM2709=y ++# CONFIG_CACHE_L2X0 is not set ++CONFIG_SMP=y ++CONFIG_HAVE_ARM_ARCH_TIMER=y ++CONFIG_VMSPLIT_2G=y ++CONFIG_PREEMPT_VOLUNTARY=y ++CONFIG_AEABI=y ++CONFIG_OABI_COMPAT=y ++# CONFIG_CPU_SW_DOMAIN_PAN is not set ++CONFIG_CLEANCACHE=y ++CONFIG_FRONTSWAP=y ++CONFIG_CMA=y ++CONFIG_ZSMALLOC=m ++CONFIG_PGTABLE_MAPPING=y ++CONFIG_UACCESS_WITH_MEMCPY=y ++CONFIG_SECCOMP=y ++# CONFIG_ATAGS is not set ++CONFIG_ZBOOT_ROM_TEXT=0x0 ++CONFIG_ZBOOT_ROM_BSS=0x0 ++CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" ++CONFIG_CPU_FREQ=y ++CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y ++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y ++CONFIG_CPU_FREQ_GOV_USERSPACE=y ++CONFIG_CPU_FREQ_GOV_ONDEMAND=y ++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y ++CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y ++CONFIG_VFP=y ++CONFIG_NEON=y ++CONFIG_KERNEL_MODE_NEON=y ++CONFIG_BINFMT_MISC=m ++# CONFIG_SUSPEND is not set ++CONFIG_PM=y ++CONFIG_NET=y ++CONFIG_PACKET=y ++CONFIG_UNIX=y ++CONFIG_XFRM_USER=y ++CONFIG_NET_KEY=m ++CONFIG_INET=y ++CONFIG_IP_MULTICAST=y ++CONFIG_IP_ADVANCED_ROUTER=y ++CONFIG_IP_MULTIPLE_TABLES=y ++CONFIG_IP_ROUTE_MULTIPATH=y ++CONFIG_IP_ROUTE_VERBOSE=y ++CONFIG_IP_PNP=y ++CONFIG_IP_PNP_DHCP=y ++CONFIG_IP_PNP_RARP=y ++CONFIG_NET_IPIP=m ++CONFIG_NET_IPGRE_DEMUX=m ++CONFIG_NET_IPGRE=m ++CONFIG_IP_MROUTE=y ++CONFIG_IP_MROUTE_MULTIPLE_TABLES=y ++CONFIG_IP_PIMSM_V1=y ++CONFIG_IP_PIMSM_V2=y ++CONFIG_SYN_COOKIES=y ++CONFIG_INET_AH=m ++CONFIG_INET_ESP=m ++CONFIG_INET_IPCOMP=m ++CONFIG_INET_XFRM_MODE_TRANSPORT=m ++CONFIG_INET_XFRM_MODE_TUNNEL=m ++CONFIG_INET_XFRM_MODE_BEET=m ++CONFIG_INET_DIAG=m ++CONFIG_IPV6=m ++CONFIG_IPV6_ROUTER_PREF=y ++CONFIG_INET6_AH=m ++CONFIG_INET6_ESP=m ++CONFIG_INET6_IPCOMP=m ++CONFIG_IPV6_TUNNEL=m ++CONFIG_IPV6_MULTIPLE_TABLES=y ++CONFIG_IPV6_SUBTREES=y ++CONFIG_IPV6_MROUTE=y ++CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y ++CONFIG_IPV6_PIMSM_V2=y ++CONFIG_NETFILTER=y ++CONFIG_NF_CONNTRACK=m ++CONFIG_NF_CONNTRACK_ZONES=y ++CONFIG_NF_CONNTRACK_EVENTS=y ++CONFIG_NF_CONNTRACK_TIMESTAMP=y ++CONFIG_NF_CT_PROTO_DCCP=m ++CONFIG_NF_CT_PROTO_UDPLITE=m ++CONFIG_NF_CONNTRACK_AMANDA=m ++CONFIG_NF_CONNTRACK_FTP=m ++CONFIG_NF_CONNTRACK_H323=m ++CONFIG_NF_CONNTRACK_IRC=m ++CONFIG_NF_CONNTRACK_NETBIOS_NS=m ++CONFIG_NF_CONNTRACK_SNMP=m ++CONFIG_NF_CONNTRACK_PPTP=m ++CONFIG_NF_CONNTRACK_SANE=m ++CONFIG_NF_CONNTRACK_SIP=m ++CONFIG_NF_CONNTRACK_TFTP=m ++CONFIG_NF_CT_NETLINK=m ++CONFIG_NETFILTER_XT_SET=m ++CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m ++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m ++CONFIG_NETFILTER_XT_TARGET_CONNMARK=m ++CONFIG_NETFILTER_XT_TARGET_DSCP=m ++CONFIG_NETFILTER_XT_TARGET_HMARK=m ++CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m ++CONFIG_NETFILTER_XT_TARGET_LED=m ++CONFIG_NETFILTER_XT_TARGET_LOG=m ++CONFIG_NETFILTER_XT_TARGET_MARK=m ++CONFIG_NETFILTER_XT_TARGET_NFLOG=m ++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m ++CONFIG_NETFILTER_XT_TARGET_NOTRACK=m ++CONFIG_NETFILTER_XT_TARGET_TEE=m ++CONFIG_NETFILTER_XT_TARGET_TPROXY=m ++CONFIG_NETFILTER_XT_TARGET_TRACE=m ++CONFIG_NETFILTER_XT_TARGET_TCPMSS=m ++CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m ++CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m ++CONFIG_NETFILTER_XT_MATCH_BPF=m ++CONFIG_NETFILTER_XT_MATCH_CLUSTER=m ++CONFIG_NETFILTER_XT_MATCH_COMMENT=m ++CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m ++CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m ++CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_CONNMARK=m ++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m ++CONFIG_NETFILTER_XT_MATCH_CPU=m ++CONFIG_NETFILTER_XT_MATCH_DCCP=m ++CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m ++CONFIG_NETFILTER_XT_MATCH_DSCP=m ++CONFIG_NETFILTER_XT_MATCH_ESP=m ++CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_HELPER=m ++CONFIG_NETFILTER_XT_MATCH_IPRANGE=m ++CONFIG_NETFILTER_XT_MATCH_IPVS=m ++CONFIG_NETFILTER_XT_MATCH_LENGTH=m ++CONFIG_NETFILTER_XT_MATCH_LIMIT=m ++CONFIG_NETFILTER_XT_MATCH_MAC=m ++CONFIG_NETFILTER_XT_MATCH_MARK=m ++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m ++CONFIG_NETFILTER_XT_MATCH_NFACCT=m ++CONFIG_NETFILTER_XT_MATCH_OSF=m ++CONFIG_NETFILTER_XT_MATCH_OWNER=m ++CONFIG_NETFILTER_XT_MATCH_POLICY=m ++CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m ++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m ++CONFIG_NETFILTER_XT_MATCH_QUOTA=m ++CONFIG_NETFILTER_XT_MATCH_RATEEST=m ++CONFIG_NETFILTER_XT_MATCH_REALM=m ++CONFIG_NETFILTER_XT_MATCH_RECENT=m ++CONFIG_NETFILTER_XT_MATCH_SOCKET=m ++CONFIG_NETFILTER_XT_MATCH_STATE=m ++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m ++CONFIG_NETFILTER_XT_MATCH_STRING=m ++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m ++CONFIG_NETFILTER_XT_MATCH_TIME=m ++CONFIG_NETFILTER_XT_MATCH_U32=m ++CONFIG_IP_SET=m ++CONFIG_IP_SET_BITMAP_IP=m ++CONFIG_IP_SET_BITMAP_IPMAC=m ++CONFIG_IP_SET_BITMAP_PORT=m ++CONFIG_IP_SET_HASH_IP=m ++CONFIG_IP_SET_HASH_IPPORT=m ++CONFIG_IP_SET_HASH_IPPORTIP=m ++CONFIG_IP_SET_HASH_IPPORTNET=m ++CONFIG_IP_SET_HASH_NET=m ++CONFIG_IP_SET_HASH_NETPORT=m ++CONFIG_IP_SET_HASH_NETIFACE=m ++CONFIG_IP_SET_LIST_SET=m ++CONFIG_IP_VS=m ++CONFIG_IP_VS_PROTO_TCP=y ++CONFIG_IP_VS_PROTO_UDP=y ++CONFIG_IP_VS_PROTO_ESP=y ++CONFIG_IP_VS_PROTO_AH=y ++CONFIG_IP_VS_PROTO_SCTP=y ++CONFIG_IP_VS_RR=m ++CONFIG_IP_VS_WRR=m ++CONFIG_IP_VS_LC=m ++CONFIG_IP_VS_WLC=m ++CONFIG_IP_VS_LBLC=m ++CONFIG_IP_VS_LBLCR=m ++CONFIG_IP_VS_DH=m ++CONFIG_IP_VS_SH=m ++CONFIG_IP_VS_SED=m ++CONFIG_IP_VS_NQ=m ++CONFIG_IP_VS_FTP=m ++CONFIG_IP_VS_PE_SIP=m ++CONFIG_NF_CONNTRACK_IPV4=m ++CONFIG_IP_NF_IPTABLES=m ++CONFIG_IP_NF_MATCH_AH=m ++CONFIG_IP_NF_MATCH_ECN=m ++CONFIG_IP_NF_MATCH_RPFILTER=m ++CONFIG_IP_NF_MATCH_TTL=m ++CONFIG_IP_NF_FILTER=m ++CONFIG_IP_NF_TARGET_REJECT=m ++CONFIG_IP_NF_NAT=m ++CONFIG_IP_NF_TARGET_MASQUERADE=m ++CONFIG_IP_NF_TARGET_NETMAP=m ++CONFIG_IP_NF_TARGET_REDIRECT=m ++CONFIG_IP_NF_MANGLE=m ++CONFIG_IP_NF_TARGET_CLUSTERIP=m ++CONFIG_IP_NF_TARGET_ECN=m ++CONFIG_IP_NF_TARGET_TTL=m ++CONFIG_IP_NF_RAW=m ++CONFIG_IP_NF_ARPTABLES=m ++CONFIG_IP_NF_ARPFILTER=m ++CONFIG_IP_NF_ARP_MANGLE=m ++CONFIG_NF_CONNTRACK_IPV6=m ++CONFIG_IP6_NF_IPTABLES=m ++CONFIG_IP6_NF_MATCH_AH=m ++CONFIG_IP6_NF_MATCH_EUI64=m ++CONFIG_IP6_NF_MATCH_FRAG=m ++CONFIG_IP6_NF_MATCH_OPTS=m ++CONFIG_IP6_NF_MATCH_HL=m ++CONFIG_IP6_NF_MATCH_IPV6HEADER=m ++CONFIG_IP6_NF_MATCH_MH=m ++CONFIG_IP6_NF_MATCH_RPFILTER=m ++CONFIG_IP6_NF_MATCH_RT=m ++CONFIG_IP6_NF_TARGET_HL=m ++CONFIG_IP6_NF_FILTER=m ++CONFIG_IP6_NF_TARGET_REJECT=m ++CONFIG_IP6_NF_MANGLE=m ++CONFIG_IP6_NF_RAW=m ++CONFIG_IP6_NF_NAT=m ++CONFIG_IP6_NF_TARGET_MASQUERADE=m ++CONFIG_IP6_NF_TARGET_NPT=m ++CONFIG_BRIDGE_NF_EBTABLES=m ++CONFIG_BRIDGE_EBT_BROUTE=m ++CONFIG_BRIDGE_EBT_T_FILTER=m ++CONFIG_BRIDGE_EBT_T_NAT=m ++CONFIG_BRIDGE_EBT_802_3=m ++CONFIG_BRIDGE_EBT_AMONG=m ++CONFIG_BRIDGE_EBT_ARP=m ++CONFIG_BRIDGE_EBT_IP=m ++CONFIG_BRIDGE_EBT_IP6=m ++CONFIG_BRIDGE_EBT_LIMIT=m ++CONFIG_BRIDGE_EBT_MARK=m ++CONFIG_BRIDGE_EBT_PKTTYPE=m ++CONFIG_BRIDGE_EBT_STP=m ++CONFIG_BRIDGE_EBT_VLAN=m ++CONFIG_BRIDGE_EBT_ARPREPLY=m ++CONFIG_BRIDGE_EBT_DNAT=m ++CONFIG_BRIDGE_EBT_MARK_T=m ++CONFIG_BRIDGE_EBT_REDIRECT=m ++CONFIG_BRIDGE_EBT_SNAT=m ++CONFIG_BRIDGE_EBT_LOG=m ++CONFIG_BRIDGE_EBT_NFLOG=m ++CONFIG_SCTP_COOKIE_HMAC_SHA1=y ++CONFIG_ATM=m ++CONFIG_L2TP=m ++CONFIG_L2TP_V3=y ++CONFIG_L2TP_IP=m ++CONFIG_L2TP_ETH=m ++CONFIG_BRIDGE=m ++CONFIG_VLAN_8021Q=m ++CONFIG_VLAN_8021Q_GVRP=y ++CONFIG_ATALK=m ++CONFIG_6LOWPAN=m ++CONFIG_IEEE802154=m ++CONFIG_IEEE802154_6LOWPAN=m ++CONFIG_MAC802154=m ++CONFIG_NET_SCHED=y ++CONFIG_NET_SCH_CBQ=m ++CONFIG_NET_SCH_HTB=m ++CONFIG_NET_SCH_HFSC=m ++CONFIG_NET_SCH_PRIO=m ++CONFIG_NET_SCH_MULTIQ=m ++CONFIG_NET_SCH_RED=m ++CONFIG_NET_SCH_SFB=m ++CONFIG_NET_SCH_SFQ=m ++CONFIG_NET_SCH_TEQL=m ++CONFIG_NET_SCH_TBF=m ++CONFIG_NET_SCH_GRED=m ++CONFIG_NET_SCH_DSMARK=m ++CONFIG_NET_SCH_NETEM=m ++CONFIG_NET_SCH_DRR=m ++CONFIG_NET_SCH_MQPRIO=m ++CONFIG_NET_SCH_CHOKE=m ++CONFIG_NET_SCH_QFQ=m ++CONFIG_NET_SCH_CODEL=m ++CONFIG_NET_SCH_FQ_CODEL=m ++CONFIG_NET_SCH_INGRESS=m ++CONFIG_NET_SCH_PLUG=m ++CONFIG_NET_CLS_BASIC=m ++CONFIG_NET_CLS_TCINDEX=m ++CONFIG_NET_CLS_ROUTE4=m ++CONFIG_NET_CLS_FW=m ++CONFIG_NET_CLS_U32=m ++CONFIG_CLS_U32_MARK=y ++CONFIG_NET_CLS_RSVP=m ++CONFIG_NET_CLS_RSVP6=m ++CONFIG_NET_CLS_FLOW=m ++CONFIG_NET_CLS_CGROUP=m ++CONFIG_NET_EMATCH=y ++CONFIG_NET_EMATCH_CMP=m ++CONFIG_NET_EMATCH_NBYTE=m ++CONFIG_NET_EMATCH_U32=m ++CONFIG_NET_EMATCH_META=m ++CONFIG_NET_EMATCH_TEXT=m ++CONFIG_NET_EMATCH_IPSET=m ++CONFIG_NET_CLS_ACT=y ++CONFIG_NET_ACT_POLICE=m ++CONFIG_NET_ACT_GACT=m ++CONFIG_GACT_PROB=y ++CONFIG_NET_ACT_MIRRED=m ++CONFIG_NET_ACT_IPT=m ++CONFIG_NET_ACT_NAT=m ++CONFIG_NET_ACT_PEDIT=m ++CONFIG_NET_ACT_SIMP=m ++CONFIG_NET_ACT_SKBEDIT=m ++CONFIG_NET_ACT_CSUM=m ++CONFIG_BATMAN_ADV=m ++CONFIG_OPENVSWITCH=m ++CONFIG_NET_PKTGEN=m ++CONFIG_HAMRADIO=y ++CONFIG_AX25=m ++CONFIG_NETROM=m ++CONFIG_ROSE=m ++CONFIG_MKISS=m ++CONFIG_6PACK=m ++CONFIG_BPQETHER=m ++CONFIG_BAYCOM_SER_FDX=m ++CONFIG_BAYCOM_SER_HDX=m ++CONFIG_YAM=m ++CONFIG_CAN=m ++CONFIG_CAN_VCAN=m ++CONFIG_CAN_MCP251X=m ++CONFIG_IRDA=m ++CONFIG_IRLAN=m ++CONFIG_IRNET=m ++CONFIG_IRCOMM=m ++CONFIG_IRDA_ULTRA=y ++CONFIG_IRDA_CACHE_LAST_LSAP=y ++CONFIG_IRDA_FAST_RR=y ++CONFIG_IRTTY_SIR=m ++CONFIG_KINGSUN_DONGLE=m ++CONFIG_KSDAZZLE_DONGLE=m ++CONFIG_KS959_DONGLE=m ++CONFIG_USB_IRDA=m ++CONFIG_SIGMATEL_FIR=m ++CONFIG_MCS_FIR=m ++CONFIG_BT=m ++CONFIG_BT_RFCOMM=m ++CONFIG_BT_RFCOMM_TTY=y ++CONFIG_BT_BNEP=m ++CONFIG_BT_BNEP_MC_FILTER=y ++CONFIG_BT_BNEP_PROTO_FILTER=y ++CONFIG_BT_HIDP=m ++CONFIG_BT_6LOWPAN=m ++CONFIG_BT_HCIBTUSB=m ++CONFIG_BT_HCIUART=m ++CONFIG_BT_HCIUART_3WIRE=y ++CONFIG_BT_HCIUART_BCM=y ++CONFIG_BT_HCIBCM203X=m ++CONFIG_BT_HCIBPA10X=m ++CONFIG_BT_HCIBFUSB=m ++CONFIG_BT_HCIVHCI=m ++CONFIG_BT_MRVL=m ++CONFIG_BT_MRVL_SDIO=m ++CONFIG_BT_ATH3K=m ++CONFIG_BT_WILINK=m ++CONFIG_MAC80211=m ++CONFIG_MAC80211_MESH=y ++CONFIG_WIMAX=m ++CONFIG_RFKILL=m ++CONFIG_RFKILL_INPUT=y ++CONFIG_NET_9P=m ++CONFIG_NFC=m ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y ++CONFIG_DMA_CMA=y ++CONFIG_CMA_SIZE_MBYTES=5 ++CONFIG_MTD=m ++CONFIG_MTD_BLOCK=m ++CONFIG_MTD_NAND=m ++CONFIG_MTD_UBI=m ++CONFIG_OF_CONFIGFS=y ++CONFIG_ZRAM=m ++CONFIG_BLK_DEV_LOOP=y ++CONFIG_BLK_DEV_CRYPTOLOOP=m ++CONFIG_BLK_DEV_DRBD=m ++CONFIG_BLK_DEV_NBD=m ++CONFIG_BLK_DEV_RAM=y ++CONFIG_CDROM_PKTCDVD=m ++CONFIG_ATA_OVER_ETH=m ++CONFIG_EEPROM_AT24=m ++CONFIG_TI_ST=m ++CONFIG_SCSI=y ++# CONFIG_SCSI_PROC_FS is not set ++CONFIG_BLK_DEV_SD=y ++CONFIG_CHR_DEV_ST=m ++CONFIG_CHR_DEV_OSST=m ++CONFIG_BLK_DEV_SR=m ++CONFIG_CHR_DEV_SG=m ++CONFIG_SCSI_ISCSI_ATTRS=y ++CONFIG_ISCSI_TCP=m ++CONFIG_ISCSI_BOOT_SYSFS=m ++CONFIG_MD=y ++CONFIG_MD_LINEAR=m ++CONFIG_MD_RAID0=m ++CONFIG_BLK_DEV_DM=m ++CONFIG_DM_CRYPT=m ++CONFIG_DM_SNAPSHOT=m ++CONFIG_DM_THIN_PROVISIONING=m ++CONFIG_DM_MIRROR=m ++CONFIG_DM_LOG_USERSPACE=m ++CONFIG_DM_RAID=m ++CONFIG_DM_ZERO=m ++CONFIG_DM_DELAY=m ++CONFIG_NETDEVICES=y ++CONFIG_BONDING=m ++CONFIG_DUMMY=m ++CONFIG_IFB=m ++CONFIG_MACVLAN=m ++CONFIG_IPVLAN=m ++CONFIG_VXLAN=m ++CONFIG_NETCONSOLE=m ++CONFIG_TUN=m ++CONFIG_VETH=m ++CONFIG_ENC28J60=m ++CONFIG_QCA7000=m ++CONFIG_MDIO_BITBANG=m ++CONFIG_PPP=m ++CONFIG_PPP_BSDCOMP=m ++CONFIG_PPP_DEFLATE=m ++CONFIG_PPP_FILTER=y ++CONFIG_PPP_MPPE=m ++CONFIG_PPP_MULTILINK=y ++CONFIG_PPPOATM=m ++CONFIG_PPPOE=m ++CONFIG_PPPOL2TP=m ++CONFIG_PPP_ASYNC=m ++CONFIG_PPP_SYNC_TTY=m ++CONFIG_SLIP=m ++CONFIG_SLIP_COMPRESSED=y ++CONFIG_SLIP_SMART=y ++CONFIG_USB_CATC=m ++CONFIG_USB_KAWETH=m ++CONFIG_USB_PEGASUS=m ++CONFIG_USB_RTL8150=m ++CONFIG_USB_RTL8152=m ++CONFIG_USB_USBNET=y ++CONFIG_USB_NET_AX8817X=m ++CONFIG_USB_NET_AX88179_178A=m ++CONFIG_USB_NET_CDCETHER=m ++CONFIG_USB_NET_CDC_EEM=m ++CONFIG_USB_NET_CDC_NCM=m ++CONFIG_USB_NET_HUAWEI_CDC_NCM=m ++CONFIG_USB_NET_CDC_MBIM=m ++CONFIG_USB_NET_DM9601=m ++CONFIG_USB_NET_SR9700=m ++CONFIG_USB_NET_SR9800=m ++CONFIG_USB_NET_SMSC75XX=m ++CONFIG_USB_NET_SMSC95XX=y ++CONFIG_USB_NET_GL620A=m ++CONFIG_USB_NET_NET1080=m ++CONFIG_USB_NET_PLUSB=m ++CONFIG_USB_NET_MCS7830=m ++CONFIG_USB_NET_CDC_SUBSET=m ++CONFIG_USB_ALI_M5632=y ++CONFIG_USB_AN2720=y ++CONFIG_USB_EPSON2888=y ++CONFIG_USB_KC2190=y ++CONFIG_USB_NET_ZAURUS=m ++CONFIG_USB_NET_CX82310_ETH=m ++CONFIG_USB_NET_KALMIA=m ++CONFIG_USB_NET_QMI_WWAN=m ++CONFIG_USB_HSO=m ++CONFIG_USB_NET_INT51X1=m ++CONFIG_USB_IPHETH=m ++CONFIG_USB_SIERRA_NET=m ++CONFIG_USB_VL600=m ++CONFIG_ATH9K=m ++CONFIG_ATH9K_HTC=m ++CONFIG_CARL9170=m ++CONFIG_ATH6KL=m ++CONFIG_ATH6KL_USB=m ++CONFIG_AR5523=m ++CONFIG_AT76C50X_USB=m ++CONFIG_B43=m ++# CONFIG_B43_PHY_N is not set ++CONFIG_B43LEGACY=m ++CONFIG_BRCMFMAC=m ++CONFIG_BRCMFMAC_USB=y ++CONFIG_HOSTAP=m ++CONFIG_P54_COMMON=m ++CONFIG_P54_USB=m ++CONFIG_LIBERTAS=m ++CONFIG_LIBERTAS_USB=m ++CONFIG_LIBERTAS_SDIO=m ++CONFIG_LIBERTAS_THINFIRM=m ++CONFIG_LIBERTAS_THINFIRM_USB=m ++CONFIG_MWIFIEX=m ++CONFIG_MWIFIEX_SDIO=m ++CONFIG_MT7601U=m ++CONFIG_RT2X00=m ++CONFIG_RT2500USB=m ++CONFIG_RT73USB=m ++CONFIG_RT2800USB=m ++CONFIG_RT2800USB_RT3573=y ++CONFIG_RT2800USB_RT53XX=y ++CONFIG_RT2800USB_RT55XX=y ++CONFIG_RT2800USB_UNKNOWN=y ++CONFIG_RTL8187=m ++CONFIG_RTL8192CU=m ++CONFIG_USB_ZD1201=m ++CONFIG_ZD1211RW=m ++CONFIG_MAC80211_HWSIM=m ++CONFIG_USB_NET_RNDIS_WLAN=m ++CONFIG_WIMAX_I2400M_USB=m ++CONFIG_IEEE802154_AT86RF230=m ++CONFIG_IEEE802154_MRF24J40=m ++CONFIG_IEEE802154_CC2520=m ++CONFIG_INPUT_POLLDEV=m ++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set ++CONFIG_INPUT_JOYDEV=m ++CONFIG_INPUT_EVDEV=m ++# CONFIG_KEYBOARD_ATKBD is not set ++CONFIG_KEYBOARD_GPIO=m ++# CONFIG_INPUT_MOUSE is not set ++CONFIG_INPUT_JOYSTICK=y ++CONFIG_JOYSTICK_IFORCE=m ++CONFIG_JOYSTICK_IFORCE_USB=y ++CONFIG_JOYSTICK_XPAD=m ++CONFIG_JOYSTICK_XPAD_FF=y ++CONFIG_JOYSTICK_XPAD_LEDS=y ++CONFIG_JOYSTICK_RPISENSE=m ++CONFIG_INPUT_TOUCHSCREEN=y ++CONFIG_TOUCHSCREEN_ADS7846=m ++CONFIG_TOUCHSCREEN_EGALAX=m ++CONFIG_TOUCHSCREEN_FT6236=m ++CONFIG_TOUCHSCREEN_RPI_FT5406=m ++CONFIG_TOUCHSCREEN_USB_COMPOSITE=m ++CONFIG_TOUCHSCREEN_STMPE=m ++CONFIG_INPUT_MISC=y ++CONFIG_INPUT_AD714X=m ++CONFIG_INPUT_ATI_REMOTE2=m ++CONFIG_INPUT_KEYSPAN_REMOTE=m ++CONFIG_INPUT_POWERMATE=m ++CONFIG_INPUT_YEALINK=m ++CONFIG_INPUT_CM109=m ++CONFIG_INPUT_UINPUT=m ++CONFIG_INPUT_GPIO_ROTARY_ENCODER=m ++CONFIG_INPUT_ADXL34X=m ++CONFIG_INPUT_CMA3000=m ++CONFIG_SERIO=m ++CONFIG_SERIO_RAW=m ++CONFIG_GAMEPORT=m ++CONFIG_GAMEPORT_NS558=m ++CONFIG_GAMEPORT_L4=m ++CONFIG_BRCM_CHAR_DRIVERS=y ++CONFIG_BCM_VC_CMA=y ++CONFIG_BCM_VCIO=y ++CONFIG_BCM_VC_SM=y ++# CONFIG_LEGACY_PTYS is not set ++# CONFIG_DEVKMEM is not set ++CONFIG_SERIAL_8250=y ++# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set ++CONFIG_SERIAL_8250_CONSOLE=y ++# CONFIG_SERIAL_8250_DMA is not set ++CONFIG_SERIAL_8250_NR_UARTS=1 ++CONFIG_SERIAL_8250_RUNTIME_UARTS=0 ++CONFIG_SERIAL_8250_EXTENDED=y ++CONFIG_SERIAL_8250_SHARE_IRQ=y ++CONFIG_SERIAL_8250_BCM2835AUX=y ++CONFIG_SERIAL_OF_PLATFORM=y ++CONFIG_SERIAL_AMBA_PL011=y ++CONFIG_SERIAL_AMBA_PL011_CONSOLE=y ++CONFIG_SERIAL_SC16IS7XX=m ++CONFIG_SERIAL_SC16IS7XX_SPI=y ++CONFIG_TTY_PRINTK=y ++CONFIG_HW_RANDOM=y ++CONFIG_RAW_DRIVER=y ++CONFIG_I2C=y ++CONFIG_I2C_CHARDEV=m ++CONFIG_I2C_MUX_PCA954x=m ++CONFIG_I2C_BCM2708=m ++CONFIG_I2C_GPIO=m ++CONFIG_SPI=y ++CONFIG_SPI_BCM2835=m ++CONFIG_SPI_BCM2835AUX=m ++CONFIG_SPI_SPIDEV=y ++CONFIG_PPS=m ++CONFIG_PPS_CLIENT_LDISC=m ++CONFIG_PPS_CLIENT_GPIO=m ++CONFIG_GPIO_SYSFS=y ++CONFIG_GPIO_BCM_VIRT=y ++CONFIG_GPIO_ARIZONA=m ++CONFIG_GPIO_STMPE=y ++CONFIG_GPIO_MCP23S08=m ++CONFIG_W1=m ++CONFIG_W1_MASTER_DS2490=m ++CONFIG_W1_MASTER_DS2482=m ++CONFIG_W1_MASTER_DS1WM=m ++CONFIG_W1_MASTER_GPIO=m ++CONFIG_W1_SLAVE_THERM=m ++CONFIG_W1_SLAVE_SMEM=m ++CONFIG_W1_SLAVE_DS2408=m ++CONFIG_W1_SLAVE_DS2413=m ++CONFIG_W1_SLAVE_DS2406=m ++CONFIG_W1_SLAVE_DS2423=m ++CONFIG_W1_SLAVE_DS2431=m ++CONFIG_W1_SLAVE_DS2433=m ++CONFIG_W1_SLAVE_DS2760=m ++CONFIG_W1_SLAVE_DS2780=m ++CONFIG_W1_SLAVE_DS2781=m ++CONFIG_W1_SLAVE_DS28E04=m ++CONFIG_W1_SLAVE_BQ27000=m ++CONFIG_BATTERY_DS2760=m ++CONFIG_POWER_RESET=y ++CONFIG_POWER_RESET_GPIO=y ++CONFIG_HWMON=m ++CONFIG_SENSORS_LM75=m ++CONFIG_SENSORS_SHT21=m ++CONFIG_SENSORS_SHTC1=m ++CONFIG_SENSORS_INA2XX=m ++CONFIG_THERMAL=y ++CONFIG_THERMAL_BCM2835=y ++CONFIG_WATCHDOG=y ++CONFIG_BCM2835_WDT=m ++CONFIG_UCB1400_CORE=m ++CONFIG_MFD_STMPE=y ++CONFIG_STMPE_SPI=y ++CONFIG_MFD_ARIZONA_I2C=m ++CONFIG_MFD_ARIZONA_SPI=m ++CONFIG_MFD_WM5102=y ++CONFIG_MEDIA_SUPPORT=m ++CONFIG_MEDIA_CAMERA_SUPPORT=y ++CONFIG_MEDIA_ANALOG_TV_SUPPORT=y ++CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y ++CONFIG_MEDIA_RADIO_SUPPORT=y ++CONFIG_MEDIA_RC_SUPPORT=y ++CONFIG_MEDIA_CONTROLLER=y ++CONFIG_LIRC=m ++CONFIG_RC_DEVICES=y ++CONFIG_RC_ATI_REMOTE=m ++CONFIG_IR_IMON=m ++CONFIG_IR_MCEUSB=m ++CONFIG_IR_REDRAT3=m ++CONFIG_IR_STREAMZAP=m ++CONFIG_IR_IGUANA=m ++CONFIG_IR_TTUSBIR=m ++CONFIG_RC_LOOPBACK=m ++CONFIG_IR_GPIO_CIR=m ++CONFIG_MEDIA_USB_SUPPORT=y ++CONFIG_USB_VIDEO_CLASS=m ++CONFIG_USB_M5602=m ++CONFIG_USB_STV06XX=m ++CONFIG_USB_GL860=m ++CONFIG_USB_GSPCA_BENQ=m ++CONFIG_USB_GSPCA_CONEX=m ++CONFIG_USB_GSPCA_CPIA1=m ++CONFIG_USB_GSPCA_DTCS033=m ++CONFIG_USB_GSPCA_ETOMS=m ++CONFIG_USB_GSPCA_FINEPIX=m ++CONFIG_USB_GSPCA_JEILINJ=m ++CONFIG_USB_GSPCA_JL2005BCD=m ++CONFIG_USB_GSPCA_KINECT=m ++CONFIG_USB_GSPCA_KONICA=m ++CONFIG_USB_GSPCA_MARS=m ++CONFIG_USB_GSPCA_MR97310A=m ++CONFIG_USB_GSPCA_NW80X=m ++CONFIG_USB_GSPCA_OV519=m ++CONFIG_USB_GSPCA_OV534=m ++CONFIG_USB_GSPCA_OV534_9=m ++CONFIG_USB_GSPCA_PAC207=m ++CONFIG_USB_GSPCA_PAC7302=m ++CONFIG_USB_GSPCA_PAC7311=m ++CONFIG_USB_GSPCA_SE401=m ++CONFIG_USB_GSPCA_SN9C2028=m ++CONFIG_USB_GSPCA_SN9C20X=m ++CONFIG_USB_GSPCA_SONIXB=m ++CONFIG_USB_GSPCA_SONIXJ=m ++CONFIG_USB_GSPCA_SPCA500=m ++CONFIG_USB_GSPCA_SPCA501=m ++CONFIG_USB_GSPCA_SPCA505=m ++CONFIG_USB_GSPCA_SPCA506=m ++CONFIG_USB_GSPCA_SPCA508=m ++CONFIG_USB_GSPCA_SPCA561=m ++CONFIG_USB_GSPCA_SPCA1528=m ++CONFIG_USB_GSPCA_SQ905=m ++CONFIG_USB_GSPCA_SQ905C=m ++CONFIG_USB_GSPCA_SQ930X=m ++CONFIG_USB_GSPCA_STK014=m ++CONFIG_USB_GSPCA_STK1135=m ++CONFIG_USB_GSPCA_STV0680=m ++CONFIG_USB_GSPCA_SUNPLUS=m ++CONFIG_USB_GSPCA_T613=m ++CONFIG_USB_GSPCA_TOPRO=m ++CONFIG_USB_GSPCA_TV8532=m ++CONFIG_USB_GSPCA_VC032X=m ++CONFIG_USB_GSPCA_VICAM=m ++CONFIG_USB_GSPCA_XIRLINK_CIT=m ++CONFIG_USB_GSPCA_ZC3XX=m ++CONFIG_USB_PWC=m ++CONFIG_VIDEO_CPIA2=m ++CONFIG_USB_ZR364XX=m ++CONFIG_USB_STKWEBCAM=m ++CONFIG_USB_S2255=m ++CONFIG_VIDEO_USBTV=m ++CONFIG_VIDEO_PVRUSB2=m ++CONFIG_VIDEO_HDPVR=m ++CONFIG_VIDEO_USBVISION=m ++CONFIG_VIDEO_STK1160_COMMON=m ++CONFIG_VIDEO_STK1160_AC97=y ++CONFIG_VIDEO_GO7007=m ++CONFIG_VIDEO_GO7007_USB=m ++CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m ++CONFIG_VIDEO_AU0828=m ++CONFIG_VIDEO_AU0828_RC=y ++CONFIG_VIDEO_CX231XX=m ++CONFIG_VIDEO_CX231XX_ALSA=m ++CONFIG_VIDEO_CX231XX_DVB=m ++CONFIG_VIDEO_TM6000=m ++CONFIG_VIDEO_TM6000_ALSA=m ++CONFIG_VIDEO_TM6000_DVB=m ++CONFIG_DVB_USB=m ++CONFIG_DVB_USB_A800=m ++CONFIG_DVB_USB_DIBUSB_MB=m ++CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y ++CONFIG_DVB_USB_DIBUSB_MC=m ++CONFIG_DVB_USB_DIB0700=m ++CONFIG_DVB_USB_UMT_010=m ++CONFIG_DVB_USB_CXUSB=m ++CONFIG_DVB_USB_M920X=m ++CONFIG_DVB_USB_DIGITV=m ++CONFIG_DVB_USB_VP7045=m ++CONFIG_DVB_USB_VP702X=m ++CONFIG_DVB_USB_GP8PSK=m ++CONFIG_DVB_USB_NOVA_T_USB2=m ++CONFIG_DVB_USB_TTUSB2=m ++CONFIG_DVB_USB_DTT200U=m ++CONFIG_DVB_USB_OPERA1=m ++CONFIG_DVB_USB_AF9005=m ++CONFIG_DVB_USB_AF9005_REMOTE=m ++CONFIG_DVB_USB_PCTV452E=m ++CONFIG_DVB_USB_DW2102=m ++CONFIG_DVB_USB_CINERGY_T2=m ++CONFIG_DVB_USB_DTV5100=m ++CONFIG_DVB_USB_FRIIO=m ++CONFIG_DVB_USB_AZ6027=m ++CONFIG_DVB_USB_TECHNISAT_USB2=m ++CONFIG_DVB_USB_V2=m ++CONFIG_DVB_USB_AF9015=m ++CONFIG_DVB_USB_AF9035=m ++CONFIG_DVB_USB_ANYSEE=m ++CONFIG_DVB_USB_AU6610=m ++CONFIG_DVB_USB_AZ6007=m ++CONFIG_DVB_USB_CE6230=m ++CONFIG_DVB_USB_EC168=m ++CONFIG_DVB_USB_GL861=m ++CONFIG_DVB_USB_LME2510=m ++CONFIG_DVB_USB_MXL111SF=m ++CONFIG_DVB_USB_RTL28XXU=m ++CONFIG_DVB_USB_DVBSKY=m ++CONFIG_SMS_USB_DRV=m ++CONFIG_DVB_B2C2_FLEXCOP_USB=m ++CONFIG_DVB_AS102=m ++CONFIG_VIDEO_EM28XX=m ++CONFIG_VIDEO_EM28XX_V4L2=m ++CONFIG_VIDEO_EM28XX_ALSA=m ++CONFIG_VIDEO_EM28XX_DVB=m ++CONFIG_V4L_PLATFORM_DRIVERS=y ++CONFIG_VIDEO_BCM2835=y ++CONFIG_VIDEO_BCM2835_MMAL=m ++CONFIG_RADIO_SI470X=y ++CONFIG_USB_SI470X=m ++CONFIG_I2C_SI470X=m ++CONFIG_RADIO_SI4713=m ++CONFIG_I2C_SI4713=m ++CONFIG_USB_MR800=m ++CONFIG_USB_DSBR=m ++CONFIG_RADIO_SHARK=m ++CONFIG_RADIO_SHARK2=m ++CONFIG_USB_KEENE=m ++CONFIG_USB_MA901=m ++CONFIG_RADIO_TEA5764=m ++CONFIG_RADIO_SAA7706H=m ++CONFIG_RADIO_TEF6862=m ++CONFIG_RADIO_WL1273=m ++CONFIG_RADIO_WL128X=m ++# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set ++CONFIG_VIDEO_UDA1342=m ++CONFIG_VIDEO_SONY_BTF_MPX=m ++CONFIG_VIDEO_TVP5150=m ++CONFIG_VIDEO_TW2804=m ++CONFIG_VIDEO_TW9903=m ++CONFIG_VIDEO_TW9906=m ++CONFIG_VIDEO_OV7640=m ++CONFIG_VIDEO_MT9V011=m ++CONFIG_DRM=m ++CONFIG_DRM_LOAD_EDID_FIRMWARE=y ++CONFIG_DRM_UDL=m ++CONFIG_DRM_VC4=m ++CONFIG_FB=y ++CONFIG_FB_BCM2708=y ++CONFIG_FB_UDL=m ++CONFIG_FB_SSD1307=m ++CONFIG_FB_RPISENSE=m ++# CONFIG_BACKLIGHT_GENERIC is not set ++CONFIG_BACKLIGHT_RPI=m ++CONFIG_BACKLIGHT_GPIO=m ++CONFIG_FRAMEBUFFER_CONSOLE=y ++CONFIG_LOGO=y ++# CONFIG_LOGO_LINUX_MONO is not set ++# CONFIG_LOGO_LINUX_VGA16 is not set ++CONFIG_SOUND=y ++CONFIG_SND=m ++CONFIG_SND_SEQUENCER=m ++CONFIG_SND_SEQ_DUMMY=m ++CONFIG_SND_MIXER_OSS=m ++CONFIG_SND_PCM_OSS=m ++CONFIG_SND_SEQUENCER_OSS=y ++CONFIG_SND_HRTIMER=m ++CONFIG_SND_DUMMY=m ++CONFIG_SND_ALOOP=m ++CONFIG_SND_VIRMIDI=m ++CONFIG_SND_MTPAV=m ++CONFIG_SND_SERIAL_U16550=m ++CONFIG_SND_MPU401=m ++CONFIG_SND_BCM2835=m ++CONFIG_SND_USB_AUDIO=m ++CONFIG_SND_USB_UA101=m ++CONFIG_SND_USB_CAIAQ=m ++CONFIG_SND_USB_CAIAQ_INPUT=y ++CONFIG_SND_USB_6FIRE=m ++CONFIG_SND_SOC=m ++CONFIG_SND_BCM2835_SOC_I2S=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m ++CONFIG_SND_BCM2708_SOC_RPI_DAC=m ++CONFIG_SND_BCM2708_SOC_RPI_PROTO=m ++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m ++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m ++CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m ++CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m ++CONFIG_SND_BCM2708_SOC_RASPIDAC3=m ++CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m ++CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m ++CONFIG_SND_DIGIDAC1_SOUNDCARD=m ++CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m ++CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC=m ++CONFIG_SND_SOC_ADAU1701=m ++CONFIG_SND_SOC_WM8804_I2C=m ++CONFIG_SND_SIMPLE_CARD=m ++CONFIG_SOUND_PRIME=m ++CONFIG_HIDRAW=y ++CONFIG_UHID=m ++CONFIG_HID_A4TECH=m ++CONFIG_HID_ACRUX=m ++CONFIG_HID_APPLE=m ++CONFIG_HID_BELKIN=m ++CONFIG_HID_BETOP_FF=m ++CONFIG_HID_CHERRY=m ++CONFIG_HID_CHICONY=m ++CONFIG_HID_CYPRESS=m ++CONFIG_HID_DRAGONRISE=m ++CONFIG_HID_EMS_FF=m ++CONFIG_HID_ELECOM=m ++CONFIG_HID_ELO=m ++CONFIG_HID_EZKEY=m ++CONFIG_HID_GEMBIRD=m ++CONFIG_HID_HOLTEK=m ++CONFIG_HID_KEYTOUCH=m ++CONFIG_HID_KYE=m ++CONFIG_HID_UCLOGIC=m ++CONFIG_HID_WALTOP=m ++CONFIG_HID_GYRATION=m ++CONFIG_HID_TWINHAN=m ++CONFIG_HID_KENSINGTON=m ++CONFIG_HID_LCPOWER=m ++CONFIG_HID_LOGITECH=m ++CONFIG_HID_LOGITECH_DJ=m ++CONFIG_LOGITECH_FF=y ++CONFIG_LOGIRUMBLEPAD2_FF=y ++CONFIG_LOGIG940_FF=y ++CONFIG_HID_MAGICMOUSE=m ++CONFIG_HID_MICROSOFT=m ++CONFIG_HID_MONTEREY=m ++CONFIG_HID_MULTITOUCH=m ++CONFIG_HID_NTRIG=m ++CONFIG_HID_ORTEK=m ++CONFIG_HID_PANTHERLORD=m ++CONFIG_HID_PETALYNX=m ++CONFIG_HID_PICOLCD=m ++CONFIG_HID_ROCCAT=m ++CONFIG_HID_SAMSUNG=m ++CONFIG_HID_SONY=m ++CONFIG_HID_SPEEDLINK=m ++CONFIG_HID_SUNPLUS=m ++CONFIG_HID_GREENASIA=m ++CONFIG_HID_SMARTJOYPLUS=m ++CONFIG_HID_TOPSEED=m ++CONFIG_HID_THINGM=m ++CONFIG_HID_THRUSTMASTER=m ++CONFIG_HID_WACOM=m ++CONFIG_HID_WIIMOTE=m ++CONFIG_HID_XINMO=m ++CONFIG_HID_ZEROPLUS=m ++CONFIG_HID_ZYDACRON=m ++CONFIG_HID_PID=y ++CONFIG_USB_HIDDEV=y ++CONFIG_USB=y ++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y ++CONFIG_USB_MON=m ++CONFIG_USB_DWCOTG=y ++CONFIG_USB_PRINTER=m ++CONFIG_USB_STORAGE=y ++CONFIG_USB_STORAGE_REALTEK=m ++CONFIG_USB_STORAGE_DATAFAB=m ++CONFIG_USB_STORAGE_FREECOM=m ++CONFIG_USB_STORAGE_ISD200=m ++CONFIG_USB_STORAGE_USBAT=m ++CONFIG_USB_STORAGE_SDDR09=m ++CONFIG_USB_STORAGE_SDDR55=m ++CONFIG_USB_STORAGE_JUMPSHOT=m ++CONFIG_USB_STORAGE_ALAUDA=m ++CONFIG_USB_STORAGE_ONETOUCH=m ++CONFIG_USB_STORAGE_KARMA=m ++CONFIG_USB_STORAGE_CYPRESS_ATACB=m ++CONFIG_USB_STORAGE_ENE_UB6250=m ++CONFIG_USB_MDC800=m ++CONFIG_USB_MICROTEK=m ++CONFIG_USBIP_CORE=m ++CONFIG_USBIP_VHCI_HCD=m ++CONFIG_USBIP_HOST=m ++CONFIG_USB_SERIAL=m ++CONFIG_USB_SERIAL_GENERIC=y ++CONFIG_USB_SERIAL_AIRCABLE=m ++CONFIG_USB_SERIAL_ARK3116=m ++CONFIG_USB_SERIAL_BELKIN=m ++CONFIG_USB_SERIAL_CH341=m ++CONFIG_USB_SERIAL_WHITEHEAT=m ++CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m ++CONFIG_USB_SERIAL_CP210X=m ++CONFIG_USB_SERIAL_CYPRESS_M8=m ++CONFIG_USB_SERIAL_EMPEG=m ++CONFIG_USB_SERIAL_FTDI_SIO=m ++CONFIG_USB_SERIAL_VISOR=m ++CONFIG_USB_SERIAL_IPAQ=m ++CONFIG_USB_SERIAL_IR=m ++CONFIG_USB_SERIAL_EDGEPORT=m ++CONFIG_USB_SERIAL_EDGEPORT_TI=m ++CONFIG_USB_SERIAL_F81232=m ++CONFIG_USB_SERIAL_GARMIN=m ++CONFIG_USB_SERIAL_IPW=m ++CONFIG_USB_SERIAL_IUU=m ++CONFIG_USB_SERIAL_KEYSPAN_PDA=m ++CONFIG_USB_SERIAL_KEYSPAN=m ++CONFIG_USB_SERIAL_KLSI=m ++CONFIG_USB_SERIAL_KOBIL_SCT=m ++CONFIG_USB_SERIAL_MCT_U232=m ++CONFIG_USB_SERIAL_METRO=m ++CONFIG_USB_SERIAL_MOS7720=m ++CONFIG_USB_SERIAL_MOS7840=m ++CONFIG_USB_SERIAL_NAVMAN=m ++CONFIG_USB_SERIAL_PL2303=m ++CONFIG_USB_SERIAL_OTI6858=m ++CONFIG_USB_SERIAL_QCAUX=m ++CONFIG_USB_SERIAL_QUALCOMM=m ++CONFIG_USB_SERIAL_SPCP8X5=m ++CONFIG_USB_SERIAL_SAFE=m ++CONFIG_USB_SERIAL_SIERRAWIRELESS=m ++CONFIG_USB_SERIAL_SYMBOL=m ++CONFIG_USB_SERIAL_TI=m ++CONFIG_USB_SERIAL_CYBERJACK=m ++CONFIG_USB_SERIAL_XIRCOM=m ++CONFIG_USB_SERIAL_OPTION=m ++CONFIG_USB_SERIAL_OMNINET=m ++CONFIG_USB_SERIAL_OPTICON=m ++CONFIG_USB_SERIAL_XSENS_MT=m ++CONFIG_USB_SERIAL_WISHBONE=m ++CONFIG_USB_SERIAL_SSU100=m ++CONFIG_USB_SERIAL_QT2=m ++CONFIG_USB_SERIAL_DEBUG=m ++CONFIG_USB_EMI62=m ++CONFIG_USB_EMI26=m ++CONFIG_USB_ADUTUX=m ++CONFIG_USB_SEVSEG=m ++CONFIG_USB_RIO500=m ++CONFIG_USB_LEGOTOWER=m ++CONFIG_USB_LCD=m ++CONFIG_USB_CYPRESS_CY7C63=m ++CONFIG_USB_CYTHERM=m ++CONFIG_USB_IDMOUSE=m ++CONFIG_USB_FTDI_ELAN=m ++CONFIG_USB_APPLEDISPLAY=m ++CONFIG_USB_LD=m ++CONFIG_USB_TRANCEVIBRATOR=m ++CONFIG_USB_IOWARRIOR=m ++CONFIG_USB_TEST=m ++CONFIG_USB_ISIGHTFW=m ++CONFIG_USB_YUREX=m ++CONFIG_USB_ATM=m ++CONFIG_USB_SPEEDTOUCH=m ++CONFIG_USB_CXACRU=m ++CONFIG_USB_UEAGLEATM=m ++CONFIG_USB_XUSBATM=m ++CONFIG_MMC=y ++CONFIG_MMC_BLOCK_MINORS=32 ++CONFIG_MMC_BCM2835=y ++CONFIG_MMC_BCM2835_DMA=y ++CONFIG_MMC_BCM2835_SDHOST=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_PLTFM=y ++CONFIG_MMC_SPI=m ++CONFIG_LEDS_CLASS=y ++CONFIG_LEDS_GPIO=y ++CONFIG_LEDS_TRIGGER_TIMER=y ++CONFIG_LEDS_TRIGGER_ONESHOT=y ++CONFIG_LEDS_TRIGGER_HEARTBEAT=y ++CONFIG_LEDS_TRIGGER_BACKLIGHT=y ++CONFIG_LEDS_TRIGGER_CPU=y ++CONFIG_LEDS_TRIGGER_GPIO=y ++CONFIG_LEDS_TRIGGER_DEFAULT_ON=y ++CONFIG_LEDS_TRIGGER_TRANSIENT=m ++CONFIG_LEDS_TRIGGER_CAMERA=m ++CONFIG_LEDS_TRIGGER_INPUT=y ++CONFIG_LEDS_TRIGGER_PANIC=y ++CONFIG_RTC_CLASS=y ++# CONFIG_RTC_HCTOSYS is not set ++CONFIG_RTC_DRV_DS1307=m ++CONFIG_RTC_DRV_DS1374=m ++CONFIG_RTC_DRV_DS1672=m ++CONFIG_RTC_DRV_MAX6900=m ++CONFIG_RTC_DRV_RS5C372=m ++CONFIG_RTC_DRV_ISL1208=m ++CONFIG_RTC_DRV_ISL12022=m ++CONFIG_RTC_DRV_ISL12057=m ++CONFIG_RTC_DRV_X1205=m ++CONFIG_RTC_DRV_PCF8523=m ++CONFIG_RTC_DRV_PCF8563=m ++CONFIG_RTC_DRV_PCF8583=m ++CONFIG_RTC_DRV_M41T80=m ++CONFIG_RTC_DRV_BQ32K=m ++CONFIG_RTC_DRV_S35390A=m ++CONFIG_RTC_DRV_FM3130=m ++CONFIG_RTC_DRV_RX8581=m ++CONFIG_RTC_DRV_RX8025=m ++CONFIG_RTC_DRV_EM3027=m ++CONFIG_RTC_DRV_M41T93=m ++CONFIG_RTC_DRV_M41T94=m ++CONFIG_RTC_DRV_DS1302=m ++CONFIG_RTC_DRV_DS1305=m ++CONFIG_RTC_DRV_DS1390=m ++CONFIG_RTC_DRV_R9701=m ++CONFIG_RTC_DRV_RX4581=m ++CONFIG_RTC_DRV_RS5C348=m ++CONFIG_RTC_DRV_MAX6902=m ++CONFIG_RTC_DRV_PCF2123=m ++CONFIG_RTC_DRV_DS3232=m ++CONFIG_RTC_DRV_PCF2127=m ++CONFIG_RTC_DRV_RV3029C2=m ++CONFIG_DMADEVICES=y ++CONFIG_DMA_BCM2835=y ++CONFIG_DMA_BCM2708=y ++CONFIG_UIO=m ++CONFIG_UIO_PDRV_GENIRQ=m ++CONFIG_STAGING=y ++CONFIG_PRISM2_USB=m ++CONFIG_R8712U=m ++CONFIG_R8188EU=m ++CONFIG_R8723AU=m ++CONFIG_VT6656=m ++CONFIG_SPEAKUP=m ++CONFIG_SPEAKUP_SYNTH_SOFT=m ++CONFIG_STAGING_MEDIA=y ++CONFIG_LIRC_STAGING=y ++CONFIG_LIRC_IMON=m ++CONFIG_LIRC_RPI=m ++CONFIG_LIRC_SASEM=m ++CONFIG_LIRC_SERIAL=m ++CONFIG_FB_TFT=m ++CONFIG_FB_TFT_AGM1264K_FL=m ++CONFIG_FB_TFT_BD663474=m ++CONFIG_FB_TFT_HX8340BN=m ++CONFIG_FB_TFT_HX8347D=m ++CONFIG_FB_TFT_HX8353D=m ++CONFIG_FB_TFT_ILI9163=m ++CONFIG_FB_TFT_ILI9320=m ++CONFIG_FB_TFT_ILI9325=m ++CONFIG_FB_TFT_ILI9340=m ++CONFIG_FB_TFT_ILI9341=m ++CONFIG_FB_TFT_ILI9481=m ++CONFIG_FB_TFT_ILI9486=m ++CONFIG_FB_TFT_PCD8544=m ++CONFIG_FB_TFT_RA8875=m ++CONFIG_FB_TFT_S6D02A1=m ++CONFIG_FB_TFT_S6D1121=m ++CONFIG_FB_TFT_SSD1289=m ++CONFIG_FB_TFT_SSD1306=m ++CONFIG_FB_TFT_SSD1331=m ++CONFIG_FB_TFT_SSD1351=m ++CONFIG_FB_TFT_ST7735R=m ++CONFIG_FB_TFT_TINYLCD=m ++CONFIG_FB_TFT_TLS8204=m ++CONFIG_FB_TFT_UC1701=m ++CONFIG_FB_TFT_UPD161704=m ++CONFIG_FB_TFT_WATTEROTT=m ++CONFIG_FB_FLEX=m ++CONFIG_FB_TFT_FBTFT_DEVICE=m ++CONFIG_MAILBOX=y ++CONFIG_BCM2835_MBOX=y ++# CONFIG_IOMMU_SUPPORT is not set ++CONFIG_RASPBERRYPI_POWER=y ++CONFIG_EXTCON=m ++CONFIG_EXTCON_ARIZONA=m ++CONFIG_IIO=m ++CONFIG_IIO_BUFFER=y ++CONFIG_IIO_BUFFER_CB=m ++CONFIG_IIO_KFIFO_BUF=m ++CONFIG_MCP320X=m ++CONFIG_MCP3422=m ++CONFIG_DHT11=m ++CONFIG_PWM_BCM2835=m ++CONFIG_PWM_PCA9685=m ++CONFIG_RASPBERRYPI_FIRMWARE=y ++CONFIG_EXT4_FS=y ++CONFIG_EXT4_FS_POSIX_ACL=y ++CONFIG_EXT4_FS_SECURITY=y ++CONFIG_REISERFS_FS=m ++CONFIG_REISERFS_FS_XATTR=y ++CONFIG_REISERFS_FS_POSIX_ACL=y ++CONFIG_REISERFS_FS_SECURITY=y ++CONFIG_JFS_FS=m ++CONFIG_JFS_POSIX_ACL=y ++CONFIG_JFS_SECURITY=y ++CONFIG_JFS_STATISTICS=y ++CONFIG_XFS_FS=m ++CONFIG_XFS_QUOTA=y ++CONFIG_XFS_POSIX_ACL=y ++CONFIG_XFS_RT=y ++CONFIG_GFS2_FS=m ++CONFIG_OCFS2_FS=m ++CONFIG_BTRFS_FS=m ++CONFIG_BTRFS_FS_POSIX_ACL=y ++CONFIG_NILFS2_FS=m ++CONFIG_F2FS_FS=y ++CONFIG_FANOTIFY=y ++CONFIG_QFMT_V1=m ++CONFIG_QFMT_V2=m ++CONFIG_AUTOFS4_FS=y ++CONFIG_FUSE_FS=m ++CONFIG_CUSE=m ++CONFIG_OVERLAY_FS=m ++CONFIG_FSCACHE=y ++CONFIG_FSCACHE_STATS=y ++CONFIG_FSCACHE_HISTOGRAM=y ++CONFIG_CACHEFILES=y ++CONFIG_ISO9660_FS=m ++CONFIG_JOLIET=y ++CONFIG_ZISOFS=y ++CONFIG_UDF_FS=m ++CONFIG_MSDOS_FS=y ++CONFIG_VFAT_FS=y ++CONFIG_FAT_DEFAULT_IOCHARSET="ascii" ++CONFIG_NTFS_FS=m ++CONFIG_NTFS_RW=y ++CONFIG_TMPFS=y ++CONFIG_TMPFS_POSIX_ACL=y ++CONFIG_ECRYPT_FS=m ++CONFIG_HFS_FS=m ++CONFIG_HFSPLUS_FS=m ++CONFIG_JFFS2_FS=m ++CONFIG_JFFS2_SUMMARY=y ++CONFIG_UBIFS_FS=m ++CONFIG_SQUASHFS=m ++CONFIG_SQUASHFS_XATTR=y ++CONFIG_SQUASHFS_LZO=y ++CONFIG_SQUASHFS_XZ=y ++CONFIG_NFS_FS=y ++CONFIG_NFS_V3_ACL=y ++CONFIG_NFS_V4=y ++CONFIG_NFS_SWAP=y ++CONFIG_ROOT_NFS=y ++CONFIG_NFS_FSCACHE=y ++CONFIG_NFSD=m ++CONFIG_NFSD_V3_ACL=y ++CONFIG_NFSD_V4=y ++CONFIG_CIFS=m ++CONFIG_CIFS_WEAK_PW_HASH=y ++CONFIG_CIFS_UPCALL=y ++CONFIG_CIFS_XATTR=y ++CONFIG_CIFS_POSIX=y ++CONFIG_CIFS_ACL=y ++CONFIG_CIFS_DFS_UPCALL=y ++CONFIG_CIFS_SMB2=y ++CONFIG_CIFS_FSCACHE=y ++CONFIG_9P_FS=m ++CONFIG_9P_FS_POSIX_ACL=y ++CONFIG_NLS_DEFAULT="utf8" ++CONFIG_NLS_CODEPAGE_437=y ++CONFIG_NLS_CODEPAGE_737=m ++CONFIG_NLS_CODEPAGE_775=m ++CONFIG_NLS_CODEPAGE_850=m ++CONFIG_NLS_CODEPAGE_852=m ++CONFIG_NLS_CODEPAGE_855=m ++CONFIG_NLS_CODEPAGE_857=m ++CONFIG_NLS_CODEPAGE_860=m ++CONFIG_NLS_CODEPAGE_861=m ++CONFIG_NLS_CODEPAGE_862=m ++CONFIG_NLS_CODEPAGE_863=m ++CONFIG_NLS_CODEPAGE_864=m ++CONFIG_NLS_CODEPAGE_865=m ++CONFIG_NLS_CODEPAGE_866=m ++CONFIG_NLS_CODEPAGE_869=m ++CONFIG_NLS_CODEPAGE_936=m ++CONFIG_NLS_CODEPAGE_950=m ++CONFIG_NLS_CODEPAGE_932=m ++CONFIG_NLS_CODEPAGE_949=m ++CONFIG_NLS_CODEPAGE_874=m ++CONFIG_NLS_ISO8859_8=m ++CONFIG_NLS_CODEPAGE_1250=m ++CONFIG_NLS_CODEPAGE_1251=m ++CONFIG_NLS_ASCII=y ++CONFIG_NLS_ISO8859_1=m ++CONFIG_NLS_ISO8859_2=m ++CONFIG_NLS_ISO8859_3=m ++CONFIG_NLS_ISO8859_4=m ++CONFIG_NLS_ISO8859_5=m ++CONFIG_NLS_ISO8859_6=m ++CONFIG_NLS_ISO8859_7=m ++CONFIG_NLS_ISO8859_9=m ++CONFIG_NLS_ISO8859_13=m ++CONFIG_NLS_ISO8859_14=m ++CONFIG_NLS_ISO8859_15=m ++CONFIG_NLS_KOI8_R=m ++CONFIG_NLS_KOI8_U=m ++CONFIG_DLM=m ++CONFIG_PRINTK_TIME=y ++CONFIG_BOOT_PRINTK_DELAY=y ++CONFIG_DEBUG_MEMORY_INIT=y ++CONFIG_DETECT_HUNG_TASK=y ++CONFIG_TIMER_STATS=y ++CONFIG_IRQSOFF_TRACER=y ++CONFIG_SCHED_TRACER=y ++CONFIG_STACK_TRACER=y ++CONFIG_BLK_DEV_IO_TRACE=y ++# CONFIG_KPROBE_EVENT is not set ++CONFIG_FUNCTION_PROFILER=y ++CONFIG_KGDB=y ++CONFIG_KGDB_KDB=y ++CONFIG_KDB_KEYBOARD=y ++CONFIG_CRYPTO_USER=m ++CONFIG_CRYPTO_CBC=y ++CONFIG_CRYPTO_CTS=m ++CONFIG_CRYPTO_XTS=m ++CONFIG_CRYPTO_XCBC=m ++CONFIG_CRYPTO_TGR192=m ++CONFIG_CRYPTO_WP512=m ++CONFIG_CRYPTO_CAST5=m ++CONFIG_CRYPTO_DES=y ++CONFIG_CRYPTO_USER_API_SKCIPHER=m ++# CONFIG_CRYPTO_HW is not set ++CONFIG_ARM_CRYPTO=y ++CONFIG_CRYPTO_SHA1_ARM_NEON=m ++CONFIG_CRYPTO_AES_ARM_BS=m ++CONFIG_CRC_ITU_T=y ++CONFIG_LIBCRC32C=y +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +new file mode 100644 +index 0000000000000000000000000000000000000000..cfe21355f7d95326b292be1b018b988fa3ffe865 +--- /dev/null ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -0,0 +1,1303 @@ ++# CONFIG_ARM_PATCH_PHYS_VIRT is not set ++CONFIG_PHYS_OFFSET=0 ++# CONFIG_LOCALVERSION_AUTO is not set ++CONFIG_SYSVIPC=y ++CONFIG_POSIX_MQUEUE=y ++CONFIG_NO_HZ=y ++CONFIG_HIGH_RES_TIMERS=y ++CONFIG_BSD_PROCESS_ACCT=y ++CONFIG_BSD_PROCESS_ACCT_V3=y ++CONFIG_TASKSTATS=y ++CONFIG_TASK_DELAY_ACCT=y ++CONFIG_TASK_XACCT=y ++CONFIG_TASK_IO_ACCOUNTING=y ++CONFIG_IKCONFIG=m ++CONFIG_IKCONFIG_PROC=y ++CONFIG_NMI_LOG_BUF_SHIFT=12 ++CONFIG_MEMCG=y ++CONFIG_BLK_CGROUP=y ++CONFIG_CGROUP_FREEZER=y ++CONFIG_CPUSETS=y ++CONFIG_CGROUP_DEVICE=y ++CONFIG_CGROUP_CPUACCT=y ++CONFIG_NAMESPACES=y ++CONFIG_USER_NS=y ++CONFIG_SCHED_AUTOGROUP=y ++CONFIG_BLK_DEV_INITRD=y ++CONFIG_EMBEDDED=y ++# CONFIG_COMPAT_BRK is not set ++CONFIG_PROFILING=y ++CONFIG_OPROFILE=m ++CONFIG_KPROBES=y ++CONFIG_JUMP_LABEL=y ++CONFIG_MODULES=y ++CONFIG_MODULE_UNLOAD=y ++CONFIG_MODVERSIONS=y ++CONFIG_MODULE_SRCVERSION_ALL=y ++CONFIG_BLK_DEV_THROTTLING=y ++CONFIG_PARTITION_ADVANCED=y ++CONFIG_MAC_PARTITION=y ++CONFIG_CFQ_GROUP_IOSCHED=y ++CONFIG_ARCH_BCM2708=y ++CONFIG_PREEMPT_VOLUNTARY=y ++CONFIG_AEABI=y ++CONFIG_OABI_COMPAT=y ++# CONFIG_CPU_SW_DOMAIN_PAN is not set ++CONFIG_CLEANCACHE=y ++CONFIG_FRONTSWAP=y ++CONFIG_CMA=y ++CONFIG_ZSMALLOC=m ++CONFIG_PGTABLE_MAPPING=y ++CONFIG_UACCESS_WITH_MEMCPY=y ++CONFIG_SECCOMP=y ++# CONFIG_ATAGS is not set ++CONFIG_ZBOOT_ROM_TEXT=0x0 ++CONFIG_ZBOOT_ROM_BSS=0x0 ++CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" ++CONFIG_CPU_FREQ=y ++CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y ++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y ++CONFIG_CPU_FREQ_GOV_USERSPACE=y ++CONFIG_CPU_FREQ_GOV_ONDEMAND=y ++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y ++CONFIG_VFP=y ++CONFIG_BINFMT_MISC=m ++# CONFIG_SUSPEND is not set ++CONFIG_PM=y ++CONFIG_NET=y ++CONFIG_PACKET=y ++CONFIG_UNIX=y ++CONFIG_XFRM_USER=y ++CONFIG_NET_KEY=m ++CONFIG_INET=y ++CONFIG_IP_MULTICAST=y ++CONFIG_IP_ADVANCED_ROUTER=y ++CONFIG_IP_MULTIPLE_TABLES=y ++CONFIG_IP_ROUTE_MULTIPATH=y ++CONFIG_IP_ROUTE_VERBOSE=y ++CONFIG_IP_PNP=y ++CONFIG_IP_PNP_DHCP=y ++CONFIG_IP_PNP_RARP=y ++CONFIG_NET_IPIP=m ++CONFIG_NET_IPGRE_DEMUX=m ++CONFIG_NET_IPGRE=m ++CONFIG_IP_MROUTE=y ++CONFIG_IP_MROUTE_MULTIPLE_TABLES=y ++CONFIG_IP_PIMSM_V1=y ++CONFIG_IP_PIMSM_V2=y ++CONFIG_SYN_COOKIES=y ++CONFIG_INET_AH=m ++CONFIG_INET_ESP=m ++CONFIG_INET_IPCOMP=m ++CONFIG_INET_XFRM_MODE_TRANSPORT=m ++CONFIG_INET_XFRM_MODE_TUNNEL=m ++CONFIG_INET_XFRM_MODE_BEET=m ++CONFIG_INET_DIAG=m ++CONFIG_IPV6=m ++CONFIG_IPV6_ROUTER_PREF=y ++CONFIG_INET6_AH=m ++CONFIG_INET6_ESP=m ++CONFIG_INET6_IPCOMP=m ++CONFIG_IPV6_TUNNEL=m ++CONFIG_IPV6_MULTIPLE_TABLES=y ++CONFIG_IPV6_SUBTREES=y ++CONFIG_IPV6_MROUTE=y ++CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y ++CONFIG_IPV6_PIMSM_V2=y ++CONFIG_NETFILTER=y ++CONFIG_NF_CONNTRACK=m ++CONFIG_NF_CONNTRACK_ZONES=y ++CONFIG_NF_CONNTRACK_EVENTS=y ++CONFIG_NF_CONNTRACK_TIMESTAMP=y ++CONFIG_NF_CT_PROTO_DCCP=m ++CONFIG_NF_CT_PROTO_UDPLITE=m ++CONFIG_NF_CONNTRACK_AMANDA=m ++CONFIG_NF_CONNTRACK_FTP=m ++CONFIG_NF_CONNTRACK_H323=m ++CONFIG_NF_CONNTRACK_IRC=m ++CONFIG_NF_CONNTRACK_NETBIOS_NS=m ++CONFIG_NF_CONNTRACK_SNMP=m ++CONFIG_NF_CONNTRACK_PPTP=m ++CONFIG_NF_CONNTRACK_SANE=m ++CONFIG_NF_CONNTRACK_SIP=m ++CONFIG_NF_CONNTRACK_TFTP=m ++CONFIG_NF_CT_NETLINK=m ++CONFIG_NETFILTER_XT_SET=m ++CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m ++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m ++CONFIG_NETFILTER_XT_TARGET_CONNMARK=m ++CONFIG_NETFILTER_XT_TARGET_DSCP=m ++CONFIG_NETFILTER_XT_TARGET_HMARK=m ++CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m ++CONFIG_NETFILTER_XT_TARGET_LED=m ++CONFIG_NETFILTER_XT_TARGET_LOG=m ++CONFIG_NETFILTER_XT_TARGET_MARK=m ++CONFIG_NETFILTER_XT_TARGET_NFLOG=m ++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m ++CONFIG_NETFILTER_XT_TARGET_NOTRACK=m ++CONFIG_NETFILTER_XT_TARGET_TEE=m ++CONFIG_NETFILTER_XT_TARGET_TPROXY=m ++CONFIG_NETFILTER_XT_TARGET_TRACE=m ++CONFIG_NETFILTER_XT_TARGET_TCPMSS=m ++CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m ++CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m ++CONFIG_NETFILTER_XT_MATCH_BPF=m ++CONFIG_NETFILTER_XT_MATCH_CLUSTER=m ++CONFIG_NETFILTER_XT_MATCH_COMMENT=m ++CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m ++CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m ++CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_CONNMARK=m ++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m ++CONFIG_NETFILTER_XT_MATCH_CPU=m ++CONFIG_NETFILTER_XT_MATCH_DCCP=m ++CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m ++CONFIG_NETFILTER_XT_MATCH_DSCP=m ++CONFIG_NETFILTER_XT_MATCH_ESP=m ++CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_HELPER=m ++CONFIG_NETFILTER_XT_MATCH_IPRANGE=m ++CONFIG_NETFILTER_XT_MATCH_IPVS=m ++CONFIG_NETFILTER_XT_MATCH_LENGTH=m ++CONFIG_NETFILTER_XT_MATCH_LIMIT=m ++CONFIG_NETFILTER_XT_MATCH_MAC=m ++CONFIG_NETFILTER_XT_MATCH_MARK=m ++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m ++CONFIG_NETFILTER_XT_MATCH_NFACCT=m ++CONFIG_NETFILTER_XT_MATCH_OSF=m ++CONFIG_NETFILTER_XT_MATCH_OWNER=m ++CONFIG_NETFILTER_XT_MATCH_POLICY=m ++CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m ++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m ++CONFIG_NETFILTER_XT_MATCH_QUOTA=m ++CONFIG_NETFILTER_XT_MATCH_RATEEST=m ++CONFIG_NETFILTER_XT_MATCH_REALM=m ++CONFIG_NETFILTER_XT_MATCH_RECENT=m ++CONFIG_NETFILTER_XT_MATCH_SOCKET=m ++CONFIG_NETFILTER_XT_MATCH_STATE=m ++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m ++CONFIG_NETFILTER_XT_MATCH_STRING=m ++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m ++CONFIG_NETFILTER_XT_MATCH_TIME=m ++CONFIG_NETFILTER_XT_MATCH_U32=m ++CONFIG_IP_SET=m ++CONFIG_IP_SET_BITMAP_IP=m ++CONFIG_IP_SET_BITMAP_IPMAC=m ++CONFIG_IP_SET_BITMAP_PORT=m ++CONFIG_IP_SET_HASH_IP=m ++CONFIG_IP_SET_HASH_IPPORT=m ++CONFIG_IP_SET_HASH_IPPORTIP=m ++CONFIG_IP_SET_HASH_IPPORTNET=m ++CONFIG_IP_SET_HASH_NET=m ++CONFIG_IP_SET_HASH_NETPORT=m ++CONFIG_IP_SET_HASH_NETIFACE=m ++CONFIG_IP_SET_LIST_SET=m ++CONFIG_IP_VS=m ++CONFIG_IP_VS_PROTO_TCP=y ++CONFIG_IP_VS_PROTO_UDP=y ++CONFIG_IP_VS_PROTO_ESP=y ++CONFIG_IP_VS_PROTO_AH=y ++CONFIG_IP_VS_PROTO_SCTP=y ++CONFIG_IP_VS_RR=m ++CONFIG_IP_VS_WRR=m ++CONFIG_IP_VS_LC=m ++CONFIG_IP_VS_WLC=m ++CONFIG_IP_VS_LBLC=m ++CONFIG_IP_VS_LBLCR=m ++CONFIG_IP_VS_DH=m ++CONFIG_IP_VS_SH=m ++CONFIG_IP_VS_SED=m ++CONFIG_IP_VS_NQ=m ++CONFIG_IP_VS_FTP=m ++CONFIG_IP_VS_PE_SIP=m ++CONFIG_NF_CONNTRACK_IPV4=m ++CONFIG_IP_NF_IPTABLES=m ++CONFIG_IP_NF_MATCH_AH=m ++CONFIG_IP_NF_MATCH_ECN=m ++CONFIG_IP_NF_MATCH_RPFILTER=m ++CONFIG_IP_NF_MATCH_TTL=m ++CONFIG_IP_NF_FILTER=m ++CONFIG_IP_NF_TARGET_REJECT=m ++CONFIG_IP_NF_NAT=m ++CONFIG_IP_NF_TARGET_MASQUERADE=m ++CONFIG_IP_NF_TARGET_NETMAP=m ++CONFIG_IP_NF_TARGET_REDIRECT=m ++CONFIG_IP_NF_MANGLE=m ++CONFIG_IP_NF_TARGET_CLUSTERIP=m ++CONFIG_IP_NF_TARGET_ECN=m ++CONFIG_IP_NF_TARGET_TTL=m ++CONFIG_IP_NF_RAW=m ++CONFIG_IP_NF_ARPTABLES=m ++CONFIG_IP_NF_ARPFILTER=m ++CONFIG_IP_NF_ARP_MANGLE=m ++CONFIG_NF_CONNTRACK_IPV6=m ++CONFIG_IP6_NF_IPTABLES=m ++CONFIG_IP6_NF_MATCH_AH=m ++CONFIG_IP6_NF_MATCH_EUI64=m ++CONFIG_IP6_NF_MATCH_FRAG=m ++CONFIG_IP6_NF_MATCH_OPTS=m ++CONFIG_IP6_NF_MATCH_HL=m ++CONFIG_IP6_NF_MATCH_IPV6HEADER=m ++CONFIG_IP6_NF_MATCH_MH=m ++CONFIG_IP6_NF_MATCH_RPFILTER=m ++CONFIG_IP6_NF_MATCH_RT=m ++CONFIG_IP6_NF_TARGET_HL=m ++CONFIG_IP6_NF_FILTER=m ++CONFIG_IP6_NF_TARGET_REJECT=m ++CONFIG_IP6_NF_MANGLE=m ++CONFIG_IP6_NF_RAW=m ++CONFIG_IP6_NF_NAT=m ++CONFIG_IP6_NF_TARGET_MASQUERADE=m ++CONFIG_IP6_NF_TARGET_NPT=m ++CONFIG_BRIDGE_NF_EBTABLES=m ++CONFIG_BRIDGE_EBT_BROUTE=m ++CONFIG_BRIDGE_EBT_T_FILTER=m ++CONFIG_BRIDGE_EBT_T_NAT=m ++CONFIG_BRIDGE_EBT_802_3=m ++CONFIG_BRIDGE_EBT_AMONG=m ++CONFIG_BRIDGE_EBT_ARP=m ++CONFIG_BRIDGE_EBT_IP=m ++CONFIG_BRIDGE_EBT_IP6=m ++CONFIG_BRIDGE_EBT_LIMIT=m ++CONFIG_BRIDGE_EBT_MARK=m ++CONFIG_BRIDGE_EBT_PKTTYPE=m ++CONFIG_BRIDGE_EBT_STP=m ++CONFIG_BRIDGE_EBT_VLAN=m ++CONFIG_BRIDGE_EBT_ARPREPLY=m ++CONFIG_BRIDGE_EBT_DNAT=m ++CONFIG_BRIDGE_EBT_MARK_T=m ++CONFIG_BRIDGE_EBT_REDIRECT=m ++CONFIG_BRIDGE_EBT_SNAT=m ++CONFIG_BRIDGE_EBT_LOG=m ++CONFIG_BRIDGE_EBT_NFLOG=m ++CONFIG_SCTP_COOKIE_HMAC_SHA1=y ++CONFIG_ATM=m ++CONFIG_L2TP=m ++CONFIG_L2TP_V3=y ++CONFIG_L2TP_IP=m ++CONFIG_L2TP_ETH=m ++CONFIG_BRIDGE=m ++CONFIG_VLAN_8021Q=m ++CONFIG_VLAN_8021Q_GVRP=y ++CONFIG_ATALK=m ++CONFIG_6LOWPAN=m ++CONFIG_IEEE802154=m ++CONFIG_IEEE802154_6LOWPAN=m ++CONFIG_MAC802154=m ++CONFIG_NET_SCHED=y ++CONFIG_NET_SCH_CBQ=m ++CONFIG_NET_SCH_HTB=m ++CONFIG_NET_SCH_HFSC=m ++CONFIG_NET_SCH_PRIO=m ++CONFIG_NET_SCH_MULTIQ=m ++CONFIG_NET_SCH_RED=m ++CONFIG_NET_SCH_SFB=m ++CONFIG_NET_SCH_SFQ=m ++CONFIG_NET_SCH_TEQL=m ++CONFIG_NET_SCH_TBF=m ++CONFIG_NET_SCH_GRED=m ++CONFIG_NET_SCH_DSMARK=m ++CONFIG_NET_SCH_NETEM=m ++CONFIG_NET_SCH_DRR=m ++CONFIG_NET_SCH_MQPRIO=m ++CONFIG_NET_SCH_CHOKE=m ++CONFIG_NET_SCH_QFQ=m ++CONFIG_NET_SCH_CODEL=m ++CONFIG_NET_SCH_FQ_CODEL=m ++CONFIG_NET_SCH_INGRESS=m ++CONFIG_NET_SCH_PLUG=m ++CONFIG_NET_CLS_BASIC=m ++CONFIG_NET_CLS_TCINDEX=m ++CONFIG_NET_CLS_ROUTE4=m ++CONFIG_NET_CLS_FW=m ++CONFIG_NET_CLS_U32=m ++CONFIG_CLS_U32_MARK=y ++CONFIG_NET_CLS_RSVP=m ++CONFIG_NET_CLS_RSVP6=m ++CONFIG_NET_CLS_FLOW=m ++CONFIG_NET_CLS_CGROUP=m ++CONFIG_NET_EMATCH=y ++CONFIG_NET_EMATCH_CMP=m ++CONFIG_NET_EMATCH_NBYTE=m ++CONFIG_NET_EMATCH_U32=m ++CONFIG_NET_EMATCH_META=m ++CONFIG_NET_EMATCH_TEXT=m ++CONFIG_NET_EMATCH_IPSET=m ++CONFIG_NET_CLS_ACT=y ++CONFIG_NET_ACT_POLICE=m ++CONFIG_NET_ACT_GACT=m ++CONFIG_GACT_PROB=y ++CONFIG_NET_ACT_MIRRED=m ++CONFIG_NET_ACT_IPT=m ++CONFIG_NET_ACT_NAT=m ++CONFIG_NET_ACT_PEDIT=m ++CONFIG_NET_ACT_SIMP=m ++CONFIG_NET_ACT_SKBEDIT=m ++CONFIG_NET_ACT_CSUM=m ++CONFIG_BATMAN_ADV=m ++CONFIG_OPENVSWITCH=m ++CONFIG_NET_PKTGEN=m ++CONFIG_HAMRADIO=y ++CONFIG_AX25=m ++CONFIG_NETROM=m ++CONFIG_ROSE=m ++CONFIG_MKISS=m ++CONFIG_6PACK=m ++CONFIG_BPQETHER=m ++CONFIG_BAYCOM_SER_FDX=m ++CONFIG_BAYCOM_SER_HDX=m ++CONFIG_YAM=m ++CONFIG_CAN=m ++CONFIG_CAN_VCAN=m ++CONFIG_CAN_MCP251X=m ++CONFIG_IRDA=m ++CONFIG_IRLAN=m ++CONFIG_IRNET=m ++CONFIG_IRCOMM=m ++CONFIG_IRDA_ULTRA=y ++CONFIG_IRDA_CACHE_LAST_LSAP=y ++CONFIG_IRDA_FAST_RR=y ++CONFIG_IRTTY_SIR=m ++CONFIG_KINGSUN_DONGLE=m ++CONFIG_KSDAZZLE_DONGLE=m ++CONFIG_KS959_DONGLE=m ++CONFIG_USB_IRDA=m ++CONFIG_SIGMATEL_FIR=m ++CONFIG_MCS_FIR=m ++CONFIG_BT=m ++CONFIG_BT_RFCOMM=m ++CONFIG_BT_RFCOMM_TTY=y ++CONFIG_BT_BNEP=m ++CONFIG_BT_BNEP_MC_FILTER=y ++CONFIG_BT_BNEP_PROTO_FILTER=y ++CONFIG_BT_HIDP=m ++CONFIG_BT_6LOWPAN=m ++CONFIG_BT_HCIBTUSB=m ++CONFIG_BT_HCIUART=m ++CONFIG_BT_HCIUART_3WIRE=y ++CONFIG_BT_HCIUART_BCM=y ++CONFIG_BT_HCIBCM203X=m ++CONFIG_BT_HCIBPA10X=m ++CONFIG_BT_HCIBFUSB=m ++CONFIG_BT_HCIVHCI=m ++CONFIG_BT_MRVL=m ++CONFIG_BT_MRVL_SDIO=m ++CONFIG_BT_ATH3K=m ++CONFIG_BT_WILINK=m ++CONFIG_MAC80211=m ++CONFIG_MAC80211_MESH=y ++CONFIG_WIMAX=m ++CONFIG_RFKILL=m ++CONFIG_RFKILL_INPUT=y ++CONFIG_NET_9P=m ++CONFIG_NFC=m ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y ++CONFIG_DMA_CMA=y ++CONFIG_CMA_SIZE_MBYTES=5 ++CONFIG_MTD=m ++CONFIG_MTD_BLOCK=m ++CONFIG_MTD_NAND=m ++CONFIG_MTD_UBI=m ++CONFIG_OF_CONFIGFS=y ++CONFIG_ZRAM=m ++CONFIG_BLK_DEV_LOOP=y ++CONFIG_BLK_DEV_CRYPTOLOOP=m ++CONFIG_BLK_DEV_DRBD=m ++CONFIG_BLK_DEV_NBD=m ++CONFIG_BLK_DEV_RAM=y ++CONFIG_CDROM_PKTCDVD=m ++CONFIG_ATA_OVER_ETH=m ++CONFIG_EEPROM_AT24=m ++CONFIG_TI_ST=m ++CONFIG_SCSI=y ++# CONFIG_SCSI_PROC_FS is not set ++CONFIG_BLK_DEV_SD=y ++CONFIG_CHR_DEV_ST=m ++CONFIG_CHR_DEV_OSST=m ++CONFIG_BLK_DEV_SR=m ++CONFIG_CHR_DEV_SG=m ++CONFIG_SCSI_ISCSI_ATTRS=y ++CONFIG_ISCSI_TCP=m ++CONFIG_ISCSI_BOOT_SYSFS=m ++CONFIG_MD=y ++CONFIG_MD_LINEAR=m ++CONFIG_MD_RAID0=m ++CONFIG_BLK_DEV_DM=m ++CONFIG_DM_CRYPT=m ++CONFIG_DM_SNAPSHOT=m ++CONFIG_DM_THIN_PROVISIONING=m ++CONFIG_DM_MIRROR=m ++CONFIG_DM_LOG_USERSPACE=m ++CONFIG_DM_RAID=m ++CONFIG_DM_ZERO=m ++CONFIG_DM_DELAY=m ++CONFIG_NETDEVICES=y ++CONFIG_BONDING=m ++CONFIG_DUMMY=m ++CONFIG_IFB=m ++CONFIG_MACVLAN=m ++CONFIG_IPVLAN=m ++CONFIG_VXLAN=m ++CONFIG_NETCONSOLE=m ++CONFIG_TUN=m ++CONFIG_VETH=m ++CONFIG_ENC28J60=m ++CONFIG_QCA7000=m ++CONFIG_MDIO_BITBANG=m ++CONFIG_PPP=m ++CONFIG_PPP_BSDCOMP=m ++CONFIG_PPP_DEFLATE=m ++CONFIG_PPP_FILTER=y ++CONFIG_PPP_MPPE=m ++CONFIG_PPP_MULTILINK=y ++CONFIG_PPPOATM=m ++CONFIG_PPPOE=m ++CONFIG_PPPOL2TP=m ++CONFIG_PPP_ASYNC=m ++CONFIG_PPP_SYNC_TTY=m ++CONFIG_SLIP=m ++CONFIG_SLIP_COMPRESSED=y ++CONFIG_SLIP_SMART=y ++CONFIG_USB_CATC=m ++CONFIG_USB_KAWETH=m ++CONFIG_USB_PEGASUS=m ++CONFIG_USB_RTL8150=m ++CONFIG_USB_RTL8152=m ++CONFIG_USB_USBNET=y ++CONFIG_USB_NET_AX8817X=m ++CONFIG_USB_NET_AX88179_178A=m ++CONFIG_USB_NET_CDCETHER=m ++CONFIG_USB_NET_CDC_EEM=m ++CONFIG_USB_NET_CDC_NCM=m ++CONFIG_USB_NET_HUAWEI_CDC_NCM=m ++CONFIG_USB_NET_CDC_MBIM=m ++CONFIG_USB_NET_DM9601=m ++CONFIG_USB_NET_SR9700=m ++CONFIG_USB_NET_SR9800=m ++CONFIG_USB_NET_SMSC75XX=m ++CONFIG_USB_NET_SMSC95XX=y ++CONFIG_USB_NET_GL620A=m ++CONFIG_USB_NET_NET1080=m ++CONFIG_USB_NET_PLUSB=m ++CONFIG_USB_NET_MCS7830=m ++CONFIG_USB_NET_CDC_SUBSET=m ++CONFIG_USB_ALI_M5632=y ++CONFIG_USB_AN2720=y ++CONFIG_USB_EPSON2888=y ++CONFIG_USB_KC2190=y ++CONFIG_USB_NET_ZAURUS=m ++CONFIG_USB_NET_CX82310_ETH=m ++CONFIG_USB_NET_KALMIA=m ++CONFIG_USB_NET_QMI_WWAN=m ++CONFIG_USB_HSO=m ++CONFIG_USB_NET_INT51X1=m ++CONFIG_USB_IPHETH=m ++CONFIG_USB_SIERRA_NET=m ++CONFIG_USB_VL600=m ++CONFIG_ATH9K=m ++CONFIG_ATH9K_HTC=m ++CONFIG_CARL9170=m ++CONFIG_ATH6KL=m ++CONFIG_ATH6KL_USB=m ++CONFIG_AR5523=m ++CONFIG_AT76C50X_USB=m ++CONFIG_B43=m ++# CONFIG_B43_PHY_N is not set ++CONFIG_B43LEGACY=m ++CONFIG_BRCMFMAC=m ++CONFIG_BRCMFMAC_USB=y ++CONFIG_HOSTAP=m ++CONFIG_P54_COMMON=m ++CONFIG_P54_USB=m ++CONFIG_LIBERTAS=m ++CONFIG_LIBERTAS_USB=m ++CONFIG_LIBERTAS_SDIO=m ++CONFIG_LIBERTAS_THINFIRM=m ++CONFIG_LIBERTAS_THINFIRM_USB=m ++CONFIG_MWIFIEX=m ++CONFIG_MWIFIEX_SDIO=m ++CONFIG_MT7601U=m ++CONFIG_RT2X00=m ++CONFIG_RT2500USB=m ++CONFIG_RT73USB=m ++CONFIG_RT2800USB=m ++CONFIG_RT2800USB_RT3573=y ++CONFIG_RT2800USB_RT53XX=y ++CONFIG_RT2800USB_RT55XX=y ++CONFIG_RT2800USB_UNKNOWN=y ++CONFIG_RTL8187=m ++CONFIG_RTL8192CU=m ++CONFIG_USB_ZD1201=m ++CONFIG_ZD1211RW=m ++CONFIG_MAC80211_HWSIM=m ++CONFIG_USB_NET_RNDIS_WLAN=m ++CONFIG_WIMAX_I2400M_USB=m ++CONFIG_IEEE802154_AT86RF230=m ++CONFIG_IEEE802154_MRF24J40=m ++CONFIG_IEEE802154_CC2520=m ++CONFIG_INPUT_POLLDEV=m ++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set ++CONFIG_INPUT_JOYDEV=m ++CONFIG_INPUT_EVDEV=m ++# CONFIG_KEYBOARD_ATKBD is not set ++CONFIG_KEYBOARD_GPIO=m ++# CONFIG_INPUT_MOUSE is not set ++CONFIG_INPUT_JOYSTICK=y ++CONFIG_JOYSTICK_IFORCE=m ++CONFIG_JOYSTICK_IFORCE_USB=y ++CONFIG_JOYSTICK_XPAD=m ++CONFIG_JOYSTICK_XPAD_FF=y ++CONFIG_JOYSTICK_XPAD_LEDS=y ++CONFIG_JOYSTICK_RPISENSE=m ++CONFIG_INPUT_TOUCHSCREEN=y ++CONFIG_TOUCHSCREEN_ADS7846=m ++CONFIG_TOUCHSCREEN_EGALAX=m ++CONFIG_TOUCHSCREEN_FT6236=m ++CONFIG_TOUCHSCREEN_RPI_FT5406=m ++CONFIG_TOUCHSCREEN_USB_COMPOSITE=m ++CONFIG_TOUCHSCREEN_STMPE=m ++CONFIG_INPUT_MISC=y ++CONFIG_INPUT_AD714X=m ++CONFIG_INPUT_ATI_REMOTE2=m ++CONFIG_INPUT_KEYSPAN_REMOTE=m ++CONFIG_INPUT_POWERMATE=m ++CONFIG_INPUT_YEALINK=m ++CONFIG_INPUT_CM109=m ++CONFIG_INPUT_UINPUT=m ++CONFIG_INPUT_GPIO_ROTARY_ENCODER=m ++CONFIG_INPUT_ADXL34X=m ++CONFIG_INPUT_CMA3000=m ++CONFIG_SERIO=m ++CONFIG_SERIO_RAW=m ++CONFIG_GAMEPORT=m ++CONFIG_GAMEPORT_NS558=m ++CONFIG_GAMEPORT_L4=m ++CONFIG_BRCM_CHAR_DRIVERS=y ++CONFIG_BCM_VC_CMA=y ++CONFIG_BCM_VCIO=y ++CONFIG_BCM_VC_SM=y ++# CONFIG_LEGACY_PTYS is not set ++# CONFIG_DEVKMEM is not set ++CONFIG_SERIAL_8250=y ++# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set ++CONFIG_SERIAL_8250_CONSOLE=y ++# CONFIG_SERIAL_8250_DMA is not set ++CONFIG_SERIAL_8250_NR_UARTS=1 ++CONFIG_SERIAL_8250_RUNTIME_UARTS=0 ++CONFIG_SERIAL_8250_EXTENDED=y ++CONFIG_SERIAL_8250_SHARE_IRQ=y ++CONFIG_SERIAL_8250_BCM2835AUX=y ++CONFIG_SERIAL_OF_PLATFORM=y ++CONFIG_SERIAL_AMBA_PL011=y ++CONFIG_SERIAL_AMBA_PL011_CONSOLE=y ++CONFIG_SERIAL_SC16IS7XX=m ++CONFIG_SERIAL_SC16IS7XX_SPI=y ++CONFIG_TTY_PRINTK=y ++CONFIG_HW_RANDOM=y ++CONFIG_RAW_DRIVER=y ++CONFIG_I2C=y ++CONFIG_I2C_CHARDEV=m ++CONFIG_I2C_MUX_PCA954x=m ++CONFIG_I2C_BCM2708=m ++CONFIG_I2C_GPIO=m ++CONFIG_SPI=y ++CONFIG_SPI_BCM2835=m ++CONFIG_SPI_BCM2835AUX=m ++CONFIG_SPI_SPIDEV=y ++CONFIG_PPS=m ++CONFIG_PPS_CLIENT_LDISC=m ++CONFIG_PPS_CLIENT_GPIO=m ++CONFIG_GPIO_SYSFS=y ++CONFIG_GPIO_ARIZONA=m ++CONFIG_GPIO_STMPE=y ++CONFIG_GPIO_MCP23S08=m ++CONFIG_W1=m ++CONFIG_W1_MASTER_DS2490=m ++CONFIG_W1_MASTER_DS2482=m ++CONFIG_W1_MASTER_DS1WM=m ++CONFIG_W1_MASTER_GPIO=m ++CONFIG_W1_SLAVE_THERM=m ++CONFIG_W1_SLAVE_SMEM=m ++CONFIG_W1_SLAVE_DS2408=m ++CONFIG_W1_SLAVE_DS2413=m ++CONFIG_W1_SLAVE_DS2406=m ++CONFIG_W1_SLAVE_DS2423=m ++CONFIG_W1_SLAVE_DS2431=m ++CONFIG_W1_SLAVE_DS2433=m ++CONFIG_W1_SLAVE_DS2760=m ++CONFIG_W1_SLAVE_DS2780=m ++CONFIG_W1_SLAVE_DS2781=m ++CONFIG_W1_SLAVE_DS28E04=m ++CONFIG_W1_SLAVE_BQ27000=m ++CONFIG_BATTERY_DS2760=m ++CONFIG_POWER_RESET=y ++CONFIG_POWER_RESET_GPIO=y ++CONFIG_HWMON=m ++CONFIG_SENSORS_LM75=m ++CONFIG_SENSORS_SHT21=m ++CONFIG_SENSORS_SHTC1=m ++CONFIG_SENSORS_INA2XX=m ++CONFIG_THERMAL=y ++CONFIG_THERMAL_BCM2835=y ++CONFIG_WATCHDOG=y ++CONFIG_BCM2835_WDT=m ++CONFIG_UCB1400_CORE=m ++CONFIG_MFD_STMPE=y ++CONFIG_STMPE_SPI=y ++CONFIG_MFD_ARIZONA_I2C=m ++CONFIG_MFD_ARIZONA_SPI=m ++CONFIG_MFD_WM5102=y ++CONFIG_MEDIA_SUPPORT=m ++CONFIG_MEDIA_CAMERA_SUPPORT=y ++CONFIG_MEDIA_ANALOG_TV_SUPPORT=y ++CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y ++CONFIG_MEDIA_RADIO_SUPPORT=y ++CONFIG_MEDIA_RC_SUPPORT=y ++CONFIG_MEDIA_CONTROLLER=y ++CONFIG_LIRC=m ++CONFIG_RC_DEVICES=y ++CONFIG_RC_ATI_REMOTE=m ++CONFIG_IR_IMON=m ++CONFIG_IR_MCEUSB=m ++CONFIG_IR_REDRAT3=m ++CONFIG_IR_STREAMZAP=m ++CONFIG_IR_IGUANA=m ++CONFIG_IR_TTUSBIR=m ++CONFIG_RC_LOOPBACK=m ++CONFIG_IR_GPIO_CIR=m ++CONFIG_MEDIA_USB_SUPPORT=y ++CONFIG_USB_VIDEO_CLASS=m ++CONFIG_USB_M5602=m ++CONFIG_USB_STV06XX=m ++CONFIG_USB_GL860=m ++CONFIG_USB_GSPCA_BENQ=m ++CONFIG_USB_GSPCA_CONEX=m ++CONFIG_USB_GSPCA_CPIA1=m ++CONFIG_USB_GSPCA_DTCS033=m ++CONFIG_USB_GSPCA_ETOMS=m ++CONFIG_USB_GSPCA_FINEPIX=m ++CONFIG_USB_GSPCA_JEILINJ=m ++CONFIG_USB_GSPCA_JL2005BCD=m ++CONFIG_USB_GSPCA_KINECT=m ++CONFIG_USB_GSPCA_KONICA=m ++CONFIG_USB_GSPCA_MARS=m ++CONFIG_USB_GSPCA_MR97310A=m ++CONFIG_USB_GSPCA_NW80X=m ++CONFIG_USB_GSPCA_OV519=m ++CONFIG_USB_GSPCA_OV534=m ++CONFIG_USB_GSPCA_OV534_9=m ++CONFIG_USB_GSPCA_PAC207=m ++CONFIG_USB_GSPCA_PAC7302=m ++CONFIG_USB_GSPCA_PAC7311=m ++CONFIG_USB_GSPCA_SE401=m ++CONFIG_USB_GSPCA_SN9C2028=m ++CONFIG_USB_GSPCA_SN9C20X=m ++CONFIG_USB_GSPCA_SONIXB=m ++CONFIG_USB_GSPCA_SONIXJ=m ++CONFIG_USB_GSPCA_SPCA500=m ++CONFIG_USB_GSPCA_SPCA501=m ++CONFIG_USB_GSPCA_SPCA505=m ++CONFIG_USB_GSPCA_SPCA506=m ++CONFIG_USB_GSPCA_SPCA508=m ++CONFIG_USB_GSPCA_SPCA561=m ++CONFIG_USB_GSPCA_SPCA1528=m ++CONFIG_USB_GSPCA_SQ905=m ++CONFIG_USB_GSPCA_SQ905C=m ++CONFIG_USB_GSPCA_SQ930X=m ++CONFIG_USB_GSPCA_STK014=m ++CONFIG_USB_GSPCA_STK1135=m ++CONFIG_USB_GSPCA_STV0680=m ++CONFIG_USB_GSPCA_SUNPLUS=m ++CONFIG_USB_GSPCA_T613=m ++CONFIG_USB_GSPCA_TOPRO=m ++CONFIG_USB_GSPCA_TV8532=m ++CONFIG_USB_GSPCA_VC032X=m ++CONFIG_USB_GSPCA_VICAM=m ++CONFIG_USB_GSPCA_XIRLINK_CIT=m ++CONFIG_USB_GSPCA_ZC3XX=m ++CONFIG_USB_PWC=m ++CONFIG_VIDEO_CPIA2=m ++CONFIG_USB_ZR364XX=m ++CONFIG_USB_STKWEBCAM=m ++CONFIG_USB_S2255=m ++CONFIG_VIDEO_USBTV=m ++CONFIG_VIDEO_PVRUSB2=m ++CONFIG_VIDEO_HDPVR=m ++CONFIG_VIDEO_USBVISION=m ++CONFIG_VIDEO_STK1160_COMMON=m ++CONFIG_VIDEO_STK1160_AC97=y ++CONFIG_VIDEO_GO7007=m ++CONFIG_VIDEO_GO7007_USB=m ++CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m ++CONFIG_VIDEO_AU0828=m ++CONFIG_VIDEO_AU0828_RC=y ++CONFIG_VIDEO_CX231XX=m ++CONFIG_VIDEO_CX231XX_ALSA=m ++CONFIG_VIDEO_CX231XX_DVB=m ++CONFIG_VIDEO_TM6000=m ++CONFIG_VIDEO_TM6000_ALSA=m ++CONFIG_VIDEO_TM6000_DVB=m ++CONFIG_DVB_USB=m ++CONFIG_DVB_USB_A800=m ++CONFIG_DVB_USB_DIBUSB_MB=m ++CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y ++CONFIG_DVB_USB_DIBUSB_MC=m ++CONFIG_DVB_USB_DIB0700=m ++CONFIG_DVB_USB_UMT_010=m ++CONFIG_DVB_USB_CXUSB=m ++CONFIG_DVB_USB_M920X=m ++CONFIG_DVB_USB_DIGITV=m ++CONFIG_DVB_USB_VP7045=m ++CONFIG_DVB_USB_VP702X=m ++CONFIG_DVB_USB_GP8PSK=m ++CONFIG_DVB_USB_NOVA_T_USB2=m ++CONFIG_DVB_USB_TTUSB2=m ++CONFIG_DVB_USB_DTT200U=m ++CONFIG_DVB_USB_OPERA1=m ++CONFIG_DVB_USB_AF9005=m ++CONFIG_DVB_USB_AF9005_REMOTE=m ++CONFIG_DVB_USB_PCTV452E=m ++CONFIG_DVB_USB_DW2102=m ++CONFIG_DVB_USB_CINERGY_T2=m ++CONFIG_DVB_USB_DTV5100=m ++CONFIG_DVB_USB_FRIIO=m ++CONFIG_DVB_USB_AZ6027=m ++CONFIG_DVB_USB_TECHNISAT_USB2=m ++CONFIG_DVB_USB_V2=m ++CONFIG_DVB_USB_AF9015=m ++CONFIG_DVB_USB_AF9035=m ++CONFIG_DVB_USB_ANYSEE=m ++CONFIG_DVB_USB_AU6610=m ++CONFIG_DVB_USB_AZ6007=m ++CONFIG_DVB_USB_CE6230=m ++CONFIG_DVB_USB_EC168=m ++CONFIG_DVB_USB_GL861=m ++CONFIG_DVB_USB_LME2510=m ++CONFIG_DVB_USB_MXL111SF=m ++CONFIG_DVB_USB_RTL28XXU=m ++CONFIG_DVB_USB_DVBSKY=m ++CONFIG_SMS_USB_DRV=m ++CONFIG_DVB_B2C2_FLEXCOP_USB=m ++CONFIG_DVB_AS102=m ++CONFIG_VIDEO_EM28XX=m ++CONFIG_VIDEO_EM28XX_V4L2=m ++CONFIG_VIDEO_EM28XX_ALSA=m ++CONFIG_VIDEO_EM28XX_DVB=m ++CONFIG_V4L_PLATFORM_DRIVERS=y ++CONFIG_VIDEO_BCM2835=y ++CONFIG_VIDEO_BCM2835_MMAL=m ++CONFIG_RADIO_SI470X=y ++CONFIG_USB_SI470X=m ++CONFIG_I2C_SI470X=m ++CONFIG_RADIO_SI4713=m ++CONFIG_I2C_SI4713=m ++CONFIG_USB_MR800=m ++CONFIG_USB_DSBR=m ++CONFIG_RADIO_SHARK=m ++CONFIG_RADIO_SHARK2=m ++CONFIG_USB_KEENE=m ++CONFIG_USB_MA901=m ++CONFIG_RADIO_TEA5764=m ++CONFIG_RADIO_SAA7706H=m ++CONFIG_RADIO_TEF6862=m ++CONFIG_RADIO_WL1273=m ++CONFIG_RADIO_WL128X=m ++# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set ++CONFIG_VIDEO_UDA1342=m ++CONFIG_VIDEO_SONY_BTF_MPX=m ++CONFIG_VIDEO_TVP5150=m ++CONFIG_VIDEO_TW2804=m ++CONFIG_VIDEO_TW9903=m ++CONFIG_VIDEO_TW9906=m ++CONFIG_VIDEO_OV7640=m ++CONFIG_VIDEO_MT9V011=m ++CONFIG_DRM=m ++CONFIG_DRM_LOAD_EDID_FIRMWARE=y ++CONFIG_DRM_UDL=m ++CONFIG_DRM_VC4=m ++CONFIG_FB=y ++CONFIG_FB_BCM2708=y ++CONFIG_FB_UDL=m ++CONFIG_FB_SSD1307=m ++CONFIG_FB_RPISENSE=m ++# CONFIG_BACKLIGHT_GENERIC is not set ++CONFIG_BACKLIGHT_RPI=m ++CONFIG_BACKLIGHT_GPIO=m ++CONFIG_FRAMEBUFFER_CONSOLE=y ++CONFIG_LOGO=y ++# CONFIG_LOGO_LINUX_MONO is not set ++# CONFIG_LOGO_LINUX_VGA16 is not set ++CONFIG_SOUND=y ++CONFIG_SND=m ++CONFIG_SND_SEQUENCER=m ++CONFIG_SND_SEQ_DUMMY=m ++CONFIG_SND_MIXER_OSS=m ++CONFIG_SND_PCM_OSS=m ++CONFIG_SND_SEQUENCER_OSS=y ++CONFIG_SND_HRTIMER=m ++CONFIG_SND_DUMMY=m ++CONFIG_SND_ALOOP=m ++CONFIG_SND_VIRMIDI=m ++CONFIG_SND_MTPAV=m ++CONFIG_SND_SERIAL_U16550=m ++CONFIG_SND_MPU401=m ++CONFIG_SND_BCM2835=m ++CONFIG_SND_USB_AUDIO=m ++CONFIG_SND_USB_UA101=m ++CONFIG_SND_USB_CAIAQ=m ++CONFIG_SND_USB_CAIAQ_INPUT=y ++CONFIG_SND_USB_6FIRE=m ++CONFIG_SND_SOC=m ++CONFIG_SND_BCM2835_SOC_I2S=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m ++CONFIG_SND_BCM2708_SOC_RPI_DAC=m ++CONFIG_SND_BCM2708_SOC_RPI_PROTO=m ++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m ++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m ++CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m ++CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m ++CONFIG_SND_BCM2708_SOC_RASPIDAC3=m ++CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m ++CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m ++CONFIG_SND_DIGIDAC1_SOUNDCARD=m ++CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m ++CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC=m ++CONFIG_SND_SOC_ADAU1701=m ++CONFIG_SND_SOC_WM8804_I2C=m ++CONFIG_SND_SIMPLE_CARD=m ++CONFIG_SOUND_PRIME=m ++CONFIG_HIDRAW=y ++CONFIG_UHID=m ++CONFIG_HID_A4TECH=m ++CONFIG_HID_ACRUX=m ++CONFIG_HID_APPLE=m ++CONFIG_HID_BELKIN=m ++CONFIG_HID_BETOP_FF=m ++CONFIG_HID_CHERRY=m ++CONFIG_HID_CHICONY=m ++CONFIG_HID_CYPRESS=m ++CONFIG_HID_DRAGONRISE=m ++CONFIG_HID_EMS_FF=m ++CONFIG_HID_ELECOM=m ++CONFIG_HID_ELO=m ++CONFIG_HID_EZKEY=m ++CONFIG_HID_GEMBIRD=m ++CONFIG_HID_HOLTEK=m ++CONFIG_HID_KEYTOUCH=m ++CONFIG_HID_KYE=m ++CONFIG_HID_UCLOGIC=m ++CONFIG_HID_WALTOP=m ++CONFIG_HID_GYRATION=m ++CONFIG_HID_TWINHAN=m ++CONFIG_HID_KENSINGTON=m ++CONFIG_HID_LCPOWER=m ++CONFIG_HID_LOGITECH=m ++CONFIG_HID_LOGITECH_DJ=m ++CONFIG_LOGITECH_FF=y ++CONFIG_LOGIRUMBLEPAD2_FF=y ++CONFIG_LOGIG940_FF=y ++CONFIG_HID_MAGICMOUSE=m ++CONFIG_HID_MICROSOFT=m ++CONFIG_HID_MONTEREY=m ++CONFIG_HID_MULTITOUCH=m ++CONFIG_HID_NTRIG=m ++CONFIG_HID_ORTEK=m ++CONFIG_HID_PANTHERLORD=m ++CONFIG_HID_PETALYNX=m ++CONFIG_HID_PICOLCD=m ++CONFIG_HID_ROCCAT=m ++CONFIG_HID_SAMSUNG=m ++CONFIG_HID_SONY=m ++CONFIG_HID_SPEEDLINK=m ++CONFIG_HID_SUNPLUS=m ++CONFIG_HID_GREENASIA=m ++CONFIG_HID_SMARTJOYPLUS=m ++CONFIG_HID_TOPSEED=m ++CONFIG_HID_THINGM=m ++CONFIG_HID_THRUSTMASTER=m ++CONFIG_HID_WACOM=m ++CONFIG_HID_WIIMOTE=m ++CONFIG_HID_XINMO=m ++CONFIG_HID_ZEROPLUS=m ++CONFIG_HID_ZYDACRON=m ++CONFIG_HID_PID=y ++CONFIG_USB_HIDDEV=y ++CONFIG_USB=y ++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y ++CONFIG_USB_MON=m ++CONFIG_USB_DWCOTG=y ++CONFIG_USB_PRINTER=m ++CONFIG_USB_STORAGE=y ++CONFIG_USB_STORAGE_REALTEK=m ++CONFIG_USB_STORAGE_DATAFAB=m ++CONFIG_USB_STORAGE_FREECOM=m ++CONFIG_USB_STORAGE_ISD200=m ++CONFIG_USB_STORAGE_USBAT=m ++CONFIG_USB_STORAGE_SDDR09=m ++CONFIG_USB_STORAGE_SDDR55=m ++CONFIG_USB_STORAGE_JUMPSHOT=m ++CONFIG_USB_STORAGE_ALAUDA=m ++CONFIG_USB_STORAGE_ONETOUCH=m ++CONFIG_USB_STORAGE_KARMA=m ++CONFIG_USB_STORAGE_CYPRESS_ATACB=m ++CONFIG_USB_STORAGE_ENE_UB6250=m ++CONFIG_USB_MDC800=m ++CONFIG_USB_MICROTEK=m ++CONFIG_USBIP_CORE=m ++CONFIG_USBIP_VHCI_HCD=m ++CONFIG_USBIP_HOST=m ++CONFIG_USB_DWC2=m ++CONFIG_USB_SERIAL=m ++CONFIG_USB_SERIAL_GENERIC=y ++CONFIG_USB_SERIAL_AIRCABLE=m ++CONFIG_USB_SERIAL_ARK3116=m ++CONFIG_USB_SERIAL_BELKIN=m ++CONFIG_USB_SERIAL_CH341=m ++CONFIG_USB_SERIAL_WHITEHEAT=m ++CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m ++CONFIG_USB_SERIAL_CP210X=m ++CONFIG_USB_SERIAL_CYPRESS_M8=m ++CONFIG_USB_SERIAL_EMPEG=m ++CONFIG_USB_SERIAL_FTDI_SIO=m ++CONFIG_USB_SERIAL_VISOR=m ++CONFIG_USB_SERIAL_IPAQ=m ++CONFIG_USB_SERIAL_IR=m ++CONFIG_USB_SERIAL_EDGEPORT=m ++CONFIG_USB_SERIAL_EDGEPORT_TI=m ++CONFIG_USB_SERIAL_F81232=m ++CONFIG_USB_SERIAL_GARMIN=m ++CONFIG_USB_SERIAL_IPW=m ++CONFIG_USB_SERIAL_IUU=m ++CONFIG_USB_SERIAL_KEYSPAN_PDA=m ++CONFIG_USB_SERIAL_KEYSPAN=m ++CONFIG_USB_SERIAL_KLSI=m ++CONFIG_USB_SERIAL_KOBIL_SCT=m ++CONFIG_USB_SERIAL_MCT_U232=m ++CONFIG_USB_SERIAL_METRO=m ++CONFIG_USB_SERIAL_MOS7720=m ++CONFIG_USB_SERIAL_MOS7840=m ++CONFIG_USB_SERIAL_NAVMAN=m ++CONFIG_USB_SERIAL_PL2303=m ++CONFIG_USB_SERIAL_OTI6858=m ++CONFIG_USB_SERIAL_QCAUX=m ++CONFIG_USB_SERIAL_QUALCOMM=m ++CONFIG_USB_SERIAL_SPCP8X5=m ++CONFIG_USB_SERIAL_SAFE=m ++CONFIG_USB_SERIAL_SIERRAWIRELESS=m ++CONFIG_USB_SERIAL_SYMBOL=m ++CONFIG_USB_SERIAL_TI=m ++CONFIG_USB_SERIAL_CYBERJACK=m ++CONFIG_USB_SERIAL_XIRCOM=m ++CONFIG_USB_SERIAL_OPTION=m ++CONFIG_USB_SERIAL_OMNINET=m ++CONFIG_USB_SERIAL_OPTICON=m ++CONFIG_USB_SERIAL_XSENS_MT=m ++CONFIG_USB_SERIAL_WISHBONE=m ++CONFIG_USB_SERIAL_SSU100=m ++CONFIG_USB_SERIAL_QT2=m ++CONFIG_USB_SERIAL_DEBUG=m ++CONFIG_USB_EMI62=m ++CONFIG_USB_EMI26=m ++CONFIG_USB_ADUTUX=m ++CONFIG_USB_SEVSEG=m ++CONFIG_USB_RIO500=m ++CONFIG_USB_LEGOTOWER=m ++CONFIG_USB_LCD=m ++CONFIG_USB_CYPRESS_CY7C63=m ++CONFIG_USB_CYTHERM=m ++CONFIG_USB_IDMOUSE=m ++CONFIG_USB_FTDI_ELAN=m ++CONFIG_USB_APPLEDISPLAY=m ++CONFIG_USB_LD=m ++CONFIG_USB_TRANCEVIBRATOR=m ++CONFIG_USB_IOWARRIOR=m ++CONFIG_USB_TEST=m ++CONFIG_USB_ISIGHTFW=m ++CONFIG_USB_YUREX=m ++CONFIG_USB_ATM=m ++CONFIG_USB_SPEEDTOUCH=m ++CONFIG_USB_CXACRU=m ++CONFIG_USB_UEAGLEATM=m ++CONFIG_USB_XUSBATM=m ++CONFIG_USB_GADGET=m ++CONFIG_USB_ZERO=m ++CONFIG_USB_AUDIO=m ++CONFIG_USB_ETH=m ++CONFIG_USB_GADGETFS=m ++CONFIG_USB_MASS_STORAGE=m ++CONFIG_USB_G_SERIAL=m ++CONFIG_USB_MIDI_GADGET=m ++CONFIG_USB_G_PRINTER=m ++CONFIG_USB_CDC_COMPOSITE=m ++CONFIG_USB_G_ACM_MS=m ++CONFIG_USB_G_MULTI=m ++CONFIG_USB_G_HID=m ++CONFIG_USB_G_WEBCAM=m ++CONFIG_MMC=y ++CONFIG_MMC_BLOCK_MINORS=32 ++CONFIG_MMC_BCM2835=y ++CONFIG_MMC_BCM2835_DMA=y ++CONFIG_MMC_BCM2835_SDHOST=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_PLTFM=y ++CONFIG_MMC_SPI=m ++CONFIG_LEDS_CLASS=y ++CONFIG_LEDS_GPIO=y ++CONFIG_LEDS_TRIGGER_TIMER=y ++CONFIG_LEDS_TRIGGER_ONESHOT=y ++CONFIG_LEDS_TRIGGER_HEARTBEAT=y ++CONFIG_LEDS_TRIGGER_BACKLIGHT=y ++CONFIG_LEDS_TRIGGER_CPU=y ++CONFIG_LEDS_TRIGGER_GPIO=y ++CONFIG_LEDS_TRIGGER_DEFAULT_ON=y ++CONFIG_LEDS_TRIGGER_TRANSIENT=m ++CONFIG_LEDS_TRIGGER_CAMERA=m ++CONFIG_LEDS_TRIGGER_INPUT=y ++CONFIG_LEDS_TRIGGER_PANIC=y ++CONFIG_RTC_CLASS=y ++# CONFIG_RTC_HCTOSYS is not set ++CONFIG_RTC_DRV_DS1307=m ++CONFIG_RTC_DRV_DS1374=m ++CONFIG_RTC_DRV_DS1672=m ++CONFIG_RTC_DRV_MAX6900=m ++CONFIG_RTC_DRV_RS5C372=m ++CONFIG_RTC_DRV_ISL1208=m ++CONFIG_RTC_DRV_ISL12022=m ++CONFIG_RTC_DRV_ISL12057=m ++CONFIG_RTC_DRV_X1205=m ++CONFIG_RTC_DRV_PCF8523=m ++CONFIG_RTC_DRV_PCF8563=m ++CONFIG_RTC_DRV_PCF8583=m ++CONFIG_RTC_DRV_M41T80=m ++CONFIG_RTC_DRV_BQ32K=m ++CONFIG_RTC_DRV_S35390A=m ++CONFIG_RTC_DRV_FM3130=m ++CONFIG_RTC_DRV_RX8581=m ++CONFIG_RTC_DRV_RX8025=m ++CONFIG_RTC_DRV_EM3027=m ++CONFIG_RTC_DRV_M41T93=m ++CONFIG_RTC_DRV_M41T94=m ++CONFIG_RTC_DRV_DS1302=m ++CONFIG_RTC_DRV_DS1305=m ++CONFIG_RTC_DRV_DS1390=m ++CONFIG_RTC_DRV_R9701=m ++CONFIG_RTC_DRV_RX4581=m ++CONFIG_RTC_DRV_RS5C348=m ++CONFIG_RTC_DRV_MAX6902=m ++CONFIG_RTC_DRV_PCF2123=m ++CONFIG_RTC_DRV_DS3232=m ++CONFIG_RTC_DRV_PCF2127=m ++CONFIG_RTC_DRV_RV3029C2=m ++CONFIG_DMADEVICES=y ++CONFIG_DMA_BCM2835=y ++CONFIG_DMA_BCM2708=y ++CONFIG_UIO=m ++CONFIG_UIO_PDRV_GENIRQ=m ++CONFIG_STAGING=y ++CONFIG_PRISM2_USB=m ++CONFIG_R8712U=m ++CONFIG_R8188EU=m ++CONFIG_R8723AU=m ++CONFIG_VT6656=m ++CONFIG_SPEAKUP=m ++CONFIG_SPEAKUP_SYNTH_SOFT=m ++CONFIG_STAGING_MEDIA=y ++CONFIG_LIRC_STAGING=y ++CONFIG_LIRC_IMON=m ++CONFIG_LIRC_RPI=m ++CONFIG_LIRC_SASEM=m ++CONFIG_LIRC_SERIAL=m ++CONFIG_FB_TFT=m ++CONFIG_FB_TFT_AGM1264K_FL=m ++CONFIG_FB_TFT_BD663474=m ++CONFIG_FB_TFT_HX8340BN=m ++CONFIG_FB_TFT_HX8347D=m ++CONFIG_FB_TFT_HX8353D=m ++CONFIG_FB_TFT_ILI9163=m ++CONFIG_FB_TFT_ILI9320=m ++CONFIG_FB_TFT_ILI9325=m ++CONFIG_FB_TFT_ILI9340=m ++CONFIG_FB_TFT_ILI9341=m ++CONFIG_FB_TFT_ILI9481=m ++CONFIG_FB_TFT_ILI9486=m ++CONFIG_FB_TFT_PCD8544=m ++CONFIG_FB_TFT_RA8875=m ++CONFIG_FB_TFT_S6D02A1=m ++CONFIG_FB_TFT_S6D1121=m ++CONFIG_FB_TFT_SSD1289=m ++CONFIG_FB_TFT_SSD1306=m ++CONFIG_FB_TFT_SSD1331=m ++CONFIG_FB_TFT_SSD1351=m ++CONFIG_FB_TFT_ST7735R=m ++CONFIG_FB_TFT_TINYLCD=m ++CONFIG_FB_TFT_TLS8204=m ++CONFIG_FB_TFT_UC1701=m ++CONFIG_FB_TFT_UPD161704=m ++CONFIG_FB_TFT_WATTEROTT=m ++CONFIG_FB_FLEX=m ++CONFIG_FB_TFT_FBTFT_DEVICE=m ++CONFIG_MAILBOX=y ++CONFIG_BCM2835_MBOX=y ++# CONFIG_IOMMU_SUPPORT is not set ++CONFIG_RASPBERRYPI_POWER=y ++CONFIG_EXTCON=m ++CONFIG_EXTCON_ARIZONA=m ++CONFIG_IIO=m ++CONFIG_IIO_BUFFER=y ++CONFIG_IIO_BUFFER_CB=m ++CONFIG_IIO_KFIFO_BUF=m ++CONFIG_MCP320X=m ++CONFIG_MCP3422=m ++CONFIG_DHT11=m ++CONFIG_PWM_BCM2835=m ++CONFIG_PWM_PCA9685=m ++CONFIG_RASPBERRYPI_FIRMWARE=y ++CONFIG_EXT4_FS=y ++CONFIG_EXT4_FS_POSIX_ACL=y ++CONFIG_EXT4_FS_SECURITY=y ++CONFIG_REISERFS_FS=m ++CONFIG_REISERFS_FS_XATTR=y ++CONFIG_REISERFS_FS_POSIX_ACL=y ++CONFIG_REISERFS_FS_SECURITY=y ++CONFIG_JFS_FS=m ++CONFIG_JFS_POSIX_ACL=y ++CONFIG_JFS_SECURITY=y ++CONFIG_JFS_STATISTICS=y ++CONFIG_XFS_FS=m ++CONFIG_XFS_QUOTA=y ++CONFIG_XFS_POSIX_ACL=y ++CONFIG_XFS_RT=y ++CONFIG_GFS2_FS=m ++CONFIG_OCFS2_FS=m ++CONFIG_BTRFS_FS=m ++CONFIG_BTRFS_FS_POSIX_ACL=y ++CONFIG_NILFS2_FS=m ++CONFIG_F2FS_FS=y ++CONFIG_FANOTIFY=y ++CONFIG_QFMT_V1=m ++CONFIG_QFMT_V2=m ++CONFIG_AUTOFS4_FS=y ++CONFIG_FUSE_FS=m ++CONFIG_CUSE=m ++CONFIG_OVERLAY_FS=m ++CONFIG_FSCACHE=y ++CONFIG_FSCACHE_STATS=y ++CONFIG_FSCACHE_HISTOGRAM=y ++CONFIG_CACHEFILES=y ++CONFIG_ISO9660_FS=m ++CONFIG_JOLIET=y ++CONFIG_ZISOFS=y ++CONFIG_UDF_FS=m ++CONFIG_MSDOS_FS=y ++CONFIG_VFAT_FS=y ++CONFIG_FAT_DEFAULT_IOCHARSET="ascii" ++CONFIG_NTFS_FS=m ++CONFIG_NTFS_RW=y ++CONFIG_TMPFS=y ++CONFIG_TMPFS_POSIX_ACL=y ++CONFIG_ECRYPT_FS=m ++CONFIG_HFS_FS=m ++CONFIG_HFSPLUS_FS=m ++CONFIG_JFFS2_FS=m ++CONFIG_JFFS2_SUMMARY=y ++CONFIG_UBIFS_FS=m ++CONFIG_SQUASHFS=m ++CONFIG_SQUASHFS_XATTR=y ++CONFIG_SQUASHFS_LZO=y ++CONFIG_SQUASHFS_XZ=y ++CONFIG_NFS_FS=y ++CONFIG_NFS_V3_ACL=y ++CONFIG_NFS_V4=y ++CONFIG_NFS_SWAP=y ++CONFIG_ROOT_NFS=y ++CONFIG_NFS_FSCACHE=y ++CONFIG_NFSD=m ++CONFIG_NFSD_V3_ACL=y ++CONFIG_NFSD_V4=y ++CONFIG_CIFS=m ++CONFIG_CIFS_WEAK_PW_HASH=y ++CONFIG_CIFS_UPCALL=y ++CONFIG_CIFS_XATTR=y ++CONFIG_CIFS_POSIX=y ++CONFIG_CIFS_ACL=y ++CONFIG_CIFS_DFS_UPCALL=y ++CONFIG_CIFS_SMB2=y ++CONFIG_CIFS_FSCACHE=y ++CONFIG_9P_FS=m ++CONFIG_9P_FS_POSIX_ACL=y ++CONFIG_NLS_DEFAULT="utf8" ++CONFIG_NLS_CODEPAGE_437=y ++CONFIG_NLS_CODEPAGE_737=m ++CONFIG_NLS_CODEPAGE_775=m ++CONFIG_NLS_CODEPAGE_850=m ++CONFIG_NLS_CODEPAGE_852=m ++CONFIG_NLS_CODEPAGE_855=m ++CONFIG_NLS_CODEPAGE_857=m ++CONFIG_NLS_CODEPAGE_860=m ++CONFIG_NLS_CODEPAGE_861=m ++CONFIG_NLS_CODEPAGE_862=m ++CONFIG_NLS_CODEPAGE_863=m ++CONFIG_NLS_CODEPAGE_864=m ++CONFIG_NLS_CODEPAGE_865=m ++CONFIG_NLS_CODEPAGE_866=m ++CONFIG_NLS_CODEPAGE_869=m ++CONFIG_NLS_CODEPAGE_936=m ++CONFIG_NLS_CODEPAGE_950=m ++CONFIG_NLS_CODEPAGE_932=m ++CONFIG_NLS_CODEPAGE_949=m ++CONFIG_NLS_CODEPAGE_874=m ++CONFIG_NLS_ISO8859_8=m ++CONFIG_NLS_CODEPAGE_1250=m ++CONFIG_NLS_CODEPAGE_1251=m ++CONFIG_NLS_ASCII=y ++CONFIG_NLS_ISO8859_1=m ++CONFIG_NLS_ISO8859_2=m ++CONFIG_NLS_ISO8859_3=m ++CONFIG_NLS_ISO8859_4=m ++CONFIG_NLS_ISO8859_5=m ++CONFIG_NLS_ISO8859_6=m ++CONFIG_NLS_ISO8859_7=m ++CONFIG_NLS_ISO8859_9=m ++CONFIG_NLS_ISO8859_13=m ++CONFIG_NLS_ISO8859_14=m ++CONFIG_NLS_ISO8859_15=m ++CONFIG_NLS_KOI8_R=m ++CONFIG_NLS_KOI8_U=m ++CONFIG_DLM=m ++CONFIG_PRINTK_TIME=y ++CONFIG_BOOT_PRINTK_DELAY=y ++CONFIG_DEBUG_MEMORY_INIT=y ++CONFIG_DETECT_HUNG_TASK=y ++CONFIG_TIMER_STATS=y ++CONFIG_LATENCYTOP=y ++CONFIG_IRQSOFF_TRACER=y ++CONFIG_SCHED_TRACER=y ++CONFIG_STACK_TRACER=y ++CONFIG_BLK_DEV_IO_TRACE=y ++# CONFIG_KPROBE_EVENT is not set ++CONFIG_FUNCTION_PROFILER=y ++CONFIG_KGDB=y ++CONFIG_KGDB_KDB=y ++CONFIG_KDB_KEYBOARD=y ++CONFIG_CRYPTO_USER=m ++CONFIG_CRYPTO_CRYPTD=m ++CONFIG_CRYPTO_CBC=y ++CONFIG_CRYPTO_CTS=m ++CONFIG_CRYPTO_XTS=m ++CONFIG_CRYPTO_XCBC=m ++CONFIG_CRYPTO_SHA512=m ++CONFIG_CRYPTO_TGR192=m ++CONFIG_CRYPTO_WP512=m ++CONFIG_CRYPTO_CAST5=m ++CONFIG_CRYPTO_DES=y ++CONFIG_CRYPTO_USER_API_SKCIPHER=m ++# CONFIG_CRYPTO_HW is not set ++CONFIG_ARM_CRYPTO=y ++CONFIG_CRYPTO_SHA1_ARM=m ++CONFIG_CRYPTO_AES_ARM=m ++CONFIG_CRC_ITU_T=y ++CONFIG_LIBCRC32C=y -From b9ee98291bd307566f9a1519345d798882f77ed8 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Wed, 15 Jun 2016 16:48:41 +0100 -Subject: [PATCH 100/160] rtc: Add SPI alias for pcf2123 driver +From 764f71bad9c87bcef071c68e0712e288384ddc19 Mon Sep 17 00:00:00 2001 +From: Michael Zoran +Date: Wed, 24 Aug 2016 03:35:56 -0700 +Subject: [PATCH 111/132] Add arm64 configuration and device tree differences. + Disable MMC_BCM2835_SDHOST and MMC_BCM2835 since these drivers are crashing + at the moment. -Without this alias, Device Tree won't cause the driver -to be loaded. - -See: https://github.com/raspberrypi/linux/pull/1510 --- - drivers/rtc/rtc-pcf2123.c | 1 + - 1 file changed, 1 insertion(+) + arch/arm64/Kconfig.platforms | 22 + + arch/arm64/boot/dts/broadcom/Makefile | 1 + + arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts | 3 + + arch/arm64/configs/bcmrpi3_defconfig | 1330 ++++++++++++++++++++++ + 4 files changed, 1356 insertions(+) + create mode 100644 arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts + create mode 100644 arch/arm64/configs/bcmrpi3_defconfig -diff --git a/drivers/rtc/rtc-pcf2123.c b/drivers/rtc/rtc-pcf2123.c -index f22e060709e547528b29b747f796b45c445d23fa..76b7bd7d9d33a0dcefcdb5fe3e0df4ded087cb60 100644 ---- a/drivers/rtc/rtc-pcf2123.c -+++ b/drivers/rtc/rtc-pcf2123.c -@@ -471,3 +471,4 @@ module_spi_driver(pcf2123_driver); - MODULE_AUTHOR("Chris Verges "); - MODULE_DESCRIPTION("NXP PCF2123 RTC driver"); - MODULE_LICENSE("GPL"); -+MODULE_ALIAS("spi:rtc-pcf2123"); +diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms +index be5d824ebdba2dab24840bb7808abcc40da2053e..fee7af52fe1a9f8d49447a93df0017832e06c5d3 100644 +--- a/arch/arm64/Kconfig.platforms ++++ b/arch/arm64/Kconfig.platforms +@@ -1,5 +1,27 @@ + menu "Platform selection" + ++config MACH_BCM2709 ++ bool ++ ++config ARCH_BCM2709 ++ bool "Broadcom BCM2709 family" ++ select MACH_BCM2709 ++ select HAVE_SMP ++ select ARM_AMBA ++ select COMMON_CLK ++ select ARCH_HAS_CPUFREQ ++ select GENERIC_CLOCKEVENTS ++ select MULTI_IRQ_HANDLER ++ select SPARSE_IRQ ++ select MFD_SYSCON ++ select VC4 ++ select USE_OF ++ select ARCH_REQUIRE_GPIOLIB ++ select PINCTRL ++ select PINCTRL_BCM2835 ++ help ++ This enables support for Broadcom BCM2709 boards. ++ + config ARCH_SUNXI + bool "Allwinner sunxi 64-bit SoC Family" + select GENERIC_IRQ_CHIP +diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile +index 05faf2a8a35ca5ba9049b9038dedb9be88eeb7c5..2152448c8cf5b22c573642d7ce45e85793f5fc9a 100644 +--- a/arch/arm64/boot/dts/broadcom/Makefile ++++ b/arch/arm64/boot/dts/broadcom/Makefile +@@ -1,6 +1,7 @@ + dtb-$(CONFIG_ARCH_BCM2835) += bcm2837-rpi-3-b.dtb + dtb-$(CONFIG_ARCH_BCM_IPROC) += ns2-svk.dtb + dtb-$(CONFIG_ARCH_VULCAN) += vulcan-eval.dtb ++dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-3-b.dtb + + always := $(dtb-y) + subdir-y := $(dts-dirs) +diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..deb33441da95220db0ed672e41639626fba682a5 +--- /dev/null ++++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts +@@ -0,0 +1,3 @@ ++#define RPI364 ++ ++#include "../../../../arm/boot/dts/bcm2710-rpi-3-b.dts" +diff --git a/arch/arm64/configs/bcmrpi3_defconfig b/arch/arm64/configs/bcmrpi3_defconfig +new file mode 100644 +index 0000000000000000000000000000000000000000..1fcde8c1329bbfd329245a8bb17691999882ccfc +--- /dev/null ++++ b/arch/arm64/configs/bcmrpi3_defconfig +@@ -0,0 +1,1330 @@ ++# CONFIG_ARM_PATCH_PHYS_VIRT is not set ++CONFIG_PHYS_OFFSET=0 ++CONFIG_LOCALVERSION="-v8" ++# CONFIG_LOCALVERSION_AUTO is not set ++CONFIG_64BIT=y ++CONFIG_SYSVIPC=y ++CONFIG_POSIX_MQUEUE=y ++CONFIG_NO_HZ=y ++CONFIG_HIGH_RES_TIMERS=y ++ ++# ++# ARM errata workarounds via the alternatives framework ++# ++CONFIG_ARM64_ERRATUM_826319=n ++CONFIG_ARM64_ERRATUM_827319=n ++CONFIG_ARM64_ERRATUM_824069=n ++CONFIG_ARM64_ERRATUM_819472=n ++CONFIG_ARM64_ERRATUM_832075=n ++CONFIG_ARM64_ERRATUM_845719=n ++CONFIG_ARM64_ERRATUM_843419=n ++CONFIG_CAVIUM_ERRATUM_22375=n ++CONFIG_CAVIUM_ERRATUM_23154=n ++CONFIG_CAVIUM_ERRATUM_27456=n ++CONFIG_ARM64_4K_PAGES=y ++CONFIG_ARM64_VA_BITS_39=y ++CONFIG_ARM64_VA_BITS=39 ++CONFIG_SCHED_MC=y ++CONFIG_NR_CPUS=4 ++CONFIG_HOTPLUG_CPU=y ++ ++# ++# ARMv8.1 architectural features ++# ++CONFIG_ARM64_HW_AFDBM=n ++CONFIG_ARM64_PAN=n ++CONFIG_ARM64_LSE_ATOMICS=n ++CONFIG_ARM64_VHE=n ++ ++# ++# ARMv8.2 architectural features ++# ++CONFIG_ARM64_UAO=n ++CONFIG_ARM64_MODULE_CMODEL_LARGE=n ++CONFIG_RANDOMIZE_BASE=n ++ ++CONFIG_BSD_PROCESS_ACCT=y ++CONFIG_BSD_PROCESS_ACCT_V3=y ++CONFIG_TASKSTATS=y ++CONFIG_TASK_DELAY_ACCT=y ++CONFIG_TASK_XACCT=y ++CONFIG_TASK_IO_ACCOUNTING=y ++CONFIG_IKCONFIG=m ++CONFIG_IKCONFIG_PROC=y ++CONFIG_NMI_LOG_BUF_SHIFT=12 ++CONFIG_MEMCG=y ++CONFIG_BLK_CGROUP=y ++CONFIG_CGROUP_FREEZER=y ++CONFIG_CPUSETS=y ++CONFIG_CGROUP_DEVICE=y ++CONFIG_CGROUP_CPUACCT=y ++CONFIG_NAMESPACES=y ++CONFIG_USER_NS=y ++CONFIG_SCHED_AUTOGROUP=y ++CONFIG_BLK_DEV_INITRD=y ++CONFIG_EMBEDDED=y ++# CONFIG_COMPAT_BRK is not set ++CONFIG_PROFILING=y ++CONFIG_OPROFILE=m ++CONFIG_KPROBES=y ++CONFIG_JUMP_LABEL=y ++CONFIG_MODULES=y ++CONFIG_MODULE_UNLOAD=y ++CONFIG_MODVERSIONS=y ++CONFIG_MODULE_SRCVERSION_ALL=y ++CONFIG_TRIM_UNUSED_KSYMS=y ++CONFIG_BLK_DEV_THROTTLING=y ++CONFIG_PARTITION_ADVANCED=y ++CONFIG_MAC_PARTITION=y ++CONFIG_CFQ_GROUP_IOSCHED=y ++CONFIG_ARCH_BCM2709=y ++# CONFIG_CACHE_L2X0 is not set ++CONFIG_SMP=y ++CONFIG_HAVE_ARM_ARCH_TIMER=y ++CONFIG_VMSPLIT_2G=y ++CONFIG_PREEMPT_VOLUNTARY=y ++CONFIG_AEABI=y ++CONFIG_OABI_COMPAT=y ++# CONFIG_CPU_SW_DOMAIN_PAN is not set ++CONFIG_CLEANCACHE=y ++CONFIG_FRONTSWAP=y ++CONFIG_CMA=y ++CONFIG_ZSMALLOC=m ++CONFIG_PGTABLE_MAPPING=y ++CONFIG_UACCESS_WITH_MEMCPY=y ++CONFIG_SECCOMP=y ++# CONFIG_ATAGS is not set ++CONFIG_ZBOOT_ROM_TEXT=0x0 ++CONFIG_ZBOOT_ROM_BSS=0x0 ++CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" ++CONFIG_CPU_FREQ=y ++CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y ++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y ++CONFIG_CPU_FREQ_GOV_USERSPACE=y ++CONFIG_CPU_FREQ_GOV_ONDEMAND=y ++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y ++CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y ++CONFIG_VFP=y ++CONFIG_NEON=y ++CONFIG_KERNEL_MODE_NEON=y ++CONFIG_BINFMT_MISC=m ++CONFIG_COMPAT=y ++CONFIG_SYSVIPC_COMPAT=y ++ ++# CONFIG_SUSPEND is not set ++CONFIG_PM=y ++CONFIG_NET=y ++CONFIG_PACKET=y ++CONFIG_UNIX=y ++CONFIG_XFRM_USER=y ++CONFIG_NET_KEY=m ++CONFIG_INET=y ++CONFIG_IP_MULTICAST=y ++CONFIG_IP_ADVANCED_ROUTER=y ++CONFIG_IP_MULTIPLE_TABLES=y ++CONFIG_IP_ROUTE_MULTIPATH=y ++CONFIG_IP_ROUTE_VERBOSE=y ++CONFIG_IP_PNP=y ++CONFIG_IP_PNP_DHCP=y ++CONFIG_IP_PNP_RARP=y ++CONFIG_NET_IPIP=m ++CONFIG_NET_IPGRE_DEMUX=m ++CONFIG_NET_IPGRE=m ++CONFIG_IP_MROUTE=y ++CONFIG_IP_MROUTE_MULTIPLE_TABLES=y ++CONFIG_IP_PIMSM_V1=y ++CONFIG_IP_PIMSM_V2=y ++CONFIG_SYN_COOKIES=y ++CONFIG_INET_AH=m ++CONFIG_INET_ESP=m ++CONFIG_INET_IPCOMP=m ++CONFIG_INET_XFRM_MODE_TRANSPORT=m ++CONFIG_INET_XFRM_MODE_TUNNEL=m ++CONFIG_INET_XFRM_MODE_BEET=m ++CONFIG_INET_DIAG=m ++CONFIG_IPV6=m ++CONFIG_IPV6_ROUTER_PREF=y ++CONFIG_INET6_AH=m ++CONFIG_INET6_ESP=m ++CONFIG_INET6_IPCOMP=m ++CONFIG_IPV6_TUNNEL=m ++CONFIG_IPV6_MULTIPLE_TABLES=y ++CONFIG_IPV6_SUBTREES=y ++CONFIG_IPV6_MROUTE=y ++CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y ++CONFIG_IPV6_PIMSM_V2=y ++CONFIG_NETFILTER=y ++CONFIG_NF_CONNTRACK=m ++CONFIG_NF_CONNTRACK_ZONES=y ++CONFIG_NF_CONNTRACK_EVENTS=y ++CONFIG_NF_CONNTRACK_TIMESTAMP=y ++CONFIG_NF_CT_PROTO_DCCP=m ++CONFIG_NF_CT_PROTO_UDPLITE=m ++CONFIG_NF_CONNTRACK_AMANDA=m ++CONFIG_NF_CONNTRACK_FTP=m ++CONFIG_NF_CONNTRACK_H323=m ++CONFIG_NF_CONNTRACK_IRC=m ++CONFIG_NF_CONNTRACK_NETBIOS_NS=m ++CONFIG_NF_CONNTRACK_SNMP=m ++CONFIG_NF_CONNTRACK_PPTP=m ++CONFIG_NF_CONNTRACK_SANE=m ++CONFIG_NF_CONNTRACK_SIP=m ++CONFIG_NF_CONNTRACK_TFTP=m ++CONFIG_NF_CT_NETLINK=m ++CONFIG_NETFILTER_XT_SET=m ++CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m ++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m ++CONFIG_NETFILTER_XT_TARGET_CONNMARK=m ++CONFIG_NETFILTER_XT_TARGET_DSCP=m ++CONFIG_NETFILTER_XT_TARGET_HMARK=m ++CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m ++CONFIG_NETFILTER_XT_TARGET_LED=m ++CONFIG_NETFILTER_XT_TARGET_LOG=m ++CONFIG_NETFILTER_XT_TARGET_MARK=m ++CONFIG_NETFILTER_XT_TARGET_NFLOG=m ++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m ++CONFIG_NETFILTER_XT_TARGET_NOTRACK=m ++CONFIG_NETFILTER_XT_TARGET_TEE=m ++CONFIG_NETFILTER_XT_TARGET_TPROXY=m ++CONFIG_NETFILTER_XT_TARGET_TRACE=m ++CONFIG_NETFILTER_XT_TARGET_TCPMSS=m ++CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m ++CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m ++CONFIG_NETFILTER_XT_MATCH_BPF=m ++CONFIG_NETFILTER_XT_MATCH_CLUSTER=m ++CONFIG_NETFILTER_XT_MATCH_COMMENT=m ++CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m ++CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m ++CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_CONNMARK=m ++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m ++CONFIG_NETFILTER_XT_MATCH_CPU=m ++CONFIG_NETFILTER_XT_MATCH_DCCP=m ++CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m ++CONFIG_NETFILTER_XT_MATCH_DSCP=m ++CONFIG_NETFILTER_XT_MATCH_ESP=m ++CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m ++CONFIG_NETFILTER_XT_MATCH_HELPER=m ++CONFIG_NETFILTER_XT_MATCH_IPRANGE=m ++CONFIG_NETFILTER_XT_MATCH_IPVS=m ++CONFIG_NETFILTER_XT_MATCH_LENGTH=m ++CONFIG_NETFILTER_XT_MATCH_LIMIT=m ++CONFIG_NETFILTER_XT_MATCH_MAC=m ++CONFIG_NETFILTER_XT_MATCH_MARK=m ++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m ++CONFIG_NETFILTER_XT_MATCH_NFACCT=m ++CONFIG_NETFILTER_XT_MATCH_OSF=m ++CONFIG_NETFILTER_XT_MATCH_OWNER=m ++CONFIG_NETFILTER_XT_MATCH_POLICY=m ++CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m ++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m ++CONFIG_NETFILTER_XT_MATCH_QUOTA=m ++CONFIG_NETFILTER_XT_MATCH_RATEEST=m ++CONFIG_NETFILTER_XT_MATCH_REALM=m ++CONFIG_NETFILTER_XT_MATCH_RECENT=m ++CONFIG_NETFILTER_XT_MATCH_SOCKET=m ++CONFIG_NETFILTER_XT_MATCH_STATE=m ++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m ++CONFIG_NETFILTER_XT_MATCH_STRING=m ++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m ++CONFIG_NETFILTER_XT_MATCH_TIME=m ++CONFIG_NETFILTER_XT_MATCH_U32=m ++CONFIG_IP_SET=m ++CONFIG_IP_SET_BITMAP_IP=m ++CONFIG_IP_SET_BITMAP_IPMAC=m ++CONFIG_IP_SET_BITMAP_PORT=m ++CONFIG_IP_SET_HASH_IP=m ++CONFIG_IP_SET_HASH_IPPORT=m ++CONFIG_IP_SET_HASH_IPPORTIP=m ++CONFIG_IP_SET_HASH_IPPORTNET=m ++CONFIG_IP_SET_HASH_NET=m ++CONFIG_IP_SET_HASH_NETPORT=m ++CONFIG_IP_SET_HASH_NETIFACE=m ++CONFIG_IP_SET_LIST_SET=m ++CONFIG_IP_VS=m ++CONFIG_IP_VS_PROTO_TCP=y ++CONFIG_IP_VS_PROTO_UDP=y ++CONFIG_IP_VS_PROTO_ESP=y ++CONFIG_IP_VS_PROTO_AH=y ++CONFIG_IP_VS_PROTO_SCTP=y ++CONFIG_IP_VS_RR=m ++CONFIG_IP_VS_WRR=m ++CONFIG_IP_VS_LC=m ++CONFIG_IP_VS_WLC=m ++CONFIG_IP_VS_LBLC=m ++CONFIG_IP_VS_LBLCR=m ++CONFIG_IP_VS_DH=m ++CONFIG_IP_VS_SH=m ++CONFIG_IP_VS_SED=m ++CONFIG_IP_VS_NQ=m ++CONFIG_IP_VS_FTP=m ++CONFIG_IP_VS_PE_SIP=m ++CONFIG_NF_CONNTRACK_IPV4=m ++CONFIG_IP_NF_IPTABLES=m ++CONFIG_IP_NF_MATCH_AH=m ++CONFIG_IP_NF_MATCH_ECN=m ++CONFIG_IP_NF_MATCH_RPFILTER=m ++CONFIG_IP_NF_MATCH_TTL=m ++CONFIG_IP_NF_FILTER=m ++CONFIG_IP_NF_TARGET_REJECT=m ++CONFIG_IP_NF_NAT=m ++CONFIG_IP_NF_TARGET_MASQUERADE=m ++CONFIG_IP_NF_TARGET_NETMAP=m ++CONFIG_IP_NF_TARGET_REDIRECT=m ++CONFIG_IP_NF_MANGLE=m ++CONFIG_IP_NF_TARGET_CLUSTERIP=m ++CONFIG_IP_NF_TARGET_ECN=m ++CONFIG_IP_NF_TARGET_TTL=m ++CONFIG_IP_NF_RAW=m ++CONFIG_IP_NF_ARPTABLES=m ++CONFIG_IP_NF_ARPFILTER=m ++CONFIG_IP_NF_ARP_MANGLE=m ++CONFIG_NF_CONNTRACK_IPV6=m ++CONFIG_IP6_NF_IPTABLES=m ++CONFIG_IP6_NF_MATCH_AH=m ++CONFIG_IP6_NF_MATCH_EUI64=m ++CONFIG_IP6_NF_MATCH_FRAG=m ++CONFIG_IP6_NF_MATCH_OPTS=m ++CONFIG_IP6_NF_MATCH_HL=m ++CONFIG_IP6_NF_MATCH_IPV6HEADER=m ++CONFIG_IP6_NF_MATCH_MH=m ++CONFIG_IP6_NF_MATCH_RPFILTER=m ++CONFIG_IP6_NF_MATCH_RT=m ++CONFIG_IP6_NF_TARGET_HL=m ++CONFIG_IP6_NF_FILTER=m ++CONFIG_IP6_NF_TARGET_REJECT=m ++CONFIG_IP6_NF_MANGLE=m ++CONFIG_IP6_NF_RAW=m ++CONFIG_IP6_NF_NAT=m ++CONFIG_IP6_NF_TARGET_MASQUERADE=m ++CONFIG_IP6_NF_TARGET_NPT=m ++CONFIG_BRIDGE_NF_EBTABLES=m ++CONFIG_BRIDGE_EBT_BROUTE=m ++CONFIG_BRIDGE_EBT_T_FILTER=m ++CONFIG_BRIDGE_EBT_T_NAT=m ++CONFIG_BRIDGE_EBT_802_3=m ++CONFIG_BRIDGE_EBT_AMONG=m ++CONFIG_BRIDGE_EBT_ARP=m ++CONFIG_BRIDGE_EBT_IP=m ++CONFIG_BRIDGE_EBT_IP6=m ++CONFIG_BRIDGE_EBT_LIMIT=m ++CONFIG_BRIDGE_EBT_MARK=m ++CONFIG_BRIDGE_EBT_PKTTYPE=m ++CONFIG_BRIDGE_EBT_STP=m ++CONFIG_BRIDGE_EBT_VLAN=m ++CONFIG_BRIDGE_EBT_ARPREPLY=m ++CONFIG_BRIDGE_EBT_DNAT=m ++CONFIG_BRIDGE_EBT_MARK_T=m ++CONFIG_BRIDGE_EBT_REDIRECT=m ++CONFIG_BRIDGE_EBT_SNAT=m ++CONFIG_BRIDGE_EBT_LOG=m ++CONFIG_BRIDGE_EBT_NFLOG=m ++CONFIG_SCTP_COOKIE_HMAC_SHA1=y ++CONFIG_ATM=m ++CONFIG_L2TP=m ++CONFIG_L2TP_V3=y ++CONFIG_L2TP_IP=m ++CONFIG_L2TP_ETH=m ++CONFIG_BRIDGE=m ++CONFIG_VLAN_8021Q=m ++CONFIG_VLAN_8021Q_GVRP=y ++CONFIG_ATALK=m ++CONFIG_6LOWPAN=m ++CONFIG_IEEE802154=m ++CONFIG_IEEE802154_6LOWPAN=m ++CONFIG_MAC802154=m ++CONFIG_NET_SCHED=y ++CONFIG_NET_SCH_CBQ=m ++CONFIG_NET_SCH_HTB=m ++CONFIG_NET_SCH_HFSC=m ++CONFIG_NET_SCH_PRIO=m ++CONFIG_NET_SCH_MULTIQ=m ++CONFIG_NET_SCH_RED=m ++CONFIG_NET_SCH_SFB=m ++CONFIG_NET_SCH_SFQ=m ++CONFIG_NET_SCH_TEQL=m ++CONFIG_NET_SCH_TBF=m ++CONFIG_NET_SCH_GRED=m ++CONFIG_NET_SCH_DSMARK=m ++CONFIG_NET_SCH_NETEM=m ++CONFIG_NET_SCH_DRR=m ++CONFIG_NET_SCH_MQPRIO=m ++CONFIG_NET_SCH_CHOKE=m ++CONFIG_NET_SCH_QFQ=m ++CONFIG_NET_SCH_CODEL=m ++CONFIG_NET_SCH_FQ_CODEL=m ++CONFIG_NET_SCH_INGRESS=m ++CONFIG_NET_SCH_PLUG=m ++CONFIG_NET_CLS_BASIC=m ++CONFIG_NET_CLS_TCINDEX=m ++CONFIG_NET_CLS_ROUTE4=m ++CONFIG_NET_CLS_FW=m ++CONFIG_NET_CLS_U32=m ++CONFIG_CLS_U32_MARK=y ++CONFIG_NET_CLS_RSVP=m ++CONFIG_NET_CLS_RSVP6=m ++CONFIG_NET_CLS_FLOW=m ++CONFIG_NET_CLS_CGROUP=m ++CONFIG_NET_EMATCH=y ++CONFIG_NET_EMATCH_CMP=m ++CONFIG_NET_EMATCH_NBYTE=m ++CONFIG_NET_EMATCH_U32=m ++CONFIG_NET_EMATCH_META=m ++CONFIG_NET_EMATCH_TEXT=m ++CONFIG_NET_EMATCH_IPSET=m ++CONFIG_NET_CLS_ACT=y ++CONFIG_NET_ACT_POLICE=m ++CONFIG_NET_ACT_GACT=m ++CONFIG_GACT_PROB=y ++CONFIG_NET_ACT_MIRRED=m ++CONFIG_NET_ACT_IPT=m ++CONFIG_NET_ACT_NAT=m ++CONFIG_NET_ACT_PEDIT=m ++CONFIG_NET_ACT_SIMP=m ++CONFIG_NET_ACT_SKBEDIT=m ++CONFIG_NET_ACT_CSUM=m ++CONFIG_BATMAN_ADV=m ++CONFIG_OPENVSWITCH=m ++CONFIG_NET_PKTGEN=m ++CONFIG_HAMRADIO=y ++CONFIG_AX25=m ++CONFIG_NETROM=m ++CONFIG_ROSE=m ++CONFIG_MKISS=m ++CONFIG_6PACK=m ++CONFIG_BPQETHER=m ++CONFIG_BAYCOM_SER_FDX=m ++CONFIG_BAYCOM_SER_HDX=m ++CONFIG_YAM=m ++CONFIG_CAN=m ++CONFIG_CAN_VCAN=m ++CONFIG_CAN_MCP251X=m ++CONFIG_IRDA=m ++CONFIG_IRLAN=m ++CONFIG_IRNET=m ++CONFIG_IRCOMM=m ++CONFIG_IRDA_ULTRA=y ++CONFIG_IRDA_CACHE_LAST_LSAP=y ++CONFIG_IRDA_FAST_RR=y ++CONFIG_IRTTY_SIR=m ++CONFIG_KINGSUN_DONGLE=m ++CONFIG_KSDAZZLE_DONGLE=m ++CONFIG_KS959_DONGLE=m ++CONFIG_USB_IRDA=m ++CONFIG_SIGMATEL_FIR=m ++CONFIG_MCS_FIR=m ++CONFIG_BT=m ++CONFIG_BT_RFCOMM=m ++CONFIG_BT_RFCOMM_TTY=y ++CONFIG_BT_BNEP=m ++CONFIG_BT_BNEP_MC_FILTER=y ++CONFIG_BT_BNEP_PROTO_FILTER=y ++CONFIG_BT_HIDP=m ++CONFIG_BT_6LOWPAN=m ++CONFIG_BT_HCIBTUSB=m ++CONFIG_BT_HCIUART=m ++CONFIG_BT_HCIUART_3WIRE=y ++CONFIG_BT_HCIUART_BCM=y ++CONFIG_BT_HCIBCM203X=m ++CONFIG_BT_HCIBPA10X=m ++CONFIG_BT_HCIBFUSB=m ++CONFIG_BT_HCIVHCI=m ++CONFIG_BT_MRVL=m ++CONFIG_BT_MRVL_SDIO=m ++CONFIG_BT_ATH3K=m ++CONFIG_BT_WILINK=m ++CONFIG_MAC80211=m ++CONFIG_MAC80211_MESH=y ++CONFIG_WIMAX=m ++CONFIG_RFKILL=m ++CONFIG_RFKILL_INPUT=y ++CONFIG_NET_9P=m ++CONFIG_NFC=m ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y ++CONFIG_DMA_CMA=y ++CONFIG_CMA_SIZE_MBYTES=5 ++CONFIG_MTD=m ++CONFIG_MTD_BLOCK=m ++CONFIG_MTD_NAND=m ++CONFIG_MTD_UBI=m ++CONFIG_OF_CONFIGFS=y ++CONFIG_ZRAM=m ++CONFIG_BLK_DEV_LOOP=y ++CONFIG_BLK_DEV_CRYPTOLOOP=m ++CONFIG_BLK_DEV_DRBD=m ++CONFIG_BLK_DEV_NBD=m ++CONFIG_BLK_DEV_RAM=y ++CONFIG_CDROM_PKTCDVD=m ++CONFIG_ATA_OVER_ETH=m ++CONFIG_EEPROM_AT24=m ++CONFIG_TI_ST=m ++CONFIG_SCSI=y ++# CONFIG_SCSI_PROC_FS is not set ++CONFIG_BLK_DEV_SD=y ++CONFIG_CHR_DEV_ST=m ++CONFIG_CHR_DEV_OSST=m ++CONFIG_BLK_DEV_SR=m ++CONFIG_CHR_DEV_SG=m ++CONFIG_SCSI_ISCSI_ATTRS=y ++CONFIG_ISCSI_TCP=m ++CONFIG_ISCSI_BOOT_SYSFS=m ++CONFIG_MD=y ++CONFIG_MD_LINEAR=m ++CONFIG_MD_RAID0=m ++CONFIG_BLK_DEV_DM=m ++CONFIG_DM_CRYPT=m ++CONFIG_DM_SNAPSHOT=m ++CONFIG_DM_THIN_PROVISIONING=m ++CONFIG_DM_MIRROR=m ++CONFIG_DM_LOG_USERSPACE=m ++CONFIG_DM_RAID=m ++CONFIG_DM_ZERO=m ++CONFIG_DM_DELAY=m ++CONFIG_NETDEVICES=y ++CONFIG_BONDING=m ++CONFIG_DUMMY=m ++CONFIG_IFB=m ++CONFIG_MACVLAN=m ++CONFIG_IPVLAN=m ++CONFIG_VXLAN=m ++CONFIG_NETCONSOLE=m ++CONFIG_TUN=m ++CONFIG_VETH=m ++CONFIG_ENC28J60=m ++CONFIG_QCA7000=m ++CONFIG_MDIO_BITBANG=m ++CONFIG_PPP=m ++CONFIG_PPP_BSDCOMP=m ++CONFIG_PPP_DEFLATE=m ++CONFIG_PPP_FILTER=y ++CONFIG_PPP_MPPE=m ++CONFIG_PPP_MULTILINK=y ++CONFIG_PPPOATM=m ++CONFIG_PPPOE=m ++CONFIG_PPPOL2TP=m ++CONFIG_PPP_ASYNC=m ++CONFIG_PPP_SYNC_TTY=m ++CONFIG_SLIP=m ++CONFIG_SLIP_COMPRESSED=y ++CONFIG_SLIP_SMART=y ++CONFIG_USB_CATC=m ++CONFIG_USB_KAWETH=m ++CONFIG_USB_PEGASUS=m ++CONFIG_USB_RTL8150=m ++CONFIG_USB_RTL8152=m ++CONFIG_USB_USBNET=y ++CONFIG_USB_NET_AX8817X=m ++CONFIG_USB_NET_AX88179_178A=m ++CONFIG_USB_NET_CDCETHER=m ++CONFIG_USB_NET_CDC_EEM=m ++CONFIG_USB_NET_CDC_NCM=m ++CONFIG_USB_NET_HUAWEI_CDC_NCM=m ++CONFIG_USB_NET_CDC_MBIM=m ++CONFIG_USB_NET_DM9601=m ++CONFIG_USB_NET_SR9700=m ++CONFIG_USB_NET_SR9800=m ++CONFIG_USB_NET_SMSC75XX=m ++CONFIG_USB_NET_SMSC95XX=y ++CONFIG_USB_NET_GL620A=m ++CONFIG_USB_NET_NET1080=m ++CONFIG_USB_NET_PLUSB=m ++CONFIG_USB_NET_MCS7830=m ++CONFIG_USB_NET_CDC_SUBSET=m ++CONFIG_USB_ALI_M5632=y ++CONFIG_USB_AN2720=y ++CONFIG_USB_EPSON2888=y ++CONFIG_USB_KC2190=y ++CONFIG_USB_NET_ZAURUS=m ++CONFIG_USB_NET_CX82310_ETH=m ++CONFIG_USB_NET_KALMIA=m ++CONFIG_USB_NET_QMI_WWAN=m ++CONFIG_USB_HSO=m ++CONFIG_USB_NET_INT51X1=m ++CONFIG_USB_IPHETH=m ++CONFIG_USB_SIERRA_NET=m ++CONFIG_USB_VL600=m ++CONFIG_ATH9K=m ++CONFIG_ATH9K_HTC=m ++CONFIG_CARL9170=m ++CONFIG_ATH6KL=m ++CONFIG_ATH6KL_USB=m ++CONFIG_AR5523=m ++CONFIG_AT76C50X_USB=m ++CONFIG_B43=m ++# CONFIG_B43_PHY_N is not set ++CONFIG_B43LEGACY=m ++CONFIG_BRCMFMAC=m ++CONFIG_BRCMFMAC_USB=y ++CONFIG_HOSTAP=m ++CONFIG_P54_COMMON=m ++CONFIG_P54_USB=m ++CONFIG_LIBERTAS=m ++CONFIG_LIBERTAS_USB=m ++CONFIG_LIBERTAS_SDIO=m ++CONFIG_LIBERTAS_THINFIRM=m ++CONFIG_LIBERTAS_THINFIRM_USB=m ++CONFIG_MWIFIEX=m ++CONFIG_MWIFIEX_SDIO=m ++CONFIG_MT7601U=m ++CONFIG_RT2X00=m ++CONFIG_RT2500USB=m ++CONFIG_RT73USB=m ++CONFIG_RT2800USB=m ++CONFIG_RT2800USB_RT3573=y ++CONFIG_RT2800USB_RT53XX=y ++CONFIG_RT2800USB_RT55XX=y ++CONFIG_RT2800USB_UNKNOWN=y ++CONFIG_RTL8187=m ++CONFIG_RTL8192CU=n ++CONFIG_USB_ZD1201=m ++CONFIG_ZD1211RW=m ++CONFIG_MAC80211_HWSIM=m ++CONFIG_USB_NET_RNDIS_WLAN=m ++CONFIG_WIMAX_I2400M_USB=m ++CONFIG_IEEE802154_AT86RF230=m ++CONFIG_IEEE802154_MRF24J40=m ++CONFIG_IEEE802154_CC2520=m ++CONFIG_INPUT_POLLDEV=m ++# CONFIG_INPUT_MOUSEDEV_PSAUX is not set ++CONFIG_INPUT_JOYDEV=m ++CONFIG_INPUT_EVDEV=m ++# CONFIG_KEYBOARD_ATKBD is not set ++CONFIG_KEYBOARD_GPIO=m ++# CONFIG_INPUT_MOUSE is not set ++CONFIG_INPUT_JOYSTICK=y ++CONFIG_JOYSTICK_IFORCE=m ++CONFIG_JOYSTICK_IFORCE_USB=y ++CONFIG_JOYSTICK_XPAD=m ++CONFIG_JOYSTICK_XPAD_FF=y ++CONFIG_JOYSTICK_XPAD_LEDS=y ++CONFIG_JOYSTICK_RPISENSE=m ++CONFIG_INPUT_TOUCHSCREEN=y ++CONFIG_TOUCHSCREEN_ADS7846=m ++CONFIG_TOUCHSCREEN_EGALAX=m ++CONFIG_TOUCHSCREEN_FT6236=m ++CONFIG_TOUCHSCREEN_RPI_FT5406=m ++CONFIG_TOUCHSCREEN_USB_COMPOSITE=m ++CONFIG_TOUCHSCREEN_STMPE=m ++CONFIG_INPUT_MISC=y ++CONFIG_INPUT_AD714X=m ++CONFIG_INPUT_ATI_REMOTE2=m ++CONFIG_INPUT_KEYSPAN_REMOTE=m ++CONFIG_INPUT_POWERMATE=m ++CONFIG_INPUT_YEALINK=m ++CONFIG_INPUT_CM109=m ++CONFIG_INPUT_UINPUT=m ++CONFIG_INPUT_GPIO_ROTARY_ENCODER=m ++CONFIG_INPUT_ADXL34X=m ++CONFIG_INPUT_CMA3000=m ++CONFIG_SERIO=m ++CONFIG_SERIO_RAW=m ++CONFIG_GAMEPORT=m ++CONFIG_GAMEPORT_NS558=m ++CONFIG_GAMEPORT_L4=m ++CONFIG_BRCM_CHAR_DRIVERS=n ++CONFIG_BCM_VC_CMA=n ++CONFIG_BCM_VCIO=n ++CONFIG_BCM_VC_SM=n ++# CONFIG_LEGACY_PTYS is not set ++# CONFIG_DEVKMEM is not set ++CONFIG_SERIAL_8250=y ++# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set ++CONFIG_SERIAL_8250_CONSOLE=y ++# CONFIG_SERIAL_8250_DMA is not set ++CONFIG_SERIAL_8250_NR_UARTS=1 ++CONFIG_SERIAL_8250_RUNTIME_UARTS=0 ++CONFIG_SERIAL_OF_PLATFORM=y ++CONFIG_SERIAL_AMBA_PL011=y ++CONFIG_SERIAL_AMBA_PL011_CONSOLE=y ++CONFIG_SERIAL_SC16IS7XX=m ++CONFIG_SERIAL_SC16IS7XX_SPI=y ++CONFIG_TTY_PRINTK=y ++CONFIG_HW_RANDOM=y ++CONFIG_RAW_DRIVER=y ++CONFIG_I2C=y ++CONFIG_I2C_CHARDEV=m ++CONFIG_I2C_MUX_PCA954x=m ++CONFIG_I2C_BCM2708=m ++CONFIG_I2C_GPIO=m ++CONFIG_SPI=y ++CONFIG_SPI_BCM2835=m ++CONFIG_SPI_BCM2835AUX=m ++CONFIG_SPI_SPIDEV=y ++CONFIG_PPS=m ++CONFIG_PPS_CLIENT_LDISC=m ++CONFIG_PPS_CLIENT_GPIO=m ++CONFIG_GPIO_SYSFS=y ++CONFIG_GPIO_BCM_VIRT=y ++CONFIG_GPIO_ARIZONA=m ++CONFIG_GPIO_STMPE=y ++CONFIG_GPIO_MCP23S08=m ++CONFIG_W1=m ++CONFIG_W1_MASTER_DS2490=m ++CONFIG_W1_MASTER_DS2482=m ++CONFIG_W1_MASTER_DS1WM=m ++CONFIG_W1_MASTER_GPIO=m ++CONFIG_W1_SLAVE_THERM=m ++CONFIG_W1_SLAVE_SMEM=m ++CONFIG_W1_SLAVE_DS2408=m ++CONFIG_W1_SLAVE_DS2413=m ++CONFIG_W1_SLAVE_DS2406=m ++CONFIG_W1_SLAVE_DS2423=m ++CONFIG_W1_SLAVE_DS2431=m ++CONFIG_W1_SLAVE_DS2433=m ++CONFIG_W1_SLAVE_DS2760=m ++CONFIG_W1_SLAVE_DS2780=m ++CONFIG_W1_SLAVE_DS2781=m ++CONFIG_W1_SLAVE_DS28E04=m ++CONFIG_W1_SLAVE_BQ27000=m ++CONFIG_BATTERY_DS2760=m ++CONFIG_POWER_RESET=y ++CONFIG_POWER_RESET_GPIO=y ++CONFIG_HWMON=m ++CONFIG_SENSORS_LM75=m ++CONFIG_SENSORS_SHT21=m ++CONFIG_SENSORS_SHTC1=m ++CONFIG_THERMAL=y ++CONFIG_THERMAL_BCM2835=y ++CONFIG_WATCHDOG=y ++CONFIG_BCM2835_WDT=m ++CONFIG_UCB1400_CORE=m ++CONFIG_MFD_STMPE=y ++CONFIG_STMPE_SPI=y ++CONFIG_MFD_ARIZONA_I2C=m ++CONFIG_MFD_ARIZONA_SPI=m ++CONFIG_MFD_WM5102=y ++CONFIG_MEDIA_SUPPORT=m ++CONFIG_MEDIA_CAMERA_SUPPORT=y ++CONFIG_MEDIA_ANALOG_TV_SUPPORT=y ++CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y ++CONFIG_MEDIA_RADIO_SUPPORT=y ++CONFIG_MEDIA_RC_SUPPORT=y ++CONFIG_MEDIA_CONTROLLER=y ++CONFIG_LIRC=m ++CONFIG_RC_DEVICES=y ++CONFIG_RC_ATI_REMOTE=m ++CONFIG_IR_IMON=m ++CONFIG_IR_MCEUSB=m ++CONFIG_IR_REDRAT3=m ++CONFIG_IR_STREAMZAP=m ++CONFIG_IR_IGUANA=m ++CONFIG_IR_TTUSBIR=m ++CONFIG_RC_LOOPBACK=m ++CONFIG_IR_GPIO_CIR=m ++CONFIG_MEDIA_USB_SUPPORT=y ++CONFIG_USB_VIDEO_CLASS=m ++CONFIG_USB_M5602=m ++CONFIG_USB_STV06XX=m ++CONFIG_USB_GL860=m ++CONFIG_USB_GSPCA_BENQ=m ++CONFIG_USB_GSPCA_CONEX=m ++CONFIG_USB_GSPCA_CPIA1=m ++CONFIG_USB_GSPCA_DTCS033=m ++CONFIG_USB_GSPCA_ETOMS=m ++CONFIG_USB_GSPCA_FINEPIX=m ++CONFIG_USB_GSPCA_JEILINJ=m ++CONFIG_USB_GSPCA_JL2005BCD=m ++CONFIG_USB_GSPCA_KINECT=m ++CONFIG_USB_GSPCA_KONICA=m ++CONFIG_USB_GSPCA_MARS=m ++CONFIG_USB_GSPCA_MR97310A=m ++CONFIG_USB_GSPCA_NW80X=m ++CONFIG_USB_GSPCA_OV519=m ++CONFIG_USB_GSPCA_OV534=m ++CONFIG_USB_GSPCA_OV534_9=m ++CONFIG_USB_GSPCA_PAC207=m ++CONFIG_USB_GSPCA_PAC7302=m ++CONFIG_USB_GSPCA_PAC7311=m ++CONFIG_USB_GSPCA_SE401=m ++CONFIG_USB_GSPCA_SN9C2028=m ++CONFIG_USB_GSPCA_SN9C20X=m ++CONFIG_USB_GSPCA_SONIXB=m ++CONFIG_USB_GSPCA_SONIXJ=m ++CONFIG_USB_GSPCA_SPCA500=m ++CONFIG_USB_GSPCA_SPCA501=m ++CONFIG_USB_GSPCA_SPCA505=m ++CONFIG_USB_GSPCA_SPCA506=m ++CONFIG_USB_GSPCA_SPCA508=m ++CONFIG_USB_GSPCA_SPCA561=m ++CONFIG_USB_GSPCA_SPCA1528=m ++CONFIG_USB_GSPCA_SQ905=m ++CONFIG_USB_GSPCA_SQ905C=m ++CONFIG_USB_GSPCA_SQ930X=m ++CONFIG_USB_GSPCA_STK014=m ++CONFIG_USB_GSPCA_STK1135=m ++CONFIG_USB_GSPCA_STV0680=m ++CONFIG_USB_GSPCA_SUNPLUS=m ++CONFIG_USB_GSPCA_T613=m ++CONFIG_USB_GSPCA_TOPRO=m ++CONFIG_USB_GSPCA_TV8532=m ++CONFIG_USB_GSPCA_VC032X=m ++CONFIG_USB_GSPCA_VICAM=m ++CONFIG_USB_GSPCA_XIRLINK_CIT=m ++CONFIG_USB_GSPCA_ZC3XX=m ++CONFIG_USB_PWC=m ++CONFIG_VIDEO_CPIA2=m ++CONFIG_USB_ZR364XX=m ++CONFIG_USB_STKWEBCAM=m ++CONFIG_USB_S2255=m ++CONFIG_VIDEO_USBTV=m ++CONFIG_VIDEO_PVRUSB2=m ++CONFIG_VIDEO_HDPVR=m ++CONFIG_VIDEO_USBVISION=m ++CONFIG_VIDEO_STK1160_COMMON=m ++CONFIG_VIDEO_STK1160_AC97=y ++CONFIG_VIDEO_GO7007=m ++CONFIG_VIDEO_GO7007_USB=m ++CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m ++CONFIG_VIDEO_AU0828=m ++CONFIG_VIDEO_AU0828_RC=y ++CONFIG_VIDEO_CX231XX=m ++CONFIG_VIDEO_CX231XX_ALSA=m ++CONFIG_VIDEO_CX231XX_DVB=m ++CONFIG_VIDEO_TM6000=m ++CONFIG_VIDEO_TM6000_ALSA=m ++CONFIG_VIDEO_TM6000_DVB=m ++CONFIG_DVB_USB=m ++CONFIG_DVB_USB_A800=m ++CONFIG_DVB_USB_DIBUSB_MB=m ++CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y ++CONFIG_DVB_USB_DIBUSB_MC=m ++CONFIG_DVB_USB_DIB0700=m ++CONFIG_DVB_USB_UMT_010=m ++CONFIG_DVB_USB_CXUSB=m ++CONFIG_DVB_USB_M920X=m ++CONFIG_DVB_USB_DIGITV=m ++CONFIG_DVB_USB_VP7045=m ++CONFIG_DVB_USB_VP702X=m ++CONFIG_DVB_USB_GP8PSK=m ++CONFIG_DVB_USB_NOVA_T_USB2=m ++CONFIG_DVB_USB_TTUSB2=m ++CONFIG_DVB_USB_DTT200U=m ++CONFIG_DVB_USB_OPERA1=m ++CONFIG_DVB_USB_AF9005=m ++CONFIG_DVB_USB_AF9005_REMOTE=m ++CONFIG_DVB_USB_PCTV452E=m ++CONFIG_DVB_USB_DW2102=m ++CONFIG_DVB_USB_CINERGY_T2=m ++CONFIG_DVB_USB_DTV5100=m ++CONFIG_DVB_USB_FRIIO=m ++CONFIG_DVB_USB_AZ6027=m ++CONFIG_DVB_USB_TECHNISAT_USB2=m ++CONFIG_DVB_USB_V2=m ++CONFIG_DVB_USB_AF9015=m ++CONFIG_DVB_USB_AF9035=m ++CONFIG_DVB_USB_ANYSEE=m ++CONFIG_DVB_USB_AU6610=m ++CONFIG_DVB_USB_AZ6007=m ++CONFIG_DVB_USB_CE6230=m ++CONFIG_DVB_USB_EC168=m ++CONFIG_DVB_USB_GL861=m ++CONFIG_DVB_USB_LME2510=m ++CONFIG_DVB_USB_MXL111SF=m ++CONFIG_DVB_USB_RTL28XXU=m ++CONFIG_DVB_USB_DVBSKY=m ++CONFIG_SMS_USB_DRV=m ++CONFIG_DVB_B2C2_FLEXCOP_USB=m ++CONFIG_DVB_AS102=m ++CONFIG_VIDEO_EM28XX=m ++CONFIG_VIDEO_EM28XX_V4L2=m ++CONFIG_VIDEO_EM28XX_ALSA=m ++CONFIG_VIDEO_EM28XX_DVB=m ++CONFIG_V4L_PLATFORM_DRIVERS=y ++CONFIG_VIDEO_BCM2835=n ++CONFIG_VIDEO_BCM2835_MMAL=n ++CONFIG_RADIO_SI470X=y ++CONFIG_USB_SI470X=m ++CONFIG_I2C_SI470X=m ++CONFIG_RADIO_SI4713=m ++CONFIG_I2C_SI4713=m ++CONFIG_USB_MR800=m ++CONFIG_USB_DSBR=m ++CONFIG_RADIO_SHARK=m ++CONFIG_RADIO_SHARK2=m ++CONFIG_USB_KEENE=m ++CONFIG_USB_MA901=m ++CONFIG_RADIO_TEA5764=m ++CONFIG_RADIO_SAA7706H=m ++CONFIG_RADIO_TEF6862=m ++CONFIG_RADIO_WL1273=m ++CONFIG_RADIO_WL128X=m ++# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set ++CONFIG_VIDEO_UDA1342=m ++CONFIG_VIDEO_SONY_BTF_MPX=m ++CONFIG_VIDEO_TVP5150=m ++CONFIG_VIDEO_TW2804=m ++CONFIG_VIDEO_TW9903=m ++CONFIG_VIDEO_TW9906=m ++CONFIG_VIDEO_OV7640=m ++CONFIG_VIDEO_MT9V011=m ++CONFIG_DRM=m ++CONFIG_DRM_LOAD_EDID_FIRMWARE=y ++CONFIG_DRM_UDL=m ++CONFIG_DRM_VC4=m ++CONFIG_FB=y ++CONFIG_FB_BCM2708=y ++CONFIG_FB_UDL=m ++CONFIG_FB_SSD1307=m ++CONFIG_FB_RPISENSE=m ++# CONFIG_BACKLIGHT_GENERIC is not set ++CONFIG_BACKLIGHT_RPI=m ++CONFIG_BACKLIGHT_GPIO=m ++CONFIG_FRAMEBUFFER_CONSOLE=y ++CONFIG_LOGO=y ++# CONFIG_LOGO_LINUX_MONO is not set ++# CONFIG_LOGO_LINUX_VGA16 is not set ++CONFIG_SOUND=y ++CONFIG_SND=m ++CONFIG_SND_SEQUENCER=m ++CONFIG_SND_SEQ_DUMMY=m ++CONFIG_SND_MIXER_OSS=m ++CONFIG_SND_PCM_OSS=m ++CONFIG_SND_SEQUENCER_OSS=y ++CONFIG_SND_HRTIMER=m ++CONFIG_SND_DUMMY=m ++CONFIG_SND_ALOOP=m ++CONFIG_SND_VIRMIDI=m ++CONFIG_SND_MTPAV=m ++CONFIG_SND_SERIAL_U16550=m ++CONFIG_SND_MPU401=m ++CONFIG_SND_ARM=n ++CONFIG_SND_BCM2835=n ++CONFIG_SND_USB_AUDIO=m ++CONFIG_SND_USB_UA101=m ++CONFIG_SND_USB_CAIAQ=m ++CONFIG_SND_USB_CAIAQ_INPUT=y ++CONFIG_SND_USB_6FIRE=m ++CONFIG_SND_SOC=m ++CONFIG_SND_BCM2835_SOC_I2S=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m ++CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m ++CONFIG_SND_BCM2708_SOC_RPI_DAC=m ++CONFIG_SND_BCM2708_SOC_RPI_PROTO=m ++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC=m ++CONFIG_SND_BCM2708_SOC_JUSTBOOM_DIGI=m ++CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m ++CONFIG_SND_BCM2708_SOC_IQAUDIO_DIGI=m ++CONFIG_SND_BCM2708_SOC_RASPIDAC3=m ++CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m ++CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m ++CONFIG_SND_DIGIDAC1_SOUNDCARD=m ++CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m ++CONFIG_SND_SOC_ADAU1701=m ++CONFIG_SND_SOC_WM8804_I2C=m ++CONFIG_SND_SIMPLE_CARD=m ++CONFIG_SOUND_PRIME=m ++CONFIG_HIDRAW=y ++CONFIG_UHID=m ++CONFIG_HID_A4TECH=m ++CONFIG_HID_ACRUX=m ++CONFIG_HID_APPLE=m ++CONFIG_HID_BELKIN=m ++CONFIG_HID_BETOP_FF=m ++CONFIG_HID_CHERRY=m ++CONFIG_HID_CHICONY=m ++CONFIG_HID_CYPRESS=m ++CONFIG_HID_DRAGONRISE=m ++CONFIG_HID_EMS_FF=m ++CONFIG_HID_ELECOM=m ++CONFIG_HID_ELO=m ++CONFIG_HID_EZKEY=m ++CONFIG_HID_GEMBIRD=m ++CONFIG_HID_HOLTEK=m ++CONFIG_HID_KEYTOUCH=m ++CONFIG_HID_KYE=m ++CONFIG_HID_UCLOGIC=m ++CONFIG_HID_WALTOP=m ++CONFIG_HID_GYRATION=m ++CONFIG_HID_TWINHAN=m ++CONFIG_HID_KENSINGTON=m ++CONFIG_HID_LCPOWER=m ++CONFIG_HID_LOGITECH=m ++CONFIG_HID_LOGITECH_DJ=m ++CONFIG_LOGITECH_FF=y ++CONFIG_LOGIRUMBLEPAD2_FF=y ++CONFIG_LOGIG940_FF=y ++CONFIG_HID_MAGICMOUSE=m ++CONFIG_HID_MICROSOFT=m ++CONFIG_HID_MONTEREY=m ++CONFIG_HID_MULTITOUCH=m ++CONFIG_HID_NTRIG=m ++CONFIG_HID_ORTEK=m ++CONFIG_HID_PANTHERLORD=m ++CONFIG_HID_PETALYNX=m ++CONFIG_HID_PICOLCD=m ++CONFIG_HID_ROCCAT=m ++CONFIG_HID_SAMSUNG=m ++CONFIG_HID_SONY=m ++CONFIG_HID_SPEEDLINK=m ++CONFIG_HID_SUNPLUS=m ++CONFIG_HID_GREENASIA=m ++CONFIG_HID_SMARTJOYPLUS=m ++CONFIG_HID_TOPSEED=m ++CONFIG_HID_THINGM=m ++CONFIG_HID_THRUSTMASTER=m ++CONFIG_HID_WACOM=m ++CONFIG_HID_WIIMOTE=m ++CONFIG_HID_XINMO=m ++CONFIG_HID_ZEROPLUS=m ++CONFIG_HID_ZYDACRON=m ++CONFIG_HID_PID=y ++CONFIG_USB_HIDDEV=y ++CONFIG_USB=y ++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y ++CONFIG_USB_MON=m ++CONFIG_USB_DWCOTG=n ++CONFIG_USB_DWC2=y ++CONFIG_USB_PRINTER=m ++CONFIG_USB_STORAGE=y ++CONFIG_USB_STORAGE_REALTEK=m ++CONFIG_USB_STORAGE_DATAFAB=m ++CONFIG_USB_STORAGE_FREECOM=m ++CONFIG_USB_STORAGE_ISD200=m ++CONFIG_USB_STORAGE_USBAT=m ++CONFIG_USB_STORAGE_SDDR09=m ++CONFIG_USB_STORAGE_SDDR55=m ++CONFIG_USB_STORAGE_JUMPSHOT=m ++CONFIG_USB_STORAGE_ALAUDA=m ++CONFIG_USB_STORAGE_ONETOUCH=m ++CONFIG_USB_STORAGE_KARMA=m ++CONFIG_USB_STORAGE_CYPRESS_ATACB=m ++CONFIG_USB_STORAGE_ENE_UB6250=m ++CONFIG_USB_MDC800=m ++CONFIG_USB_MICROTEK=m ++CONFIG_USBIP_CORE=m ++CONFIG_USBIP_VHCI_HCD=m ++CONFIG_USBIP_HOST=m ++CONFIG_USB_SERIAL=m ++CONFIG_USB_SERIAL_GENERIC=y ++CONFIG_USB_SERIAL_AIRCABLE=m ++CONFIG_USB_SERIAL_ARK3116=m ++CONFIG_USB_SERIAL_BELKIN=m ++CONFIG_USB_SERIAL_CH341=m ++CONFIG_USB_SERIAL_WHITEHEAT=m ++CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m ++CONFIG_USB_SERIAL_CP210X=m ++CONFIG_USB_SERIAL_CYPRESS_M8=m ++CONFIG_USB_SERIAL_EMPEG=m ++CONFIG_USB_SERIAL_FTDI_SIO=m ++CONFIG_USB_SERIAL_VISOR=m ++CONFIG_USB_SERIAL_IPAQ=m ++CONFIG_USB_SERIAL_IR=m ++CONFIG_USB_SERIAL_EDGEPORT=m ++CONFIG_USB_SERIAL_EDGEPORT_TI=m ++CONFIG_USB_SERIAL_F81232=m ++CONFIG_USB_SERIAL_GARMIN=m ++CONFIG_USB_SERIAL_IPW=m ++CONFIG_USB_SERIAL_IUU=m ++CONFIG_USB_SERIAL_KEYSPAN_PDA=m ++CONFIG_USB_SERIAL_KEYSPAN=m ++CONFIG_USB_SERIAL_KLSI=m ++CONFIG_USB_SERIAL_KOBIL_SCT=m ++CONFIG_USB_SERIAL_MCT_U232=m ++CONFIG_USB_SERIAL_METRO=m ++CONFIG_USB_SERIAL_MOS7720=m ++CONFIG_USB_SERIAL_MOS7840=m ++CONFIG_USB_SERIAL_NAVMAN=m ++CONFIG_USB_SERIAL_PL2303=m ++CONFIG_USB_SERIAL_OTI6858=m ++CONFIG_USB_SERIAL_QCAUX=m ++CONFIG_USB_SERIAL_QUALCOMM=m ++CONFIG_USB_SERIAL_SPCP8X5=m ++CONFIG_USB_SERIAL_SAFE=m ++CONFIG_USB_SERIAL_SIERRAWIRELESS=m ++CONFIG_USB_SERIAL_SYMBOL=m ++CONFIG_USB_SERIAL_TI=m ++CONFIG_USB_SERIAL_CYBERJACK=m ++CONFIG_USB_SERIAL_XIRCOM=m ++CONFIG_USB_SERIAL_OPTION=m ++CONFIG_USB_SERIAL_OMNINET=m ++CONFIG_USB_SERIAL_OPTICON=m ++CONFIG_USB_SERIAL_XSENS_MT=m ++CONFIG_USB_SERIAL_WISHBONE=m ++CONFIG_USB_SERIAL_SSU100=m ++CONFIG_USB_SERIAL_QT2=m ++CONFIG_USB_SERIAL_DEBUG=m ++CONFIG_USB_EMI62=m ++CONFIG_USB_EMI26=m ++CONFIG_USB_ADUTUX=m ++CONFIG_USB_SEVSEG=m ++CONFIG_USB_RIO500=m ++CONFIG_USB_LEGOTOWER=m ++CONFIG_USB_LCD=m ++CONFIG_USB_CYPRESS_CY7C63=m ++CONFIG_USB_CYTHERM=m ++CONFIG_USB_IDMOUSE=m ++CONFIG_USB_FTDI_ELAN=m ++CONFIG_USB_APPLEDISPLAY=m ++CONFIG_USB_LD=m ++CONFIG_USB_TRANCEVIBRATOR=m ++CONFIG_USB_IOWARRIOR=m ++CONFIG_USB_TEST=m ++CONFIG_USB_ISIGHTFW=m ++CONFIG_USB_YUREX=m ++CONFIG_USB_ATM=m ++CONFIG_USB_SPEEDTOUCH=m ++CONFIG_USB_CXACRU=m ++CONFIG_USB_UEAGLEATM=m ++CONFIG_USB_XUSBATM=m ++CONFIG_MMC=y ++CONFIG_MMC_BLOCK_MINORS=32 ++CONFIG_MMC_BCM2835=y ++CONFIG_MMC_BCM2835_DMA=y ++CONFIG_MMC_BCM2835_SDHOST=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_PLTFM=y ++CONFIG_MMC_SPI=m ++CONFIG_LEDS_CLASS=y ++CONFIG_LEDS_GPIO=y ++CONFIG_LEDS_TRIGGER_TIMER=y ++CONFIG_LEDS_TRIGGER_ONESHOT=y ++CONFIG_LEDS_TRIGGER_HEARTBEAT=y ++CONFIG_LEDS_TRIGGER_BACKLIGHT=y ++CONFIG_LEDS_TRIGGER_CPU=y ++CONFIG_LEDS_TRIGGER_GPIO=y ++CONFIG_LEDS_TRIGGER_DEFAULT_ON=y ++CONFIG_LEDS_TRIGGER_TRANSIENT=m ++CONFIG_LEDS_TRIGGER_CAMERA=m ++CONFIG_LEDS_TRIGGER_INPUT=y ++CONFIG_LEDS_TRIGGER_PANIC=y ++CONFIG_RTC_CLASS=y ++# CONFIG_RTC_HCTOSYS is not set ++CONFIG_RTC_DRV_DS1307=m ++CONFIG_RTC_DRV_DS1374=m ++CONFIG_RTC_DRV_DS1672=m ++CONFIG_RTC_DRV_MAX6900=m ++CONFIG_RTC_DRV_RS5C372=m ++CONFIG_RTC_DRV_ISL1208=m ++CONFIG_RTC_DRV_ISL12022=m ++CONFIG_RTC_DRV_ISL12057=m ++CONFIG_RTC_DRV_X1205=m ++CONFIG_RTC_DRV_PCF8523=m ++CONFIG_RTC_DRV_PCF8563=m ++CONFIG_RTC_DRV_PCF8583=m ++CONFIG_RTC_DRV_M41T80=m ++CONFIG_RTC_DRV_BQ32K=m ++CONFIG_RTC_DRV_S35390A=m ++CONFIG_RTC_DRV_FM3130=m ++CONFIG_RTC_DRV_RX8581=m ++CONFIG_RTC_DRV_RX8025=m ++CONFIG_RTC_DRV_EM3027=m ++CONFIG_RTC_DRV_M41T93=m ++CONFIG_RTC_DRV_M41T94=m ++CONFIG_RTC_DRV_DS1302=m ++CONFIG_RTC_DRV_DS1305=m ++CONFIG_RTC_DRV_DS1390=m ++CONFIG_RTC_DRV_R9701=m ++CONFIG_RTC_DRV_RX4581=m ++CONFIG_RTC_DRV_RS5C348=m ++CONFIG_RTC_DRV_MAX6902=m ++CONFIG_RTC_DRV_PCF2123=m ++CONFIG_RTC_DRV_DS3232=m ++CONFIG_RTC_DRV_PCF2127=m ++CONFIG_RTC_DRV_RV3029C2=m ++CONFIG_DMADEVICES=y ++CONFIG_DMA_BCM2835=y ++CONFIG_DMA_BCM2708=y ++CONFIG_UIO=m ++CONFIG_UIO_PDRV_GENIRQ=m ++CONFIG_STAGING=y ++CONFIG_PRISM2_USB=m ++CONFIG_R8712U=m ++CONFIG_R8188EU=m ++CONFIG_R8723AU=m ++CONFIG_VT6656=m ++CONFIG_SPEAKUP=m ++CONFIG_SPEAKUP_SYNTH_SOFT=m ++CONFIG_STAGING_MEDIA=y ++CONFIG_LIRC_STAGING=y ++CONFIG_LIRC_IMON=m ++CONFIG_LIRC_RPI=m ++CONFIG_LIRC_SASEM=m ++CONFIG_LIRC_SERIAL=m ++CONFIG_FB_TFT=m ++CONFIG_FB_TFT_AGM1264K_FL=m ++CONFIG_FB_TFT_BD663474=m ++CONFIG_FB_TFT_HX8340BN=m ++CONFIG_FB_TFT_HX8347D=m ++CONFIG_FB_TFT_HX8353D=m ++CONFIG_FB_TFT_ILI9163=m ++CONFIG_FB_TFT_ILI9320=m ++CONFIG_FB_TFT_ILI9325=m ++CONFIG_FB_TFT_ILI9340=m ++CONFIG_FB_TFT_ILI9341=m ++CONFIG_FB_TFT_ILI9481=m ++CONFIG_FB_TFT_ILI9486=m ++CONFIG_FB_TFT_PCD8544=m ++CONFIG_FB_TFT_RA8875=m ++CONFIG_FB_TFT_S6D02A1=m ++CONFIG_FB_TFT_S6D1121=m ++CONFIG_FB_TFT_SSD1289=m ++CONFIG_FB_TFT_SSD1306=m ++CONFIG_FB_TFT_SSD1331=m ++CONFIG_FB_TFT_SSD1351=m ++CONFIG_FB_TFT_ST7735R=m ++CONFIG_FB_TFT_TINYLCD=m ++CONFIG_FB_TFT_TLS8204=m ++CONFIG_FB_TFT_UC1701=m ++CONFIG_FB_TFT_UPD161704=m ++CONFIG_FB_TFT_WATTEROTT=m ++CONFIG_FB_FLEX=m ++CONFIG_FB_TFT_FBTFT_DEVICE=m ++CONFIG_MAILBOX=y ++CONFIG_BCM2835_MBOX=y ++# CONFIG_IOMMU_SUPPORT is not set ++CONFIG_RASPBERRYPI_POWER=y ++CONFIG_EXTCON=m ++CONFIG_EXTCON_ARIZONA=m ++CONFIG_IIO=m ++CONFIG_IIO_BUFFER=y ++CONFIG_IIO_BUFFER_CB=m ++CONFIG_IIO_KFIFO_BUF=m ++CONFIG_MCP320X=m ++CONFIG_MCP3422=m ++CONFIG_DHT11=m ++CONFIG_PWM_BCM2835=m ++CONFIG_PWM_PCA9685=m ++CONFIG_RASPBERRYPI_FIRMWARE=y ++CONFIG_EXT4_FS=y ++CONFIG_EXT4_FS_POSIX_ACL=y ++CONFIG_EXT4_FS_SECURITY=y ++CONFIG_REISERFS_FS=m ++CONFIG_REISERFS_FS_XATTR=y ++CONFIG_REISERFS_FS_POSIX_ACL=y ++CONFIG_REISERFS_FS_SECURITY=y ++CONFIG_JFS_FS=m ++CONFIG_JFS_POSIX_ACL=y ++CONFIG_JFS_SECURITY=y ++CONFIG_JFS_STATISTICS=y ++CONFIG_XFS_FS=m ++CONFIG_XFS_QUOTA=y ++CONFIG_XFS_POSIX_ACL=y ++CONFIG_XFS_RT=y ++CONFIG_GFS2_FS=m ++CONFIG_OCFS2_FS=m ++CONFIG_BTRFS_FS=m ++CONFIG_BTRFS_FS_POSIX_ACL=y ++CONFIG_NILFS2_FS=m ++CONFIG_F2FS_FS=y ++CONFIG_FANOTIFY=y ++CONFIG_QFMT_V1=m ++CONFIG_QFMT_V2=m ++CONFIG_AUTOFS4_FS=y ++CONFIG_FUSE_FS=m ++CONFIG_CUSE=m ++CONFIG_OVERLAY_FS=m ++CONFIG_FSCACHE=y ++CONFIG_FSCACHE_STATS=y ++CONFIG_FSCACHE_HISTOGRAM=y ++CONFIG_CACHEFILES=y ++CONFIG_ISO9660_FS=m ++CONFIG_JOLIET=y ++CONFIG_ZISOFS=y ++CONFIG_UDF_FS=m ++CONFIG_MSDOS_FS=y ++CONFIG_VFAT_FS=y ++CONFIG_FAT_DEFAULT_IOCHARSET="ascii" ++CONFIG_NTFS_FS=m ++CONFIG_NTFS_RW=y ++CONFIG_TMPFS=y ++CONFIG_TMPFS_POSIX_ACL=y ++CONFIG_ECRYPT_FS=m ++CONFIG_HFS_FS=m ++CONFIG_HFSPLUS_FS=m ++CONFIG_JFFS2_FS=m ++CONFIG_JFFS2_SUMMARY=y ++CONFIG_UBIFS_FS=m ++CONFIG_SQUASHFS=m ++CONFIG_SQUASHFS_XATTR=y ++CONFIG_SQUASHFS_LZO=y ++CONFIG_SQUASHFS_XZ=y ++CONFIG_NFS_FS=y ++CONFIG_NFS_V3_ACL=y ++CONFIG_NFS_V4=y ++CONFIG_NFS_SWAP=y ++CONFIG_ROOT_NFS=y ++CONFIG_NFS_FSCACHE=y ++CONFIG_NFSD=m ++CONFIG_NFSD_V3_ACL=y ++CONFIG_NFSD_V4=y ++CONFIG_CIFS=m ++CONFIG_CIFS_WEAK_PW_HASH=y ++CONFIG_CIFS_UPCALL=y ++CONFIG_CIFS_XATTR=y ++CONFIG_CIFS_POSIX=y ++CONFIG_CIFS_ACL=y ++CONFIG_CIFS_DFS_UPCALL=y ++CONFIG_CIFS_SMB2=y ++CONFIG_CIFS_FSCACHE=y ++CONFIG_9P_FS=m ++CONFIG_9P_FS_POSIX_ACL=y ++CONFIG_NLS_DEFAULT="utf8" ++CONFIG_NLS_CODEPAGE_437=y ++CONFIG_NLS_CODEPAGE_737=m ++CONFIG_NLS_CODEPAGE_775=m ++CONFIG_NLS_CODEPAGE_850=m ++CONFIG_NLS_CODEPAGE_852=m ++CONFIG_NLS_CODEPAGE_855=m ++CONFIG_NLS_CODEPAGE_857=m ++CONFIG_NLS_CODEPAGE_860=m ++CONFIG_NLS_CODEPAGE_861=m ++CONFIG_NLS_CODEPAGE_862=m ++CONFIG_NLS_CODEPAGE_863=m ++CONFIG_NLS_CODEPAGE_864=m ++CONFIG_NLS_CODEPAGE_865=m ++CONFIG_NLS_CODEPAGE_866=m ++CONFIG_NLS_CODEPAGE_869=m ++CONFIG_NLS_CODEPAGE_936=m ++CONFIG_NLS_CODEPAGE_950=m ++CONFIG_NLS_CODEPAGE_932=m ++CONFIG_NLS_CODEPAGE_949=m ++CONFIG_NLS_CODEPAGE_874=m ++CONFIG_NLS_ISO8859_8=m ++CONFIG_NLS_CODEPAGE_1250=m ++CONFIG_NLS_CODEPAGE_1251=m ++CONFIG_NLS_ASCII=y ++CONFIG_NLS_ISO8859_1=m ++CONFIG_NLS_ISO8859_2=m ++CONFIG_NLS_ISO8859_3=m ++CONFIG_NLS_ISO8859_4=m ++CONFIG_NLS_ISO8859_5=m ++CONFIG_NLS_ISO8859_6=m ++CONFIG_NLS_ISO8859_7=m ++CONFIG_NLS_ISO8859_9=m ++CONFIG_NLS_ISO8859_13=m ++CONFIG_NLS_ISO8859_14=m ++CONFIG_NLS_ISO8859_15=m ++CONFIG_NLS_KOI8_R=m ++CONFIG_NLS_KOI8_U=m ++CONFIG_DLM=m ++CONFIG_PRINTK_TIME=y ++CONFIG_BOOT_PRINTK_DELAY=y ++CONFIG_DEBUG_MEMORY_INIT=y ++CONFIG_DETECT_HUNG_TASK=y ++CONFIG_TIMER_STATS=y ++CONFIG_IRQSOFF_TRACER=y ++CONFIG_SCHED_TRACER=y ++CONFIG_STACK_TRACER=y ++CONFIG_BLK_DEV_IO_TRACE=y ++# CONFIG_KPROBE_EVENT is not set ++CONFIG_FUNCTION_PROFILER=y ++CONFIG_KGDB=y ++CONFIG_KGDB_KDB=y ++CONFIG_KDB_KEYBOARD=y ++CONFIG_CRYPTO_USER=m ++CONFIG_CRYPTO_CBC=y ++CONFIG_CRYPTO_CTS=m ++CONFIG_CRYPTO_XTS=m ++CONFIG_CRYPTO_XCBC=m ++CONFIG_CRYPTO_TGR192=m ++CONFIG_CRYPTO_WP512=m ++CONFIG_CRYPTO_CAST5=m ++CONFIG_CRYPTO_DES=y ++CONFIG_CRYPTO_USER_API_SKCIPHER=m ++CONFIG_ARM64_CRYPTO=y ++CONFIG_CRC_ITU_T=y ++CONFIG_LIBCRC32C=y ++CONFIG_BCM2708_VCHIQ=n -From c53407334f9e4adfbef2ef65012f1b7e05d653ee Mon Sep 17 00:00:00 2001 +From 3d4788a08c14765335dfc93749bfa528ad9b5727 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Wed, 5 Oct 2016 16:10:59 +0100 +Subject: [PATCH 112/132] bcm2835-cpufreq: Only report a single frequency when + max and min frequencies are the same + +4.8 kernel gives EINV error when max and min frequencies are the same (e.g. from using force_turbo=1) +--- + drivers/cpufreq/bcm2835-cpufreq.c | 27 ++++++++++++++++----------- + 1 file changed, 16 insertions(+), 11 deletions(-) + +diff --git a/drivers/cpufreq/bcm2835-cpufreq.c b/drivers/cpufreq/bcm2835-cpufreq.c +index 3eb9e9326231b08e6ee95ad486485245c71cf868..414fbdc10dfbfc6e4bb47870a7af3fd5780f9c9a 100644 +--- a/drivers/cpufreq/bcm2835-cpufreq.c ++++ b/drivers/cpufreq/bcm2835-cpufreq.c +@@ -45,12 +45,8 @@ + + /* ---------- GLOBALS ---------- */ + static struct cpufreq_driver bcm2835_cpufreq_driver; /* the cpufreq driver global */ +- +-static struct cpufreq_frequency_table bcm2835_freq_table[] = { +- {0, 0, 0}, +- {0, 0, 0}, +- {0, 0, CPUFREQ_TABLE_END}, +-}; ++static unsigned int min_frequency, max_frequency; ++static struct cpufreq_frequency_table bcm2835_freq_table[3]; + + /* + =============================================== +@@ -155,10 +151,19 @@ static int bcm2835_cpufreq_driver_init(struct cpufreq_policy *policy) + } + + /* now find out what the maximum and minimum frequencies are */ +- bcm2835_freq_table[0].frequency = bcm2835_cpufreq_get_clock(RPI_FIRMWARE_GET_MIN_CLOCK_RATE); +- bcm2835_freq_table[1].frequency = bcm2835_cpufreq_get_clock(RPI_FIRMWARE_GET_MAX_CLOCK_RATE); ++ min_frequency = bcm2835_cpufreq_get_clock(RPI_FIRMWARE_GET_MIN_CLOCK_RATE); ++ max_frequency = bcm2835_cpufreq_get_clock(RPI_FIRMWARE_GET_MAX_CLOCK_RATE); ++ ++ if (min_frequency == max_frequency) { ++ bcm2835_freq_table[0].frequency = min_frequency; ++ bcm2835_freq_table[1].frequency = CPUFREQ_TABLE_END; ++ } else { ++ bcm2835_freq_table[0].frequency = min_frequency; ++ bcm2835_freq_table[1].frequency = max_frequency; ++ bcm2835_freq_table[2].frequency = CPUFREQ_TABLE_END; ++ } + +- print_info("min=%d max=%d\n", bcm2835_freq_table[0].frequency, bcm2835_freq_table[1].frequency); ++ print_info("min=%d max=%d\n", min_frequency, max_frequency); + return cpufreq_generic_init(policy, bcm2835_freq_table, transition_latency); + } + +@@ -170,7 +175,7 @@ static int bcm2835_cpufreq_driver_init(struct cpufreq_policy *policy) + + static int bcm2835_cpufreq_driver_target_index(struct cpufreq_policy *policy, unsigned int state) + { +- unsigned int target_freq = bcm2835_freq_table[state].frequency; ++ unsigned int target_freq = state == 0 ? min_frequency : max_frequency; + unsigned int cur = bcm2835_cpufreq_set_clock(policy->cur, target_freq); + + if (!cur) +@@ -192,7 +197,7 @@ static unsigned int bcm2835_cpufreq_driver_get(unsigned int cpu) + { + unsigned int actual_rate = bcm2835_cpufreq_get_clock(RPI_FIRMWARE_GET_CLOCK_RATE); + print_debug("cpu%d: freq=%d\n", cpu, actual_rate); +- return actual_rate <= bcm2835_freq_table[0].frequency ? bcm2835_freq_table[0].frequency : bcm2835_freq_table[1].frequency; ++ return actual_rate <= min_frequency ? min_frequency : max_frequency; + } + + /* the CPUFreq driver */ + +From d641ce51bafbff52c3753a17afadc0a99647054c Mon Sep 17 00:00:00 2001 From: Phil Elwell -Date: Fri, 1 Jul 2016 22:09:24 +0100 -Subject: [PATCH 101/160] spi-bcm2835: Disable forced software CS +Date: Fri, 7 Oct 2016 12:37:09 +0100 +Subject: [PATCH 113/132] scripts/mkknlimg: Change string for DDT detection -Select software CS in bcm2708_common.dtsi, and disable the automatic -conversion in the driver to allow hardware CS to be re-enabled with an -overlay. - -See: https://github.com/raspberrypi/linux/issues/1547 +The old "of_overlay_apply" string does not appear in 4.8 kernel builds. +"of_cfs_init" is both present and a more accurate indication of support +for dynamically loading overlays (although the trailer is now of little +practical use and the firmware assumes DT support and will look for +both .dtbo and -overlay.dtb overlays). Signed-off-by: Phil Elwell --- - drivers/spi/spi-bcm2835.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c -index 5dfe20ffc2866fa6789825016c585175a29705b6..8493474d286f7a1ac6454a22c61c8c2cef9121bf 100644 ---- a/drivers/spi/spi-bcm2835.c -+++ b/drivers/spi/spi-bcm2835.c -@@ -707,6 +707,7 @@ static int bcm2835_spi_setup(struct spi_device *spi) - return -EINVAL; - } - -+#if 0 - /* now translate native cs to GPIO */ - /* first look for chip select pins in the devices pin groups */ - for (pingroup_index = 0; -@@ -756,6 +757,7 @@ static int bcm2835_spi_setup(struct spi_device *spi) - spi->chip_select, spi->cs_gpio, err); - return err; - } -+#endif - - return 0; - } - -From 7dc49b126a62f072519ec83f6691a0daa6209d52 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Thu, 28 Jul 2016 11:39:51 +0100 -Subject: [PATCH 102/160] config: Enable CONFIG_USER_NS - ---- - arch/arm/configs/bcm2709_defconfig | 2 +- - arch/arm/configs/bcmrpi_defconfig | 1 + - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index af34386096ebc5b3c7d7cf60120e5ad48ba635b8..ed0b455b49f9efff4be980d8bdd59df4f5ee0639 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -22,6 +22,7 @@ CONFIG_CPUSETS=y - CONFIG_CGROUP_DEVICE=y - CONFIG_CGROUP_CPUACCT=y - CONFIG_NAMESPACES=y -+CONFIG_USER_NS=y - CONFIG_SCHED_AUTOGROUP=y - CONFIG_BLK_DEV_INITRD=y - CONFIG_EMBEDDED=y -@@ -586,7 +587,6 @@ CONFIG_BRCM_CHAR_DRIVERS=y - CONFIG_BCM_VC_CMA=y - CONFIG_BCM_VCIO=y - CONFIG_BCM_VC_SM=y --CONFIG_DEVPTS_MULTIPLE_INSTANCES=y - # CONFIG_LEGACY_PTYS is not set - # CONFIG_DEVKMEM is not set - CONFIG_SERIAL_8250=y -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index da2df3d30e15a55a34b45d3ebbf98e906da6379c..6c885f0518d0c015357a6fea1438841db344cc46 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -21,6 +21,7 @@ CONFIG_CPUSETS=y - CONFIG_CGROUP_DEVICE=y - CONFIG_CGROUP_CPUACCT=y - CONFIG_NAMESPACES=y -+CONFIG_USER_NS=y - CONFIG_SCHED_AUTOGROUP=y - CONFIG_BLK_DEV_INITRD=y - CONFIG_EMBEDDED=y - -From a24bf0818123c000e28c388484a4d7a5a0127b00 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Tue, 9 Aug 2016 22:19:28 +0100 -Subject: [PATCH 103/160] smsc95xx: Experimental: Enable turbo_mode and - packetsize=2560 by default - -See: http://forum.kodi.tv/showthread.php?tid=285288 ---- - drivers/net/usb/smsc95xx.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c -index d22a2324085fbf61fbd8920362bfc7b9f72bebe3..c846c55075387398d9bcb0957e31f5c82fd7d58d 100644 ---- a/drivers/net/usb/smsc95xx.c -+++ b/drivers/net/usb/smsc95xx.c -@@ -77,7 +77,7 @@ struct smsc95xx_priv { - struct usbnet *dev; - }; - --static bool turbo_mode = false; -+static bool turbo_mode = true; - module_param(turbo_mode, bool, 0644); - MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction"); - -@@ -85,7 +85,7 @@ static bool truesize_mode = false; - module_param(truesize_mode, bool, 0644); - MODULE_PARM_DESC(truesize_mode, "Report larger truesize value"); - --static int packetsize = 0; -+static int packetsize = 2560; - module_param(packetsize, int, 0644); - MODULE_PARM_DESC(packetsize, "Override the RX URB packet size"); - - -From 8cf87eb78e8572302fbac08b648d0dace2271484 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Fri, 12 Aug 2016 13:21:32 +0100 -Subject: [PATCH 104/160] smsc95xx: squash: Bump to packetsize=4096 - ---- - drivers/net/usb/smsc95xx.c | 2 +- + scripts/mkknlimg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c -index c846c55075387398d9bcb0957e31f5c82fd7d58d..e663cd24653411e502deb28d0ea9b8280223a008 100644 ---- a/drivers/net/usb/smsc95xx.c -+++ b/drivers/net/usb/smsc95xx.c -@@ -85,7 +85,7 @@ static bool truesize_mode = false; - module_param(truesize_mode, bool, 0644); - MODULE_PARM_DESC(truesize_mode, "Report larger truesize value"); - --static int packetsize = 2560; -+static int packetsize = 4096; - module_param(packetsize, int, 0644); - MODULE_PARM_DESC(packetsize, "Override the RX URB packet size"); +diff --git a/scripts/mkknlimg b/scripts/mkknlimg +index 78c5845d2f01deb04b477327d83fa60624f87f98..a21f7e31bc904233e980e66ae3e6337e2eab0f1c 100755 +--- a/scripts/mkknlimg ++++ b/scripts/mkknlimg +@@ -77,7 +77,7 @@ my $wanted_strings = + 'brcm,bcm2709' => FLAG_PI | FLAG_DTOK | FLAG_270X, + 'brcm,bcm2835' => FLAG_PI | FLAG_DTOK | FLAG_283X, + 'brcm,bcm2836' => FLAG_PI | FLAG_DTOK | FLAG_283X, +- 'of_overlay_apply' => FLAG_DTOK | FLAG_DDTK, ++ 'of_cfs_init' => FLAG_DTOK | FLAG_DDTK, + }; + my $res = try_extract($kernel_file, $tmpfile1); -From d8f0a80d32990be89ba76ec30de2811d28592773 Mon Sep 17 00:00:00 2001 -From: James Adams -Date: Fri, 12 Aug 2016 14:35:00 +0100 -Subject: [PATCH 105/160] Add cm3 dts file +From 1287cce8ba7a9380c5f4ea084970f6f3689c945a Mon Sep 17 00:00:00 2001 +From: Herve Jourdain +Date: Fri, 20 May 2016 16:02:23 +0800 +Subject: [PATCH 114/132] build: support for .dtbo files for dtb overlays +Kernel 4.4.6+ on RaspberryPi support .dtbo files for overlays, instead of .dtb. +Patch the kernel, which has faulty rules to generate .dtbo the way yocto does + +Signed-off-by: Herve Jourdain +Signed-off-by: Khem Raj --- - arch/arm/boot/dts/Makefile | 1 + - arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 176 ++++++++++++++++++++++++++++++++++ - 2 files changed, 177 insertions(+) - create mode 100644 arch/arm/boot/dts/bcm2710-rpi-cm3.dts + arch/arm/Makefile | 2 ++ + scripts/Makefile.lib | 5 +++-- + 2 files changed, 5 insertions(+), 2 deletions(-) -diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index 93f2529ccbdfedb4b4e54898abf44911b47d2656..1bebcca8565b04fbf8ff2c276646525c3ddd25ad 100644 ---- a/arch/arm/boot/dts/Makefile -+++ b/arch/arm/boot/dts/Makefile -@@ -6,6 +6,7 @@ dtb-$(CONFIG_ARCH_BCM2708) += bcm2708-rpi-cm.dtb - dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-cm.dtb - dtb-$(CONFIG_ARCH_BCM2709) += bcm2709-rpi-2-b.dtb - dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-3-b.dtb -+dtb-$(CONFIG_ARCH_BCM2709) += bcm2710-rpi-cm3.dtb +diff --git a/arch/arm/Makefile b/arch/arm/Makefile +index d1e45094ab4338f95dab09e81d358cd723f5eb3d..275c53561cd7c3b1f52a60c95b5fb287fb3ccb62 100644 +--- a/arch/arm/Makefile ++++ b/arch/arm/Makefile +@@ -337,6 +337,8 @@ $(INSTALL_TARGETS): - # Raspberry Pi - ifeq ($(CONFIG_ARCH_BCM2708),y) -diff --git a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts + %.dtb: | scripts + $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@ ++%.dtbo: | scripts ++ $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@ + + PHONY += dtbs dtbs_install + +diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib +index 1d949b7410600dd3b04a3acde8c41cfead15bfa4..1967878a843461c3ff1f473b9a030eb01b7c726e 100644 +--- a/scripts/Makefile.lib ++++ b/scripts/Makefile.lib +@@ -313,8 +313,9 @@ $(obj)/%.dtb: $(src)/%.dts FORCE + $(call if_changed_dep,dtc) + + quiet_cmd_dtco = DTCO $@ +-cmd_dtco = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ +- $(objtree)/scripts/dtc/dtc -@ -H epapr -O dtb -o $@ -b 0 \ ++cmd_dtco = mkdir -p $(dir ${dtc-tmp}) ; \ ++ $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ ++ $(DTC) -@ -H epapr -O dtb -o $@ -b 0 \ + -i $(dir $<) $(DTC_FLAGS) \ + -d $(depfile).dtc.tmp $(dtc-tmp) ; \ + cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) + +From aca001dfcac9cb9d81bb23fcdb41837315880d05 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Thu, 6 Oct 2016 19:42:55 -0700 +Subject: [PATCH 115/132] [media]bcm2835-camera: fix compilation warning/werror + +| /a/builder/mnt/build/tmp-glibc/work-shared/raspberrypi3/kernel-source/drivers/media/platform/bcm2835/bcm2835-camera.c:656:17: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types +] +| .queue_setup = queue_setup, +| ^~~~~~~~~~~ +| /a/builder/mnt/build/tmp-glibc/work-shared/raspberrypi3/kernel-source/drivers/media/platform/bcm2835/bcm28 +35-camera.c:656:17: note: (near initialization for 'bm2835_mmal_video_qops.queue_setup') + +use struct device* instead of void* + +Signed-off-by: Khem Raj +--- + drivers/media/platform/bcm2835/bcm2835-camera.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/media/platform/bcm2835/bcm2835-camera.c b/drivers/media/platform/bcm2835/bcm2835-camera.c +index 70f4db2741037381e638d1dda5a95478809eb161..cb5bab642eaab2f60d641801dd0afdac45b7698f 100644 +--- a/drivers/media/platform/bcm2835/bcm2835-camera.c ++++ b/drivers/media/platform/bcm2835/bcm2835-camera.c +@@ -244,7 +244,7 @@ static struct mmal_fmt *get_format(struct v4l2_format *f) + + static int queue_setup(struct vb2_queue *vq, + unsigned int *nbuffers, unsigned int *nplanes, +- unsigned int sizes[], void *alloc_ctxs[]) ++ unsigned int sizes[], struct device *alloc_ctxs[]) + { + struct bm2835_mmal_dev *dev = vb2_get_drv_priv(vq); + unsigned long size; + +From a2d7512325a468f024a172cdfc033511c62b088c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Sat, 8 Oct 2016 16:26:46 +0200 +Subject: [PATCH 116/132] bcm2709: Drop platform smp and timer init code +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +irq-bcm2836 handles this through these functions: +bcm2835_init_local_timer_frequency() +bcm2836_arm_irqchip_smp_init() + +Signed-off-by: Noralf Trønnes +--- + arch/arm/mach-bcm2709/bcm2709.c | 126 ---------------------------------------- + 1 file changed, 126 deletions(-) + +diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c +index 90773a30b87abbfda1615326c6faf59b9db6d68e..d4c9d57d78a964fbbf799b534471462d3c3b88f1 100644 +--- a/arch/arm/mach-bcm2709/bcm2709.c ++++ b/arch/arm/mach-bcm2709/bcm2709.c +@@ -208,19 +208,6 @@ void __init bcm2709_init(void) + system_serial_low = serial; + } + +-static void __init bcm2709_timer_init(void) +-{ +- // timer control +- writel(0, __io_address(ARM_LOCAL_CONTROL)); +- // timer pre_scaler +- writel(0x80000000, __io_address(ARM_LOCAL_PRESCALER)); // 19.2MHz +- //writel(0x06AAAAAB, __io_address(ARM_LOCAL_PRESCALER)); // 1MHz +- +- of_clk_init(NULL); +- clocksource_probe(); +-} +- +- + void __init bcm2709_init_early(void) + { + /* +@@ -236,111 +223,6 @@ static void __init board_reserve(void) + vc_cma_reserve(); + } + +- +-#ifdef CONFIG_SMP +-#include +- +-#include +-#include +-int dc4=0; +-//void dc4_log(unsigned x) { if (dc4) writel((x), __io_address(ST_BASE+10 + raw_smp_processor_id()*4)); } +-void dc4_log_dead(unsigned x) { if (dc4) writel((readl(__io_address(ST_BASE+0x10 + raw_smp_processor_id()*4)) & 0xffff) | ((x)<<16), __io_address(ST_BASE+0x10 + raw_smp_processor_id()*4)); } +- +-static void bcm2835_send_doorbell(const struct cpumask *mask, unsigned int irq) +-{ +- int cpu; +- /* +- * Ensure that stores to Normal memory are visible to the +- * other CPUs before issuing the IPI. +- */ +- dsb(); +- +- /* Convert our logical CPU mask into a physical one. */ +- for_each_cpu(cpu, mask) +- { +- /* submit softirq */ +- writel(1<%x)\n", __FUNCTION__, (unsigned)virt_to_phys((void *)secondary_startup), (unsigned)__io_address(ST_BASE + 0x10)); +- printk("[%s] ncores=%d\n", __FUNCTION__, ncores); +- +- for (i = 0; i < ncores; i++) { +- set_cpu_possible(i, true); +- /* enable IRQ (not FIQ) */ +- writel(0x1, __io_address(ARM_LOCAL_MAILBOX_INT_CONTROL0 + 0x4 * i)); +- //writel(0xf, __io_address(ARM_LOCAL_TIMER_INT_CONTROL0 + 0x4 * i)); +- } +- set_smp_cross_call(bcm2835_send_doorbell); +-} +- +-/* +- * for arch/arm/kernel/smp.c:smp_prepare_cpus(unsigned int max_cpus) +- */ +-void __init bcm2709_smp_prepare_cpus(unsigned int max_cpus) +-{ +- //void __iomem *scu_base; +- +- printk("[%s] enter\n", __FUNCTION__); +- //scu_base = scu_base_addr(); +- //scu_enable(scu_base); +-} +- +-/* +- * for linux/arch/arm/kernel/smp.c:secondary_start_kernel(void) +- */ +-void __init bcm2709_secondary_init(unsigned int cpu) +-{ +- printk("[%s] enter cpu:%d\n", __FUNCTION__, cpu); +- //gic_secondary_init(0); +-} +- +-/* +- * for linux/arch/arm/kernel/smp.c:__cpu_up(..) +- */ +-int __init bcm2709_boot_secondary(unsigned int cpu, struct task_struct *idle) +-{ +- void secondary_startup(void); +- void *mbox_set = __io_address(ARM_LOCAL_MAILBOX3_SET0 + 0x10 * MPIDR_AFFINITY_LEVEL(cpu_logical_map(cpu), 0)); +- void *mbox_clr = __io_address(ARM_LOCAL_MAILBOX3_CLR0 + 0x10 * MPIDR_AFFINITY_LEVEL(cpu_logical_map(cpu), 0)); +- unsigned secondary_boot = (unsigned)virt_to_phys((void *)secondary_startup); +- int timeout=20; +- unsigned t = -1; +- //printk("[%s] enter cpu:%d (%x->%p) %x\n", __FUNCTION__, cpu, secondary_boot, wake, readl(wake)); +- +- dsb(); +- BUG_ON(readl(mbox_clr) != 0); +- writel(secondary_boot, mbox_set); +- +- while (--timeout > 0) { +- t = readl(mbox_clr); +- if (t == 0) break; +- cpu_relax(); +- } +- if (timeout==0) +- printk("[%s] cpu:%d failed to start (%x)\n", __FUNCTION__, cpu, t); +- else +- printk("[%s] cpu:%d started (%x) %d\n", __FUNCTION__, cpu, t, timeout); +- +- return 0; +-} +- +- +-struct smp_operations bcm2709_smp_ops __initdata = { +- .smp_init_cpus = bcm2709_smp_init_cpus, +- .smp_prepare_cpus = bcm2709_smp_prepare_cpus, +- .smp_secondary_init = bcm2709_secondary_init, +- .smp_boot_secondary = bcm2709_boot_secondary, +-}; +-#endif +- + static const char * const bcm2709_compat[] = { + "brcm,bcm2709", + "brcm,bcm2708", /* Could use bcm2708 in a pinch */ +@@ -349,11 +231,7 @@ static const char * const bcm2709_compat[] = { + + MACHINE_START(BCM2709, "BCM2709") + /* Maintainer: Broadcom Europe Ltd. */ +-#ifdef CONFIG_SMP +- .smp = smp_ops(bcm2709_smp_ops), +-#endif + .map_io = bcm2709_map_io, +- .init_time = bcm2709_timer_init, + .init_machine = bcm2709_init, + .init_early = bcm2709_init_early, + .reserve = board_reserve, +@@ -363,11 +241,7 @@ MACHINE_END + + MACHINE_START(BCM2708, "BCM2709") + /* Maintainer: Broadcom Europe Ltd. */ +-#ifdef CONFIG_SMP +- .smp = smp_ops(bcm2709_smp_ops), +-#endif + .map_io = bcm2709_map_io, +- .init_time = bcm2709_timer_init, + .init_machine = bcm2709_init, + .init_early = bcm2709_init_early, + .reserve = board_reserve, + +From a1d5fc5c451e0aad95ff571f74cc9a6c8779d183 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Mon, 3 Oct 2016 17:53:15 +0200 +Subject: [PATCH 117/132] BCM270X_DT: Use bcm283x.dtsi, bcm2835.dtsi and + bcm2836.dtsi +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The mainline Device Tree files are quite close to downstream now. +Let's use bcm283x.dtsi, bcm2835.dtsi and bcm2836.dtsi as base files +for our dts files. + +Mainline dts files are based on these files: + + bcm2835-rpi.dtsi + bcm2835.dtsi bcm2836.dtsi + bcm283x.dtsi + +Current downstream are based on these: + + bcm2708.dtsi bcm2709.dtsi bcm2710.dtsi + bcm2708_common.dtsi + +This patch introduces this dependency: + + bcm2708.dtsi bcm2709.dtsi + bcm2708-rpi.dtsi + bcm270x.dtsi + bcm2835.dtsi bcm2836.dtsi + bcm283x.dtsi + +And: + bcm2710.dtsi + bcm2708-rpi.dtsi + bcm270x.dtsi + bcm283x.dtsi + +bcm270x.dtsi contains the downstream bcm283x.dtsi diff. +bcm2708-rpi.dtsi is the downstream version of bcm2835-rpi.dtsi. + +Other changes: +- The led node has moved from /soc/leds to /leds. This is not a problem + since the label is used to reference it. +- The clk_osc reg property changes from 6 to 3. +- The gpu nodes has their interrupt property set in the base file. +- the clocks label does not point to the /clocks node anymore, but + points to the cprman node. This is not a problem since the overlays + that use the clock node refer to it directly: target-path = "/clocks"; +- some nodes now have 2 labels since mainline and downstream differs in + this respect: cprman/clocks, spi0/spi, gpu/vc4. +- some nodes doesn't have an explicit status = "okay" since they're not + disabled in the base file: watchdog and random. +- gpiomem doesn't need an explicit status = "okay". +- bcm2708-rpi-cm.dts got the hpd-gpios property from bcm2708_common.dtsi, + it's now set directly in that file. +- bcm2709-rpi-2-b.dts has the timer node moved from /soc/timer to /timer. +- Removed clock-frequency property on the bcm{2709,2710}.dtsi timer nodes. + +Signed-off-by: Noralf Trønnes +--- + arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 5 - + arch/arm/boot/dts/bcm2708-rpi-b.dts | 5 - + arch/arm/boot/dts/bcm2708-rpi-cm.dts | 5 +- + arch/arm/boot/dts/bcm2708-rpi.dtsi | 105 ++++++++ + arch/arm/boot/dts/bcm2708.dtsi | 28 +- + arch/arm/boot/dts/bcm2708_common.dtsi | 436 ------------------------------- + arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 5 - + arch/arm/boot/dts/bcm2709.dtsi | 90 +------ + arch/arm/boot/dts/bcm270x.dtsi | 142 ++++++++++ + arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 5 - + arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 5 - + arch/arm/boot/dts/bcm2710.dtsi | 28 +- + 12 files changed, 272 insertions(+), 587 deletions(-) + mode change 100755 => 100644 arch/arm/boot/dts/bcm2708-rpi-cm.dts + create mode 100644 arch/arm/boot/dts/bcm2708-rpi.dtsi + delete mode 100644 arch/arm/boot/dts/bcm2708_common.dtsi + create mode 100644 arch/arm/boot/dts/bcm270x.dtsi + +diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts +index 6c16c325cd2887a42c42665273834618c1937918..6bd8df44dc9163589074c1dec8a3ec69a47fb458 100644 +--- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts ++++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts +@@ -98,15 +98,10 @@ + }; + + &i2s { +- #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; + }; + +-&random { +- status = "okay"; +-}; +- + &leds { + act_led: act { + label = "led0"; +diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts +index 7c132437671d43e76445a4bf1184cc9a316b0965..ba80832726004b1b0719f570a7d8b3a390344d56 100644 +--- a/arch/arm/boot/dts/bcm2708-rpi-b.dts ++++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts +@@ -98,15 +98,10 @@ + }; + + &i2s { +- #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; + }; + +-&random { +- status = "okay"; +-}; +- + &leds { + act_led: act { + label = "led0"; +diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dts b/arch/arm/boot/dts/bcm2708-rpi-cm.dts +old mode 100755 +new mode 100644 +index ce9f54ff7e4ce76ad25ad0a19cf2ad48ba9df01a..eb8662f0d222b4c0a9a2bcb8bccb13e86a0006b3 +--- a/arch/arm/boot/dts/bcm2708-rpi-cm.dts ++++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts +@@ -81,13 +81,12 @@ + }; + + &i2s { +- #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; + }; + +-&random { +- status = "okay"; ++&hdmi { ++ hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>; + }; + + / { +diff --git a/arch/arm/boot/dts/bcm2708-rpi.dtsi b/arch/arm/boot/dts/bcm2708-rpi.dtsi new file mode 100644 -index 0000000000000000000000000000000000000000..6a3d2f21295a63e9211638b9e4ba202753c8181b +index 0000000000000000000000000000000000000000..d85c05901c8f55f822b89c32d198f15559a2b4b0 --- /dev/null -+++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -@@ -0,0 +1,176 @@ -+/dts-v1/; ++++ b/arch/arm/boot/dts/bcm2708-rpi.dtsi +@@ -0,0 +1,105 @@ ++/* Downstream version of bcm2835-rpi.dtsi */ + -+#include "bcm2710.dtsi" ++#include + +/ { -+ compatible = "brcm,bcm2710","brcm,bcm2709"; -+ model = "Raspberry Pi Compute Module 3"; -+}; -+ -+&gpio { -+ -+ mmc_pins: mmc_pins { -+ brcm,pins = <48 49 50 51 52 53>; -+ brcm,function = <7>; /* alt3 */ -+ brcm,pull = <0 2 2 2 2 2>; ++ memory { ++ device_type = "memory"; ++ reg = <0x0 0x0>; + }; + -+ spi0_pins: spi0_pins { -+ brcm,pins = <9 10 11>; -+ brcm,function = <4>; /* alt0 */ ++ aliases { ++ audio = &audio; ++ aux = &aux; ++ sound = &sound; ++ soc = &soc; ++ dma = &dma; ++ intc = &intc; ++ watchdog = &watchdog; ++ random = &random; ++ mailbox = &mailbox; ++ gpio = &gpio; ++ uart0 = &uart0; ++ sdhost = &sdhost; ++ i2s = &i2s; ++ spi0 = &spi0; ++ i2c0 = &i2c0; ++ uart1 = &uart1; ++ spi1 = &spi1; ++ spi2 = &spi2; ++ mmc = &mmc; ++ i2c1 = &i2c1; ++ i2c2 = &i2c2; ++ usb = &usb; ++ leds = &leds; ++ fb = &fb; ++ vchiq = &vchiq; ++ thermal = &thermal; + }; + -+ spi0_cs_pins: spi0_cs_pins { -+ brcm,pins = <8 7>; -+ brcm,function = <1>; /* output */ ++ leds: leds { ++ compatible = "gpio-leds"; + }; + -+ i2c0_pins: i2c0 { -+ brcm,pins = <0 1>; -+ brcm,function = <4>; ++ soc { ++ gpiomem { ++ compatible = "brcm,bcm2835-gpiomem"; ++ reg = <0x7e200000 0x1000>; ++ }; ++ ++ firmware: firmware { ++ compatible = "raspberrypi,bcm2835-firmware"; ++ mboxes = <&mailbox>; ++ }; ++ ++ power: power { ++ compatible = "raspberrypi,bcm2835-power"; ++ firmware = <&firmware>; ++ #power-domain-cells = <1>; ++ }; ++ ++ fb: fb { ++ compatible = "brcm,bcm2708-fb"; ++ firmware = <&firmware>; ++ status = "disabled"; ++ }; ++ ++ vchiq: vchiq { ++ compatible = "brcm,bcm2835-vchiq"; ++ reg = <0x7e00b840 0xf>; ++ interrupts = <0 2>; ++ cache-line-size = <32>; ++ firmware = <&firmware>; ++ }; ++ ++ thermal: thermal { ++ compatible = "brcm,bcm2835-thermal"; ++ firmware = <&firmware>; ++ }; ++ ++ /* Onboard audio */ ++ audio: audio { ++ compatible = "brcm,bcm2835-audio"; ++ brcm,pwm-channels = <8>; ++ status = "disabled"; ++ }; ++ ++ /* External sound card */ ++ sound: sound { ++ status = "disabled"; ++ }; ++ + }; + -+ i2c1_pins: i2c1 { -+ brcm,pins = <2 3>; -+ brcm,function = <4>; -+ }; -+ -+ i2s_pins: i2s { -+ brcm,pins = <18 19 20 21>; -+ brcm,function = <4>; /* alt0 */ -+ }; -+ -+ uart0_pins: uart0_pins { -+ brcm,pins; -+ brcm,function; -+ brcm,pull = <0 2>; -+ }; -+ -+ audio_pins: audio_pins { -+ brcm,pins; -+ brcm,function; ++ __overrides__ { ++ cache_line_size = <&vchiq>, "cache-line-size:0"; + }; +}; + -+&mmc { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc_pins>; -+ non-removable; -+ bus-width = <4>; -+ status = "okay"; -+ brcm,overclock-50 = <0>; -+}; -+ -+&soc { -+ virtgpio: virtgpio { -+ compatible = "brcm,bcm2835-virtgpio"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ firmware = <&firmware>; -+ status = "okay"; -+ }; -+}; -+ -+&fb { -+ status = "okay"; -+}; -+ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pins>; -+ status = "okay"; -+}; -+ -+&spi0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi0_pins &spi0_cs_pins>; -+ cs-gpios = <&gpio 8 1>, <&gpio 7 1>; -+ -+ spidev0: spidev@0{ -+ compatible = "spidev"; -+ reg = <0>; /* CE0 */ -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spi-max-frequency = <500000>; -+ }; -+ -+ spidev1: spidev@1{ -+ compatible = "spidev"; -+ reg = <1>; /* CE1 */ -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spi-max-frequency = <500000>; -+ }; -+}; -+ -+&i2c0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c0_pins>; -+ clock-frequency = <100000>; -+}; -+ -+&i2c1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins>; -+ clock-frequency = <100000>; -+}; -+ -+&i2c2 { -+ clock-frequency = <100000>; -+}; -+ -+&i2s { -+ #sound-dai-cells = <0>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2s_pins>; -+}; -+ -+&random { -+ status = "okay"; -+}; -+ -+&leds { -+ act_led: act { -+ label = "led0"; -+ linux,default-trigger = "mmc0"; -+ gpios = <&virtgpio 0 0>; -+ }; ++&dma { ++ brcm,dma-channel-mask = <0x7f34>; +}; + +&hdmi { -+ hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>; -+}; -+ -+&audio { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&audio_pins>; ++ power-domains = <&power RPI_POWER_DOMAIN_HDMI>; +}; +diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi +index f5a44cd4fef0ee221ed6ae1c43ca81dabffa110d..1bd2a707ef5c0d92f233296e6312916f5a550bd2 100644 +--- a/arch/arm/boot/dts/bcm2708.dtsi ++++ b/arch/arm/boot/dts/bcm2708.dtsi +@@ -1,16 +1,14 @@ +-#include "bcm2708_common.dtsi" ++#include "bcm2835.dtsi" ++#include "bcm270x.dtsi" ++#include "bcm2708-rpi.dtsi" + + / { + compatible = "brcm,bcm2708"; + model = "BCM2708"; + +- chosen { +- /* No padding required - the boot loader can do that. */ +- bootargs = ""; +- }; +- + soc { + ranges = <0x7e000000 0x20000000 0x01000000>; ++ /delete-property/ dma-ranges; + + timer@7e003000 { + compatible = "brcm,bcm2835-system-timer"; +@@ -18,23 +16,7 @@ + interrupts = <1 0>, <1 1>, <1 2>, <1 3>; + clock-frequency = <1000000>; + }; +- +- arm-pmu { +- compatible = "arm,arm1176-pmu"; +- }; +- +- gpiomem { +- compatible = "brcm,bcm2835-gpiomem"; +- reg = <0x7e200000 0x1000>; +- status = "okay"; +- }; + }; +-}; +- +-&intc { +- compatible = "brcm,bcm2835-armctrl-ic"; +-}; + +-&watchdog { +- status = "okay"; ++ /delete-node/ cpus; + }; +diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi +deleted file mode 100644 +index 6081b2aeb7ab1e1821506bcb93d36de13b5717ef..0000000000000000000000000000000000000000 +--- a/arch/arm/boot/dts/bcm2708_common.dtsi ++++ /dev/null +@@ -1,436 +0,0 @@ +-#include "dt-bindings/clock/bcm2835.h" +-#include +-#include "dt-bindings/power/raspberrypi-power.h" +-#include "dt-bindings/gpio/gpio.h" +-#include "skeleton.dtsi" +- +-/ { +- interrupt-parent = <&intc>; +- +- aliases { +- audio = &audio; +- aux = &aux; +- sound = &sound; +- soc = &soc; +- dma = &dma; +- intc = &intc; +- watchdog = &watchdog; +- random = &random; +- mailbox = &mailbox; +- gpio = &gpio; +- uart0 = &uart0; +- sdhost = &sdhost; +- i2s = &i2s; +- spi0 = &spi0; +- i2c0 = &i2c0; +- uart1 = &uart1; +- spi1 = &spi1; +- spi2 = &spi2; +- mmc = &mmc; +- i2c1 = &i2c1; +- i2c2 = &i2c2; +- usb = &usb; +- leds = &leds; +- fb = &fb; +- vchiq = &vchiq; +- thermal = &thermal; +- clocks = &clocks; +- }; +- +- soc: soc { +- compatible = "simple-bus"; +- #address-cells = <1>; +- #size-cells = <1>; +- +- dma: dma@7e007000 { +- compatible = "brcm,bcm2835-dma"; +- reg = <0x7e007000 0xf00>; +- interrupts = <1 16>, +- <1 17>, +- <1 18>, +- <1 19>, +- <1 20>, +- <1 21>, +- <1 22>, +- <1 23>, +- <1 24>, +- <1 25>, +- <1 26>, +- /* dma channel 11-14 share one irq */ +- <1 27>, +- <1 27>, +- <1 27>, +- <1 27>, +- /* unused shared irq for all channels */ +- <1 28>; +- interrupt-names = "dma0", +- "dma1", +- "dma2", +- "dma3", +- "dma4", +- "dma5", +- "dma6", +- "dma7", +- "dma8", +- "dma9", +- "dma10", +- "dma11", +- "dma12", +- "dma13", +- "dma14", +- "dma-shared-all"; +- +- #dma-cells = <1>; +- brcm,dma-channel-mask = <0x7f34>; +- }; +- +- intc: interrupt-controller@7e00b200 { +-#ifdef RPI364 +- compatible = "brcm,bcm2835-armctrl-ic", "brcm,bcm2708-armctrl-ic"; +-#else +- compatible = "brcm,bcm2708-armctrl-ic"; +-#endif +- reg = <0x7e00b200 0x200>; +- interrupt-controller; +- #interrupt-cells = <2>; +- }; +- +- mailbox: mailbox@7e00b800 { +- compatible = "brcm,bcm2835-mbox"; +- reg = <0x7e00b880 0x40>; +- interrupts = <0 1>; +- #mbox-cells = <0>; +- }; +- +- watchdog: watchdog@7e100000 { +- compatible = "brcm,bcm2835-pm-wdt"; +- reg = <0x7e100000 0x28>; +- status = "disabled"; +- }; +- +- cprman: cprman@7e101000 { +- compatible = "brcm,bcm2835-cprman"; +- #clock-cells = <1>; +- reg = <0x7e101000 0x2000>; +- +- /* CPRMAN derives everything from the platform's +- * oscillator. +- */ +- clocks = <&clk_osc>; +- }; +- +- random: rng@7e104000 { +- compatible = "brcm,bcm2835-rng"; +- reg = <0x7e104000 0x10>; +- status = "disabled"; +- }; +- +- gpio: gpio@7e200000 { +- compatible = "brcm,bcm2835-gpio"; +- reg = <0x7e200000 0xb4>; +- interrupts = <2 17>, <2 18>; +- +- gpio-controller; +- #gpio-cells = <2>; +- +- interrupt-controller; +- #interrupt-cells = <2>; +- }; +- +- uart0: serial@7e201000 { +- compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; +- reg = <0x7e201000 0x1000>; +- interrupts = <2 25>; +- clocks = <&cprman BCM2835_CLOCK_UART>, +- <&cprman BCM2835_CLOCK_VPU>; +- clock-names = "uartclk","apb_pclk"; +- arm,primecell-periphid = <0x00241011>; // For an explanation, see +- // https://github.com/raspberrypi/linux/commit/13731d862cf5219216533a3b0de052cee4cc5038 +- status = "disabled"; +- }; +- +- sdhost: sdhost@7e202000 { +- compatible = "brcm,bcm2835-sdhost"; +- reg = <0x7e202000 0x100>; +- interrupts = <2 24>; +- clocks = <&cprman BCM2835_CLOCK_VPU>; +- dmas = <&dma 13>; +- dma-names = "rx-tx"; +- brcm,overclock-50 = <0>; +- brcm,pio-limit = <1>; +- status = "disabled"; +- }; +- +- i2s: i2s@7e203000 { +- compatible = "brcm,bcm2835-i2s"; +- #sound-dai-cells = <0>; +- reg = <0x7e203000 0x24>; +- clocks = <&cprman BCM2835_CLOCK_PCM>; +- +- dmas = <&dma 2>, <&dma 3>; +- dma-names = "tx", "rx"; +- status = "disabled"; +- }; +- +- spi0: spi@7e204000 { +- compatible = "brcm,bcm2835-spi"; +- reg = <0x7e204000 0x1000>; +- interrupts = <2 22>; +- clocks = <&cprman BCM2835_CLOCK_VPU>; +- #address-cells = <1>; +- #size-cells = <0>; +- status = "disabled"; +- /* the dma channels */ +- dmas = <&dma 6>, <&dma 7>; +- dma-names = "tx", "rx"; +- /* the chipselects used - <0> means native GPIO +- * add more gpios if necessary as <&gpio 6 1> +- * (but do not forget to make them output!) +- */ +- cs-gpios = <&gpio 8 1>, <&gpio 7 1>; +- }; +- +- i2c0: i2c@7e205000 { +- compatible = "brcm,bcm2708-i2c"; +- reg = <0x7e205000 0x1000>; +- interrupts = <2 21>; +- clocks = <&cprman BCM2835_CLOCK_VPU>; +- #address-cells = <1>; +- #size-cells = <0>; +- status = "disabled"; +- }; +- +- pixelvalve0: pixelvalve@7e206000 { +- compatible = "brcm,bcm2835-pixelvalve0"; +- reg = <0x7e206000 0x100>; +- status = "disabled"; +- }; +- +- dpi: dpi@7e208000 { +- compatible = "brcm,bcm2835-dpi"; +- reg = <0x7e208000 0x8c>; +- clocks = <&cprman BCM2835_CLOCK_VPU>, +- <&cprman BCM2835_CLOCK_DPI>; +- clock-names = "core", "pixel"; +- #address-cells = <1>; +- #size-cells = <0>; +- status = "disabled"; +- }; +- +- pixelvalve1: pixelvalve@7e207000 { +- compatible = "brcm,bcm2835-pixelvalve1"; +- reg = <0x7e207000 0x100>; +- status = "disabled"; +- }; +- +- pwm: pwm@7e20c000 { +- compatible = "brcm,bcm2835-pwm"; +- reg = <0x7e20c000 0x28>; +- clocks = <&cprman BCM2835_CLOCK_PWM>; +- assigned-clocks = <&cprman BCM2835_CLOCK_PWM>; +- assigned-clock-rates = <10000000>; +- #pwm-cells = <2>; +- status = "disabled"; +- }; +- +- aux: aux@0x7e215000 { +- compatible = "brcm,bcm2835-aux"; +- #clock-cells = <1>; +- reg = <0x7e215000 0x8>; +- clocks = <&cprman BCM2835_CLOCK_VPU>; +- }; +- +- uart1: serial@7e215040 { +- compatible = "brcm,bcm2835-aux-uart"; +- reg = <0x7e215040 0x40>; +- interrupts = <1 29>; +- clocks = <&aux BCM2835_AUX_CLOCK_UART>; +- status = "disabled"; +- }; +- +- spi1: spi@7e215080 { +- compatible = "brcm,bcm2835-aux-spi"; +- reg = <0x7e215080 0x40>; +- interrupts = <1 29>; +- clocks = <&aux BCM2835_AUX_CLOCK_SPI1>; +- #address-cells = <1>; +- #size-cells = <0>; +- status = "disabled"; +- }; +- +- spi2: spi@7e2150C0 { +- compatible = "brcm,bcm2835-aux-spi"; +- reg = <0x7e2150C0 0x40>; +- interrupts = <1 29>; +- clocks = <&aux BCM2835_AUX_CLOCK_SPI2>; +- #address-cells = <1>; +- #size-cells = <0>; +- status = "disabled"; +- }; +- +- mmc: mmc@7e300000 { +- compatible = "brcm,bcm2835-mmc"; +- reg = <0x7e300000 0x100>; +- interrupts = <2 30>; +- clocks = <&cprman BCM2835_CLOCK_EMMC>; +- dmas = <&dma 11>; +- dma-names = "rx-tx"; +- brcm,overclock-50 = <0>; +- status = "disabled"; +- }; +- +- hvs: hvs@7e400000 { +- compatible = "brcm,bcm2835-hvs"; +- reg = <0x7e400000 0x6000>; +- status = "disabled"; +- }; +- +- i2c1: i2c@7e804000 { +- compatible = "brcm,bcm2708-i2c"; +- reg = <0x7e804000 0x1000>; +- interrupts = <2 21>; +- clocks = <&cprman BCM2835_CLOCK_VPU>; +- #address-cells = <1>; +- #size-cells = <0>; +- status = "disabled"; +- }; +- +- i2c2: i2c@7e805000 { +- // Beware - this is shared with the HDMI module. +- // Careless use may break (really) your display. +- // Caveat emptor. +- compatible = "brcm,bcm2708-i2c"; +- reg = <0x7e805000 0x1000>; +- interrupts = <2 21>; +- clocks = <&cprman BCM2835_CLOCK_VPU>; +- #address-cells = <1>; +- #size-cells = <0>; +- status = "disabled"; +- }; +- +- smi: smi@7e600000 { +- compatible = "brcm,bcm2835-smi"; +- reg = <0x7e600000 0x100>; +- interrupts = <2 16>; +- clocks = <&cprman BCM2835_CLOCK_SMI>; +- assigned-clocks = <&cprman BCM2835_CLOCK_SMI>; +- assigned-clock-rates = <125000000>; +- dmas = <&dma 4>; +- dma-names = "rx-tx"; +- status = "disabled"; +- }; +- +- pixelvalve2: pixelvalve@7e807000 { +- compatible = "brcm,bcm2835-pixelvalve2"; +- reg = <0x7e807000 0x100>; +- status = "disabled"; +- }; +- +- hdmi: hdmi@7e902000 { +- compatible = "brcm,bcm2835-hdmi"; +- reg = <0x7e902000 0x600>, +- <0x7e808000 0x100>; +- ddc = <&i2c2>; +- hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>; +- clocks = <&cprman BCM2835_PLLH_PIX>, +- <&cprman BCM2835_CLOCK_HSM>; +- clock-names = "pixel", "hdmi"; +- power-domains = <&power RPI_POWER_DOMAIN_HDMI>; +- status = "disabled"; +- }; +- +-#ifdef RPI364 +- usb: usb@7e980000 { +- compatible = "brcm,bcm2835-usb"; +- reg = <0x7e980000 0x10000>; +- interrupts = <1 9>; +- #address-cells = <1>; +- #size-cells = <0>; +- }; +-#else +- usb: usb@7e980000 { +- compatible = "brcm,bcm2708-usb"; +- reg = <0x7e980000 0x10000>, +- <0x7e006000 0x1000>; +- interrupts = <2 0>, +- <1 9>; +- }; +-#endif +- +- v3d: v3d@7ec00000 { +- compatible = "brcm,vc4-v3d"; +- reg = <0x7ec00000 0x1000>; +- status = "disabled"; +- }; +- +- firmware: firmware { +- compatible = "raspberrypi,bcm2835-firmware"; +- mboxes = <&mailbox>; +- }; +- +- power: power { +- compatible = "raspberrypi,bcm2835-power"; +- firmware = <&firmware>; +- #power-domain-cells = <1>; +- }; +- +- leds: leds { +- compatible = "gpio-leds"; +- }; +- +- fb: fb { +- compatible = "brcm,bcm2708-fb"; +- firmware = <&firmware>; +- status = "disabled"; +- }; +- +- vchiq: vchiq { +- compatible = "brcm,bcm2835-vchiq"; +- reg = <0x7e00b840 0xf>; +- interrupts = <0 2>; +- cache-line-size = <32>; +- firmware = <&firmware>; +- }; +- +- thermal: thermal { +- compatible = "brcm,bcm2835-thermal"; +- firmware = <&firmware>; +- }; +- +- gpu: gpu { +- compatible = "brcm,bcm2835-vc4"; +- status = "disabled"; +- }; +- +- /* Onboard audio */ +- audio: audio { +- compatible = "brcm,bcm2835-audio"; +- brcm,pwm-channels = <8>; +- status = "disabled"; +- }; +- +- /* External sound card */ +- sound: sound { +- status = "disabled"; +- }; +- }; +- +- clocks: clocks { +- compatible = "simple-bus"; +- #address-cells = <1>; +- #size-cells = <0>; +- +- /* The oscillator is the root of the clock tree. */ +- clk_osc: clock@6 { +- compatible = "fixed-clock"; +- reg = <6>; +- #clock-cells = <0>; +- clock-output-names = "osc"; +- clock-frequency = <19200000>; +- }; +- }; +- +- __overrides__ { +- cache_line_size = <&vchiq>, "cache-line-size:0"; +- }; +-}; +diff --git a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts +index 74fe4cc1d667e9508ca860bcc8c837fed0cbb855..4f79aaae149abc6f8ebc076d493eb8459e469862 100644 +--- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts ++++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts +@@ -98,15 +98,10 @@ + }; + + &i2s { +- #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; + }; + +-&random { +- status = "okay"; +-}; +- + &leds { + act_led: act { + label = "led0"; +diff --git a/arch/arm/boot/dts/bcm2709.dtsi b/arch/arm/boot/dts/bcm2709.dtsi +index a8cfd7c4df5bcf7692d13882833c97852649932d..757d0053c1c07452babc63ca6ecd0a8f047b25dd 100644 +--- a/arch/arm/boot/dts/bcm2709.dtsi ++++ b/arch/arm/boot/dts/bcm2709.dtsi +@@ -1,48 +1,15 @@ +-#include "bcm2708_common.dtsi" ++#include "bcm2836.dtsi" ++#include "bcm270x.dtsi" ++#include "bcm2708-rpi.dtsi" + + / { + compatible = "brcm,bcm2709"; + model = "BCM2709"; + +- chosen { +- /* No padding required - the boot loader can do that. */ +- bootargs = ""; +- }; +- + soc { + ranges = <0x7e000000 0x3f000000 0x01000000>, + <0x40000000 0x40000000 0x00040000>; +- +- local_intc: local_intc { +- compatible = "brcm,bcm2836-l1-intc"; +- reg = <0x40000000 0x100>; +- interrupt-controller; +- #interrupt-cells = <1>; +- interrupt-parent = <&local_intc>; +- }; +- +- arm-pmu { +- compatible = "arm,cortex-a7-pmu"; +- interrupt-parent = <&local_intc>; +- interrupts = <9>; +- }; +- +- gpiomem { +- compatible = "brcm,bcm2835-gpiomem"; +- reg = <0x7e200000 0x1000>; +- status = "okay"; +- }; +- +- timer { +- compatible = "arm,armv7-timer"; +- clock-frequency = <19200000>; +- interrupt-parent = <&local_intc>; +- interrupts = <0>, // PHYS_SECURE_PPI +- <1>, // PHYS_NONSECURE_PPI +- <3>, // VIRT_PPI +- <2>; // HYP_PPI +- always-on; +- }; ++ /delete-property/ dma-ranges; + + syscon@40000000 { + compatible = "brcm,bcm2836-arm-local", "syscon"; +@@ -50,53 +17,10 @@ + }; + }; + +- cpus: cpus { +- #address-cells = <1>; +- #size-cells = <0>; +- +- v7_cpu0: cpu@0 { +- device_type = "cpu"; +- compatible = "arm,cortex-a7"; +- reg = <0xf00>; +- clock-frequency = <800000000>; +- }; +- +- v7_cpu1: cpu@1 { +- device_type = "cpu"; +- compatible = "arm,cortex-a7"; +- reg = <0xf01>; +- clock-frequency = <800000000>; +- }; +- +- v7_cpu2: cpu@2 { +- device_type = "cpu"; +- compatible = "arm,cortex-a7"; +- reg = <0xf02>; +- clock-frequency = <800000000>; +- }; +- +- v7_cpu3: cpu@3 { +- device_type = "cpu"; +- compatible = "arm,cortex-a7"; +- reg = <0xf03>; +- clock-frequency = <800000000>; +- }; +- }; +- + __overrides__ { + arm_freq = <&v7_cpu0>, "clock-frequency:0", +- <&v7_cpu1>, "clock-frequency:0", +- <&v7_cpu2>, "clock-frequency:0", +- <&v7_cpu3>, "clock-frequency:0"; ++ <&v7_cpu1>, "clock-frequency:0", ++ <&v7_cpu2>, "clock-frequency:0", ++ <&v7_cpu3>, "clock-frequency:0"; + }; + }; +- +-&watchdog { +- status = "okay"; +-}; +- +-&intc { +- compatible = "brcm,bcm2836-armctrl-ic"; +- interrupt-parent = <&local_intc>; +- interrupts = <8>; +-}; +diff --git a/arch/arm/boot/dts/bcm270x.dtsi b/arch/arm/boot/dts/bcm270x.dtsi +new file mode 100644 +index 0000000000000000000000000000000000000000..7fb1f428332dc48bdd91dd4a0773f3bea7057238 +--- /dev/null ++++ b/arch/arm/boot/dts/bcm270x.dtsi +@@ -0,0 +1,142 @@ ++/* Downstream bcm283x.dtsi diff */ + +/ { -+ __overrides__ { -+ uart0 = <&uart0>,"status"; -+ uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; -+ uart1 = <&uart1>,"status"; -+ i2s = <&i2s>,"status"; -+ spi = <&spi0>,"status"; -+ i2c0 = <&i2c0>,"status"; -+ i2c1 = <&i2c1>,"status"; -+ i2c2_iknowwhatimdoing = <&i2c2>,"status"; -+ i2c0_baudrate = <&i2c0>,"clock-frequency:0"; -+ i2c1_baudrate = <&i2c1>,"clock-frequency:0"; -+ i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -+ core_freq = <&clk_core>,"clock-frequency:0"; -+ -+ act_led_gpio = <&act_led>,"gpios:4"; -+ act_led_activelow = <&act_led>,"gpios:8"; -+ act_led_trigger = <&act_led>,"linux,default-trigger"; -+ -+ audio = <&audio>,"status"; -+ watchdog = <&watchdog>,"status"; -+ random = <&random>,"status"; -+ sd_overclock = <&sdhost>,"brcm,overclock-50:0"; -+ sd_force_pio = <&sdhost>,"brcm,force-pio?"; -+ sd_pio_limit = <&sdhost>,"brcm,pio-limit:0"; -+ sd_debug = <&sdhost>,"brcm,debug"; ++ chosen { ++ bootargs = ""; + }; -+}; - -From 650af7b583a9e6ca9897cbc1088caba5d4261b90 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Fri, 12 Aug 2016 17:12:32 +0100 -Subject: [PATCH 106/160] config: Enable SENSORS_LM75 - ---- - arch/arm/configs/bcm2709_defconfig | 1 + - arch/arm/configs/bcmrpi_defconfig | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index ed0b455b49f9efff4be980d8bdd59df4f5ee0639..a55d3e3eb96a59ac9e8ec760f7cec65c12fb08a3 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -640,6 +640,7 @@ CONFIG_BATTERY_DS2760=m - CONFIG_POWER_RESET=y - CONFIG_POWER_RESET_GPIO=y - CONFIG_HWMON=m -+CONFIG_SENSORS_LM75=m - CONFIG_SENSORS_SHT21=m - CONFIG_SENSORS_SHTC1=m - CONFIG_THERMAL=y -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 6c885f0518d0c015357a6fea1438841db344cc46..7f02ad070f3f71c289a5e3d19f5eb68253efc8fe 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -631,6 +631,7 @@ CONFIG_BATTERY_DS2760=m - CONFIG_POWER_RESET=y - CONFIG_POWER_RESET_GPIO=y - CONFIG_HWMON=m -+CONFIG_SENSORS_LM75=m - CONFIG_SENSORS_SHT21=m - CONFIG_SENSORS_SHTC1=m - CONFIG_THERMAL=y - -From 66949dcbe079fe2e45eabc41f2a6d3a45ef48799 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Fri, 12 Aug 2016 17:00:18 +0100 -Subject: [PATCH 107/160] config: Enable SERIAL_SC16IS7XX - ---- - arch/arm/configs/bcm2709_defconfig | 1 + - arch/arm/configs/bcmrpi_defconfig | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index a55d3e3eb96a59ac9e8ec760f7cec65c12fb08a3..e85cf56113b432221816008fcf8453ae57f6933b 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -598,6 +598,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=0 - CONFIG_SERIAL_OF_PLATFORM=y - CONFIG_SERIAL_AMBA_PL011=y - CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -+CONFIG_SERIAL_SC16IS7XX=m - CONFIG_TTY_PRINTK=y - CONFIG_HW_RANDOM=y - CONFIG_RAW_DRIVER=y -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 7f02ad070f3f71c289a5e3d19f5eb68253efc8fe..4b50842b84daf91adb553be669737a71f6837dc8 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -590,6 +590,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=0 - CONFIG_SERIAL_OF_PLATFORM=y - CONFIG_SERIAL_AMBA_PL011=y - CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -+CONFIG_SERIAL_SC16IS7XX=m - CONFIG_TTY_PRINTK=y - CONFIG_HW_RANDOM=y - CONFIG_RAW_DRIVER=y - -From decc4bff8e9c4eb407e8463101ced4e191ca4ea1 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Fri, 12 Aug 2016 15:46:21 +0100 -Subject: [PATCH 108/160] snd-bcm2835: Don't allow responses from VC to be - interrupted by user signals - -There should always be a response, and retry after a signal interruption is not handled, so don't report -we are interruptible. - -See: https://github.com/raspberrypi/linux/issues/1560 ---- - sound/arm/bcm2835-vchiq.c | 25 ++++++------------------- - 1 file changed, 6 insertions(+), 19 deletions(-) - -diff --git a/sound/arm/bcm2835-vchiq.c b/sound/arm/bcm2835-vchiq.c -index 3de30945d8155b90d244734881a7caa81930fa7c..7ee436ca9fa2903d41d1bdd8f8f0774025d22ae0 100755 ---- a/sound/arm/bcm2835-vchiq.c -+++ b/sound/arm/bcm2835-vchiq.c -@@ -511,12 +511,7 @@ static int bcm2835_audio_set_ctls_chan(bcm2835_alsa_stream_t * alsa_stream, - } - - /* We are expecting a reply from the videocore */ -- ret = wait_for_completion_interruptible(&instance->msg_avail_comp); -- if (ret) { -- LOG_DBG("%s: failed on waiting for event (status=%d)\n", -- __func__, success); -- goto unlock; -- } -+ wait_for_completion(&instance->msg_avail_comp); - - if (instance->result != 0) { - LOG_ERR("%s: result=%d\n", __func__, instance->result); -@@ -615,12 +610,7 @@ int bcm2835_audio_set_params(bcm2835_alsa_stream_t * alsa_stream, - } - - /* We are expecting a reply from the videocore */ -- ret = wait_for_completion_interruptible(&instance->msg_avail_comp); -- if (ret) { -- LOG_DBG("%s: failed on waiting for event (status=%d)\n", -- __func__, success); -- goto unlock; -- } -+ wait_for_completion(&instance->msg_avail_comp); - - if (instance->result != 0) { - LOG_ERR("%s: result=%d", __func__, instance->result); -@@ -761,14 +751,11 @@ int bcm2835_audio_close(bcm2835_alsa_stream_t * alsa_stream) - goto unlock; - } - -- ret = wait_for_completion_interruptible(&instance->msg_avail_comp); -- if (ret) { -- LOG_DBG("%s: failed on waiting for event (status=%d)\n", -- __func__, success); -- goto unlock; -- } -+ /* We are expecting a reply from the videocore */ -+ wait_for_completion(&instance->msg_avail_comp); + - if (instance->result != 0) { -- LOG_ERR("%s: failed result (status=%d)\n", -+ LOG_ERR("%s: failed result (result=%d)\n", - __func__, instance->result); - - ret = -1; - -From e724130d193cf839ae2599a07e3776d488c6aa1c Mon Sep 17 00:00:00 2001 -From: Bruno George de Moraes -Date: Wed, 20 Aug 2014 23:53:57 -0300 -Subject: [PATCH 109/160] snd-bcm2835: Use bcm2835_hw params in preallocate - ---- - sound/arm/bcm2835-pcm.c | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) - -diff --git a/sound/arm/bcm2835-pcm.c b/sound/arm/bcm2835-pcm.c -index d2de13cbd76ed16634f27c0843474825671a28eb..71b128924affac2b7a01d1169e43d437bb1d0c1a 100755 ---- a/sound/arm/bcm2835-pcm.c -+++ b/sound/arm/bcm2835-pcm.c -@@ -518,9 +518,9 @@ int snd_bcm2835_new_pcm(bcm2835_chip_t * chip) - /* pre-allocation of buffers */ - /* NOTE: this may fail */ - snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, -- snd_dma_continuous_data -- (GFP_KERNEL), 64 * 1024, -- 64 * 1024); -+ snd_dma_continuous_data (GFP_KERNEL), -+ snd_bcm2835_playback_hw.buffer_bytes_max, snd_bcm2835_playback_hw.buffer_bytes_max); ++ soc: soc { + - - out: - mutex_unlock(&chip->audio_mutex); -@@ -550,9 +550,11 @@ int snd_bcm2835_new_spdif_pcm(bcm2835_chip_t * chip) - snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, - &snd_bcm2835_playback_spdif_ops); - -+ /* pre-allocation of buffers */ -+ /* NOTE: this may fail */ - snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, - snd_dma_continuous_data (GFP_KERNEL), -- 64 * 1024, 64 * 1024); -+ snd_bcm2835_playback_spdif_hw.buffer_bytes_max, snd_bcm2835_playback_spdif_hw.buffer_bytes_max); - out: - mutex_unlock(&chip->audio_mutex); - audio_info(" .. OUT\n"); - -From 81e29fe638f01630aca3dad8de5aafe45c4eaa22 Mon Sep 17 00:00:00 2001 -From: Bruno George de Moraes -Date: Tue, 30 Aug 2016 12:54:38 +0100 -Subject: [PATCH 110/160] dwc_otg: Use kzalloc when suitable - ---- - drivers/usb/host/dwc_otg/dummy_audio.c | 3 +-- - drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c | 3 +-- - 2 files changed, 2 insertions(+), 4 deletions(-) - -diff --git a/drivers/usb/host/dwc_otg/dummy_audio.c b/drivers/usb/host/dwc_otg/dummy_audio.c -index 225decf765ce825b896ba98771ccb19c20d99404..f827102fa64414d0f6e6ad47948a87fa4ab97e69 100644 ---- a/drivers/usb/host/dwc_otg/dummy_audio.c -+++ b/drivers/usb/host/dwc_otg/dummy_audio.c -@@ -1377,10 +1377,9 @@ zero_bind (struct usb_gadget *gadget) - - - /* ok, we made sense of the hardware ... */ -- dev = kmalloc (sizeof *dev, SLAB_KERNEL); -+ dev = kzalloc (sizeof *dev, SLAB_KERNEL); - if (!dev) - return -ENOMEM; -- memset (dev, 0, sizeof *dev); - spin_lock_init (&dev->lock); - dev->gadget = gadget; - set_gadget_data (gadget, dev); -diff --git a/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c -index 0eb0f3572d1230fdd23966c47ba9370d22bb8cb5..5624f32c9ea9117599df451af29fca2e3bca36de 100644 ---- a/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c -+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c -@@ -212,12 +212,11 @@ static struct usb_request *dwc_otg_pcd_alloc_request(struct usb_ep *ep, - DWC_WARN("%s() %s\n", __func__, "Invalid EP!\n"); - return 0; - } -- usb_req = kmalloc(sizeof(*usb_req), gfp_flags); -+ usb_req = kzalloc(sizeof(*usb_req), gfp_flags); - if (0 == usb_req) { - DWC_WARN("%s() %s\n", __func__, "request allocation failed!\n"); - return 0; - } -- memset(usb_req, 0, sizeof(*usb_req)); - usb_req->dma = DWC_DMA_ADDR_INVALID; - - return usb_req; - -From f501966df5fa328274191c00727d7061d407c142 Mon Sep 17 00:00:00 2001 -From: Eric Anholt -Date: Tue, 26 Apr 2016 11:44:59 -0700 -Subject: [PATCH 111/160] clk: bcm2835: Mark the VPU clock as critical - -The VPU clock is also the clock for our AXI bus, so we really can't -disable it. This might have happened during boot if, for example, -uart1 (aux_uart clock) probed and was then disabled before the other -consumers of the VPU clock had probed. - -v2: Rewrite to use a .flags in bcm2835_clock_data, since other clocks - will need this too. - -Signed-off-by: Eric Anholt ---- - drivers/clk/bcm/clk-bcm2835.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c -index 7a7970865c2d856b6b57113c2bb7e8074140a5dd..d9db03cb3fd84163f320dca6f2e533c61f61b5ad 100644 ---- a/drivers/clk/bcm/clk-bcm2835.c -+++ b/drivers/clk/bcm/clk-bcm2835.c -@@ -443,6 +443,8 @@ struct bcm2835_clock_data { - /* Number of fractional bits in the divider */ - u32 frac_bits; - -+ u32 flags; ++ /delete-node/ timer@7e003000; + - bool is_vpu_clock; - bool is_mash_clock; - }; -@@ -1230,7 +1232,7 @@ static struct clk *bcm2835_register_clock(struct bcm2835_cprman *cprman, - init.parent_names = parents; - init.num_parents = data->num_mux_parents; - init.name = data->name; -- init.flags = CLK_IGNORE_UNUSED; -+ init.flags = data->flags | CLK_IGNORE_UNUSED; - - if (data->is_vpu_clock) { - init.ops = &bcm2835_vpu_clock_clk_ops; -@@ -1649,6 +1651,7 @@ static const struct bcm2835_clk_desc clk_desc_array[] = { - .div_reg = CM_VPUDIV, - .int_bits = 12, - .frac_bits = 8, -+ .flags = CLK_IS_CRITICAL, - .is_vpu_clock = true), - - /* clocks with per parent mux */ - -From 4d4fbcd941f44b1cd6a25082f2b7131508ce7cf9 Mon Sep 17 00:00:00 2001 -From: Eric Anholt -Date: Mon, 9 May 2016 17:28:18 -0700 -Subject: [PATCH 112/160] clk: bcm2835: Mark GPIO clocks enabled at boot as - critical. - -These divide off of PLLD_PER and are used for the ethernet and wifi -PHYs source PLLs. Neither of them is currently represented by a phy -device that would grab the clock for us. - -This keeps other drivers from killing the networking PHYs when they -disable their own clocks and trigger PLLD_PER's refcount going to 0. - -v2: Skip marking as critical if they aren't on at boot. - -Signed-off-by: Eric Anholt ---- - drivers/clk/bcm/clk-bcm2835.c | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c -index d9db03cb3fd84163f320dca6f2e533c61f61b5ad..f6bbe8d5929828048114286ec29a33e02519eab8 100644 ---- a/drivers/clk/bcm/clk-bcm2835.c -+++ b/drivers/clk/bcm/clk-bcm2835.c -@@ -1234,6 +1234,15 @@ static struct clk *bcm2835_register_clock(struct bcm2835_cprman *cprman, - init.name = data->name; - init.flags = data->flags | CLK_IGNORE_UNUSED; - -+ /* -+ * Some GPIO clocks for ethernet/wifi PLLs are marked as -+ * critical (since some platforms use them), but if the -+ * firmware didn't have them turned on then they clearly -+ * aren't actually critical. -+ */ -+ if ((cprman_read(cprman, data->ctl_reg) & CM_ENABLE) == 0) -+ init.flags &= ~CLK_IS_CRITICAL; ++ watchdog: watchdog@7e100000 { ++ /* Add alias */ ++ }; + - if (data->is_vpu_clock) { - init.ops = &bcm2835_vpu_clock_clk_ops; - } else { -@@ -1708,13 +1717,15 @@ static const struct bcm2835_clk_desc clk_desc_array[] = { - .div_reg = CM_GP1DIV, - .int_bits = 12, - .frac_bits = 12, -+ .flags = CLK_IS_CRITICAL, - .is_mash_clock = true), - [BCM2835_CLOCK_GP2] = REGISTER_PER_CLK( - .name = "gp2", - .ctl_reg = CM_GP2CTL, - .div_reg = CM_GP2DIV, - .int_bits = 12, -- .frac_bits = 12), -+ .frac_bits = 12, -+ .flags = CLK_IS_CRITICAL), - - /* HDMI state machine */ - [BCM2835_CLOCK_HSM] = REGISTER_PER_CLK( - -From 1c4cf5c2586f2c719f6dd2b9b3d5b272d7450f85 Mon Sep 17 00:00:00 2001 -From: Eric Anholt -Date: Tue, 26 Apr 2016 12:39:45 -0700 -Subject: [PATCH 113/160] clk: bcm2835: Skip PLLC clocks when deciding on a new - clock parent - -If the firmware had set up a clock to source from PLLC, go along with -it. But if we're looking for a new parent, we don't want to switch it -to PLLC because the firmware will force PLLC (and thus the AXI bus -clock) to different frequencies during over-temp/under-voltage, -without notification to Linux. - -On my system, this moves the Linux-enabled HDMI state machine and DSI1 -escape clock over to plld_per from pllc_per. EMMC still ends up on -pllc_per, because the firmware had set it up to use that. - -Signed-off-by: Eric Anholt -Fixes: 41691b8862e2 ("clk: bcm2835: Add support for programming the audio domain clocks") ---- - drivers/clk/bcm/clk-bcm2835.c | 23 +++++++++++++++++++++++ - 1 file changed, 23 insertions(+) - -diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c -index f6bbe8d5929828048114286ec29a33e02519eab8..e527649ee5e32d20cebd762f4badbfca06657a84 100644 ---- a/drivers/clk/bcm/clk-bcm2835.c -+++ b/drivers/clk/bcm/clk-bcm2835.c -@@ -1008,16 +1008,28 @@ static int bcm2835_clock_set_rate(struct clk_hw *hw, - return 0; - } - -+static bool -+bcm2835_clk_is_pllc(struct clk_hw *hw) -+{ -+ if (!hw) -+ return false; ++ cprman: cprman@7e101000 { ++ /* Add alias */ ++ }; + -+ return strncmp(clk_hw_get_name(hw), "pllc", 4) == 0; -+} ++ random: rng@7e104000 { ++ /* Add alias */ ++ }; + - static int bcm2835_clock_determine_rate(struct clk_hw *hw, - struct clk_rate_request *req) - { - struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw); - struct clk_hw *parent, *best_parent = NULL; -+ bool current_parent_is_pllc; - unsigned long rate, best_rate = 0; - unsigned long prate, best_prate = 0; - size_t i; - u32 div; - -+ current_parent_is_pllc = bcm2835_clk_is_pllc(clk_hw_get_parent(hw)); ++ gpio@7e200000 { /* gpio */ ++ interrupts = <2 17>, <2 18>; ++ }; + - /* - * Select parent clock that results in the closest but lower rate - */ -@@ -1025,6 +1037,17 @@ static int bcm2835_clock_determine_rate(struct clk_hw *hw, - parent = clk_hw_get_parent_by_index(hw, i); - if (!parent) - continue; ++ sdhost: sdhost@7e202000 { ++ compatible = "brcm,bcm2835-sdhost"; ++ reg = <0x7e202000 0x100>; ++ interrupts = <2 24>; ++ clocks = <&clocks BCM2835_CLOCK_VPU>; ++ dmas = <&dma 13>; ++ dma-names = "rx-tx"; ++ brcm,overclock-50 = <0>; ++ brcm,pio-limit = <1>; ++ status = "disabled"; ++ }; + -+ /* -+ * Don't choose a PLLC-derived clock as our parent -+ * unless it had been manually set that way. PLLC's -+ * frequency gets adjusted by the firmware due to -+ * over-temp or under-voltage conditions, without -+ * prior notification to our clock consumer. -+ */ -+ if (bcm2835_clk_is_pllc(parent) && !current_parent_is_pllc) -+ continue; -+ - prate = clk_hw_get_rate(parent); - div = bcm2835_clock_choose_div(hw, req->rate, prate, true); - rate = bcm2835_clock_rate_from_divisor(clock, prate, div); - -From 4a939a0ce6c33ff46ded0d1b0da7ad5cb0fd2582 Mon Sep 17 00:00:00 2001 -From: Eric Anholt -Date: Wed, 1 Jun 2016 12:05:35 -0700 -Subject: [PATCH 114/160] clk: bcm2835: Mark the CM SDRAM clock's parent as - critical - -While the SDRAM is being driven by its dedicated PLL most of the time, -there is a little loop running in the firmware that periodically turns -on the CM SDRAM clock (using its pre-initialized parent) and switches -SDRAM to using the CM clock to do PVT recalibration. - -This avoids system hangs if we choose SDRAM's parent for some other -clock, then disable that clock. - -Signed-off-by: Eric Anholt ---- - drivers/clk/bcm/clk-bcm2835.c | 25 +++++++++++++++++++++++++ - 1 file changed, 25 insertions(+) - -diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c -index e527649ee5e32d20cebd762f4badbfca06657a84..fbf616021704178a9d007219a0ea2a9f1704f0a6 100644 ---- a/drivers/clk/bcm/clk-bcm2835.c -+++ b/drivers/clk/bcm/clk-bcm2835.c -@@ -36,6 +36,7 @@ - - #include - #include -+#include - #include - #include - #include -@@ -1827,6 +1828,25 @@ static const struct bcm2835_clk_desc clk_desc_array[] = { - .ctl_reg = CM_PERIICTL), - }; - -+/* -+ * Permanently take a reference on the parent of the SDRAM clock. -+ * -+ * While the SDRAM is being driven by its dedicated PLL most of the -+ * time, there is a little loop running in the firmware that -+ * periodically switches the SDRAM to using our CM clock to do PVT -+ * recalibration, with the assumption that the previously configured -+ * SDRAM parent is still enabled and running. -+ */ -+static int bcm2835_mark_sdc_parent_critical(struct clk *sdc) -+{ -+ struct clk *parent = clk_get_parent(sdc); -+ -+ if (IS_ERR(parent)) -+ return PTR_ERR(parent); -+ -+ return clk_prepare_enable(parent); -+} -+ - static int bcm2835_clk_probe(struct platform_device *pdev) - { - struct device *dev = &pdev->dev; -@@ -1836,6 +1856,7 @@ static int bcm2835_clk_probe(struct platform_device *pdev) - const struct bcm2835_clk_desc *desc; - const size_t asize = ARRAY_SIZE(clk_desc_array); - size_t i; -+ int ret; - - cprman = devm_kzalloc(dev, - sizeof(*cprman) + asize * sizeof(*clks), -@@ -1866,6 +1887,10 @@ static int bcm2835_clk_probe(struct platform_device *pdev) - clks[i] = desc->clk_register(cprman, desc->data); - } - -+ ret = bcm2835_mark_sdc_parent_critical(clks[BCM2835_CLOCK_SDRAM]); -+ if (ret) -+ return ret; -+ - return of_clk_add_provider(dev->of_node, of_clk_src_onecell_get, - &cprman->onecell); - } - -From 95cc0eb3f8978b9d3ed8da4d3517617c11a0d193 Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Mon, 25 Apr 2016 06:54:57 +0000 -Subject: [PATCH 115/160] ARM: bcm2708: enable clock manager by default - -Enable the clock manager by default. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 74434b986e3fbb257debfc79caef9fa68f750043..416037450277cd17c280e2b5f9f5423b1cd5502b 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -113,7 +113,6 @@ - * oscillator. - */ - clocks = <&clk_osc>; -- status = "disabled"; - }; - - random: rng@7e104000 { - -From 3bcce4423ce1ffaf3017596365bd954994604275 Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Mon, 25 Apr 2016 07:56:13 +0000 -Subject: [PATCH 116/160] ARM: 2708: i2s: removed clock registers and added - clock - -Removed clock registers from reg and added clock to i2s devicetree node. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 416037450277cd17c280e2b5f9f5423b1cd5502b..9af850fc2cacfccd4ec6262992e9248263788dd1 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -159,8 +159,8 @@ - i2s: i2s@7e203000 { - compatible = "brcm,bcm2835-i2s"; - #sound-dai-cells = <0>; -- reg = <0x7e203000 0x24>, -- <0x7e101098 0x08>; ++ i2s@7e203000 { /* i2s */ ++ #sound-dai-cells = <0>; + reg = <0x7e203000 0x24>; -+ clocks = <&cprman BCM2835_CLOCK_PCM>; - - dmas = <&dma 2>, <&dma 3>; - dma-names = "tx", "rx"; - -From b8498b02d8f92cc741a71129f671e9518ee1524c Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 10:31:04 +0000 -Subject: [PATCH 117/160] ARM: bcm2708: use correct device-tree node names for - serial - -Upstream mandates the use of "serial" as name inside the device-tree. -Note that this does not affect the use of the alias - there -uart0 and uart1 are permissible. - -This also fixed the patch references inside the overlays for the rpi3. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 4 ++-- - arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts | 4 ++-- - arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts | 4 ++-- - 3 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 9af850fc2cacfccd4ec6262992e9248263788dd1..65f83cfd26c016fe5c7438559a8c9e023603268c 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -133,7 +133,7 @@ - #interrupt-cells = <2>; - }; - -- uart0: uart@7e201000 { -+ uart0: serial@7e201000 { - compatible = "arm,pl011", "arm,primecell"; - reg = <0x7e201000 0x1000>; - interrupts = <2 25>; -@@ -234,7 +234,7 @@ - status = "disabled"; - }; - -- uart1: uart@7e215040 { -+ uart1: serial@7e215040 { - compatible = "brcm,bcm2835-aux-uart", "ns16550"; - reg = <0x7e215040 0x40>; - interrupts = <1 29>; -diff --git a/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts b/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts -index 68f6069dd24cbf6a2ed11365ac0717e36879abe3..87cf345f9641e62c5ed496c238333716cc5b27e6 100644 ---- a/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts -+++ b/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts -@@ -39,8 +39,8 @@ - fragment@3 { - target-path = "/aliases"; - __overlay__ { -- serial0 = "/soc/uart@7e201000"; -- serial1 = "/soc/uart@7e215040"; -+ serial0 = "/soc/serial@7e201000"; -+ serial1 = "/soc/serial@7e215040"; - }; - }; - }; -diff --git a/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts b/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts -index 17d04cf87195a6ff192e1ddbe4f92b1afa9e5ddb..18f77453c38dbbf33f3726a5b4cce15b9f20f390 100644 ---- a/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts -+++ b/arch/arm/boot/dts/overlays/pi3-miniuart-bt-overlay.dts -@@ -57,8 +57,8 @@ - fragment@4 { - target-path = "/aliases"; - __overlay__ { -- serial0 = "/soc/uart@7e201000"; -- serial1 = "/soc/uart@7e215040"; -+ serial0 = "/soc/serial@7e201000"; -+ serial1 = "/soc/serial@7e215040"; - }; - }; - }; - -From 8137333581c6b2ed3a55cc88014ebc0e908b2ffa Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 10:52:17 +0000 -Subject: [PATCH 118/160] ARM: bcm2708: moved uart0 to use new clock framework - -Moved uart0 to use new clock framework. -At the same time removed the fixed clock clk_uart0 -and the corresponding references, as the clock is now -read directly from the configured clocks. - -If it ever becomes necessary the following can get added -to modify the base clock rate later: - assigned-clocks = <&clocks BCM2835_CLOCK_UART>; - assigned-clock-rates = ; - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 1 - - arch/arm/boot/dts/bcm2708-rpi-b.dts | 1 - - arch/arm/boot/dts/bcm2708-rpi-cm.dts | 1 - - arch/arm/boot/dts/bcm2708_common.dtsi | 21 +++------------------ - arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 1 - - arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 1 - - 6 files changed, 3 insertions(+), 23 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts -index db2705afa4e2229c961fe88bcae46233a4ce4542..ddccaee96185418107727fb53a0b12e9007f8347 100644 ---- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts -+++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts -@@ -133,7 +133,6 @@ - / { - __overrides__ { - uart0 = <&uart0>,"status"; -- uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; - uart1 = <&uart1>,"status"; - i2s = <&i2s>,"status"; - spi = <&spi0>,"status"; -diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts -index beae0371477cc41f27006ef3f1ef7268839177df..022055b553d87655c17716229884975210159ee7 100644 ---- a/arch/arm/boot/dts/bcm2708-rpi-b.dts -+++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts -@@ -127,7 +127,6 @@ - / { - __overrides__ { - uart0 = <&uart0>,"status"; -- uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; - uart1 = <&uart1>,"status"; - i2s = <&i2s>,"status"; - spi = <&spi0>,"status"; -diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dts b/arch/arm/boot/dts/bcm2708-rpi-cm.dts -index cd0e1acc22f8ded801f29d331570828e5582247b..d2dcc9c156b32a91a45c26b460fa971abd0dbdf5 100755 ---- a/arch/arm/boot/dts/bcm2708-rpi-cm.dts -+++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts -@@ -88,7 +88,6 @@ - / { - __overrides__ { - uart0 = <&uart0>,"status"; -- uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; - uart1 = <&uart1>,"status"; - i2s = <&i2s>,"status"; - spi = <&spi0>,"status"; -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 65f83cfd26c016fe5c7438559a8c9e023603268c..a93c5a20e3a19a36441f213bf8e9306e90c60842 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -134,10 +134,11 @@ - }; - - uart0: serial@7e201000 { -- compatible = "arm,pl011", "arm,primecell"; -+ compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; - reg = <0x7e201000 0x1000>; - interrupts = <2 25>; -- clocks = <&clk_uart0 &clk_apb_p>; -+ clocks = <&cprman BCM2835_CLOCK_UART>, -+ <&cprman BCM2835_CLOCK_VPU>; - clock-names = "uartclk","apb_pclk"; - arm,primecell-periphid = <0x00241011>; // For an explanation, see - // https://github.com/raspberrypi/linux/commit/13731d862cf5219216533a3b0de052cee4cc5038 -@@ -421,22 +422,6 @@ - clock-frequency = <250000000>; - }; - -- clk_uart0: clock@2 { -- compatible = "fixed-clock"; -- reg = <2>; -- #clock-cells = <0>; -- clock-output-names = "uart0_pclk"; -- clock-frequency = <3000000>; -- }; -- -- clk_apb_p: clock@3 { -- compatible = "fixed-clock"; -- reg = <3>; -- #clock-cells = <0>; -- clock-output-names = "apb_pclk"; -- clock-frequency = <126000000>; -- }; -- - clk_pwm: clock@4 { - compatible = "fixed-clock"; - reg = <4>; -diff --git a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts -index eca72bd0d6e891b0096ac97b68c2da92199aa851..8eba22a66d986cf819b10b7d28de959188c27b55 100644 ---- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts -+++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts -@@ -133,7 +133,6 @@ - / { - __overrides__ { - uart0 = <&uart0>,"status"; -- uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; - uart1 = <&uart1>,"status"; - i2s = <&i2s>,"status"; - spi = <&spi0>,"status"; -diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts -index a72e6e5a0ac0b2492db3d8034a5196b3e19ae008..55ddafda0b17e480e129dc84c93e6743ff533ec1 100644 ---- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts -+++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts -@@ -184,7 +184,6 @@ - / { - __overrides__ { - uart0 = <&uart0>,"status"; -- uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; - uart1 = <&uart1>,"status"; - i2s = <&i2s>,"status"; - spi = <&spi0>,"status"; - -From 32f209fd6dcd2bad5c519073ff5ec6cca122a73e Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 11:12:37 +0000 -Subject: [PATCH 119/160] ARM: bcm2708: move spi0 to use new clock framework - -use spi0 to use new clock framwork - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index a93c5a20e3a19a36441f213bf8e9306e90c60842..2eef648c4da0fe18c7134154a67b1529b36b1eef 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -172,7 +172,7 @@ - compatible = "brcm,bcm2835-spi"; - reg = <0x7e204000 0x1000>; - interrupts = <2 22>; -- clocks = <&clk_core>; -+ clocks = <&cprman BCM2835_CLOCK_VPU>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; - -From 79dc3fd691dea8da7d92747f140dbcc503679c79 Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 11:17:32 +0000 -Subject: [PATCH 120/160] ARM: bcm2708: move i2c to use new clock framework - -move i2c to use the new clock framework instead of the fixed clock - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 2eef648c4da0fe18c7134154a67b1529b36b1eef..ac45bbd4e72c2a1668424ee8f714bd9f605eaccd 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -190,7 +190,7 @@ - compatible = "brcm,bcm2708-i2c"; - reg = <0x7e205000 0x1000>; - interrupts = <2 21>; -- clocks = <&clk_core>; -+ clocks = <&cprman BCM2835_CLOCK_VPU>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; -@@ -286,7 +286,7 @@ - compatible = "brcm,bcm2708-i2c"; - reg = <0x7e804000 0x1000>; - interrupts = <2 21>; -- clocks = <&clk_core>; -+ clocks = <&cprman BCM2835_CLOCK_VPU>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; -@@ -299,7 +299,7 @@ - compatible = "brcm,bcm2708-i2c"; - reg = <0x7e805000 0x1000>; - interrupts = <2 21>; -- clocks = <&clk_core>; -+ clocks = <&cprman BCM2835_CLOCK_VPU>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; - -From 318fdb2e575baea7d55e439a4aff8b0a3d7ab9fa Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 11:19:11 +0000 -Subject: [PATCH 121/160] ARM: bcm2708: move pwm to new clock framework - -Move PWM to use the new clock framework - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index ac45bbd4e72c2a1668424ee8f714bd9f605eaccd..4177be1f2d4404a775fe3e993f020fb573cee7f2 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -222,7 +222,9 @@ - pwm: pwm@7e20c000 { - compatible = "brcm,bcm2835-pwm"; - reg = <0x7e20c000 0x28>; -- clocks = <&clk_pwm>; -+ clocks = <&cprman BCM2835_CLOCK_PWM>; -+ assigned-clocks = <&cprman BCM2835_CLOCK_PWM>; -+ assigned-clock-rates = <10000000>; - #pwm-cells = <2>; - status = "disabled"; - }; - -From 38e3be8a1e4a2ac1712d4964ca627e160e9ef53d Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 11:23:53 +0000 -Subject: [PATCH 122/160] ARM: bcm2708: fix auxiliar clock provider to use - clock framework - -Fix the auxiliar clock provider to use the clock framework - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 4177be1f2d4404a775fe3e993f020fb573cee7f2..f1b813d145874205a33068d278c0e79c6355ef20 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -229,12 +229,11 @@ - status = "disabled"; - }; - -- aux: aux@0x7e215004 { -+ aux: aux@0x7e215000 { - compatible = "brcm,bcm2835-aux"; - #clock-cells = <1>; - reg = <0x7e215000 0x8>; -- clocks = <&clk_core>; -- status = "disabled"; -+ clocks = <&cprman BCM2835_CLOCK_VPU>; - }; - - uart1: serial@7e215040 { - -From a87285c33f869f143c8ed1bb920603d7142ca0e7 Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 11:32:21 +0000 -Subject: [PATCH 123/160] ARM: bcm2708: fix register range of spi-aux - -Fix the register range of the spi-aux devices, -as they do not control the gate. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index f1b813d145874205a33068d278c0e79c6355ef20..37cde9cf317e6c5c76bcf3676a296696f574ac3d 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -248,7 +248,7 @@ - - spi1: spi@7e215080 { - compatible = "brcm,bcm2835-aux-spi"; -- reg = <0x7e215080 0x40>, <0x7e215000 0x8>; -+ reg = <0x7e215080 0x40>; - interrupts = <1 29>; - clocks = <&aux BCM2835_AUX_CLOCK_SPI1>; - #address-cells = <1>; -@@ -258,7 +258,7 @@ - - spi2: spi@7e2150C0 { - compatible = "brcm,bcm2835-aux-spi"; -- reg = <0x7e2150C0 0x40>, <0x7e215000 0x8>; -+ reg = <0x7e2150C0 0x40>; - interrupts = <1 29>; - clocks = <&aux BCM2835_AUX_CLOCK_SPI2>; - #address-cells = <1>; - -From 02890dfbdf8790d57f0ae4ebb664c5af8af3fa04 Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 12:12:16 +0000 -Subject: [PATCH 124/160] ARM: bcm2708: move to new clock manager and driver - for aux-uart - -Move to new aux-uart driver (from upstream) and enable it correctly -in the device tree - -Note that this may also solve the "serial not 115200 baud" -issue on the rpi3... - -With an extension to the driver (requesting clock change -notifications) the driver could change the baud divider when -such a clock change occurs... - -It still would require some communication between the firmware -and the kernel, so that this would get propagated. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 15 ++------------- - arch/arm/configs/bcm2709_defconfig | 3 +++ - arch/arm/configs/bcmrpi_defconfig | 3 +++ - drivers/tty/serial/8250/Kconfig | 2 +- - 4 files changed, 9 insertions(+), 14 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 37cde9cf317e6c5c76bcf3676a296696f574ac3d..011ef9786d46b4ba8db0c672339b7f22b5b75e08 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -237,12 +237,10 @@ - }; - - uart1: serial@7e215040 { -- compatible = "brcm,bcm2835-aux-uart", "ns16550"; -+ compatible = "brcm,bcm2835-aux-uart"; - reg = <0x7e215040 0x40>; - interrupts = <1 29>; -- clocks = <&clk_uart1>; -- reg-shift = <2>; -- no-loopback-test; -+ clocks = <&aux BCM2835_AUX_CLOCK_UART>; - status = "disabled"; - }; - -@@ -431,15 +429,6 @@ - clock-frequency = <100000000>; - }; - -- clk_uart1: clock@5 { -- compatible = "fixed-factor-clock"; -- reg = <5>; -- clocks = <&clk_core>; -- #clock-cells = <0>; -- clock-div = <1>; -- clock-mult = <2>; -- }; -- - /* The oscillator is the root of the clock tree. */ - clk_osc: clock@6 { - compatible = "fixed-clock"; -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index e85cf56113b432221816008fcf8453ae57f6933b..76340ce6ccc43a4bb24db414b75814e4a9e10ddc 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -595,6 +595,9 @@ CONFIG_SERIAL_8250_CONSOLE=y - # CONFIG_SERIAL_8250_DMA is not set - CONFIG_SERIAL_8250_NR_UARTS=1 - CONFIG_SERIAL_8250_RUNTIME_UARTS=0 -+CONFIG_SERIAL_8250_EXTENDED=y -+CONFIG_SERIAL_8250_SHARE_IRQ=y -+CONFIG_SERIAL_8250_BCM2835AUX=y - CONFIG_SERIAL_OF_PLATFORM=y - CONFIG_SERIAL_AMBA_PL011=y - CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 4b50842b84daf91adb553be669737a71f6837dc8..5535fee75c1a31c4fe014b1551af763fb2e7c289 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -587,6 +587,9 @@ CONFIG_SERIAL_8250_CONSOLE=y - # CONFIG_SERIAL_8250_DMA is not set - CONFIG_SERIAL_8250_NR_UARTS=1 - CONFIG_SERIAL_8250_RUNTIME_UARTS=0 -+CONFIG_SERIAL_8250_EXTENDED=y -+CONFIG_SERIAL_8250_SHARE_IRQ=y -+CONFIG_SERIAL_8250_BCM2835AUX=y - CONFIG_SERIAL_OF_PLATFORM=y - CONFIG_SERIAL_AMBA_PL011=y - CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -diff --git a/drivers/tty/serial/8250/Kconfig b/drivers/tty/serial/8250/Kconfig -index e46761d20f7b4c780784d48c9f8de23f47f5134c..1232132f218b5c09dd46f3e9f541ea7c6f34b360 100644 ---- a/drivers/tty/serial/8250/Kconfig -+++ b/drivers/tty/serial/8250/Kconfig -@@ -291,7 +291,7 @@ config SERIAL_8250_ACORN - - config SERIAL_8250_BCM2835AUX - tristate "BCM2835 auxiliar mini UART support" -- depends on ARCH_BCM2835 || COMPILE_TEST -+ depends on ARCH_BCM2708 || ARCH_BCM2709 || ARCH_BCM2835 || COMPILE_TEST - depends on SERIAL_8250 && SERIAL_8250_SHARE_IRQ - help - Support for the BCM2835 auxiliar mini UART. - -From 9b18e62ef50b0c9c9d5c39058c32091170d038c3 Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 12:44:22 +0000 -Subject: [PATCH 125/160] ARM: bcm2708: remove pwm clock - -Remove no longer necessary fixed pwm clock. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 8 -------- - 1 file changed, 8 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 011ef9786d46b4ba8db0c672339b7f22b5b75e08..aa6005c2460df08cf2f102148be251a7a57d0bdf 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -421,14 +421,6 @@ - clock-frequency = <250000000>; - }; - -- clk_pwm: clock@4 { -- compatible = "fixed-clock"; -- reg = <4>; -- #clock-cells = <0>; -- clock-output-names = "pwm"; -- clock-frequency = <100000000>; -- }; -- - /* The oscillator is the root of the clock tree. */ - clk_osc: clock@6 { - compatible = "fixed-clock"; - -From 1ecaa8c7ff63131c7231e9f712a65e9d0db50c1c Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 14:59:21 +0000 -Subject: [PATCH 126/160] MISC: bcm2835: smi: use clock manager and fix reload - issues - -Use clock manager instead of self-made clockmanager. - -Also fix some error paths that showd up during development -(especially missing release of dma resources on rmmod) - -Signed-off-by: Martin Sperl ---- - drivers/misc/bcm2835_smi.c | 86 +++++++++++++++------------------------------- - 1 file changed, 28 insertions(+), 58 deletions(-) - -diff --git a/drivers/misc/bcm2835_smi.c b/drivers/misc/bcm2835_smi.c -index 63a4ea08b9930a3a31a985f0a1d969b488ed49ec..1261540703127d1d63b9f3c87042c6e50d3fbec2 100644 ---- a/drivers/misc/bcm2835_smi.c -+++ b/drivers/misc/bcm2835_smi.c -@@ -34,6 +34,7 @@ - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -+#include - #include - #include - #include -@@ -62,7 +63,7 @@ - struct bcm2835_smi_instance { - struct device *dev; - struct smi_settings settings; -- __iomem void *smi_regs_ptr, *cm_smi_regs_ptr; -+ __iomem void *smi_regs_ptr; - dma_addr_t smi_regs_busaddr; - - struct dma_chan *dma_chan; -@@ -72,8 +73,7 @@ struct bcm2835_smi_instance { - - struct scatterlist buffer_sgl; - -- int clock_source; -- int clock_divisor; -+ struct clk *clk; - - /* Sometimes we are called into in an atomic context (e.g. by - JFFS2 + MTD) so we can't use a mutex */ -@@ -82,42 +82,6 @@ struct bcm2835_smi_instance { - - /**************************************************************************** - * --* SMI clock manager setup --* --***************************************************************************/ -- --static inline void write_smi_cm_reg(struct bcm2835_smi_instance *inst, -- u32 val, unsigned reg) --{ -- writel(CM_PWD | val, inst->cm_smi_regs_ptr + reg); --} -- --static inline u32 read_smi_cm_reg(struct bcm2835_smi_instance *inst, -- unsigned reg) --{ -- return readl(inst->cm_smi_regs_ptr + reg); --} -- --static void smi_setup_clock(struct bcm2835_smi_instance *inst) --{ -- dev_dbg(inst->dev, "Setting up clock..."); -- /* Disable SMI clock and wait for it to stop. */ -- write_smi_cm_reg(inst, 0, CM_SMI_CTL); -- while (read_smi_cm_reg(inst, CM_SMI_CTL) & CM_SMI_CTL_BUSY) -- ; -- -- write_smi_cm_reg(inst, (inst->clock_divisor << CM_SMI_DIV_DIVI_OFFS), -- CM_SMI_DIV); -- write_smi_cm_reg(inst, (inst->clock_source << CM_SMI_CTL_SRC_OFFS), -- CM_SMI_CTL); -- -- /* Enable the clock */ -- write_smi_cm_reg(inst, (inst->clock_source << CM_SMI_CTL_SRC_OFFS) | -- CM_SMI_CTL_ENAB, CM_SMI_CTL); --} -- --/**************************************************************************** --* - * SMI peripheral setup - * - ***************************************************************************/ -@@ -894,42 +858,40 @@ static int bcm2835_smi_probe(struct platform_device *pdev) - struct device_node *node = dev->of_node; - struct resource *ioresource; - struct bcm2835_smi_instance *inst; -+ const __be32 *addr; - -+ /* We require device tree support */ -+ if (!node) -+ return -EINVAL; - /* Allocate buffers and instance data */ -- - inst = devm_kzalloc(dev, sizeof(struct bcm2835_smi_instance), - GFP_KERNEL); -- - if (!inst) - return -ENOMEM; - - inst->dev = dev; - spin_lock_init(&inst->transaction_lock); - -- /* We require device tree support */ -- if (!node) -- return -EINVAL; -- - ioresource = platform_get_resource(pdev, IORESOURCE_MEM, 0); - inst->smi_regs_ptr = devm_ioremap_resource(dev, ioresource); -- ioresource = platform_get_resource(pdev, IORESOURCE_MEM, 1); -- inst->cm_smi_regs_ptr = devm_ioremap_resource(dev, ioresource); -- inst->smi_regs_busaddr = be32_to_cpu( -- *of_get_address(node, 0, NULL, NULL)); -- of_property_read_u32(node, -- "brcm,smi-clock-source", -- &inst->clock_source); -- of_property_read_u32(node, -- "brcm,smi-clock-divisor", -- &inst->clock_divisor); -+ if (IS_ERR(inst->smi_regs_ptr)) { -+ err = PTR_ERR(inst->smi_regs_ptr); -+ goto err; -+ } -+ addr = of_get_address(node, 0, NULL, NULL); -+ inst->smi_regs_busaddr = be32_to_cpu(addr); - - err = bcm2835_smi_dma_setup(inst); - if (err) -- return err; -+ goto err; - -- /* Finally, do peripheral setup */ -+ /* request clock */ -+ inst->clk = devm_clk_get(dev, NULL); -+ if (!inst->clk) -+ goto err; -+ clk_prepare_enable(inst->clk); - -- smi_setup_clock(inst); -+ /* Finally, do peripheral setup */ - smi_setup_regs(inst); - - platform_set_drvdata(pdev, inst); -@@ -937,6 +899,9 @@ static int bcm2835_smi_probe(struct platform_device *pdev) - dev_info(inst->dev, "initialised"); - - return 0; -+err: -+ kfree(inst); -+ return err; - } - - /**************************************************************************** -@@ -950,6 +915,11 @@ static int bcm2835_smi_remove(struct platform_device *pdev) - struct bcm2835_smi_instance *inst = platform_get_drvdata(pdev); - struct device *dev = inst->dev; - -+ dmaengine_terminate_all(inst->dma_chan); -+ dma_release_channel(inst->dma_chan); ++ clocks = <&clocks BCM2835_CLOCK_PCM>; ++ }; + -+ clk_disable_unprepare(inst->clk); ++ spi0: spi@7e204000 { ++ /* Add alias */ ++ dmas = <&dma 6>, <&dma 7>; ++ dma-names = "tx", "rx"; ++ }; + - dev_info(dev, "SMI device removed - OK"); - return 0; - } - -From 48c2193d769eb31840f63f76b86f2032a2d8565a Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 15:02:23 +0000 -Subject: [PATCH 127/160] ARM: bcm2835: move smi to use clock framework - -Move smi to use clock framework. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index aa6005c2460df08cf2f102148be251a7a57d0bdf..d757ca03a4a35f5da464667b6897a654a69ca0b8 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -306,10 +306,11 @@ - - smi: smi@7e600000 { - compatible = "brcm,bcm2835-smi"; -- reg = <0x7e600000 0x44>, <0x7e1010b0 0x8>; ++ i2c@7e205000 { /* i2c0 */ ++ compatible = "brcm,bcm2708-i2c"; ++ }; ++ ++ pixelvalve0: pixelvalve@7e206000 { ++ /* Add alias */ ++ status = "disabled"; ++ }; ++ ++ pixelvalve1: pixelvalve@7e207000 { ++ /* Add alias */ ++ status = "disabled"; ++ }; ++ ++ dpi: dpi@7e208000 { ++ compatible = "brcm,bcm2835-dpi"; ++ reg = <0x7e208000 0x8c>; ++ clocks = <&clocks BCM2835_CLOCK_VPU>, ++ <&clocks BCM2835_CLOCK_DPI>; ++ clock-names = "core", "pixel"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "disabled"; ++ }; ++ ++ /delete-node/ sdhci@7e300000; ++ ++ mmc: mmc@7e300000 { ++ compatible = "brcm,bcm2835-mmc"; ++ reg = <0x7e300000 0x100>; ++ interrupts = <2 30>; ++ clocks = <&clocks BCM2835_CLOCK_EMMC>; ++ dmas = <&dma 11>; ++ dma-names = "rx-tx"; ++ brcm,overclock-50 = <0>; ++ status = "disabled"; ++ }; ++ ++ hvs: hvs@7e400000 { ++ /* Add alias */ ++ status = "disabled"; ++ }; ++ ++ smi: smi@7e600000 { ++ compatible = "brcm,bcm2835-smi"; + reg = <0x7e600000 0x100>; - interrupts = <2 16>; -- brcm,smi-clock-source = <6>; -- brcm,smi-clock-divisor = <4>; -+ clocks = <&cprman BCM2835_CLOCK_SMI>; ++ interrupts = <2 16>; ++ clocks = <&clocks BCM2835_CLOCK_SMI>; + assigned-clocks = <&cprman BCM2835_CLOCK_SMI>; + assigned-clock-rates = <125000000>; - dmas = <&dma 4>; - dma-names = "rx-tx"; - status = "disabled"; - -From ca562423092cc1b622ffb2b5578bbebc96d3cb29 Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 13:04:12 +0000 -Subject: [PATCH 128/160] ARM: bcm2708: move mmc to use clock framework - -Move mmc to use clock framework. - -For some reason the emmc clock dirver does not claim the -clock - enable count stays at 0 for the emmc clock. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 10 +--------- - 1 file changed, 1 insertion(+), 9 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index d757ca03a4a35f5da464667b6897a654a69ca0b8..9689b971debfb2368da9f56cac2a4e04a1c6dd17 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -268,7 +268,7 @@ - compatible = "brcm,bcm2835-mmc"; - reg = <0x7e300000 0x100>; - interrupts = <2 30>; -- clocks = <&clk_mmc>; -+ clocks = <&cprman BCM2835_CLOCK_EMMC>; - dmas = <&dma 11>; - dma-names = "rx-tx"; - brcm,overclock-50 = <0>; -@@ -414,14 +414,6 @@ - clock-frequency = <250000000>; - }; - -- clk_mmc: clock@1 { -- compatible = "fixed-clock"; -- reg = <1>; -- #clock-cells = <0>; -- clock-output-names = "mmc"; -- clock-frequency = <250000000>; -- }; -- - /* The oscillator is the root of the clock tree. */ - clk_osc: clock@6 { - compatible = "fixed-clock"; - -From 656a3b0d4acb3df0d2bada2cda5c1269a4f13e8d Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 13:19:51 +0000 -Subject: [PATCH 129/160] ARM: bcm2708: move sdhost to use clock framework - -Move the sdhost device to use the clock framework. - -Unfortunately I can not test it on my CM, as it seem as if -there is no overlay that would enable sdhost and change the -gpio-mux to the correct ALT0 (from Alt3 from mmc). - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708_common.dtsi | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 9689b971debfb2368da9f56cac2a4e04a1c6dd17..74b8b67dbc73ddd6fa36b3ae6df96c29dc5e27b0 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -149,7 +149,7 @@ - compatible = "brcm,bcm2835-sdhost"; - reg = <0x7e202000 0x100>; - interrupts = <2 24>; -- clocks = <&clk_core>; -+ clocks = <&cprman BCM2835_CLOCK_VPU>; - dmas = <&dma 13>; - dma-names = "rx-tx"; - brcm,overclock-50 = <0>; - -From f3a7fdc7e12403b432558a66d6b4ce35042741f6 Mon Sep 17 00:00:00 2001 -From: Martin Sperl -Date: Tue, 26 Apr 2016 15:11:24 +0000 -Subject: [PATCH 130/160] ARM: bcm2708: remove clk_core as it is no longer used - -Remove clk_core from device tree as it is no longer used. -Any "modification" to the core_clock in the bootloader is now -automatically detected via the cnew clockmgr. - -Signed-off-by: Martin Sperl ---- - arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 1 - - arch/arm/boot/dts/bcm2708-rpi-b.dts | 1 - - arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 2 -- - arch/arm/boot/dts/bcm2708_common.dtsi | 8 -------- - arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 1 - - arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 1 - - 6 files changed, 14 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts -index ddccaee96185418107727fb53a0b12e9007f8347..6c16c325cd2887a42c42665273834618c1937918 100644 ---- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts -+++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts -@@ -142,7 +142,6 @@ - i2c0_baudrate = <&i2c0>,"clock-frequency:0"; - i2c1_baudrate = <&i2c1>,"clock-frequency:0"; - i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -- core_freq = <&clk_core>,"clock-frequency:0"; - - act_led_gpio = <&act_led>,"gpios:4"; - act_led_activelow = <&act_led>,"gpios:8"; -diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts -index 022055b553d87655c17716229884975210159ee7..7c132437671d43e76445a4bf1184cc9a316b0965 100644 ---- a/arch/arm/boot/dts/bcm2708-rpi-b.dts -+++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts -@@ -136,7 +136,6 @@ - i2c0_baudrate = <&i2c0>,"clock-frequency:0"; - i2c1_baudrate = <&i2c1>,"clock-frequency:0"; - i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -- core_freq = <&clk_core>,"clock-frequency:0"; - - act_led_gpio = <&act_led>,"gpios:4"; - act_led_activelow = <&act_led>,"gpios:8"; -diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi -index 90e330d1978da8624c042d52a38aa5d6d95d2377..f07609d97225b355dd2b6981d4f1fa28d0d40950 100644 ---- a/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi -+++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi -@@ -38,8 +38,6 @@ - - / { - __overrides__ { -- core_freq = <&clk_core>,"clock-frequency:0"; -- - act_led_gpio = <&act_led>,"gpios:4"; - act_led_activelow = <&act_led>,"gpios:8"; - act_led_trigger = <&act_led>,"linux,default-trigger"; -diff --git a/arch/arm/boot/dts/bcm2708_common.dtsi b/arch/arm/boot/dts/bcm2708_common.dtsi -index 74b8b67dbc73ddd6fa36b3ae6df96c29dc5e27b0..7df436bea6cbdca226e75c687c1518114ae49c7d 100644 ---- a/arch/arm/boot/dts/bcm2708_common.dtsi -+++ b/arch/arm/boot/dts/bcm2708_common.dtsi -@@ -406,14 +406,6 @@ - #address-cells = <1>; - #size-cells = <0>; - -- clk_core: clock@0 { -- compatible = "fixed-clock"; -- reg = <0>; -- #clock-cells = <0>; -- clock-output-names = "core"; -- clock-frequency = <250000000>; -- }; -- - /* The oscillator is the root of the clock tree. */ - clk_osc: clock@6 { - compatible = "fixed-clock"; -diff --git a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts -index 8eba22a66d986cf819b10b7d28de959188c27b55..74fe4cc1d667e9508ca860bcc8c837fed0cbb855 100644 ---- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts -+++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts -@@ -142,7 +142,6 @@ - i2c0_baudrate = <&i2c0>,"clock-frequency:0"; - i2c1_baudrate = <&i2c1>,"clock-frequency:0"; - i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -- core_freq = <&clk_core>,"clock-frequency:0"; - - act_led_gpio = <&act_led>,"gpios:4"; - act_led_activelow = <&act_led>,"gpios:8"; ++ dmas = <&dma 4>; ++ dma-names = "rx-tx"; ++ status = "disabled"; ++ }; ++ ++ i2c@7e804000 { /* i2c1 */ ++ compatible = "brcm,bcm2708-i2c"; ++ }; ++ ++ i2c@7e805000 { /* i2c2 */ ++ compatible = "brcm,bcm2708-i2c"; ++ }; ++ ++ pixelvalve2: pixelvalve@7e807000 { ++ /* Add alias */ ++ status = "disabled"; ++ }; ++ ++ hdmi@7e902000 { /* hdmi */ ++ status = "disabled"; ++ }; ++ ++ usb@7e980000 { /* usb */ ++ compatible = "brcm,bcm2708-usb"; ++ reg = <0x7e980000 0x10000>, ++ <0x7e006000 0x1000>; ++ interrupts = <2 0>, ++ <1 9>; ++ }; ++ ++ v3d@7ec00000 { /* vd3 */ ++ compatible = "brcm,vc4-v3d"; ++ status = "disabled"; ++ }; ++ ++ gpu: gpu { ++ /* Add alias */ ++ status = "disabled"; ++ }; ++ }; ++}; diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts -index 55ddafda0b17e480e129dc84c93e6743ff533ec1..037ed41b140c448940c4a04d235fa6e6898265d3 100644 +index d9ae00f95e6261eea582d7a2c6dfbc221f99953d..30060663ca712578f6d697fd02a3b31d94301707 100644 --- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts -@@ -193,7 +193,6 @@ - i2c0_baudrate = <&i2c0>,"clock-frequency:0"; - i2c1_baudrate = <&i2c1>,"clock-frequency:0"; - i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -- core_freq = <&clk_core>,"clock-frequency:0"; +@@ -153,15 +153,10 @@ + }; - act_led_gpio = <&act_led>,"gpios:4"; - act_led_activelow = <&act_led>,"gpios:8"; - -From 1b97b68564229cc2752d376e2fbac2b6a2f24290 Mon Sep 17 00:00:00 2001 -From: DigitalDreamtime -Date: Tue, 16 Aug 2016 20:07:38 +0100 -Subject: [PATCH 131/160] CM3: ARM: bcm2708: moved uart0 to use new clock - framework - -Moved uart0 to use new clock framework. -At the same time removed the fixed clock clk_uart0 -and the corresponding references, as the clock is now -read directly from the configured clocks. - -If it ever becomes necessary the following can get added -to modify the base clock rate later: - assigned-clocks = <&clocks BCM2835_CLOCK_UART>; - assigned-clock-rates = ; - -Signed-off-by: DigitalDreamtime ---- - arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 1 - - 1 file changed, 1 deletion(-) - + &i2s { +- #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; + }; + +-&random { +- status = "okay"; +-}; +- + &leds { + act_led: act { + label = "led0"; diff --git a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -index 6a3d2f21295a63e9211638b9e4ba202753c8181b..f637da1d3b85dfc79e88b4bf0b3ec12417ba2c21 100644 +index 20388084b98cf942529eb60c55dc540cfea71886..b5a5ae7747455438f8eabd28e8c11c6aeb0c1ecc 100644 --- a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts +++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -@@ -149,7 +149,6 @@ +@@ -108,15 +108,10 @@ + }; + + &i2s { +- #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; + }; + +-&random { +- status = "okay"; +-}; +- + &leds { + act_led: act { + label = "led0"; +diff --git a/arch/arm/boot/dts/bcm2710.dtsi b/arch/arm/boot/dts/bcm2710.dtsi +index 223bd9627b3dcaac5458909dc59c877eed751ce4..491594c918cf5da94fbb19a606edb0dd9a28c3a9 100644 +--- a/arch/arm/boot/dts/bcm2710.dtsi ++++ b/arch/arm/boot/dts/bcm2710.dtsi +@@ -1,14 +1,11 @@ +-#include "bcm2708_common.dtsi" ++#include "bcm283x.dtsi" ++#include "bcm270x.dtsi" ++#include "bcm2708-rpi.dtsi" + / { - __overrides__ { - uart0 = <&uart0>,"status"; -- uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; - uart1 = <&uart1>,"status"; - i2s = <&i2s>,"status"; - spi = <&spi0>,"status"; - -From a2ca7729f8ab007ef6092248dd2ee1d4aab57e14 Mon Sep 17 00:00:00 2001 -From: DigitalDreamtime -Date: Tue, 16 Aug 2016 20:09:33 +0100 -Subject: [PATCH 132/160] CM3: ARM: bcm2708: remove clk_core as it is no longer - used - -Remove clk_core from device tree as it is no longer used. -Any "modification" to the core_clock in the bootloader is now -automatically detected via the cnew clockmgr. - -Signed-off-by: DigitalDreamtime ---- - arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -index f637da1d3b85dfc79e88b4bf0b3ec12417ba2c21..a5d57893d5799e57ffe9b8efe553a03ec4bde007 100644 ---- a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -+++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -@@ -158,7 +158,6 @@ - i2c0_baudrate = <&i2c0>,"clock-frequency:0"; - i2c1_baudrate = <&i2c1>,"clock-frequency:0"; - i2c2_baudrate = <&i2c2>,"clock-frequency:0"; -- core_freq = <&clk_core>,"clock-frequency:0"; + compatible = "brcm,bcm2710","brcm,bcm2709"; + model = "BCM2710"; - act_led_gpio = <&act_led>,"gpios:4"; - act_led_activelow = <&act_led>,"gpios:8"; +- chosen { +- /* No padding required - the boot loader can do that. */ +- bootargs = ""; +- }; +- + soc { + ranges = <0x7e000000 0x3f000000 0x01000000>, + <0x40000000 0x40000000 0x00040000>; +@@ -34,19 +31,12 @@ + interrupts = <9>; + }; + +- gpiomem { +- compatible = "brcm,bcm2835-gpiomem"; +- reg = <0x7e200000 0x1000>; +- status = "okay"; +- }; +- + timer { + #ifdef RPI364 + compatible = "arm,armv8-timer", "arm,armv7-timer"; + #else + compatible = "arm,armv7-timer"; + #endif +- clock-frequency = <19200000>; + interrupt-parent = <&local_intc>; + interrupts = <0>, // PHYS_SECURE_PPI + <1>, // PHYS_NONSECURE_PPI +@@ -151,10 +141,6 @@ + #endif + }; + +-&watchdog { +- status = "okay"; +-}; +- + &intc { + compatible = "brcm,bcm2836-armctrl-ic"; + #ifdef RPI364 +@@ -163,3 +149,11 @@ + interrupt-parent = <&local_intc>; + interrupts = <8>; + }; ++ ++#ifdef RPI364 ++&usb { ++ compatible = "brcm,bcm2835-usb"; ++ reg = <0x7e980000 0x10000>; ++ interrupts = <1 9>; ++}; ++#endif -From 7bfcbf2e85e3128a9d715a21a8c54ec3f5d5215c Mon Sep 17 00:00:00 2001 +From b17ce54bf6c1e3dbd977367d8b67407ee6cb10e7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Fri, 7 Oct 2016 16:50:59 +0200 +Subject: [PATCH 118/132] watchdog: bcm2835: Support setting reboot partition +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The Raspberry Pi firmware looks at the RSTS register to know which +partition to boot from. The reboot syscall command +LINUX_REBOOT_CMD_RESTART2 supports passing in a string argument. + +Add support for passing in a partition number 0..63 to boot from. +Partition 63 is a special partiton indicating halt. +If the partition doesn't exist, the firmware falls back to partition 0. + +Signed-off-by: Noralf Trønnes +--- + drivers/watchdog/bcm2835_wdt.c | 61 +++++++++++++++++++++++++----------------- + 1 file changed, 36 insertions(+), 25 deletions(-) + +diff --git a/drivers/watchdog/bcm2835_wdt.c b/drivers/watchdog/bcm2835_wdt.c +index 4dddd8298a227d64862f2e92954a465f2e44b3f6..1f545e024422f59280932713e6a1b05150b39b22 100644 +--- a/drivers/watchdog/bcm2835_wdt.c ++++ b/drivers/watchdog/bcm2835_wdt.c +@@ -35,13 +35,7 @@ + #define PM_RSTC_WRCFG_SET 0x00000030 + #define PM_RSTC_WRCFG_FULL_RESET 0x00000020 + #define PM_RSTC_RESET 0x00000102 +- +-/* +- * The Raspberry Pi firmware uses the RSTS register to know which partiton +- * to boot from. The partiton value is spread into bits 0, 2, 4, 6, 8, 10. +- * Partiton 63 is a special partition used by the firmware to indicate halt. +- */ +-#define PM_RSTS_RASPBERRYPI_HALT 0x555 ++#define PM_RSTS_PARTITION_CLR 0xfffffaaa + + #define SECS_TO_WDOG_TICKS(x) ((x) << 16) + #define WDOG_TICKS_TO_SECS(x) ((x) >> 16) +@@ -111,15 +105,28 @@ static struct watchdog_device bcm2835_wdt_wdd = { + .timeout = WDOG_TICKS_TO_SECS(PM_WDOG_TIME_SET), + }; + +-static int +-bcm2835_restart(struct notifier_block *this, unsigned long mode, void *cmd) ++/* ++ * The Raspberry Pi firmware uses the RSTS register to know which partiton ++ * to boot from. The partiton value is spread into bits 0, 2, 4, 6, 8, 10. ++ * Partiton 63 is a special partition used by the firmware to indicate halt. ++ */ ++ ++static void bcm2835_restart(struct bcm2835_wdt *wdt, u8 partition) + { +- struct bcm2835_wdt *wdt = container_of(this, struct bcm2835_wdt, +- restart_handler); +- u32 val; ++ u32 val, rsts; ++ ++ rsts = (partition & BIT(0)) | ((partition & BIT(1)) << 1) | ++ ((partition & BIT(2)) << 2) | ((partition & BIT(3)) << 3) | ++ ((partition & BIT(4)) << 4) | ((partition & BIT(5)) << 5); ++ ++ val = readl_relaxed(wdt->base + PM_RSTS); ++ val &= PM_RSTS_PARTITION_CLR; ++ val |= PM_PASSWORD | rsts; ++ writel_relaxed(val, wdt->base + PM_RSTS); + + /* use a timeout of 10 ticks (~150us) */ + writel_relaxed(10 | PM_PASSWORD, wdt->base + PM_WDOG); ++ + val = readl_relaxed(wdt->base + PM_RSTC); + val &= PM_RSTC_WRCFG_CLR; + val |= PM_PASSWORD | PM_RSTC_WRCFG_FULL_RESET; +@@ -127,6 +134,20 @@ bcm2835_restart(struct notifier_block *this, unsigned long mode, void *cmd) + + /* No sleeping, possibly atomic. */ + mdelay(1); ++} ++ ++static int bcm2835_restart_notifier_call(struct notifier_block *this, ++ unsigned long mode, void *cmd) ++{ ++ struct bcm2835_wdt *wdt = container_of(this, struct bcm2835_wdt, ++ restart_handler); ++ unsigned long long val; ++ u8 partition = 0; ++ ++ if (cmd && !kstrtoull(cmd, 0, &val) && val <= 63) ++ partition = val; ++ ++ bcm2835_restart(wdt, partition); + + return 0; + } +@@ -142,19 +163,9 @@ static void bcm2835_power_off(void) + of_find_compatible_node(NULL, NULL, "brcm,bcm2835-pm-wdt"); + struct platform_device *pdev = of_find_device_by_node(np); + struct bcm2835_wdt *wdt = platform_get_drvdata(pdev); +- u32 val; +- +- /* +- * We set the watchdog hard reset bit here to distinguish this reset +- * from the normal (full) reset. bootcode.bin will not reboot after a +- * hard reset. +- */ +- val = readl_relaxed(wdt->base + PM_RSTS); +- val |= PM_PASSWORD | PM_RSTS_RASPBERRYPI_HALT; +- writel_relaxed(val, wdt->base + PM_RSTS); + +- /* Continue with normal reset mechanism */ +- bcm2835_restart(&wdt->restart_handler, REBOOT_HARD, NULL); ++ /* Partition 63 tells the firmware that this is a halt */ ++ bcm2835_restart(wdt, 63); + } + + static int bcm2835_wdt_probe(struct platform_device *pdev) +@@ -188,7 +199,7 @@ static int bcm2835_wdt_probe(struct platform_device *pdev) + return err; + } + +- wdt->restart_handler.notifier_call = bcm2835_restart; ++ wdt->restart_handler.notifier_call = bcm2835_restart_notifier_call; + wdt->restart_handler.priority = 128; + register_restart_handler(&wdt->restart_handler); + if (pm_power_off == NULL) + +From 87ec199b9d7b0c2c4201b6743643f59fc9d948d3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Fri, 7 Oct 2016 17:07:46 +0200 +Subject: [PATCH 119/132] bcm270x: Use watchdog for reboot/poweroff +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The watchdog driver already has support for reboot/poweroff. +Make use of this and remove the code from the platform files. + +Signed-off-by: Noralf Trønnes +--- + arch/arm/configs/bcm2709_defconfig | 2 +- + arch/arm/configs/bcmrpi_defconfig | 2 +- + arch/arm/mach-bcm2708/bcm2708.c | 70 ------------------------------------- + arch/arm/mach-bcm2709/bcm2709.c | 71 -------------------------------------- + 4 files changed, 2 insertions(+), 143 deletions(-) + +diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig +index dfbb3406e38b50bf38db84071f82c3a556da8057..aa708638cc6f3bceb189c2deef7307252901291f 100644 +--- a/arch/arm/configs/bcm2709_defconfig ++++ b/arch/arm/configs/bcm2709_defconfig +@@ -650,7 +650,7 @@ CONFIG_SENSORS_INA2XX=m + CONFIG_THERMAL=y + CONFIG_THERMAL_BCM2835=y + CONFIG_WATCHDOG=y +-CONFIG_BCM2835_WDT=m ++CONFIG_BCM2835_WDT=y + CONFIG_UCB1400_CORE=m + CONFIG_MFD_STMPE=y + CONFIG_STMPE_SPI=y +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index cfe21355f7d95326b292be1b018b988fa3ffe865..952104ab6c4cd0e9d8f7bd5f2fba7a72da75424e 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -641,7 +641,7 @@ CONFIG_SENSORS_INA2XX=m + CONFIG_THERMAL=y + CONFIG_THERMAL_BCM2835=y + CONFIG_WATCHDOG=y +-CONFIG_BCM2835_WDT=m ++CONFIG_BCM2835_WDT=y + CONFIG_UCB1400_CORE=m + CONFIG_MFD_STMPE=y + CONFIG_STMPE_SPI=y +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index 280628ba8907d2a4323fc86dfc6db7fc684aeabc..a8e2a5b114b2f12f18378ce5fff2a88419b6f52f 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -44,7 +44,6 @@ + + /* command line parameters */ + static unsigned boardrev, serial; +-static unsigned reboot_part = 0; + + static struct map_desc bcm2708_io_desc[] __initdata = { + { +@@ -99,71 +98,6 @@ void __init bcm2708_map_io(void) + iotable_init(bcm2708_io_desc, ARRAY_SIZE(bcm2708_io_desc)); + } + +-int calc_rsts(int partition) +-{ +- return PM_PASSWORD | +- ((partition & (1 << 0)) << 0) | +- ((partition & (1 << 1)) << 1) | +- ((partition & (1 << 2)) << 2) | +- ((partition & (1 << 3)) << 3) | +- ((partition & (1 << 4)) << 4) | +- ((partition & (1 << 5)) << 5); +-} +- +-static void bcm2708_restart(enum reboot_mode mode, const char *cmd) +-{ +- extern char bcm2708_reboot_mode; +- uint32_t pm_rstc, pm_wdog; +- uint32_t timeout = 10; +- uint32_t pm_rsts = 0; +- +- if(bcm2708_reboot_mode == 'q') +- { +- // NOOBS < 1.3 booting with reboot=q +- pm_rsts = readl(__io_address(PM_RSTS)); +- pm_rsts = PM_PASSWORD | pm_rsts | PM_RSTS_HADWRQ_SET; +- } +- else if(bcm2708_reboot_mode == 'p') +- { +- // NOOBS < 1.3 halting +- pm_rsts = readl(__io_address(PM_RSTS)); +- pm_rsts = PM_PASSWORD | pm_rsts | PM_RSTS_HADWRH_SET; +- } +- else +- { +- pm_rsts = calc_rsts(reboot_part); +- } +- +- writel(pm_rsts, __io_address(PM_RSTS)); +- +- /* Setup watchdog for reset */ +- pm_rstc = readl(__io_address(PM_RSTC)); +- +- pm_wdog = PM_PASSWORD | (timeout & PM_WDOG_TIME_SET); // watchdog timer = timer clock / 16; need password (31:16) + value (11:0) +- pm_rstc = PM_PASSWORD | (pm_rstc & PM_RSTC_WRCFG_CLR) | PM_RSTC_WRCFG_FULL_RESET; +- +- writel(pm_wdog, __io_address(PM_WDOG)); +- writel(pm_rstc, __io_address(PM_RSTC)); +-} +- +-/* We can't really power off, but if we do the normal reset scheme, and indicate to bootcode.bin not to reboot, then most of the chip will be powered off */ +-static void bcm2708_power_off(void) +-{ +- extern char bcm2708_reboot_mode; +- if(bcm2708_reboot_mode == 'q') +- { +- // NOOBS < v1.3 +- bcm2708_restart('p', ""); +- } +- else +- { +- /* partition 63 is special code for HALT the bootloader knows not to boot*/ +- reboot_part = 63; +- /* continue with normal reset mechanism */ +- bcm2708_restart(0, ""); +- } +-} +- + static void __init bcm2708_init_uart1(void) + { + struct device_node *np; +@@ -181,8 +115,6 @@ void __init bcm2708_init(void) + + vc_cma_early_init(); + +- pm_power_off = bcm2708_power_off; +- + ret = of_platform_populate(NULL, of_default_bus_match_table, NULL, + NULL); + if (ret) { +@@ -222,10 +154,8 @@ MACHINE_START(BCM2708, "BCM2708") + .init_machine = bcm2708_init, + .init_early = bcm2708_init_early, + .reserve = board_reserve, +- .restart = bcm2708_restart, + .dt_compat = bcm2708_compat, + MACHINE_END + + module_param(boardrev, uint, 0644); + module_param(serial, uint, 0644); +-module_param(reboot_part, uint, 0644); +diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c +index d4c9d57d78a964fbbf799b534471462d3c3b88f1..ed5c5414f7a3ad7284cda881e9e550777cd29282 100644 +--- a/arch/arm/mach-bcm2709/bcm2709.c ++++ b/arch/arm/mach-bcm2709/bcm2709.c +@@ -51,7 +51,6 @@ + + /* command line parameters */ + static unsigned boardrev, serial; +-static unsigned reboot_part = 0; + + static struct map_desc bcm2709_io_desc[] __initdata = { + { +@@ -111,71 +110,6 @@ void __init bcm2709_map_io(void) + iotable_init(bcm2709_io_desc, ARRAY_SIZE(bcm2709_io_desc)); + } + +-int calc_rsts(int partition) +-{ +- return PM_PASSWORD | +- ((partition & (1 << 0)) << 0) | +- ((partition & (1 << 1)) << 1) | +- ((partition & (1 << 2)) << 2) | +- ((partition & (1 << 3)) << 3) | +- ((partition & (1 << 4)) << 4) | +- ((partition & (1 << 5)) << 5); +-} +- +-static void bcm2709_restart(enum reboot_mode mode, const char *cmd) +-{ +- extern char bcm2708_reboot_mode; +- uint32_t pm_rstc, pm_wdog; +- uint32_t timeout = 10; +- uint32_t pm_rsts = 0; +- +- if(bcm2708_reboot_mode == 'q') +- { +- // NOOBS < 1.3 booting with reboot=q +- pm_rsts = readl(__io_address(PM_RSTS)); +- pm_rsts = PM_PASSWORD | pm_rsts | PM_RSTS_HADWRQ_SET; +- } +- else if(bcm2708_reboot_mode == 'p') +- { +- // NOOBS < 1.3 halting +- pm_rsts = readl(__io_address(PM_RSTS)); +- pm_rsts = PM_PASSWORD | pm_rsts | PM_RSTS_HADWRH_SET; +- } +- else +- { +- pm_rsts = calc_rsts(reboot_part); +- } +- +- writel(pm_rsts, __io_address(PM_RSTS)); +- +- /* Setup watchdog for reset */ +- pm_rstc = readl(__io_address(PM_RSTC)); +- +- pm_wdog = PM_PASSWORD | (timeout & PM_WDOG_TIME_SET); // watchdog timer = timer clock / 16; need password (31:16) + value (11:0) +- pm_rstc = PM_PASSWORD | (pm_rstc & PM_RSTC_WRCFG_CLR) | PM_RSTC_WRCFG_FULL_RESET; +- +- writel(pm_wdog, __io_address(PM_WDOG)); +- writel(pm_rstc, __io_address(PM_RSTC)); +-} +- +-/* We can't really power off, but if we do the normal reset scheme, and indicate to bootcode.bin not to reboot, then most of the chip will be powered off */ +-static void bcm2709_power_off(void) +-{ +- extern char bcm2708_reboot_mode; +- if(bcm2708_reboot_mode == 'q') +- { +- // NOOBS < v1.3 +- bcm2709_restart('p', ""); +- } +- else +- { +- /* partition 63 is special code for HALT the bootloader knows not to boot*/ +- reboot_part = 63; +- /* continue with normal reset mechanism */ +- bcm2709_restart(0, ""); +- } +-} +- + static void __init bcm2709_init_uart1(void) + { + struct device_node *np; +@@ -193,8 +127,6 @@ void __init bcm2709_init(void) + + vc_cma_early_init(); + +- pm_power_off = bcm2709_power_off; +- + ret = of_platform_populate(NULL, of_default_bus_match_table, NULL, + NULL); + if (ret) { +@@ -235,7 +167,6 @@ MACHINE_START(BCM2709, "BCM2709") + .init_machine = bcm2709_init, + .init_early = bcm2709_init_early, + .reserve = board_reserve, +- .restart = bcm2709_restart, + .dt_compat = bcm2709_compat, + MACHINE_END + +@@ -245,10 +176,8 @@ MACHINE_START(BCM2708, "BCM2709") + .init_machine = bcm2709_init, + .init_early = bcm2709_init_early, + .reserve = board_reserve, +- .restart = bcm2709_restart, + .dt_compat = bcm2709_compat, + MACHINE_END + + module_param(boardrev, uint, 0644); + module_param(serial, uint, 0644); +-module_param(reboot_part, uint, 0644); + +From 49f59e094fb5966061ba492d60dcf8a90a83eb0e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Mon, 10 Oct 2016 17:35:40 +0200 +Subject: [PATCH 120/132] bcm270x: Remove dead files +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +include/mach/vmalloc.h has not been used since 2011. +include/mach/entry-macro.S is leftover from the move to the mainline +irq driver. + +Signed-off-by: Noralf Trønnes +--- + arch/arm/mach-bcm2708/include/mach/vmalloc.h | 20 ---- + arch/arm/mach-bcm2709/include/mach/entry-macro.S | 123 ----------------------- + arch/arm/mach-bcm2709/include/mach/vmalloc.h | 20 ---- + 3 files changed, 163 deletions(-) + delete mode 100644 arch/arm/mach-bcm2708/include/mach/vmalloc.h + delete mode 100644 arch/arm/mach-bcm2709/include/mach/entry-macro.S + delete mode 100644 arch/arm/mach-bcm2709/include/mach/vmalloc.h + +diff --git a/arch/arm/mach-bcm2708/include/mach/vmalloc.h b/arch/arm/mach-bcm2708/include/mach/vmalloc.h +deleted file mode 100644 +index 502c6178101be60b10c9eb31afec938b5534c33f..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2708/include/mach/vmalloc.h ++++ /dev/null +@@ -1,20 +0,0 @@ +-/* +- * arch/arm/mach-bcm2708/include/mach/vmalloc.h +- * +- * Copyright (C) 2010 Broadcom +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +-#define VMALLOC_END (0xe8000000) +diff --git a/arch/arm/mach-bcm2709/include/mach/entry-macro.S b/arch/arm/mach-bcm2709/include/mach/entry-macro.S +deleted file mode 100644 +index d08591b63c1a1710c40350d343d3eddc97ae74c1..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2709/include/mach/entry-macro.S ++++ /dev/null +@@ -1,123 +0,0 @@ +-/* +- * arch/arm/mach-bcm2708/include/mach/entry-macro.S +- * +- * Low-level IRQ helper macros for BCM2708 platforms +- * +- * Copyright (C) 2010 Broadcom +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +-#include +-#include +- +- .macro disable_fiq +- .endm +- +- .macro get_irqnr_preamble, base, tmp +- ldr \base, =IO_ADDRESS(ARMCTRL_IC_BASE) +- .endm +- +- .macro arch_ret_to_user, tmp1, tmp2 +- .endm +- +- .macro get_irqnr_and_base, irqnr, irqstat, base, tmp +- /* get core number */ +- mrc p15, 0, \tmp, c0, c0, 5 +- ubfx \tmp, \tmp, #0, #2 +- +- /* get core's local interrupt controller */ +- ldr \irqstat, = __io_address(ARM_LOCAL_IRQ_PENDING0) @ local interrupt source +- add \irqstat, \irqstat, \tmp, lsl #2 +- ldr \tmp, [\irqstat] +- /* ignore gpu interrupt */ +- bic \tmp, #0x100 +- /* ignore mailbox interrupts */ +- bics \tmp, #0xf0 +- beq 1005f +- +- @ For non-zero x, LSB(x) = 31 - CLZ(x^(x-1)) +- @ N.B. CLZ is an ARM5 instruction. +- mov \irqnr, #(ARM_IRQ_LOCAL_BASE + 31) +- sub \irqstat, \tmp, #1 +- eor \irqstat, \irqstat, \tmp +- clz \tmp, \irqstat +- sub \irqnr, \tmp +- b 1020f +-1005: +- /* get core number */ +- mrc p15, 0, \tmp, c0, c0, 5 +- ubfx \tmp, \tmp, #0, #2 +- +- cmp \tmp, #1 +- beq 1020f +- cmp \tmp, #2 +- beq 1020f +- cmp \tmp, #3 +- beq 1020f +- +- /* get masked status */ +- ldr \irqstat, [\base, #(ARM_IRQ_PEND0 - ARMCTRL_IC_BASE)] +- mov \irqnr, #(ARM_IRQ0_BASE + 31) +- and \tmp, \irqstat, #0x300 @ save bits 8 and 9 +- /* clear bits 8 and 9, and test */ +- bics \irqstat, \irqstat, #0x300 +- bne 1010f +- +- tst \tmp, #0x100 +- ldrne \irqstat, [\base, #(ARM_IRQ_PEND1 - ARMCTRL_IC_BASE)] +- movne \irqnr, #(ARM_IRQ1_BASE + 31) +- @ Mask out the interrupts also present in PEND0 - see SW-5809 +- bicne \irqstat, #((1<<7) | (1<<9) | (1<<10)) +- bicne \irqstat, #((1<<18) | (1<<19)) +- bne 1010f +- +- tst \tmp, #0x200 +- ldrne \irqstat, [\base, #(ARM_IRQ_PEND2 - ARMCTRL_IC_BASE)] +- movne \irqnr, #(ARM_IRQ2_BASE + 31) +- @ Mask out the interrupts also present in PEND0 - see SW-5809 +- bicne \irqstat, #((1<<21) | (1<<22) | (1<<23) | (1<<24) | (1<<25)) +- bicne \irqstat, #((1<<30)) +- beq 1020f +- +-1010: +- @ For non-zero x, LSB(x) = 31 - CLZ(x^(x-1)) +- @ N.B. CLZ is an ARM5 instruction. +- sub \tmp, \irqstat, #1 +- eor \irqstat, \irqstat, \tmp +- clz \tmp, \irqstat +- sub \irqnr, \tmp +- +-1020: @ EQ will be set if no irqs pending +- +- .endm +- +- .macro test_for_ipi, irqnr, irqstat, base, tmp +- /* get core number */ +- mrc p15, 0, \tmp, c0, c0, 5 +- ubfx \tmp, \tmp, #0, #2 +- /* get core's mailbox interrupt control */ +- ldr \irqstat, = __io_address(ARM_LOCAL_MAILBOX0_CLR0) @ mbox_clr +- add \irqstat, \irqstat, \tmp, lsl #4 +- ldr \tmp, [\irqstat] +- cmp \tmp, #0 +- beq 1030f +- clz \tmp, \tmp +- rsb \irqnr, \tmp, #31 +- mov \tmp, #1 +- lsl \tmp, \irqnr +- str \tmp, [\irqstat] @ clear interrupt source +- dsb +-1030: @ EQ will be set if no irqs pending +- .endm +diff --git a/arch/arm/mach-bcm2709/include/mach/vmalloc.h b/arch/arm/mach-bcm2709/include/mach/vmalloc.h +deleted file mode 100644 +index 6aa68260dd866c83527dffece8de483913231fb3..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2709/include/mach/vmalloc.h ++++ /dev/null +@@ -1,20 +0,0 @@ +-/* +- * arch/arm/mach-bcm2708/include/mach/vmalloc.h +- * +- * Copyright (C) 2010 Broadcom +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +-#define VMALLOC_END (0xff000000) + +From 657a2de2fd2927b834e8f109042dc37bf3c9ce25 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Mon, 10 Oct 2016 17:37:43 +0200 +Subject: [PATCH 121/132] bcm270x: Drop bcm2835-aux-uart hack +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The gated bcm2835-aux clock is now used to enable uart1 so drop this hack. + +Signed-off-by: Noralf Trønnes +--- + arch/arm/mach-bcm2708/bcm2708.c | 15 +-------------- + arch/arm/mach-bcm2709/bcm2709.c | 15 +-------------- + 2 files changed, 2 insertions(+), 28 deletions(-) + +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index a8e2a5b114b2f12f18378ce5fff2a88419b6f52f..8d1e56db3a89295af18dff99f1ee572f56487e72 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -98,18 +98,7 @@ void __init bcm2708_map_io(void) + iotable_init(bcm2708_io_desc, ARRAY_SIZE(bcm2708_io_desc)); + } + +-static void __init bcm2708_init_uart1(void) +-{ +- struct device_node *np; +- +- np = of_find_compatible_node(NULL, NULL, "brcm,bcm2835-aux-uart"); +- if (of_device_is_available(np)) { +- pr_info("bcm2708: Mini UART enabled\n"); +- writel(1, __io_address(UART1_BASE + 0x4)); +- } +-} +- +-void __init bcm2708_init(void) ++static void __init bcm2708_init(void) + { + int ret; + +@@ -122,8 +111,6 @@ void __init bcm2708_init(void) + BUG(); + } + +- bcm2708_init_uart1(); +- + system_rev = boardrev; + system_serial_low = serial; + } +diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c +index ed5c5414f7a3ad7284cda881e9e550777cd29282..9a1ad48d13172856e3ec748db015cb95cd110b76 100644 +--- a/arch/arm/mach-bcm2709/bcm2709.c ++++ b/arch/arm/mach-bcm2709/bcm2709.c +@@ -110,18 +110,7 @@ void __init bcm2709_map_io(void) + iotable_init(bcm2709_io_desc, ARRAY_SIZE(bcm2709_io_desc)); + } + +-static void __init bcm2709_init_uart1(void) +-{ +- struct device_node *np; +- +- np = of_find_compatible_node(NULL, NULL, "brcm,bcm2835-aux-uart"); +- if (of_device_is_available(np)) { +- pr_info("bcm2709: Mini UART enabled\n"); +- writel(1, __io_address(UART1_BASE + 0x4)); +- } +-} +- +-void __init bcm2709_init(void) ++static void __init bcm2709_init(void) + { + int ret; + +@@ -134,8 +123,6 @@ void __init bcm2709_init(void) + BUG(); + } + +- bcm2709_init_uart1(); +- + system_rev = boardrev; + system_serial_low = serial; + } + +From cf2be857b843343a3cf3a7104fed5228b5e1bbe3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Mon, 10 Oct 2016 17:39:30 +0200 +Subject: [PATCH 122/132] Revert "bcm2835: Add support for uart1" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This reverts commit 86eba5c1a1089dc0bad01735f559e37d08525527. + +The gated bcm2835-aux clock is now used to enable uart1 so drop this hack. + +Signed-off-by: Noralf Trønnes +--- + arch/arm/mach-bcm/board_bcm2835.c | 25 ------------------------- + 1 file changed, 25 deletions(-) + +diff --git a/arch/arm/mach-bcm/board_bcm2835.c b/arch/arm/mach-bcm/board_bcm2835.c +index 0ef5cd3d1d6ec420360294acc98d40d698d38d8a..8f152266ba9b470df2eaaed9ebcf158ed2079834 100644 +--- a/arch/arm/mach-bcm/board_bcm2835.c ++++ b/arch/arm/mach-bcm/board_bcm2835.c +@@ -21,29 +21,6 @@ + #include + #include + +-/* Use this hack until a proper solution is agreed upon */ +-static void __init bcm2835_init_uart1(void) +-{ +- struct device_node *np; +- +- np = of_find_compatible_node(NULL, NULL, "brcm,bcm2835-aux-uart"); +- if (of_device_is_available(np)) { +- np = of_find_compatible_node(NULL, NULL, +- "bcrm,bcm2835-aux-enable"); +- if (np) { +- void __iomem *base = of_iomap(np, 0); +- +- if (!base) { +- pr_err("bcm2835: Failed enabling Mini UART\n"); +- return; +- } +- +- writel(1, base); +- pr_info("bcm2835: Mini UART enabled\n"); +- } +- } +-} +- + static void __init bcm2835_init(void) + { + struct device_node *np = of_find_node_by_path("/system"); +@@ -56,8 +33,6 @@ static void __init bcm2835_init(void) + system_rev = val; + if (!of_property_read_u64(np, "linux,serial", &val64)) + system_serial_low = val64; +- +- bcm2835_init_uart1(); + } + + static const char * const bcm2835_compat[] = { + +From ca77269b8c376a34e42ab6c6c7e4d76866c466e6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Mon, 10 Oct 2016 17:41:26 +0200 +Subject: [PATCH 123/132] bcm270x: Remove unnecessary of_platform_populate +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Since 4.8 of_platform_default_populate_init() does the same and it is +called at arch_initcall_sync. + +Signed-off-by: Noralf Trønnes +--- + arch/arm/mach-bcm2708/bcm2708.c | 10 ---------- + arch/arm/mach-bcm2709/bcm2709.c | 10 ---------- + 2 files changed, 20 deletions(-) + +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index 8d1e56db3a89295af18dff99f1ee572f56487e72..0db44e566062751510494e2fe19926122aad7d5a 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -21,7 +21,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -100,17 +99,8 @@ void __init bcm2708_map_io(void) + + static void __init bcm2708_init(void) + { +- int ret; +- + vc_cma_early_init(); + +- ret = of_platform_populate(NULL, of_default_bus_match_table, NULL, +- NULL); +- if (ret) { +- pr_err("of_platform_populate failed: %d\n", ret); +- BUG(); +- } +- + system_rev = boardrev; + system_serial_low = serial; + } +diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c +index 9a1ad48d13172856e3ec748db015cb95cd110b76..d2762f558f644ac87c56ba9402a638a3c7a26397 100644 +--- a/arch/arm/mach-bcm2709/bcm2709.c ++++ b/arch/arm/mach-bcm2709/bcm2709.c +@@ -25,7 +25,6 @@ + #include + #include + #include +-#include + + #include + #include +@@ -112,17 +111,8 @@ void __init bcm2709_map_io(void) + + static void __init bcm2709_init(void) + { +- int ret; +- + vc_cma_early_init(); + +- ret = of_platform_populate(NULL, of_default_bus_match_table, NULL, +- NULL); +- if (ret) { +- pr_err("of_platform_populate failed: %d\n", ret); +- BUG(); +- } +- + system_rev = boardrev; + system_serial_low = serial; + } + +From b4b850195559488e7c7e681cd295ab6b9c330821 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Mon, 10 Oct 2016 17:46:27 +0200 +Subject: [PATCH 124/132] bcm270x: Remove 4MB dma coherent pool +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Drop the call to init_dma_coherent_pool_size(). The default 256kB is +enough since vchiq dropped that atomic allocation some time back. + +Signed-off-by: Noralf Trønnes +--- + arch/arm/mach-bcm2708/bcm2708.c | 11 ----------- + arch/arm/mach-bcm2709/bcm2709.c | 12 ------------ + 2 files changed, 23 deletions(-) + +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index 0db44e566062751510494e2fe19926122aad7d5a..0dc1efd48f385eea9f712fc8e18ffc92966271f2 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -105,16 +105,6 @@ static void __init bcm2708_init(void) + system_serial_low = serial; + } + +-void __init bcm2708_init_early(void) +-{ +- /* +- * Some devices allocate their coherent buffers from atomic +- * context. Increase size of atomic coherent pool to make sure such +- * the allocations won't fail. +- */ +- init_dma_coherent_pool_size(SZ_4M); +-} +- + static void __init board_reserve(void) + { + vc_cma_reserve(); +@@ -129,7 +119,6 @@ MACHINE_START(BCM2708, "BCM2708") + /* Maintainer: Broadcom Europe Ltd. */ + .map_io = bcm2708_map_io, + .init_machine = bcm2708_init, +- .init_early = bcm2708_init_early, + .reserve = board_reserve, + .dt_compat = bcm2708_compat, + MACHINE_END +diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c +index d2762f558f644ac87c56ba9402a638a3c7a26397..d0e43619669e851350c5d9d7bb7e9dd19ea6ff1b 100644 +--- a/arch/arm/mach-bcm2709/bcm2709.c ++++ b/arch/arm/mach-bcm2709/bcm2709.c +@@ -117,16 +117,6 @@ static void __init bcm2709_init(void) + system_serial_low = serial; + } + +-void __init bcm2709_init_early(void) +-{ +- /* +- * Some devices allocate their coherent buffers from atomic +- * context. Increase size of atomic coherent pool to make sure such +- * the allocations won't fail. +- */ +- init_dma_coherent_pool_size(SZ_4M); +-} +- + static void __init board_reserve(void) + { + vc_cma_reserve(); +@@ -142,7 +132,6 @@ MACHINE_START(BCM2709, "BCM2709") + /* Maintainer: Broadcom Europe Ltd. */ + .map_io = bcm2709_map_io, + .init_machine = bcm2709_init, +- .init_early = bcm2709_init_early, + .reserve = board_reserve, + .dt_compat = bcm2709_compat, + MACHINE_END +@@ -151,7 +140,6 @@ MACHINE_START(BCM2708, "BCM2709") + /* Maintainer: Broadcom Europe Ltd. */ + .map_io = bcm2709_map_io, + .init_machine = bcm2709_init, +- .init_early = bcm2709_init_early, + .reserve = board_reserve, + .dt_compat = bcm2709_compat, + MACHINE_END + +From 490f6e2e5fc456799e3c5fff7b483dc68eba73b1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Mon, 10 Oct 2016 19:26:42 +0200 +Subject: [PATCH 125/132] bcm270x: Drop map_io device mapping +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +All drivers map their own io now so it's not necessary to do this +mapping anymore. The mapping for the uart debug console is handled by +debug_ll_io_init() if necessary. + +Remove local uart debug code and rely on mainline. +Use these kconfig options to enable: +CONFIG_DEBUG_BCM2835 +CONFIG_DEBUG_BCM2836 + +Signed-off-by: Noralf Trønnes +--- + arch/arm/Kconfig.debug | 18 +-- + arch/arm/mach-bcm2708/bcm2708.c | 75 +-------- + arch/arm/mach-bcm2708/include/mach/debug-macro.S | 22 --- + arch/arm/mach-bcm2708/include/mach/platform.h | 114 -------------- + arch/arm/mach-bcm2708/include/mach/system.h | 37 ----- + arch/arm/mach-bcm2708/include/mach/uncompress.h | 84 ---------- + arch/arm/mach-bcm2709/bcm2709.c | 86 +--------- + arch/arm/mach-bcm2709/include/mach/debug-macro.S | 22 --- + arch/arm/mach-bcm2709/include/mach/platform.h | 190 ----------------------- + arch/arm/mach-bcm2709/include/mach/system.h | 37 ----- + arch/arm/mach-bcm2709/include/mach/uncompress.h | 84 ---------- + 11 files changed, 11 insertions(+), 758 deletions(-) + delete mode 100644 arch/arm/mach-bcm2708/include/mach/debug-macro.S + delete mode 100644 arch/arm/mach-bcm2708/include/mach/platform.h + delete mode 100644 arch/arm/mach-bcm2708/include/mach/system.h + delete mode 100644 arch/arm/mach-bcm2708/include/mach/uncompress.h + delete mode 100644 arch/arm/mach-bcm2709/include/mach/debug-macro.S + delete mode 100644 arch/arm/mach-bcm2709/include/mach/platform.h + delete mode 100644 arch/arm/mach-bcm2709/include/mach/system.h + delete mode 100644 arch/arm/mach-bcm2709/include/mach/uncompress.h + +diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug +index f47f4e70395635fafeacd680c4392cc51660ea8e..11aa81fcaaa8e476ded9b9f41e30ddefa11c1cae 100644 +--- a/arch/arm/Kconfig.debug ++++ b/arch/arm/Kconfig.debug +@@ -147,12 +147,12 @@ choice + + config DEBUG_BCM2835 + bool "Kernel low-level debugging on BCM2835 PL011 UART" +- depends on ARCH_BCM2835 && ARCH_MULTI_V6 ++ depends on (ARCH_BCM2835 && ARCH_MULTI_V6) || ARCH_BCM2708 + select DEBUG_UART_PL01X + + config DEBUG_BCM2836 + bool "Kernel low-level debugging on BCM2836 PL011 UART" +- depends on ARCH_BCM2835 && ARCH_MULTI_V7 ++ depends on (ARCH_BCM2835 && ARCH_MULTI_V7) || ARCH_BCM2709 + select DEBUG_UART_PL01X + + config DEBUG_BCM_5301X +@@ -1312,14 +1312,6 @@ choice + options; the platform specific options are deprecated + and will be soon removed. + +- config DEBUG_BCM2708_UART0 +- bool "Broadcom BCM270X UART0 (PL011)" +- depends on ARCH_BCM2708 || ARCH_BCM2709 +- help +- Say Y here if you want the debug print routines to direct +- their output to UART 0. The port must have been initialised +- by the boot-loader before use. +- + endchoice + + config DEBUG_AT91_UART +@@ -1703,7 +1695,8 @@ config DEBUG_UART_8250_FLOW_CONTROL + + config DEBUG_UNCOMPRESS + bool +- depends on ARCH_MULTIPLATFORM || PLAT_SAMSUNG || ARM_SINGLE_ARMV7M ++ depends on ARCH_MULTIPLATFORM || PLAT_SAMSUNG || ARM_SINGLE_ARMV7M || \ ++ ARCH_BCM2708 || ARCH_BCM2709 + default y if DEBUG_LL && !DEBUG_OMAP2PLUS_UART && \ + (!DEBUG_TEGRA_UART || !ZBOOT_ROM) + help +@@ -1720,7 +1713,8 @@ config DEBUG_UNCOMPRESS + config UNCOMPRESS_INCLUDE + string + default "debug/uncompress.h" if ARCH_MULTIPLATFORM || ARCH_MSM || \ +- PLAT_SAMSUNG || ARM_SINGLE_ARMV7M ++ PLAT_SAMSUNG || ARM_SINGLE_ARMV7M || \ ++ ARCH_BCM2708 || ARCH_BCM2709 + default "mach/uncompress.h" + + config EARLY_PRINTK +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index 0dc1efd48f385eea9f712fc8e18ffc92966271f2..47d5f363334ea317f09a6d6b7c8f3f2f797a2be3 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -19,84 +19,16 @@ + */ + + #include +-#include + #include +-#include +-#include +-#include +-#include +- +-#include +- + #include + +-/* Effectively we have an IOMMU (ARM<->VideoCore map) that is set up to +- * give us IO access only to 64Mbytes of physical memory (26 bits). We could +- * represent this window by setting our dmamasks to 26 bits but, in fact +- * we're not going to use addresses outside this range (they're not in real +- * memory) so we don't bother. +- * +- * In the future we might include code to use this IOMMU to remap other +- * physical addresses onto VideoCore memory then the use of 32-bits would be +- * more legitimate. +- */ ++#include ++#include ++#include + + /* command line parameters */ + static unsigned boardrev, serial; + +-static struct map_desc bcm2708_io_desc[] __initdata = { +- { +- .virtual = IO_ADDRESS(ARMCTRL_BASE), +- .pfn = __phys_to_pfn(ARMCTRL_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(UART0_BASE), +- .pfn = __phys_to_pfn(UART0_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(UART1_BASE), +- .pfn = __phys_to_pfn(UART1_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(DMA_BASE), +- .pfn = __phys_to_pfn(DMA_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(MCORE_BASE), +- .pfn = __phys_to_pfn(MCORE_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(ST_BASE), +- .pfn = __phys_to_pfn(ST_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(USB_BASE), +- .pfn = __phys_to_pfn(USB_BASE), +- .length = SZ_128K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(PM_BASE), +- .pfn = __phys_to_pfn(PM_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(GPIO_BASE), +- .pfn = __phys_to_pfn(GPIO_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE} +-}; +- +-void __init bcm2708_map_io(void) +-{ +- iotable_init(bcm2708_io_desc, ARRAY_SIZE(bcm2708_io_desc)); +-} +- + static void __init bcm2708_init(void) + { + vc_cma_early_init(); +@@ -117,7 +49,6 @@ static const char * const bcm2708_compat[] = { + + MACHINE_START(BCM2708, "BCM2708") + /* Maintainer: Broadcom Europe Ltd. */ +- .map_io = bcm2708_map_io, + .init_machine = bcm2708_init, + .reserve = board_reserve, + .dt_compat = bcm2708_compat, +diff --git a/arch/arm/mach-bcm2708/include/mach/debug-macro.S b/arch/arm/mach-bcm2708/include/mach/debug-macro.S +deleted file mode 100644 +index b24304a6755e965b8a28eb048b7f4e2d868820f9..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2708/include/mach/debug-macro.S ++++ /dev/null +@@ -1,22 +0,0 @@ +-/* arch/arm/mach-bcm2708/include/mach/debug-macro.S +- * +- * Debugging macro include header +- * +- * Copyright (C) 2010 Broadcom +- * Copyright (C) 1994-1999 Russell King +- * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License version 2 as +- * published by the Free Software Foundation. +- * +-*/ +- +-#include +- +- .macro addruart, rp, rv, tmp +- ldr \rp, =UART0_BASE +- ldr \rv, =IO_ADDRESS(UART0_BASE) +- .endm +- +-#include +diff --git a/arch/arm/mach-bcm2708/include/mach/platform.h b/arch/arm/mach-bcm2708/include/mach/platform.h +deleted file mode 100644 +index e98ec5acc70ba9eb2bc7ff560ed3c92e21518b73..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2708/include/mach/platform.h ++++ /dev/null +@@ -1,114 +0,0 @@ +-/* +- * arch/arm/mach-bcm2708/include/mach/platform.h +- * +- * Copyright (C) 2010 Broadcom +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +- +-#ifndef _BCM2708_PLATFORM_H +-#define _BCM2708_PLATFORM_H +- +- +-/* macros to get at IO space when running virtually */ +-#define IO_ADDRESS(x) (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000) +- +-#define __io_address(n) IOMEM(IO_ADDRESS(n)) +- +- +-/* +- * SDRAM +- */ +-#define BCM2708_SDRAM_BASE 0x00000000 +- +-/* +- * Logic expansion modules +- * +- */ +- +- +-/* ------------------------------------------------------------------------ +- * BCM2708 ARMCTRL Registers +- * ------------------------------------------------------------------------ +- */ +- +-#define HW_REGISTER_RW(addr) (addr) +-#define HW_REGISTER_RO(addr) (addr) +- +-/* +- * Definitions and addresses for the ARM CONTROL logic +- * This file is manually generated. +- */ +- +-#define BCM2708_PERI_BASE 0x20000000 +-#define IC0_BASE (BCM2708_PERI_BASE + 0x2000) +-#define ST_BASE (BCM2708_PERI_BASE + 0x3000) /* System Timer */ +-#define MPHI_BASE (BCM2708_PERI_BASE + 0x6000) /* Message -based Parallel Host Interface */ +-#define DMA_BASE (BCM2708_PERI_BASE + 0x7000) /* DMA controller */ +-#define ARM_BASE (BCM2708_PERI_BASE + 0xB000) /* BCM2708 ARM control block */ +-#define PM_BASE (BCM2708_PERI_BASE + 0x100000) /* Power Management, Reset controller and Watchdog registers */ +-#define PCM_CLOCK_BASE (BCM2708_PERI_BASE + 0x101098) /* PCM Clock */ +-#define RNG_BASE (BCM2708_PERI_BASE + 0x104000) /* Hardware RNG */ +-#define GPIO_BASE (BCM2708_PERI_BASE + 0x200000) /* GPIO */ +-#define UART0_BASE (BCM2708_PERI_BASE + 0x201000) /* Uart 0 */ +-#define MMCI0_BASE (BCM2708_PERI_BASE + 0x202000) /* MMC interface */ +-#define I2S_BASE (BCM2708_PERI_BASE + 0x203000) /* I2S */ +-#define SPI0_BASE (BCM2708_PERI_BASE + 0x204000) /* SPI0 */ +-#define BSC0_BASE (BCM2708_PERI_BASE + 0x205000) /* BSC0 I2C/TWI */ +-#define UART1_BASE (BCM2708_PERI_BASE + 0x215000) /* Uart 1 */ +-#define EMMC_BASE (BCM2708_PERI_BASE + 0x300000) /* eMMC interface */ +-#define SMI_BASE (BCM2708_PERI_BASE + 0x600000) /* SMI */ +-#define BSC1_BASE (BCM2708_PERI_BASE + 0x804000) /* BSC1 I2C/TWI */ +-#define USB_BASE (BCM2708_PERI_BASE + 0x980000) /* DTC_OTG USB controller */ +-#define MCORE_BASE (BCM2708_PERI_BASE + 0x0000) /* Fake frame buffer device (actually the multicore sync block*/ +- +-#define ARMCTRL_BASE (ARM_BASE + 0x000) +-#define ARMCTRL_IC_BASE (ARM_BASE + 0x200) /* ARM interrupt controller */ +-#define ARMCTRL_TIMER0_1_BASE (ARM_BASE + 0x400) /* Timer 0 and 1 */ +-#define ARMCTRL_0_SBM_BASE (ARM_BASE + 0x800) /* User 0 (ARM)'s Semaphores Doorbells and Mailboxes */ +-#define ARMCTRL_0_BELL_BASE (ARMCTRL_0_SBM_BASE + 0x40) /* User 0 (ARM)'s Doorbell */ +-#define ARMCTRL_0_MAIL0_BASE (ARMCTRL_0_SBM_BASE + 0x80) /* User 0 (ARM)'s Mailbox 0 */ +- +-/* +- * Watchdog +- */ +-#define PM_RSTC (PM_BASE+0x1c) +-#define PM_RSTS (PM_BASE+0x20) +-#define PM_WDOG (PM_BASE+0x24) +- +-#define PM_WDOG_RESET 0000000000 +-#define PM_PASSWORD 0x5a000000 +-#define PM_WDOG_TIME_SET 0x000fffff +-#define PM_RSTC_WRCFG_CLR 0xffffffcf +-#define PM_RSTC_WRCFG_SET 0x00000030 +-#define PM_RSTC_WRCFG_FULL_RESET 0x00000020 +-#define PM_RSTC_RESET 0x00000102 +- +-#define PM_RSTS_HADPOR_SET 0x00001000 +-#define PM_RSTS_HADSRH_SET 0x00000400 +-#define PM_RSTS_HADSRF_SET 0x00000200 +-#define PM_RSTS_HADSRQ_SET 0x00000100 +-#define PM_RSTS_HADWRH_SET 0x00000040 +-#define PM_RSTS_HADWRF_SET 0x00000020 +-#define PM_RSTS_HADWRQ_SET 0x00000010 +-#define PM_RSTS_HADDRH_SET 0x00000004 +-#define PM_RSTS_HADDRF_SET 0x00000002 +-#define PM_RSTS_HADDRQ_SET 0x00000001 +- +-#define UART0_CLOCK 3000000 +- +-#endif +- +-/* END */ +diff --git a/arch/arm/mach-bcm2708/include/mach/system.h b/arch/arm/mach-bcm2708/include/mach/system.h +deleted file mode 100644 +index c9a9c9a881102c5354971d15203a746906761a70..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2708/include/mach/system.h ++++ /dev/null +@@ -1,37 +0,0 @@ +-/* +- * arch/arm/mach-bcm2708/include/mach/system.h +- * +- * Copyright (C) 2010 Broadcom +- * Copyright (C) 2003 ARM Limited +- * Copyright (C) 2000 Deep Blue Solutions Ltd +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +-#ifndef __ASM_ARCH_SYSTEM_H +-#define __ASM_ARCH_SYSTEM_H +- +-#include +-#include +- +-static inline void arch_idle(void) +-{ +- /* +- * This should do all the clock switching +- * and wait for interrupt tricks +- */ +- cpu_do_idle(); +-} +- +-#endif +diff --git a/arch/arm/mach-bcm2708/include/mach/uncompress.h b/arch/arm/mach-bcm2708/include/mach/uncompress.h +deleted file mode 100644 +index de7504bfc20ba24be8707861b8389783860adb77..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2708/include/mach/uncompress.h ++++ /dev/null +@@ -1,84 +0,0 @@ +-/* +- * arch/arm/mach-bcn2708/include/mach/uncompress.h +- * +- * Copyright (C) 2010 Broadcom +- * Copyright (C) 2003 ARM Limited +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +- +-#include +-#include +-#include +- +-#define UART_BAUD 115200 +- +-#define BCM2708_UART_DR __io(UART0_BASE + UART01x_DR) +-#define BCM2708_UART_FR __io(UART0_BASE + UART01x_FR) +-#define BCM2708_UART_IBRD __io(UART0_BASE + UART011_IBRD) +-#define BCM2708_UART_FBRD __io(UART0_BASE + UART011_FBRD) +-#define BCM2708_UART_LCRH __io(UART0_BASE + UART011_LCRH) +-#define BCM2708_UART_CR __io(UART0_BASE + UART011_CR) +- +-/* +- * This does not append a newline +- */ +-static inline void putc(int c) +-{ +- while (__raw_readl(BCM2708_UART_FR) & UART01x_FR_TXFF) +- barrier(); +- +- __raw_writel(c, BCM2708_UART_DR); +-} +- +-static inline void flush(void) +-{ +- int fr; +- +- do { +- fr = __raw_readl(BCM2708_UART_FR); +- barrier(); +- } while ((fr & (UART011_FR_TXFE | UART01x_FR_BUSY)) != UART011_FR_TXFE); +-} +- +-static inline void arch_decomp_setup(void) +-{ +- int temp, div, rem, frac; +- +- temp = 16 * UART_BAUD; +- div = UART0_CLOCK / temp; +- rem = UART0_CLOCK % temp; +- temp = (8 * rem) / UART_BAUD; +- frac = (temp >> 1) + (temp & 1); +- +- /* Make sure the UART is disabled before we start */ +- __raw_writel(0, BCM2708_UART_CR); +- +- /* Set the baud rate */ +- __raw_writel(div, BCM2708_UART_IBRD); +- __raw_writel(frac, BCM2708_UART_FBRD); +- +- /* Set the UART to 8n1, FIFO enabled */ +- __raw_writel(UART01x_LCRH_WLEN_8 | UART01x_LCRH_FEN, BCM2708_UART_LCRH); +- +- /* Enable the UART */ +- __raw_writel(UART01x_CR_UARTEN | UART011_CR_TXE | UART011_CR_RXE, +- BCM2708_UART_CR); +-} +- +-/* +- * nothing to do +- */ +-#define arch_decomp_wdog() +diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c +index d0e43619669e851350c5d9d7bb7e9dd19ea6ff1b..39d304327bc84899a521aaeed8c1edd83c26d2d6 100644 +--- a/arch/arm/mach-bcm2709/bcm2709.c ++++ b/arch/arm/mach-bcm2709/bcm2709.c +@@ -19,96 +19,16 @@ + */ + + #include +-#include +-#include +-#include +-#include +-#include + #include ++#include + +-#include + #include +-#include +- + #include +-#include +- +-#include +- +-#include +- +-/* Effectively we have an IOMMU (ARM<->VideoCore map) that is set up to +- * give us IO access only to 64Mbytes of physical memory (26 bits). We could +- * represent this window by setting our dmamasks to 26 bits but, in fact +- * we're not going to use addresses outside this range (they're not in real +- * memory) so we don't bother. +- * +- * In the future we might include code to use this IOMMU to remap other +- * physical addresses onto VideoCore memory then the use of 32-bits would be +- * more legitimate. +- */ ++#include + + /* command line parameters */ + static unsigned boardrev, serial; + +-static struct map_desc bcm2709_io_desc[] __initdata = { +- { +- .virtual = IO_ADDRESS(ARMCTRL_BASE), +- .pfn = __phys_to_pfn(ARMCTRL_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(UART0_BASE), +- .pfn = __phys_to_pfn(UART0_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(UART1_BASE), +- .pfn = __phys_to_pfn(UART1_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(DMA_BASE), +- .pfn = __phys_to_pfn(DMA_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(MCORE_BASE), +- .pfn = __phys_to_pfn(MCORE_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(ST_BASE), +- .pfn = __phys_to_pfn(ST_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(USB_BASE), +- .pfn = __phys_to_pfn(USB_BASE), +- .length = SZ_128K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(PM_BASE), +- .pfn = __phys_to_pfn(PM_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(GPIO_BASE), +- .pfn = __phys_to_pfn(GPIO_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +- { +- .virtual = IO_ADDRESS(ARM_LOCAL_BASE), +- .pfn = __phys_to_pfn(ARM_LOCAL_BASE), +- .length = SZ_4K, +- .type = MT_DEVICE}, +-}; +- +-void __init bcm2709_map_io(void) +-{ +- iotable_init(bcm2709_io_desc, ARRAY_SIZE(bcm2709_io_desc)); +-} +- + static void __init bcm2709_init(void) + { + vc_cma_early_init(); +@@ -130,7 +50,6 @@ static const char * const bcm2709_compat[] = { + + MACHINE_START(BCM2709, "BCM2709") + /* Maintainer: Broadcom Europe Ltd. */ +- .map_io = bcm2709_map_io, + .init_machine = bcm2709_init, + .reserve = board_reserve, + .dt_compat = bcm2709_compat, +@@ -138,7 +57,6 @@ MACHINE_END + + MACHINE_START(BCM2708, "BCM2709") + /* Maintainer: Broadcom Europe Ltd. */ +- .map_io = bcm2709_map_io, + .init_machine = bcm2709_init, + .reserve = board_reserve, + .dt_compat = bcm2709_compat, +diff --git a/arch/arm/mach-bcm2709/include/mach/debug-macro.S b/arch/arm/mach-bcm2709/include/mach/debug-macro.S +deleted file mode 100644 +index b24304a6755e965b8a28eb048b7f4e2d868820f9..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2709/include/mach/debug-macro.S ++++ /dev/null +@@ -1,22 +0,0 @@ +-/* arch/arm/mach-bcm2708/include/mach/debug-macro.S +- * +- * Debugging macro include header +- * +- * Copyright (C) 2010 Broadcom +- * Copyright (C) 1994-1999 Russell King +- * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License version 2 as +- * published by the Free Software Foundation. +- * +-*/ +- +-#include +- +- .macro addruart, rp, rv, tmp +- ldr \rp, =UART0_BASE +- ldr \rv, =IO_ADDRESS(UART0_BASE) +- .endm +- +-#include +diff --git a/arch/arm/mach-bcm2709/include/mach/platform.h b/arch/arm/mach-bcm2709/include/mach/platform.h +deleted file mode 100644 +index 9a638f528fcebc9206419a2cc68f3c9856dda3c3..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2709/include/mach/platform.h ++++ /dev/null +@@ -1,190 +0,0 @@ +-/* +- * arch/arm/mach-bcm2708/include/mach/platform.h +- * +- * Copyright (C) 2010 Broadcom +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +- +-#ifndef _BCM2708_PLATFORM_H +-#define _BCM2708_PLATFORM_H +- +- +-/* macros to get at IO space when running virtually */ +-#define IO_ADDRESS(x) (((x) & 0x00ffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000) +- +-#define __io_address(n) IOMEM(IO_ADDRESS(n)) +- +- +-/* +- * SDRAM +- */ +-#define BCM2708_SDRAM_BASE 0x00000000 +- +-/* +- * Logic expansion modules +- * +- */ +- +- +-/* ------------------------------------------------------------------------ +- * BCM2708 ARMCTRL Registers +- * ------------------------------------------------------------------------ +- */ +- +-#define HW_REGISTER_RW(addr) (addr) +-#define HW_REGISTER_RO(addr) (addr) +- +-/* +- * Definitions and addresses for the ARM CONTROL logic +- * This file is manually generated. +- */ +- +-#define BCM2708_PERI_BASE 0x3F000000 +-#define IC0_BASE (BCM2708_PERI_BASE + 0x2000) +-#define ST_BASE (BCM2708_PERI_BASE + 0x3000) /* System Timer */ +-#define MPHI_BASE (BCM2708_PERI_BASE + 0x6000) /* Message -based Parallel Host Interface */ +-#define DMA_BASE (BCM2708_PERI_BASE + 0x7000) /* DMA controller */ +-#define ARM_BASE (BCM2708_PERI_BASE + 0xB000) /* BCM2708 ARM control block */ +-#define PM_BASE (BCM2708_PERI_BASE + 0x100000) /* Power Management, Reset controller and Watchdog registers */ +-#define PCM_CLOCK_BASE (BCM2708_PERI_BASE + 0x101098) /* PCM Clock */ +-#define RNG_BASE (BCM2708_PERI_BASE + 0x104000) /* Hardware RNG */ +-#define GPIO_BASE (BCM2708_PERI_BASE + 0x200000) /* GPIO */ +-#define UART0_BASE (BCM2708_PERI_BASE + 0x201000) /* Uart 0 */ +-#define MMCI0_BASE (BCM2708_PERI_BASE + 0x202000) /* MMC interface */ +-#define I2S_BASE (BCM2708_PERI_BASE + 0x203000) /* I2S */ +-#define SPI0_BASE (BCM2708_PERI_BASE + 0x204000) /* SPI0 */ +-#define BSC0_BASE (BCM2708_PERI_BASE + 0x205000) /* BSC0 I2C/TWI */ +-#define UART1_BASE (BCM2708_PERI_BASE + 0x215000) /* Uart 1 */ +-#define EMMC_BASE (BCM2708_PERI_BASE + 0x300000) /* eMMC interface */ +-#define SMI_BASE (BCM2708_PERI_BASE + 0x600000) /* SMI */ +-#define BSC1_BASE (BCM2708_PERI_BASE + 0x804000) /* BSC1 I2C/TWI */ +-#define USB_BASE (BCM2708_PERI_BASE + 0x980000) /* DTC_OTG USB controller */ +-#define MCORE_BASE (BCM2708_PERI_BASE + 0x0000) /* Fake frame buffer device (actually the multicore sync block*/ +- +-#define ARMCTRL_BASE (ARM_BASE + 0x000) +-#define ARMCTRL_IC_BASE (ARM_BASE + 0x200) /* ARM interrupt controller */ +-#define ARMCTRL_TIMER0_1_BASE (ARM_BASE + 0x400) /* Timer 0 and 1 */ +-#define ARMCTRL_0_SBM_BASE (ARM_BASE + 0x800) /* User 0 (ARM)'s Semaphores Doorbells and Mailboxes */ +-#define ARMCTRL_0_BELL_BASE (ARMCTRL_0_SBM_BASE + 0x40) /* User 0 (ARM)'s Doorbell */ +-#define ARMCTRL_0_MAIL0_BASE (ARMCTRL_0_SBM_BASE + 0x80) /* User 0 (ARM)'s Mailbox 0 */ +- +-/* +- * Watchdog +- */ +-#define PM_RSTC (PM_BASE+0x1c) +-#define PM_RSTS (PM_BASE+0x20) +-#define PM_WDOG (PM_BASE+0x24) +- +-#define PM_WDOG_RESET 0000000000 +-#define PM_PASSWORD 0x5a000000 +-#define PM_WDOG_TIME_SET 0x000fffff +-#define PM_RSTC_WRCFG_CLR 0xffffffcf +-#define PM_RSTC_WRCFG_SET 0x00000030 +-#define PM_RSTC_WRCFG_FULL_RESET 0x00000020 +-#define PM_RSTC_RESET 0x00000102 +- +-#define PM_RSTS_HADPOR_SET 0x00001000 +-#define PM_RSTS_HADSRH_SET 0x00000400 +-#define PM_RSTS_HADSRF_SET 0x00000200 +-#define PM_RSTS_HADSRQ_SET 0x00000100 +-#define PM_RSTS_HADWRH_SET 0x00000040 +-#define PM_RSTS_HADWRF_SET 0x00000020 +-#define PM_RSTS_HADWRQ_SET 0x00000010 +-#define PM_RSTS_HADDRH_SET 0x00000004 +-#define PM_RSTS_HADDRF_SET 0x00000002 +-#define PM_RSTS_HADDRQ_SET 0x00000001 +- +-#define UART0_CLOCK 3000000 +- +-#define ARM_LOCAL_BASE 0x40000000 +-#define ARM_LOCAL_CONTROL HW_REGISTER_RW(ARM_LOCAL_BASE+0x000) +- +-#define ARM_LOCAL_CONTROL HW_REGISTER_RW(ARM_LOCAL_BASE+0x000) +-#define ARM_LOCAL_PRESCALER HW_REGISTER_RW(ARM_LOCAL_BASE+0x008) +-#define ARM_LOCAL_GPU_INT_ROUTING HW_REGISTER_RW(ARM_LOCAL_BASE+0x00C) +-#define ARM_LOCAL_PM_ROUTING_SET HW_REGISTER_RW(ARM_LOCAL_BASE+0x010) +-#define ARM_LOCAL_PM_ROUTING_CLR HW_REGISTER_RW(ARM_LOCAL_BASE+0x014) +-#define ARM_LOCAL_TIMER_LS HW_REGISTER_RW(ARM_LOCAL_BASE+0x01C) +-#define ARM_LOCAL_TIMER_MS HW_REGISTER_RW(ARM_LOCAL_BASE+0x020) +-#define ARM_LOCAL_INT_ROUTING HW_REGISTER_RW(ARM_LOCAL_BASE+0x024) +-#define ARM_LOCAL_AXI_COUNT HW_REGISTER_RW(ARM_LOCAL_BASE+0x02C) +-#define ARM_LOCAL_AXI_IRQ HW_REGISTER_RW(ARM_LOCAL_BASE+0x030) +-#define ARM_LOCAL_TIMER_CONTROL HW_REGISTER_RW(ARM_LOCAL_BASE+0x034) +-#define ARM_LOCAL_TIMER_WRITE HW_REGISTER_RW(ARM_LOCAL_BASE+0x038) +- +-#define ARM_LOCAL_TIMER_INT_CONTROL0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x040) +-#define ARM_LOCAL_TIMER_INT_CONTROL1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x044) +-#define ARM_LOCAL_TIMER_INT_CONTROL2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x048) +-#define ARM_LOCAL_TIMER_INT_CONTROL3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x04C) +- +-#define ARM_LOCAL_MAILBOX_INT_CONTROL0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x050) +-#define ARM_LOCAL_MAILBOX_INT_CONTROL1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x054) +-#define ARM_LOCAL_MAILBOX_INT_CONTROL2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x058) +-#define ARM_LOCAL_MAILBOX_INT_CONTROL3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x05C) +- +-#define ARM_LOCAL_IRQ_PENDING0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x060) +-#define ARM_LOCAL_IRQ_PENDING1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x064) +-#define ARM_LOCAL_IRQ_PENDING2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x068) +-#define ARM_LOCAL_IRQ_PENDING3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x06C) +- +-#define ARM_LOCAL_FIQ_PENDING0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x070) +-#define ARM_LOCAL_FIQ_PENDING1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x074) +-#define ARM_LOCAL_FIQ_PENDING2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x078) +-#define ARM_LOCAL_FIQ_PENDING3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x07C) +- +-#define ARM_LOCAL_MAILBOX0_SET0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x080) +-#define ARM_LOCAL_MAILBOX1_SET0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x084) +-#define ARM_LOCAL_MAILBOX2_SET0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x088) +-#define ARM_LOCAL_MAILBOX3_SET0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x08C) +- +-#define ARM_LOCAL_MAILBOX0_SET1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x090) +-#define ARM_LOCAL_MAILBOX1_SET1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x094) +-#define ARM_LOCAL_MAILBOX2_SET1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x098) +-#define ARM_LOCAL_MAILBOX3_SET1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x09C) +- +-#define ARM_LOCAL_MAILBOX0_SET2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0A0) +-#define ARM_LOCAL_MAILBOX1_SET2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0A4) +-#define ARM_LOCAL_MAILBOX2_SET2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0A8) +-#define ARM_LOCAL_MAILBOX3_SET2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0AC) +- +-#define ARM_LOCAL_MAILBOX0_SET3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0B0) +-#define ARM_LOCAL_MAILBOX1_SET3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0B4) +-#define ARM_LOCAL_MAILBOX2_SET3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0B8) +-#define ARM_LOCAL_MAILBOX3_SET3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0BC) +- +-#define ARM_LOCAL_MAILBOX0_CLR0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0C0) +-#define ARM_LOCAL_MAILBOX1_CLR0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0C4) +-#define ARM_LOCAL_MAILBOX2_CLR0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0C8) +-#define ARM_LOCAL_MAILBOX3_CLR0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0CC) +- +-#define ARM_LOCAL_MAILBOX0_CLR1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0D0) +-#define ARM_LOCAL_MAILBOX1_CLR1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0D4) +-#define ARM_LOCAL_MAILBOX2_CLR1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0D8) +-#define ARM_LOCAL_MAILBOX3_CLR1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0DC) +- +-#define ARM_LOCAL_MAILBOX0_CLR2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0E0) +-#define ARM_LOCAL_MAILBOX1_CLR2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0E4) +-#define ARM_LOCAL_MAILBOX2_CLR2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0E8) +-#define ARM_LOCAL_MAILBOX3_CLR2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0EC) +- +-#define ARM_LOCAL_MAILBOX0_CLR3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0F0) +-#define ARM_LOCAL_MAILBOX1_CLR3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0F4) +-#define ARM_LOCAL_MAILBOX2_CLR3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0F8) +-#define ARM_LOCAL_MAILBOX3_CLR3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0FC) +- +-#endif +- +-/* END */ +diff --git a/arch/arm/mach-bcm2709/include/mach/system.h b/arch/arm/mach-bcm2709/include/mach/system.h +deleted file mode 100644 +index c9a9c9a881102c5354971d15203a746906761a70..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2709/include/mach/system.h ++++ /dev/null +@@ -1,37 +0,0 @@ +-/* +- * arch/arm/mach-bcm2708/include/mach/system.h +- * +- * Copyright (C) 2010 Broadcom +- * Copyright (C) 2003 ARM Limited +- * Copyright (C) 2000 Deep Blue Solutions Ltd +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +-#ifndef __ASM_ARCH_SYSTEM_H +-#define __ASM_ARCH_SYSTEM_H +- +-#include +-#include +- +-static inline void arch_idle(void) +-{ +- /* +- * This should do all the clock switching +- * and wait for interrupt tricks +- */ +- cpu_do_idle(); +-} +- +-#endif +diff --git a/arch/arm/mach-bcm2709/include/mach/uncompress.h b/arch/arm/mach-bcm2709/include/mach/uncompress.h +deleted file mode 100644 +index de7504bfc20ba24be8707861b8389783860adb77..0000000000000000000000000000000000000000 +--- a/arch/arm/mach-bcm2709/include/mach/uncompress.h ++++ /dev/null +@@ -1,84 +0,0 @@ +-/* +- * arch/arm/mach-bcn2708/include/mach/uncompress.h +- * +- * Copyright (C) 2010 Broadcom +- * Copyright (C) 2003 ARM Limited +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +- */ +- +-#include +-#include +-#include +- +-#define UART_BAUD 115200 +- +-#define BCM2708_UART_DR __io(UART0_BASE + UART01x_DR) +-#define BCM2708_UART_FR __io(UART0_BASE + UART01x_FR) +-#define BCM2708_UART_IBRD __io(UART0_BASE + UART011_IBRD) +-#define BCM2708_UART_FBRD __io(UART0_BASE + UART011_FBRD) +-#define BCM2708_UART_LCRH __io(UART0_BASE + UART011_LCRH) +-#define BCM2708_UART_CR __io(UART0_BASE + UART011_CR) +- +-/* +- * This does not append a newline +- */ +-static inline void putc(int c) +-{ +- while (__raw_readl(BCM2708_UART_FR) & UART01x_FR_TXFF) +- barrier(); +- +- __raw_writel(c, BCM2708_UART_DR); +-} +- +-static inline void flush(void) +-{ +- int fr; +- +- do { +- fr = __raw_readl(BCM2708_UART_FR); +- barrier(); +- } while ((fr & (UART011_FR_TXFE | UART01x_FR_BUSY)) != UART011_FR_TXFE); +-} +- +-static inline void arch_decomp_setup(void) +-{ +- int temp, div, rem, frac; +- +- temp = 16 * UART_BAUD; +- div = UART0_CLOCK / temp; +- rem = UART0_CLOCK % temp; +- temp = (8 * rem) / UART_BAUD; +- frac = (temp >> 1) + (temp & 1); +- +- /* Make sure the UART is disabled before we start */ +- __raw_writel(0, BCM2708_UART_CR); +- +- /* Set the baud rate */ +- __raw_writel(div, BCM2708_UART_IBRD); +- __raw_writel(frac, BCM2708_UART_FBRD); +- +- /* Set the UART to 8n1, FIFO enabled */ +- __raw_writel(UART01x_LCRH_WLEN_8 | UART01x_LCRH_FEN, BCM2708_UART_LCRH); +- +- /* Enable the UART */ +- __raw_writel(UART01x_CR_UARTEN | UART011_CR_TXE | UART011_CR_RXE, +- BCM2708_UART_CR); +-} +- +-/* +- * nothing to do +- */ +-#define arch_decomp_wdog() + +From cfae72c5f744ca6793e4968ae47468c6c5eac21b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= +Date: Mon, 10 Oct 2016 19:37:06 +0200 +Subject: [PATCH 126/132] bcm270x: Use DT_MACHINE_START +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +We are all DT now so use DT_MACHINE_START. +Also drop the extra BCM2709-BCM2708 mix entry. + +Signed-off-by: Noralf Trønnes +--- + arch/arm/mach-bcm2708/bcm2708.c | 3 +-- + arch/arm/mach-bcm2709/bcm2709.c | 11 +---------- + arch/arm/tools/mach-types | 2 -- + 3 files changed, 2 insertions(+), 14 deletions(-) + +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index 47d5f363334ea317f09a6d6b7c8f3f2f797a2be3..ddf62c084981ecf02491ea6b2817782dae050ce1 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -22,7 +22,6 @@ + #include + #include + +-#include + #include + #include + +@@ -47,7 +46,7 @@ static const char * const bcm2708_compat[] = { + NULL + }; + +-MACHINE_START(BCM2708, "BCM2708") ++DT_MACHINE_START(BCM2708, "BCM2708") + /* Maintainer: Broadcom Europe Ltd. */ + .init_machine = bcm2708_init, + .reserve = board_reserve, +diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c +index 39d304327bc84899a521aaeed8c1edd83c26d2d6..9cf36118e57b3c362de9adcf089425023d4a601d 100644 +--- a/arch/arm/mach-bcm2709/bcm2709.c ++++ b/arch/arm/mach-bcm2709/bcm2709.c +@@ -22,7 +22,6 @@ + #include + #include + +-#include + #include + #include + +@@ -44,18 +43,10 @@ static void __init board_reserve(void) + + static const char * const bcm2709_compat[] = { + "brcm,bcm2709", +- "brcm,bcm2708", /* Could use bcm2708 in a pinch */ + NULL + }; + +-MACHINE_START(BCM2709, "BCM2709") +- /* Maintainer: Broadcom Europe Ltd. */ +- .init_machine = bcm2709_init, +- .reserve = board_reserve, +- .dt_compat = bcm2709_compat, +-MACHINE_END +- +-MACHINE_START(BCM2708, "BCM2709") ++DT_MACHINE_START(BCM2709, "BCM2709") + /* Maintainer: Broadcom Europe Ltd. */ + .init_machine = bcm2709_init, + .reserve = board_reserve, +diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types +index b52d949ee91d96eb7672fbbb4969bfa1e7afc376..2ed1b8a922ed02b9e3545991873af77b4c1bf871 100644 +--- a/arch/arm/tools/mach-types ++++ b/arch/arm/tools/mach-types +@@ -522,8 +522,6 @@ torbreck MACH_TORBRECK TORBRECK 3090 + prima2_evb MACH_PRIMA2_EVB PRIMA2_EVB 3103 + paz00 MACH_PAZ00 PAZ00 3128 + acmenetusfoxg20 MACH_ACMENETUSFOXG20 ACMENETUSFOXG20 3129 +-bcm2708 MACH_BCM2708 BCM2708 3138 +-bcm2709 MACH_BCM2709 BCM2709 3139 + ag5evm MACH_AG5EVM AG5EVM 3189 + ics_if_voip MACH_ICS_IF_VOIP ICS_IF_VOIP 3206 + wlf_cragg_6410 MACH_WLF_CRAGG_6410 WLF_CRAGG_6410 3207 + +From c676b9c38919c380155127518694332baf309b9c Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 11 Oct 2016 17:48:07 +0100 +Subject: [PATCH 127/132] Use DT rather than modules params for board rev and + serial + +--- + arch/arm/mach-bcm2708/bcm2708.c | 18 +++++++++--------- + arch/arm/mach-bcm2709/bcm2709.c | 19 +++++++++---------- + 2 files changed, 18 insertions(+), 19 deletions(-) + +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index ddf62c084981ecf02491ea6b2817782dae050ce1..06b078569006a6d821d3d049f1a0fa5783c1c1b3 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -18,22 +18,24 @@ + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +-#include +-#include ++#include + #include + + #include + #include + +-/* command line parameters */ +-static unsigned boardrev, serial; +- + static void __init bcm2708_init(void) + { ++ struct device_node *np = of_find_node_by_path("/system"); ++ u32 val; ++ u64 val64; ++ + vc_cma_early_init(); + +- system_rev = boardrev; +- system_serial_low = serial; ++ if (!of_property_read_u32(np, "linux,revision", &val)) ++ system_rev = val; ++ if (!of_property_read_u64(np, "linux,serial", &val64)) ++ system_serial_low = val64; + } + + static void __init board_reserve(void) +@@ -53,5 +55,3 @@ DT_MACHINE_START(BCM2708, "BCM2708") + .dt_compat = bcm2708_compat, + MACHINE_END + +-module_param(boardrev, uint, 0644); +-module_param(serial, uint, 0644); +diff --git a/arch/arm/mach-bcm2709/bcm2709.c b/arch/arm/mach-bcm2709/bcm2709.c +index 9cf36118e57b3c362de9adcf089425023d4a601d..9f113736627175bdcb362e0eda469e09e3d5f2e0 100644 +--- a/arch/arm/mach-bcm2709/bcm2709.c ++++ b/arch/arm/mach-bcm2709/bcm2709.c +@@ -18,22 +18,24 @@ + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +-#include +-#include ++#include + #include + + #include + #include + +-/* command line parameters */ +-static unsigned boardrev, serial; +- + static void __init bcm2709_init(void) + { ++ struct device_node *np = of_find_node_by_path("/system"); ++ u32 val; ++ u64 val64; ++ + vc_cma_early_init(); + +- system_rev = boardrev; +- system_serial_low = serial; ++ if (!of_property_read_u32(np, "linux,revision", &val)) ++ system_rev = val; ++ if (!of_property_read_u64(np, "linux,serial", &val64)) ++ system_serial_low = val64; + } + + static void __init board_reserve(void) +@@ -52,6 +54,3 @@ DT_MACHINE_START(BCM2709, "BCM2709") + .reserve = board_reserve, + .dt_compat = bcm2709_compat, + MACHINE_END +- +-module_param(boardrev, uint, 0644); +-module_param(serial, uint, 0644); + +From a8e5605cde4a7e1f77d695336a1ba258b324ad95 Mon Sep 17 00:00:00 2001 From: Martin Sperl Date: Fri, 2 Sep 2016 16:45:27 +0100 -Subject: [PATCH 133/160] Register the clocks early during the boot process, so +Subject: [PATCH 128/132] Register the clocks early during the boot process, so that special/critical clocks can get enabled early on in the boot process avoiding the risk of disabling a clock, pll_divider or pll when a claiming driver fails to install propperly - maybe it needs to defer. @@ -135811,380 +140959,72 @@ index fbf616021704178a9d007219a0ea2a9f1704f0a6..cbbc8d4ddcffc797268c0ecb6477005f MODULE_AUTHOR("Eric Anholt "); MODULE_DESCRIPTION("BCM2835 clock driver"); -From 278a5a47d0a07ff2347f988d5cd9b7e8c52c1ef7 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Tue, 24 May 2016 17:19:27 +0100 -Subject: [PATCH 134/160] brcmfmac: revise SDIO error message in - brcmf_sdio_drivestrengthinit +From 5264862a2aa5f6c30dc03a0e2f09ada548789675 Mon Sep 17 00:00:00 2001 +From: Scott Ellis +Date: Tue, 27 Sep 2016 04:29:00 -0400 +Subject: [PATCH 129/132] Add Adafruit pitft35 touchscreen support (#1657) -The error message is given for something that is not an error here as -the drive strength configuration may not be applicable for specific -devices. Therefore the error message is rephrased and changed to a -debug message. +The dts comes from the Adafruit repository -[ Patch from Broadcom ] + https://github.com/adafruit/Adafruit-Pi-Kernel-o-Matic/blob/pitft/pitft35r-overlay.dts -Signed-off-by: Phil Elwell +Reformatted slightly to match conventions in the pitft28-resistive-overlay. + +Signed-off-by: Scott Ellis --- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -index ea66454a3d7444f51827964aea01bf7573f2b473..f315428e4f696b4c53af4f5f9cbc30512097af36 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -@@ -3668,7 +3668,7 @@ brcmf_sdio_drivestrengthinit(struct brcmf_sdio_dev *sdiodev, - str_shift = 11; - break; - default: -- brcmf_err("No SDIO Drive strength init done for chip %s rev %d pmurev %d\n", -+ brcmf_dbg(INFO, "No SDIO driver strength init needed for chip %s rev %d pmurev %d\n", - ci->name, ci->chiprev, ci->pmurev); - break; - } - -From be374296f9245389e427d103b6769f2be66de47b Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Tue, 24 May 2016 17:26:31 +0100 -Subject: [PATCH 135/160] brcmfmac: use ndev->needed_headroom to reserve - additional header space - -When using nmap tool with FMAC, the nmap packets were be dropped by kernel -because the size was too short. The kernel message showed like -"nmap: packet size is too short (42 <= 50)". It is caused by the packet -length is shorter than ndev->hard_header_len. According to LL_RESERVED_SPACE() -and hard_header_len definition, we should use hard_header_len to reserve L2 -header, like ethernet header(ETH_HLEN) in our case and use needed_headroom for -the additional headroom needed by hardware. - -[ Patch from Broadcom ] - -See: https://github.com/raspberrypi/linux/issues/1357 - -Signed-off-by: Phil Elwell ---- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -index b590499f6883294525b094cb66c4449069eb2353..6570dba08bb482bbb3d47ff6f0790a7004b5e547 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c -@@ -516,7 +516,7 @@ int brcmf_net_attach(struct brcmf_if *ifp, bool rtnl_locked) - /* set appropriate operations */ - ndev->netdev_ops = &brcmf_netdev_ops_pri; - -- ndev->hard_header_len += drvr->hdrlen; -+ ndev->needed_headroom += drvr->hdrlen; - ndev->ethtool_ops = &brcmf_ethtool_ops; - - drvr->rxsz = ndev->mtu + ndev->hard_header_len + - -From 445cf7ba314fe3b03b42092e1f5aa3059fcedfca Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Mon, 6 Jun 2016 11:11:33 +0100 -Subject: [PATCH 136/160] brcmfmac: change rx_seq check log from error print to - debug print - -The bus rx sequence is not in order because that control and event -frames always cause immediate send, but data frames may be held -for glomming in firmware side. It is not actually an error as the -packets are still processed even if the RX sequence is not in order. -Therefore the error message is rephrased and changed to a debug -message. - -[ Patch from Broadcom ] - -See: https://github.com/raspberrypi/linux/issues/1313 ---- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -index f315428e4f696b4c53af4f5f9cbc30512097af36..8d716401af46cc9ade8daee2d1b6a17c34e8b680 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -@@ -1386,8 +1386,7 @@ static int brcmf_sdio_hdparse(struct brcmf_sdio *bus, u8 *header, - return -ENXIO; - } - if (rd->seq_num != rx_seq) { -- brcmf_err("seq %d: sequence number error, expect %d\n", -- rx_seq, rd->seq_num); -+ brcmf_dbg(SDIO, "seq %d, expected %d\n", rx_seq, rd->seq_num); - bus->sdcnt.rx_badseq++; - rd->seq_num = rx_seq; - } - -From 73ee55b624459eef06a612f95467ae54fa6976f7 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Fri, 19 Aug 2016 11:26:57 +0100 -Subject: [PATCH 137/160] overlays: Add audremap overlay - -The audremap overlay switches the PWM audio outputs to GPIO pins -12 (L) and 13 (R). ---- - arch/arm/boot/dts/overlays/Makefile | 1 + - arch/arm/boot/dts/overlays/README | 6 ++++++ - arch/arm/boot/dts/overlays/audremap-overlay.dts | 14 ++++++++++++++ - 3 files changed, 21 insertions(+) - create mode 100644 arch/arm/boot/dts/overlays/audremap-overlay.dts + arch/arm/boot/dts/overlays/Makefile | 1 + + arch/arm/boot/dts/overlays/README | 12 ++ + .../dts/overlays/pitft35-resistive-overlay.dts | 121 +++++++++++++++++++++ + arch/arm/configs/bcm2709_defconfig | 1 + + arch/arm/configs/bcmrpi_defconfig | 1 + + 5 files changed, 136 insertions(+) + create mode 100644 arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile -index 68832129f46b9c8320d0d2634c780bdb330314c9..817c3a67fb397c7b6ec5fdeda1cbb3d60855d2d3 100644 +index b6ed1a3c06a7a67d1dd79bb7e55421d8eccba492..6179b21af2fa8ec63429c3d379fc46085681dc7e 100644 --- a/arch/arm/boot/dts/overlays/Makefile +++ b/arch/arm/boot/dts/overlays/Makefile -@@ -18,6 +18,7 @@ dtbo-$(RPI_DT_OVERLAYS) += ads7846.dtbo - dtbo-$(RPI_DT_OVERLAYS) += akkordion-iqdacplus.dtbo - dtbo-$(RPI_DT_OVERLAYS) += at86rf233.dtbo - dtbo-$(RPI_DT_OVERLAYS) += audioinjector-wm8731-audio.dtbo -+dtbo-$(RPI_DT_OVERLAYS) += audremap.dtbo - dtbo-$(RPI_DT_OVERLAYS) += bmp085_i2c-sensor.dtbo - dtbo-$(RPI_DT_OVERLAYS) += dht11.dtbo - dtbo-$(RPI_DT_OVERLAYS) += dionaudio-loco.dtbo +@@ -64,6 +64,7 @@ dtbo-$(RPI_DT_OVERLAYS) += piscreen2r.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pitft22.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pitft28-capacitive.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pitft28-resistive.dtbo ++dtbo-$(RPI_DT_OVERLAYS) += pitft35-resistive.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pps-gpio.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pwm.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pwm-2chan.dtbo diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index b32bca8ada3b10aa40a5c718a1823e1fa4f7f5b2..53b2fa926d6e0fe3aead1150bd7a41ef6f0959c0 100644 +index 1ebb94c005d68b17792f95bd9792a08679298b26..2252ab9f5bab5dd40be9ebefa8e37c5bfb07d00f 100644 --- a/arch/arm/boot/dts/overlays/README +++ b/arch/arm/boot/dts/overlays/README -@@ -253,6 +253,12 @@ Load: dtoverlay=audioinjector-wm8731-audio - Params: +@@ -848,6 +848,18 @@ Params: speed Display SPI bus speed + debug Debug output level {0-7} -+Name: audremap -+Info: Switches PWM sound output to pins 12 & 13 -+Load: dtoverlay=audremap -+Params: ++Name: pitft35-resistive ++Info: Adafruit PiTFT 3.5" resistive touch screen ++Load: dtoverlay=pitft35-resistive,= ++Params: speed Display SPI bus speed ++ ++ rotate Display rotation {0,90,180,270} ++ ++ fps Delay between frame updates ++ ++ debug Debug output level {0-7} + + - Name: bmp085_i2c-sensor - Info: Configures the BMP085/BMP180 digital barometric pressure and temperature - sensors from Bosch Sensortec -diff --git a/arch/arm/boot/dts/overlays/audremap-overlay.dts b/arch/arm/boot/dts/overlays/audremap-overlay.dts + Name: pps-gpio + Info: Configures the pps-gpio (pulse-per-second time signal via GPIO). + Load: dtoverlay=pps-gpio,= +diff --git a/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts b/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts new file mode 100644 -index 0000000000000000000000000000000000000000..17bbabb712b1c5768f6446bd8cc3b6687ef24cb8 +index 0000000000000000000000000000000000000000..25cb5cc9576dadc3539f4ea3c9507c592ccac9d6 --- /dev/null -+++ b/arch/arm/boot/dts/overlays/audremap-overlay.dts -@@ -0,0 +1,14 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "brcm,bcm2708"; -+ -+ fragment@0 { -+ target = <&audio_pins>; -+ __overlay__ { -+ brcm,pins = < 12 13 >; -+ brcm,function = < 4 >; /* alt0 alt0 */ -+ }; -+ }; -+}; - -From f7aacc15331e7b08438b825f3195d56049215507 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Fri, 19 Aug 2016 15:39:01 +0100 -Subject: [PATCH 138/160] overlays: Add swap_lr and enable_jack to audremap - -swap_lr causes the channels to be reversed, and enable_jack prevents the -headphone output from being disabled. - -See: https://github.com/raspberrypi/linux/issues/1473 ---- - arch/arm/boot/dts/overlays/README | 9 ++++++--- - arch/arm/boot/dts/overlays/audremap-overlay.dts | 7 ++++++- - 2 files changed, 12 insertions(+), 4 deletions(-) - -diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index 53b2fa926d6e0fe3aead1150bd7a41ef6f0959c0..f1734321e930978c268615d6f6d356237d0c9d3a 100644 ---- a/arch/arm/boot/dts/overlays/README -+++ b/arch/arm/boot/dts/overlays/README -@@ -254,9 +254,12 @@ Params: - - - Name: audremap --Info: Switches PWM sound output to pins 12 & 13 --Load: dtoverlay=audremap --Params: -+Info: Switches PWM sound output to pins 12 (Right) & 13 (Left) -+Load: dtoverlay=audremap,= -+Params: swap_lr Reverse the channel allocation, which will also -+ swap the audio jack outputs (default off) -+ enable_jack Don't switch off the audio jack output -+ (default off) - - - Name: bmp085_i2c-sensor -diff --git a/arch/arm/boot/dts/overlays/audremap-overlay.dts b/arch/arm/boot/dts/overlays/audremap-overlay.dts -index 17bbabb712b1c5768f6446bd8cc3b6687ef24cb8..9582d6ab31218b4ed7b1d42a9190ca6efe9bd531 100644 ---- a/arch/arm/boot/dts/overlays/audremap-overlay.dts -+++ b/arch/arm/boot/dts/overlays/audremap-overlay.dts -@@ -6,9 +6,14 @@ - - fragment@0 { - target = <&audio_pins>; -- __overlay__ { -+ frag0: __overlay__ { - brcm,pins = < 12 13 >; - brcm,function = < 4 >; /* alt0 alt0 */ - }; - }; -+ -+ __overrides__ { -+ swap_lr = <&frag0>, "swap_lr?"; -+ enable_jack = <&frag0>, "enable_jack?"; -+ }; - }; - -From 43bf513281ccab4d8234c4ef53663acda40163f7 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Fri, 19 Aug 2016 11:12:28 +0100 -Subject: [PATCH 139/160] BCM270X_DT: Add audio_pins to CM dtb - -Bring the CM .dtb in line with other others. ---- - arch/arm/boot/dts/bcm2708-rpi-cm.dts | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dts b/arch/arm/boot/dts/bcm2708-rpi-cm.dts -index d2dcc9c156b32a91a45c26b460fa971abd0dbdf5..ce9f54ff7e4ce76ad25ad0a19cf2ad48ba9df01a 100755 ---- a/arch/arm/boot/dts/bcm2708-rpi-cm.dts -+++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts -@@ -35,6 +35,11 @@ - brcm,pins = <18 19 20 21>; - brcm,function = <4>; /* alt0 */ - }; -+ -+ audio_pins: audio_pins { -+ brcm,pins; -+ brcm,function; -+ }; - }; - - &spi0 { - -From 32a7a4096b752f9dd83e03efcbcea43e40148348 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Fri, 19 Aug 2016 11:19:02 +0100 -Subject: [PATCH 140/160] BCM270X_DT: Don't enable UART0 in CM3 dtb - ---- - arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 12 ------------ - 1 file changed, 12 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -index a5d57893d5799e57ffe9b8efe553a03ec4bde007..20388084b98cf942529eb60c55dc540cfea71886 100644 ---- a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -+++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts -@@ -40,12 +40,6 @@ - brcm,function = <4>; /* alt0 */ - }; - -- uart0_pins: uart0_pins { -- brcm,pins; -- brcm,function; -- brcm,pull = <0 2>; -- }; -- - audio_pins: audio_pins { - brcm,pins; - brcm,function; -@@ -75,12 +69,6 @@ - status = "okay"; - }; - --&uart0 { -- pinctrl-names = "default"; -- pinctrl-0 = <&uart0_pins>; -- status = "okay"; --}; -- - &spi0 { - pinctrl-names = "default"; - pinctrl-0 = <&spi0_pins &spi0_cs_pins>; - -From 1e6d49b67eae7d66f08f7f31c01d0cfa7054dcca Mon Sep 17 00:00:00 2001 -From: wavelet2 -Date: Fri, 19 Aug 2016 09:32:53 +0100 -Subject: [PATCH 141/160] Overlay for Microchip MCP23S08/17 SPI gpio expanders - (#1566) - -Added Overlay for Microchip MCP23S08/17 SPI gpio expanders ---- - arch/arm/boot/dts/overlays/Makefile | 1 + - arch/arm/boot/dts/overlays/README | 24 + - arch/arm/boot/dts/overlays/mcp23s17-overlay.dts | 732 ++++++++++++++++++++++++ - 3 files changed, 757 insertions(+) - create mode 100644 arch/arm/boot/dts/overlays/mcp23s17-overlay.dts - -diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile -index 817c3a67fb397c7b6ec5fdeda1cbb3d60855d2d3..dc72052757ae5c79d7f196c900d9c0f13ab97a42 100644 ---- a/arch/arm/boot/dts/overlays/Makefile -+++ b/arch/arm/boot/dts/overlays/Makefile -@@ -49,6 +49,7 @@ dtbo-$(RPI_DT_OVERLAYS) += justboom-dac.dtbo - dtbo-$(RPI_DT_OVERLAYS) += justboom-digi.dtbo - dtbo-$(RPI_DT_OVERLAYS) += lirc-rpi.dtbo - dtbo-$(RPI_DT_OVERLAYS) += mcp23017.dtbo -+dtbo-$(RPI_DT_OVERLAYS) += mcp23s17.dtbo - dtbo-$(RPI_DT_OVERLAYS) += mcp2515-can0.dtbo - dtbo-$(RPI_DT_OVERLAYS) += mcp2515-can1.dtbo - dtbo-$(RPI_DT_OVERLAYS) += mmc.dtbo -diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index f1734321e930978c268615d6f6d356237d0c9d3a..87042af8550e5d16069a42329e34227a21e4b932 100644 ---- a/arch/arm/boot/dts/overlays/README -+++ b/arch/arm/boot/dts/overlays/README -@@ -631,6 +631,30 @@ Params: gpiopin Gpio pin connected to the INTA output of the - addr I2C address of the MCP23017 (default: 0x20) - - -+Name: mcp23s17 -+Info: Configures the MCP23S08/17 SPI GPIO expanders. -+ If devices are present on SPI1 or SPI2, those interfaces must be enabled -+ with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays. -+ If interrupts are enabled for a device on a given CS# on a SPI bus, that -+ device must be the only one present on that SPI bus/CS#. -+Load: dtoverlay=mcp23s17,= -+Params: s08-spi--present 4-bit integer, bitmap indicating MCP23S08 -+ devices present on SPI, CS# -+ -+ s17-spi--present 8-bit integer, bitmap indicating MCP23S17 -+ devices present on SPI, CS# -+ -+ s08-spi--int-gpio integer, enables interrupts on a single -+ MCP23S08 device on SPI, CS#, specifies -+ the GPIO pin to which INT output of MCP23S08 -+ is connected. -+ -+ s17-spi--int-gpio integer, enables mirrored interrupts on a -+ single MCP23S17 device on SPI, CS#, -+ specifies the GPIO pin to which either INTA -+ or INTB output of MCP23S17 is connected. -+ -+ - Name: mcp2515-can0 - Info: Configures the MCP2515 CAN controller on spi0.0 - Load: dtoverlay=mcp2515-can0,= -diff --git a/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts -new file mode 100644 -index 0000000000000000000000000000000000000000..7dcbacb3cd007eb15b2b0f165fd8adc7a7b7c580 ---- /dev/null -+++ b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts -@@ -0,0 +1,732 @@ -+// Overlay for MCP23S08/17 GPIO Extenders from Microchip Semiconductor -+ -+// dtparams: -+// s08-spi--present - 4-bit integer, bitmap indicating MCP23S08 devices present on SPI, CS#. -+// s17-spi--present - 8-bit integer, bitmap indicating MCP23S17 devices present on SPI, CS#. -+// s08-spi--int-gpio - integer, enables interrupts on a single MCP23S08 device on SPI, CS#, specifies the GPIO pin to which INT output is connected. -+// s17-spi--int-gpio - integer, enables mirrored interrupts on a single MCP23S17 device on SPI, CS#, specifies the GPIO pin to which either INTA or INTB output is connected. -+// -+// If devices are present on SPI1 or SPI2, those interfaces must be enabled with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays. -+// If interrupts are enabled for a device on a given CS# on a SPI bus, that device must be the only one present on that SPI bus/CS#. -+// -+// Example 1: A single MCP23S17 device on SPI0, CS#0 with its SPI addr set to 0 and INTA output connected to GPIO25: -+// dtoverlay=mcp23s17:s17-spi0-0-present=1,s17-spi0-0-int-gpio=25 -+// -+// Example 2: Two MCP23S08 devices on SPI1, CS#0 with their addrs set to 2 and 3. Three MCP23S17 devices on SPI1, CS#1 with their addrs set to 0, 1 and 7: -+// dtoverlay=spi1-2cs -+// dtoverlay=mcp23s17:s08-spi1-0-present=12,s17-spi1-1-present=131 ++++ b/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts +@@ -0,0 +1,121 @@ ++/* ++ * Device Tree overlay for Adafruit PiTFT 3.5" resistive touch screen ++ * ++ */ + +/dts-v1/; +/plugin/; @@ -136192,956 +141032,170 @@ index 0000000000000000000000000000000000000000..7dcbacb3cd007eb15b2b0f165fd8adc7 +/ { + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; + -+ // disable spi-dev on spi0.0 + fragment@0 { -+ target = <&spidev0>; -+ __dormant__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ // disable spi-dev on spi0.1 -+ fragment@1 { -+ target = <&spidev1>; -+ __dormant__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ // disable spi-dev on spi1.0 -+ fragment@2 { -+ target-path = "spi1/spidev@0"; -+ __dormant__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ // disable spi-dev on spi1.1 -+ fragment@3 { -+ target-path = "spi1/spidev@1"; -+ __dormant__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ // disable spi-dev on spi1.2 -+ fragment@4 { -+ target-path = "spi1/spidev@2"; -+ __dormant__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ // disable spi-dev on spi2.0 -+ fragment@5 { -+ target-path = "spi2/spidev@0"; -+ __dormant__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ // disable spi-dev on spi2.1 -+ fragment@6 { -+ target-path = "spi2/spidev@1"; -+ __dormant__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ // disable spi-dev on spi2.2 -+ fragment@7 { -+ target-path = "spi2/spidev@2"; -+ __dormant__ { -+ status = "disabled"; -+ }; -+ }; -+ -+ // enable one or more mcp23s08s on spi0.0 -+ fragment@8 { + target = <&spi0>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s08_00: mcp23s08@0 { -+ compatible = "microchip,mcp23s08"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi0-0-present parameter */ -+ reg = <0>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi0-0-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s08s on spi0.1 -+ fragment@9 { -+ target = <&spi0>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s08_01: mcp23s08@1 { -+ compatible = "microchip,mcp23s08"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi0-1-present parameter */ -+ reg = <1>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi0-1-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s08s on spi1.0 -+ fragment@10 { -+ target = <&spi1>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s08_10: mcp23s08@0 { -+ compatible = "microchip,mcp23s08"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-0-present parameter */ -+ reg = <0>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-0-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s08s on spi1.1 -+ fragment@11 { -+ target = <&spi1>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s08_11: mcp23s08@1 { -+ compatible = "microchip,mcp23s08"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-1-present parameter */ -+ reg = <1>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-1-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s08s on spi1.2 -+ fragment@12 { -+ target = <&spi1>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s08_12: mcp23s08@2 { -+ compatible = "microchip,mcp23s08"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi1-2-present parameter */ -+ reg = <2>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi1-2-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s08s on spi2.0 -+ fragment@13 { -+ target = <&spi2>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s08_20: mcp23s08@0 { -+ compatible = "microchip,mcp23s08"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-0-present parameter */ -+ reg = <0>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-0-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s08s on spi2.1 -+ fragment@14 { -+ target = <&spi2>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s08_21: mcp23s08@1 { -+ compatible = "microchip,mcp23s08"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-1-present parameter */ -+ reg = <1>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-1-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s08s on spi2.2 -+ fragment@15 { -+ target = <&spi2>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s08_22: mcp23s08@2 { -+ compatible = "microchip,mcp23s08"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s08-spi2-2-present parameter */ -+ reg = <2>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s08-spi2-2-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s17s on spi0.0 -+ fragment@16 { -+ target = <&spi0>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s17_00: mcp23s17@0 { -+ compatible = "microchip,mcp23s17"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi0-0-present parameter */ -+ reg = <0>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi0-0-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s17s on spi0.1 -+ fragment@17 { -+ target = <&spi0>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s17_01: mcp23s17@1 { -+ compatible = "microchip,mcp23s17"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi0-1-present parameter */ -+ reg = <1>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi0-1-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s17s on spi1.0 -+ fragment@18 { -+ target = <&spi1>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s17_10: mcp23s17@0 { -+ compatible = "microchip,mcp23s17"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-0-present parameter */ -+ reg = <0>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-0-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s17s on spi1.1 -+ fragment@19 { -+ target = <&spi1>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s17_11: mcp23s17@1 { -+ compatible = "microchip,mcp23s17"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-1-present parameter */ -+ reg = <1>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-1-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s17s on spi1.2 -+ fragment@20 { -+ target = <&spi1>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s17_12: mcp23s17@2 { -+ compatible = "microchip,mcp23s17"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi1-2-present parameter */ -+ reg = <2>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi1-2-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s17s on spi2.0 -+ fragment@21 { -+ target = <&spi2>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s17_20: mcp23s17@0 { -+ compatible = "microchip,mcp23s17"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-0-present parameter */ -+ reg = <0>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-0-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s17s on spi2.1 -+ fragment@22 { -+ target = <&spi2>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s17_21: mcp23s17@1 { -+ compatible = "microchip,mcp23s17"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-1-present parameter */ -+ reg = <1>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-1-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // enable one or more mcp23s17s on spi2.2 -+ fragment@23 { -+ target = <&spi2>; -+ __dormant__ { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ mcp23s17_22: mcp23s17@2 { -+ compatible = "microchip,mcp23s17"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ microchip,spi-present-mask = <0x00>; /* overwritten by mcp23s17-spi2-2-present parameter */ -+ reg = <2>; -+ spi-max-frequency = <500000>; -+ status = "okay"; -+ #interrupt-cells=<2>; -+ interrupts = <0 2>; /* 1st word overwritten by mcp23s17-spi2-2-int-gpio parameter */ -+ }; -+ }; -+ }; -+ -+ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.0 as a input with no pull-up/down -+ fragment@24 { -+ target = <&gpio>; -+ __dormant__ { -+ spi0_0_int_pins: spi0_0_int_pins { -+ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi0-0-int-gpio parameter */ -+ brcm,function = <0>; -+ brcm,pull = <0>; -+ }; -+ }; -+ }; -+ -+ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi0.1 as a input with no pull-up/down -+ fragment@25 { -+ target = <&gpio>; -+ __dormant__ { -+ spi0_1_int_pins: spi0_1_int_pins { -+ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi0-1-int-gpio parameter */ -+ brcm,function = <0>; -+ brcm,pull = <0>; -+ }; -+ }; -+ }; -+ -+ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.0 as a input with no pull-up/down -+ fragment@26 { -+ target = <&gpio>; -+ __dormant__ { -+ spi1_0_int_pins: spi1_0_int_pins { -+ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-0-int-gpio parameter */ -+ brcm,function = <0>; -+ brcm,pull = <0>; -+ }; -+ }; -+ }; -+ -+ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.1 as a input with no pull-up/down -+ fragment@27 { -+ target = <&gpio>; -+ __dormant__ { -+ spi1_1_int_pins: spi1_1_int_pins { -+ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-1-int-gpio parameter */ -+ brcm,function = <0>; -+ brcm,pull = <0>; -+ }; -+ }; -+ }; -+ -+ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi1.2 as a input with no pull-up/down -+ fragment@28 { -+ target = <&gpio>; -+ __dormant__ { -+ spi1_2_int_pins: spi1_2_int_pins { -+ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi1-2-int-gpio parameter */ -+ brcm,function = <0>; -+ brcm,pull = <0>; -+ }; -+ }; -+ }; -+ -+ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.0 as a input with no pull-up/down -+ fragment@29 { -+ target = <&gpio>; -+ __dormant__ { -+ spi2_0_int_pins: spi2_0_int_pins { -+ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-0-int-gpio parameter */ -+ brcm,function = <0>; -+ brcm,pull = <0>; -+ }; -+ }; -+ }; -+ -+ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.1 as a input with no pull-up/down -+ fragment@30 { -+ target = <&gpio>; -+ __dormant__ { -+ spi2_1_int_pins: spi2_1_int_pins { -+ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-1-int-gpio parameter */ -+ brcm,function = <0>; -+ brcm,pull = <0>; -+ }; -+ }; -+ }; -+ -+ // Configure GPIO pin connected to INT(A/B) output of mcp23s08/17 on spi2.2 as a input with no pull-up/down -+ fragment@31 { -+ target = <&gpio>; -+ __dormant__ { -+ spi2_2_int_pins: spi2_2_int_pins { -+ brcm,pins = <0>; /* overwritten by mcp23s08/17-spi2-2-int-gpio parameter */ -+ brcm,function = <0>; -+ brcm,pull = <0>; -+ }; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s08 on spi0.0. -+ // Use default active low interrupt signalling. -+ fragment@32 { -+ target = <&mcp23s08_00>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s08 on spi0.1. -+ // Use default active low interrupt signalling. -+ fragment@33 { -+ target = <&mcp23s08_01>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s08 on spi1.0. -+ // Use default active low interrupt signalling. -+ fragment@34 { -+ target = <&mcp23s08_10>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s08 on spi1.1. -+ // Use default active low interrupt signalling. -+ fragment@35 { -+ target = <&mcp23s08_11>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s08 on spi1.2. -+ // Use default active low interrupt signalling. -+ fragment@36 { -+ target = <&mcp23s08_12>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s08 on spi2.0. -+ // Use default active low interrupt signalling. -+ fragment@37 { -+ target = <&mcp23s08_20>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s08 on spi2.1. -+ // Use default active low interrupt signalling. -+ fragment@38 { -+ target = <&mcp23s08_21>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s08 on spi2.2. -+ // Use default active low interrupt signalling. -+ fragment@39 { -+ target = <&mcp23s08_22>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s17 on spi0.0. -+ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. -+ // Use default active low interrupt signalling. -+ fragment@40 { -+ target = <&mcp23s17_00>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ microchip,irq-mirror; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s17 on spi0.1. -+ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. -+ // Configure INTA/B outputs of mcp23s08/17 as active low. -+ fragment@41 { -+ target = <&mcp23s17_01>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ microchip,irq-mirror; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s17 on spi1.0. -+ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. -+ // Configure INTA/B outputs of mcp23s08/17 as active low. -+ fragment@42 { -+ target = <&mcp23s17_10>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ microchip,irq-mirror; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s17 on spi1.1. -+ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. -+ // Configure INTA/B outputs of mcp23s08/17 as active low. -+ fragment@43 { -+ target = <&mcp23s17_11>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ microchip,irq-mirror; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s17 on spi1.2. -+ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. -+ // Configure INTA/B outputs of mcp23s08/17 as active low. -+ fragment@44 { -+ target = <&mcp23s17_12>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ microchip,irq-mirror; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s17 on spi2.0. -+ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. -+ // Configure INTA/B outputs of mcp23s08/17 as active low. -+ fragment@45 { -+ target = <&mcp23s17_20>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ microchip,irq-mirror; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s17 on spi2.1. -+ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. -+ // Configure INTA/B outputs of mcp23s08/17 as active low. -+ fragment@46 { -+ target = <&mcp23s17_21>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ microchip,irq-mirror; -+ }; -+ }; -+ -+ // Enable interrupts for a mcp23s17 on spi2.2. -+ // Enable mirroring so that either INTA or INTB output of mcp23s17 can be connected to the GPIO pin. -+ // Configure INTA/B outputs of mcp23s08/17 as active low. -+ fragment@47 { -+ target = <&mcp23s17_22>; -+ __dormant__ { -+ interrupt-parent = <&gpio>; -+ interrupt-controller; -+ microchip,irq-mirror; -+ }; -+ }; -+ -+ __overrides__ { -+ s08-spi0-0-present = <0>,"+0+8", <&mcp23s08_00>,"microchip,spi-present-mask:0"; -+ s08-spi0-1-present = <0>,"+1+9", <&mcp23s08_01>,"microchip,spi-present-mask:0"; -+ s08-spi1-0-present = <0>,"+2+10", <&mcp23s08_10>,"microchip,spi-present-mask:0"; -+ s08-spi1-1-present = <0>,"+3+11", <&mcp23s08_11>,"microchip,spi-present-mask:0"; -+ s08-spi1-2-present = <0>,"+4+12", <&mcp23s08_12>,"microchip,spi-present-mask:0"; -+ s08-spi2-0-present = <0>,"+5+13", <&mcp23s08_20>,"microchip,spi-present-mask:0"; -+ s08-spi2-1-present = <0>,"+6+14", <&mcp23s08_21>,"microchip,spi-present-mask:0"; -+ s08-spi2-2-present = <0>,"+7+15", <&mcp23s08_22>,"microchip,spi-present-mask:0"; -+ s17-spi0-0-present = <0>,"+0+16", <&mcp23s17_00>,"microchip,spi-present-mask:0"; -+ s17-spi0-1-present = <0>,"+1+17", <&mcp23s17_01>,"microchip,spi-present-mask:0"; -+ s17-spi1-0-present = <0>,"+2+18", <&mcp23s17_10>,"microchip,spi-present-mask:0"; -+ s17-spi1-1-present = <0>,"+3+19", <&mcp23s17_11>,"microchip,spi-present-mask:0"; -+ s17-spi1-2-present = <0>,"+4+20", <&mcp23s17_12>,"microchip,spi-present-mask:0"; -+ s17-spi2-0-present = <0>,"+5+21", <&mcp23s17_20>,"microchip,spi-present-mask:0"; -+ s17-spi2-1-present = <0>,"+6+22", <&mcp23s17_21>,"microchip,spi-present-mask:0"; -+ s17-spi2-2-present = <0>,"+7+23", <&mcp23s17_22>,"microchip,spi-present-mask:0"; -+ s08-spi0-0-int-gpio = <0>,"+24+32", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s08_00>,"interrupts:0"; -+ s08-spi0-1-int-gpio = <0>,"+25+33", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s08_01>,"interrupts:0"; -+ s08-spi1-0-int-gpio = <0>,"+26+34", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s08_10>,"interrupts:0"; -+ s08-spi1-1-int-gpio = <0>,"+27+35", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s08_11>,"interrupts:0"; -+ s08-spi1-2-int-gpio = <0>,"+28+36", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s08_12>,"interrupts:0"; -+ s08-spi2-0-int-gpio = <0>,"+29+37", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s08_20>,"interrupts:0"; -+ s08-spi2-1-int-gpio = <0>,"+30+38", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s08_21>,"interrupts:0"; -+ s08-spi2-2-int-gpio = <0>,"+31+39", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s08_22>,"interrupts:0"; -+ s17-spi0-0-int-gpio = <0>,"+24+40", <&spi0_0_int_pins>,"brcm,pins:0", <&mcp23s17_00>,"interrupts:0"; -+ s17-spi0-1-int-gpio = <0>,"+25+41", <&spi0_1_int_pins>,"brcm,pins:0", <&mcp23s17_01>,"interrupts:0"; -+ s17-spi1-0-int-gpio = <0>,"+26+42", <&spi1_0_int_pins>,"brcm,pins:0", <&mcp23s17_10>,"interrupts:0"; -+ s17-spi1-1-int-gpio = <0>,"+27+43", <&spi1_1_int_pins>,"brcm,pins:0", <&mcp23s17_11>,"interrupts:0"; -+ s17-spi1-2-int-gpio = <0>,"+28+44", <&spi1_2_int_pins>,"brcm,pins:0", <&mcp23s17_12>,"interrupts:0"; -+ s17-spi2-0-int-gpio = <0>,"+29+45", <&spi2_0_int_pins>,"brcm,pins:0", <&mcp23s17_20>,"interrupts:0"; -+ s17-spi2-1-int-gpio = <0>,"+30+46", <&spi2_1_int_pins>,"brcm,pins:0", <&mcp23s17_21>,"interrupts:0"; -+ s17-spi2-2-int-gpio = <0>,"+31+47", <&spi2_2_int_pins>,"brcm,pins:0", <&mcp23s17_22>,"interrupts:0"; -+ }; -+}; -+ - -From 7e2d136b7052a6d089e6a745a5d84c3fa800c158 Mon Sep 17 00:00:00 2001 -From: Georgii Staroselskii -Date: Tue, 23 Aug 2016 17:40:05 +0400 -Subject: [PATCH 142/160] overlays: added sc16is750 UART over I2C (#1617) - ---- - arch/arm/boot/dts/overlays/Makefile | 1 + - arch/arm/boot/dts/overlays/README | 10 ++++++ - .../boot/dts/overlays/sc16is750-i2c-overlay.dts | 37 ++++++++++++++++++++++ - 3 files changed, 48 insertions(+) - create mode 100644 arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts - -diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile -index dc72052757ae5c79d7f196c900d9c0f13ab97a42..35a1673379d4fb9aa4c1028310a44b79e23ac2ce 100644 ---- a/arch/arm/boot/dts/overlays/Makefile -+++ b/arch/arm/boot/dts/overlays/Makefile -@@ -74,6 +74,7 @@ dtbo-$(RPI_DT_OVERLAYS) += rpi-ft5406.dtbo - dtbo-$(RPI_DT_OVERLAYS) += rpi-proto.dtbo - dtbo-$(RPI_DT_OVERLAYS) += rpi-sense.dtbo - dtbo-$(RPI_DT_OVERLAYS) += rra-digidac1-wm8741-audio.dtbo -+dtbo-$(RPI_DT_OVERLAYS) += sc16is750-i2c.dtbo - dtbo-$(RPI_DT_OVERLAYS) += sc16is752-spi1.dtbo - dtbo-$(RPI_DT_OVERLAYS) += sdhost.dtbo - dtbo-$(RPI_DT_OVERLAYS) += sdio.dtbo -diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index 87042af8550e5d16069a42329e34227a21e4b932..f93b8ffd40157da92685095f75ea67943153a16b 100644 ---- a/arch/arm/boot/dts/overlays/README -+++ b/arch/arm/boot/dts/overlays/README -@@ -927,6 +927,16 @@ Load: dtoverlay=rra-digidac1-wm8741-audio - Params: - - -+Name: sc16is750-i2c -+Info: Overlay for the NXP SC16IS750 UART with I2C Interface -+ Enables the chip on I2C1 at 0x48. To select another address, -+ please refer to table 10 in reference manual. -+ -+Load: dtoverlay=sc16is750-i2c,= -+Params: int_pin GPIO used for IRQ (default 24) -+ addr Address (default 0x48) -+ -+ - Name: sc16is752-spi1 - Info: Overlay for the NXP SC16IS752 Dual UART with SPI Interface - Enables the chip on SPI1. -diff --git a/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts -new file mode 100644 -index 0000000000000000000000000000000000000000..339d0d17c01ff182edd0871de9dc4ea744917ad4 ---- /dev/null -+++ b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts -@@ -0,0 +1,37 @@ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; -+ -+ fragment@0 { -+ target = <&i2c_arm>; + __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&spidev0>; ++ __overlay__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ fragment@2 { ++ target = <&spidev1>; ++ __overlay__ { ++ status = "disabled"; ++ }; ++ }; ++ ++ fragment@3 { ++ target = <&gpio>; ++ __overlay__ { ++ pitft_pins: pitft_pins { ++ brcm,pins = <24 25>; ++ brcm,function = <0 1>; /* in out */ ++ brcm,pull = <2 0>; /* pullup none */ ++ }; ++ }; ++ }; ++ ++ fragment@4 { ++ target = <&spi0>; ++ __overlay__ { ++ /* needed to avoid dtc warning */ + #address-cells = <1>; + #size-cells = <0>; -+ status = "okay"; + -+ sc16is750: sc16is750@48 { -+ compatible = "nxp,sc16is750"; -+ reg = <0x48>; /* address */ -+ clocks = <&sc16is750_clk>; ++ pitft: pitft@0{ ++ compatible = "himax,hx8357d"; ++ reg = <0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pitft_pins>; ++ ++ spi-max-frequency = <32000000>; ++ rotate = <90>; ++ fps = <25>; ++ bgr; ++ buswidth = <8>; ++ dc-gpios = <&gpio 25 0>; ++ debug = <0>; ++ }; ++ ++ pitft_ts@1 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ compatible = "st,stmpe610"; ++ reg = <1>; ++ ++ spi-max-frequency = <500000>; ++ irq-gpio = <&gpio 24 0x2>; /* IRQF_TRIGGER_FALLING */ ++ interrupts = <24 2>; /* high-to-low edge triggered */ + interrupt-parent = <&gpio>; -+ interrupts = <24 2>; /* IRQ_TYPE_EDGE_FALLING */ -+ #gpio-cells = <2>; ++ interrupt-controller; + -+ sc16is750_clk: sc16is750_clk { -+ compatible = "fixed-clock"; -+ #clock-cells = <0>; -+ clock-frequency = <14745600>; ++ stmpe_touchscreen { ++ compatible = "st,stmpe-ts"; ++ st,sample-time = <4>; ++ st,mod-12b = <1>; ++ st,ref-sel = <0>; ++ st,adc-freq = <2>; ++ st,ave-ctrl = <3>; ++ st,touch-det-delay = <4>; ++ st,settling = <2>; ++ st,fraction-z = <7>; ++ st,i-drive = <0>; ++ }; ++ ++ stmpe_gpio: stmpe_gpio { ++ #gpio-cells = <2>; ++ compatible = "st,stmpe-gpio"; ++ /* ++ * only GPIO2 is wired/available ++ * and it is wired to the backlight ++ */ ++ st,norequest-mask = <0x7b>; + }; + }; + }; + }; + -+ -+ __overrides__ { -+ int_pin = <&sc16is750>,"interrupts:0"; -+ addr = <&sc16is750>,"reg:0"; ++ fragment@5 { ++ target-path = "/soc"; ++ __overlay__ { ++ backlight { ++ compatible = "gpio-backlight"; ++ gpios = <&stmpe_gpio 2 0>; ++ default-on; ++ }; ++ }; + }; + ++ __overrides__ { ++ speed = <&pitft>,"spi-max-frequency:0"; ++ rotate = <&pitft>,"rotate:0"; ++ fps = <&pitft>,"fps:0"; ++ debug = <&pitft>,"debug:0"; ++ }; +}; +diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig +index aa708638cc6f3bceb189c2deef7307252901291f..aa57989600923198d4bfb913c4d2e8a565a93e07 100644 +--- a/arch/arm/configs/bcm2709_defconfig ++++ b/arch/arm/configs/bcm2709_defconfig +@@ -1111,6 +1111,7 @@ CONFIG_FB_TFT_BD663474=m + CONFIG_FB_TFT_HX8340BN=m + CONFIG_FB_TFT_HX8347D=m + CONFIG_FB_TFT_HX8353D=m ++CONFIG_FB_TFT_HX8357D=m + CONFIG_FB_TFT_ILI9163=m + CONFIG_FB_TFT_ILI9320=m + CONFIG_FB_TFT_ILI9325=m +diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig +index 952104ab6c4cd0e9d8f7bd5f2fba7a72da75424e..26fa6c2b6b6d745178e666465ba226afee701ab1 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -1117,6 +1117,7 @@ CONFIG_FB_TFT_BD663474=m + CONFIG_FB_TFT_HX8340BN=m + CONFIG_FB_TFT_HX8347D=m + CONFIG_FB_TFT_HX8353D=m ++CONFIG_FB_TFT_HX8357D=m + CONFIG_FB_TFT_ILI9163=m + CONFIG_FB_TFT_ILI9320=m + CONFIG_FB_TFT_ILI9325=m -From 3f94e5591f0826a9ffee988fb31d440ae1f5cf40 Mon Sep 17 00:00:00 2001 +From 2fd1010866b91d68aa42e0a81d3e8739b1902a34 Mon Sep 17 00:00:00 2001 From: Phil Elwell -Date: Mon, 22 Aug 2016 11:56:04 +0100 -Subject: [PATCH 143/160] overlays: Clarify gpio-poweroff semantics in README +Date: Mon, 10 Oct 2016 15:06:20 +0100 +Subject: [PATCH 130/132] BCM270X_DT: Update CM3 to use sdhost interface -1) GPIO pin is signalled on poweroff, not reboot. -2) In RPi kernels, halt is equivalent to poweroff. - -See: https://github.com/raspberrypi/linux/issues/1600 --- - arch/arm/boot/dts/overlays/README | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) -diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index f93b8ffd40157da92685095f75ea67943153a16b..7a98f105eb94b95f0f592cad5dd20dd63342dd38 100644 ---- a/arch/arm/boot/dts/overlays/README -+++ b/arch/arm/boot/dts/overlays/README -@@ -340,7 +340,7 @@ Params: gpio_pin Input pin number. Default is 18. +diff --git a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts +index b5a5ae7747455438f8eabd28e8c11c6aeb0c1ecc..d13e3d4dac4e198c8cac451e3f64ef687e2ace1b 100644 +--- a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts ++++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts +@@ -8,10 +8,9 @@ + }; + &gpio { +- +- mmc_pins: mmc_pins { ++ sdhost_pins: sdhost_pins { + brcm,pins = <48 49 50 51 52 53>; +- brcm,function = <7>; /* alt3 */ ++ brcm,function = <4>; /* alt0 */ + brcm,pull = <0 2 2 2 2 2>; + }; - Name: gpio-poweroff --Info: Drives a GPIO high or low on reboot -+Info: Drives a GPIO high or low on poweroff (including halt) - Load: dtoverlay=gpio-poweroff,= - Params: gpiopin GPIO for signalling (default 26) - - -From 7ce087a361ffa6e2d742c74cef3f3d618441deac Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Tue, 9 Aug 2016 21:51:41 +0100 -Subject: [PATCH 144/160] overlays: Add assert_falling_edge to pps-gpio overlay - -See: https://github.com/raspberrypi/linux/issues/1590 ---- - arch/arm/boot/dts/overlays/README | 2 ++ - arch/arm/boot/dts/overlays/pps-gpio-overlay.dts | 1 + - 2 files changed, 3 insertions(+) - -diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index 7a98f105eb94b95f0f592cad5dd20dd63342dd38..37f00748a0a240e25c06e621915683f88962d3be 100644 ---- a/arch/arm/boot/dts/overlays/README -+++ b/arch/arm/boot/dts/overlays/README -@@ -824,6 +824,8 @@ Name: pps-gpio - Info: Configures the pps-gpio (pulse-per-second time signal via GPIO). - Load: dtoverlay=pps-gpio,= - Params: gpiopin Input GPIO (default "18") -+ assert_falling_edge When present, assert is indicated by a falling -+ edge, rather than by a rising edge - - - Name: pwm -diff --git a/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts -index 40bf0e11015f5abebd0d4139276da888d728d569..50143a4bb215807ba0a0d0562f5827fa29a04de4 100644 ---- a/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts -+++ b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts -@@ -30,5 +30,6 @@ - __overrides__ { - gpiopin = <&pps>,"gpios:4", - <&pps_pins>,"brcm,pins:0"; -+ assert_falling_edge = <&pps>,"assert-falling-edge?"; +@@ -46,9 +45,9 @@ }; }; - -From ab4748c969258a1356c375bcf0e39e3c19044af0 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Fri, 2 Sep 2016 17:21:42 +0100 -Subject: [PATCH 145/160] bcm2835-sdhost: Don't exit cmd wait loop on error - -The FAIL flag can be set in the CMD register before command processing -is complete, leading to spurious "failed to complete" errors. This has -the effect of promoting harmless CRC7 errors during CMD1 processing -into errors that can delay and even prevent booting. - -Also: -1) Convert the last KERN_ERROR message in the register dumping to - KERN_INFO. -2) Remove an unnecessary reset call from bcm2835_sdhost_add_host. - -See: https://github.com/raspberrypi/linux/pull/1492 - -Signed-off-by: Phil Elwell ---- - drivers/mmc/host/bcm2835-sdhost.c | 10 +++------- - 1 file changed, 3 insertions(+), 7 deletions(-) - -diff --git a/drivers/mmc/host/bcm2835-sdhost.c b/drivers/mmc/host/bcm2835-sdhost.c -index d7b6b5a4e31f7aaa76470d3a79ea78a643184855..22bfb340011b0c857f8eb4824eb0b656def6a006 100644 ---- a/drivers/mmc/host/bcm2835-sdhost.c -+++ b/drivers/mmc/host/bcm2835-sdhost.c -@@ -373,7 +373,7 @@ static void bcm2835_sdhost_dumpregs(struct bcm2835_host *host) - pr_info("%s: SDRSP2 0x%08x\n", - mmc_hostname(host->mmc), - bcm2835_sdhost_read(host, SDRSP2)); -- pr_err("%s: SDRSP3 0x%08x\n", -+ pr_info("%s: SDRSP3 0x%08x\n", - mmc_hostname(host->mmc), - bcm2835_sdhost_read(host, SDRSP3)); - pr_info("%s: SDHSTS 0x%08x\n", -@@ -1183,9 +1183,8 @@ static void bcm2835_sdhost_finish_command(struct bcm2835_host *host, - retries = 1; // We've already waited long enough this time - } - -- retries = host->cmd_quick_poll_retries; - for (sdcmd = bcm2835_sdhost_read(host, SDCMD); -- (sdcmd & SDCMD_NEW_FLAG) && !(sdcmd & SDCMD_FAIL_FLAG) && retries; -+ (sdcmd & SDCMD_NEW_FLAG) && retries; - retries--) { - cpu_relax(); - sdcmd = bcm2835_sdhost_read(host, SDCMD); -@@ -1208,8 +1207,7 @@ static void bcm2835_sdhost_finish_command(struct bcm2835_host *host, - usleep_range(1, 10); - spin_lock_irqsave(&host->lock, *irq_flags); - sdcmd = bcm2835_sdhost_read(host, SDCMD); -- if (!(sdcmd & SDCMD_NEW_FLAG) || -- (sdcmd & SDCMD_FAIL_FLAG)) -+ if (!(sdcmd & SDCMD_NEW_FLAG)) - break; - } - } -@@ -1892,8 +1890,6 @@ int bcm2835_sdhost_add_host(struct bcm2835_host *host) - - mmc = host->mmc; - -- bcm2835_sdhost_reset_internal(host); -- - mmc->f_max = host->max_clk; - mmc->f_min = host->max_clk / SDCDIV_MAX_CDIV; - - -From ded0f4d47f8887e84c57cd995728962e7967dc1f Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Fri, 2 Sep 2016 14:35:37 +0100 -Subject: [PATCH 146/160] BCM270X_DT: Use bcm2835-sdhost on Compute Module - -With the preceding commit: - - bcm2835-sdhost: Don't exit cmd wait loop on error - -it is safe to use the bcm2835-sdhost driver on the Compute Module. - -Signed-off-by: Phil Elwell ---- - arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi -index f07609d97225b355dd2b6981d4f1fa28d0d40950..d33d462b4090e4a4f967a37212918b9cf500bf76 100644 ---- a/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi -+++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi -@@ -23,9 +23,9 @@ - }; - -&mmc { +&sdhost { @@ -137152,933 +141206,94 @@ index f07609d97225b355dd2b6981d4f1fa28d0d40950..d33d462b4090e4a4f967a37212918b9c bus-width = <4>; status = "okay"; -From 33d222b1d9b13bce6f273ab0896916b125c673e3 Mon Sep 17 00:00:00 2001 +From 395f1c253709126a0d9743da0ca0482ef15f01ab Mon Sep 17 00:00:00 2001 From: popcornmix -Date: Wed, 7 Sep 2016 16:57:59 +0100 -Subject: [PATCH 147/160] fbmem: Ensure that parameters are properly checked - within fb_copyarea_user +Date: Tue, 11 Oct 2016 18:10:17 +0100 +Subject: [PATCH 131/132] Revert "Register the clocks early during the boot + process," +This reverts commit bcc804ce3dfd5eb4800c9dd77370da7e7913f77d. --- - drivers/video/fbdev/core/fbmem.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) + drivers/clk/bcm/clk-bcm2835.c | 17 +++-------------- + 1 file changed, 3 insertions(+), 14 deletions(-) -diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c -index 1d3b35ec8e393aac43dca0ec4566f7a7d0d8998a..7bf48e478c056fcd745026902961506d5826615d 100644 ---- a/drivers/video/fbdev/core/fbmem.c -+++ b/drivers/video/fbdev/core/fbmem.c -@@ -1090,7 +1090,13 @@ static int fb_copyarea_user(struct fb_info *info, - int ret = 0; - if (!lock_fb_info(info)) - return -ENODEV; -- if (copy->dx + copy->width > info->var.xres || -+ if (copy->dx >= info->var.xres || -+ copy->sx >= info->var.xres || -+ copy->width > info->var.xres || -+ copy->dy >= info->var.yres || -+ copy->sy >= info->var.yres || -+ copy->height > info->var.yres || -+ copy->dx + copy->width > info->var.xres || - copy->sx + copy->width > info->var.xres || - copy->dy + copy->height > info->var.yres || - copy->sy + copy->height > info->var.yres) { - -From 4ffc939ef5756d5576d67bc3d752a1c584b75d5a Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Fri, 9 Sep 2016 19:35:13 +0100 -Subject: [PATCH 148/160] config: Enabled SENSORS_INA2XX module - ---- - arch/arm/configs/bcm2709_defconfig | 1 + - arch/arm/configs/bcmrpi_defconfig | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index 76340ce6ccc43a4bb24db414b75814e4a9e10ddc..d99821f568fdd592a5d113576d099a573ee22a7e 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -647,6 +647,7 @@ CONFIG_HWMON=m - CONFIG_SENSORS_LM75=m - CONFIG_SENSORS_SHT21=m - CONFIG_SENSORS_SHTC1=m -+CONFIG_SENSORS_INA2XX=m - CONFIG_THERMAL=y - CONFIG_THERMAL_BCM2835=y - CONFIG_WATCHDOG=y -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 5535fee75c1a31c4fe014b1551af763fb2e7c289..a3155e9e6099b0894d9c9601fceaeb61412bdff3 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -638,6 +638,7 @@ CONFIG_HWMON=m - CONFIG_SENSORS_LM75=m - CONFIG_SENSORS_SHT21=m - CONFIG_SENSORS_SHTC1=m -+CONFIG_SENSORS_INA2XX=m - CONFIG_THERMAL=y - CONFIG_THERMAL_BCM2835=y - CONFIG_WATCHDOG=y - -From 3614e26dc405ea3badbb63d4e52ebf62d0dccd0e Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Mon, 12 Sep 2016 13:46:56 +0100 -Subject: [PATCH 149/160] overlays: Add dpi18 overlay (#1634) - -Add support for 18-bit DPI displays. Although the dpi24 overlay could -be used, this overlay leaves GPIOs 22-27 free for other uses. ---- - arch/arm/boot/dts/overlays/Makefile | 1 + - arch/arm/boot/dts/overlays/README | 8 +++++++ - arch/arm/boot/dts/overlays/dpi18-overlay.dts | 31 ++++++++++++++++++++++++++++ - 3 files changed, 40 insertions(+) - create mode 100644 arch/arm/boot/dts/overlays/dpi18-overlay.dts - -diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile -index 35a1673379d4fb9aa4c1028310a44b79e23ac2ce..58bd224d7b1329710ee290c2584a40df565418cc 100644 ---- a/arch/arm/boot/dts/overlays/Makefile -+++ b/arch/arm/boot/dts/overlays/Makefile -@@ -22,6 +22,7 @@ dtbo-$(RPI_DT_OVERLAYS) += audremap.dtbo - dtbo-$(RPI_DT_OVERLAYS) += bmp085_i2c-sensor.dtbo - dtbo-$(RPI_DT_OVERLAYS) += dht11.dtbo - dtbo-$(RPI_DT_OVERLAYS) += dionaudio-loco.dtbo -+dtbo-$(RPI_DT_OVERLAYS) += dpi18.dtbo - dtbo-$(RPI_DT_OVERLAYS) += dpi24.dtbo - dtbo-$(RPI_DT_OVERLAYS) += dwc-otg.dtbo - dtbo-$(RPI_DT_OVERLAYS) += dwc2.dtbo -diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index 37f00748a0a240e25c06e621915683f88962d3be..a6aa2dfaee53026459a48460ae3df409329a53d2 100644 ---- a/arch/arm/boot/dts/overlays/README -+++ b/arch/arm/boot/dts/overlays/README -@@ -283,6 +283,14 @@ Load: dtoverlay=dionaudio-loco - Params: +diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c +index cbbc8d4ddcffc797268c0ecb6477005fa14e228b..fbf616021704178a9d007219a0ea2a9f1704f0a6 100644 +--- a/drivers/clk/bcm/clk-bcm2835.c ++++ b/drivers/clk/bcm/clk-bcm2835.c +@@ -1891,15 +1891,8 @@ static int bcm2835_clk_probe(struct platform_device *pdev) + if (ret) + return ret; - -+Name: dpi18 -+Info: Overlay for a generic 18-bit DPI display -+ This uses GPIOs 0-21 (so no I2C, uart etc.), and activates the output -+ 2-3 seconds after the kernel has started. -+Load: dtoverlay=dpi18 -+Params: -+ -+ - Name: dpi24 - Info: Overlay for a generic 24-bit DPI display - This uses GPIOs 0-27 (so no I2C, uart etc.), and activates the output -diff --git a/arch/arm/boot/dts/overlays/dpi18-overlay.dts b/arch/arm/boot/dts/overlays/dpi18-overlay.dts -new file mode 100644 -index 0000000000000000000000000000000000000000..8098d5e28a71ffbc717db5c6b88305d2ba6e3175 ---- /dev/null -+++ b/arch/arm/boot/dts/overlays/dpi18-overlay.dts -@@ -0,0 +1,31 @@ -+/dts-v1/; -+/plugin/; -+ -+/{ -+ compatible = "brcm,bcm2708"; -+ -+ // There is no DPI driver module, but we need a platform device -+ // node (that doesn't already use pinctrl) to hang the pinctrl -+ // reference on - leds will do -+ -+ fragment@0 { -+ target = <&leds>; -+ __overlay__ { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&dpi18_pins>; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&gpio>; -+ __overlay__ { -+ dpi18_pins: dpi18_pins { -+ brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11 -+ 12 13 14 15 16 17 18 19 20 -+ 21>; -+ brcm,function = <6>; /* alt2 */ -+ brcm,pull = <0>; /* no pull */ -+ }; -+ }; -+ }; -+}; - -From 06e81bc3bc08c539da9963fb0f24325b7a4dbec6 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Tue, 13 Sep 2016 16:32:37 +0100 -Subject: [PATCH 150/160] brcmfmac: do not use internal roaming engine by - default - -Some evidence of curing disconnects with this disabled, so make it a default. -Can be overridden with module parameter roamoff=0 -See: http://projectable.me/optimize-my-pi-wi-fi/ ---- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c -index 3e15d64c64813513bc22202dd9e468588699abb0..4051780f64f44a5ce522babe6c371a1beb79a824 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c -@@ -69,7 +69,7 @@ static int brcmf_fcmode; - module_param_named(fcmode, brcmf_fcmode, int, 0); - MODULE_PARM_DESC(fcmode, "Mode of firmware signalled flow control"); - --static int brcmf_roamoff; -+static int brcmf_roamoff = 1; - module_param_named(roamoff, brcmf_roamoff, int, S_IRUSR); - MODULE_PARM_DESC(roamoff, "Do not use internal roaming engine"); - - -From b5622a1722cb96f12e5d684de6e5964bc8c7362d Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Thu, 18 Aug 2016 17:36:39 +0100 -Subject: [PATCH 151/160] config: Enable SERIAL_SC16IS7XX_SPI - -Previously only the I2C mode was supported. - -See: https://github.com/raspberrypi/linux/issues/1594 ---- - arch/arm/configs/bcm2709_defconfig | 1 + - arch/arm/configs/bcmrpi_defconfig | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index d99821f568fdd592a5d113576d099a573ee22a7e..b06c09fd1b094c23c82dee754070a7f97fe078b1 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -602,6 +602,7 @@ CONFIG_SERIAL_OF_PLATFORM=y - CONFIG_SERIAL_AMBA_PL011=y - CONFIG_SERIAL_AMBA_PL011_CONSOLE=y - CONFIG_SERIAL_SC16IS7XX=m -+CONFIG_SERIAL_SC16IS7XX_SPI=y - CONFIG_TTY_PRINTK=y - CONFIG_HW_RANDOM=y - CONFIG_RAW_DRIVER=y -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index a3155e9e6099b0894d9c9601fceaeb61412bdff3..0061b42f6a41e8640f19c14773333f183c95bb6a 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -594,6 +594,7 @@ CONFIG_SERIAL_OF_PLATFORM=y - CONFIG_SERIAL_AMBA_PL011=y - CONFIG_SERIAL_AMBA_PL011_CONSOLE=y - CONFIG_SERIAL_SC16IS7XX=m -+CONFIG_SERIAL_SC16IS7XX_SPI=y - CONFIG_TTY_PRINTK=y - CONFIG_HW_RANDOM=y - CONFIG_RAW_DRIVER=y - -From 6657bdf2e759145edd87186797e65ed209fa8415 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Tue, 23 Aug 2016 14:07:29 +0100 -Subject: [PATCH 152/160] config: Add CONFIG_IPVLAN module - ---- - arch/arm/configs/bcm2709_defconfig | 1 + - arch/arm/configs/bcmrpi_defconfig | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index b06c09fd1b094c23c82dee754070a7f97fe078b1..f15f2aea6e000d5a3f416371ce7477723b9007c9 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -449,6 +449,7 @@ CONFIG_BONDING=m - CONFIG_DUMMY=m - CONFIG_IFB=m - CONFIG_MACVLAN=m -+CONFIG_IPVLAN=m - CONFIG_NETCONSOLE=m - CONFIG_TUN=m - CONFIG_VETH=m -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 0061b42f6a41e8640f19c14773333f183c95bb6a..b726e62c7beff9b571bf7ab76101609daa418122 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -441,6 +441,7 @@ CONFIG_BONDING=m - CONFIG_DUMMY=m - CONFIG_IFB=m - CONFIG_MACVLAN=m -+CONFIG_IPVLAN=m - CONFIG_NETCONSOLE=m - CONFIG_TUN=m - CONFIG_VETH=m - -From ab6c5a0bd794968eee456a0fe694c6cac1e4486c Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Tue, 23 Aug 2016 14:08:55 +0100 -Subject: [PATCH 153/160] config: Add CONFIG_VXLAN module - ---- - arch/arm/configs/bcm2709_defconfig | 1 + - arch/arm/configs/bcmrpi_defconfig | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index f15f2aea6e000d5a3f416371ce7477723b9007c9..046e272a568a2e0ea7a1437c70d8ddac094d7172 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -450,6 +450,7 @@ CONFIG_DUMMY=m - CONFIG_IFB=m - CONFIG_MACVLAN=m - CONFIG_IPVLAN=m -+CONFIG_VXLAN=m - CONFIG_NETCONSOLE=m - CONFIG_TUN=m - CONFIG_VETH=m -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index b726e62c7beff9b571bf7ab76101609daa418122..2c5d3ec8ccade1c55997a90aeaec31d126f3a22c 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -442,6 +442,7 @@ CONFIG_DUMMY=m - CONFIG_IFB=m - CONFIG_MACVLAN=m - CONFIG_IPVLAN=m -+CONFIG_VXLAN=m - CONFIG_NETCONSOLE=m - CONFIG_TUN=m - CONFIG_VETH=m - -From 52e4995cc1e32e6ff505fec57422df359d88539c Mon Sep 17 00:00:00 2001 -From: Jools Wills -Date: Mon, 8 Aug 2016 11:04:29 +0100 -Subject: [PATCH 154/160] enable gembird joypad support - ---- - arch/arm/configs/bcm2709_defconfig | 1 + - arch/arm/configs/bcmrpi_defconfig | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index 046e272a568a2e0ea7a1437c70d8ddac094d7172..7f3c79bcbdec1aed80d83efb3c48644cf93dffd8 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -897,6 +897,7 @@ CONFIG_HID_EMS_FF=m - CONFIG_HID_ELECOM=m - CONFIG_HID_ELO=m - CONFIG_HID_EZKEY=m -+CONFIG_HID_GEMBIRD=m - CONFIG_HID_HOLTEK=m - CONFIG_HID_KEYTOUCH=m - CONFIG_HID_KYE=m -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 2c5d3ec8ccade1c55997a90aeaec31d126f3a22c..3abe26f65bc5d9406589cc4112d922351fc260c6 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -888,6 +888,7 @@ CONFIG_HID_EMS_FF=m - CONFIG_HID_ELECOM=m - CONFIG_HID_ELO=m - CONFIG_HID_EZKEY=m -+CONFIG_HID_GEMBIRD=m - CONFIG_HID_HOLTEK=m - CONFIG_HID_KEYTOUCH=m - CONFIG_HID_KYE=m - -From a62f6971f96f566e9e13d1f670a682371da109ac Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Thu, 15 Sep 2016 11:36:26 +0100 -Subject: [PATCH 155/160] config: Remove CONFIG_TRIM_UNUSED_KSYMS - ---- - arch/arm/configs/bcm2709_defconfig | 1 - - arch/arm/configs/bcmrpi_defconfig | 1 - - 2 files changed, 2 deletions(-) - -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index 7f3c79bcbdec1aed80d83efb3c48644cf93dffd8..1fbe104b5d46dce196abb750e65467395eb63dea 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -35,7 +35,6 @@ CONFIG_MODULES=y - CONFIG_MODULE_UNLOAD=y - CONFIG_MODVERSIONS=y - CONFIG_MODULE_SRCVERSION_ALL=y --CONFIG_TRIM_UNUSED_KSYMS=y - CONFIG_BLK_DEV_THROTTLING=y - CONFIG_PARTITION_ADVANCED=y - CONFIG_MAC_PARTITION=y -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 3abe26f65bc5d9406589cc4112d922351fc260c6..b2372c4f366d36a52caa1179a095d6a3e2eeb151 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -34,7 +34,6 @@ CONFIG_MODULES=y - CONFIG_MODULE_UNLOAD=y - CONFIG_MODVERSIONS=y - CONFIG_MODULE_SRCVERSION_ALL=y --CONFIG_TRIM_UNUSED_KSYMS=y - CONFIG_BLK_DEV_THROTTLING=y - CONFIG_PARTITION_ADVANCED=y - CONFIG_MAC_PARTITION=y - -From 094ed6946aac19dee57766766e24b17cec92815d Mon Sep 17 00:00:00 2001 -From: Clive Messer -Date: Mon, 19 Sep 2016 14:01:04 +0100 -Subject: [PATCH 156/160] Allo Piano DAC boards: Initial 2 channel (stereo) - support (#1645) - -Add initial 2 channel (stereo) support for Allo Piano DAC (2.0/2.1) boards, -using allo-piano-dac-pcm512x-audio overlay and allo-piano-dac ALSA ASoC -machine driver. - -NB. The initial support is 2 channel (stereo) ONLY! -(The Piano DAC 2.1 will only support 2 channel (stereo) left/right output, - pending an update to the upstream pcm512x codec driver, which will have - to be submitted via upstream. With the initial downstream support, - provided by this patch, the Piano DAC 2.1 subwoofer outputs will - not function.) - -Signed-off-by: Baswaraj K -Signed-off-by: Clive Messer -Tested-by: Clive Messer ---- - arch/arm/boot/dts/overlays/Makefile | 1 + - arch/arm/boot/dts/overlays/README | 20 +++ - .../allo-piano-dac-pcm512x-audio-overlay.dts | 54 ++++++++ - arch/arm/configs/bcm2709_defconfig | 1 + - arch/arm/configs/bcmrpi_defconfig | 1 + - sound/soc/bcm/Kconfig | 7 + - sound/soc/bcm/Makefile | 2 + - sound/soc/bcm/allo-piano-dac.c | 144 +++++++++++++++++++++ - 8 files changed, 230 insertions(+) - create mode 100644 arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts - create mode 100644 sound/soc/bcm/allo-piano-dac.c - -diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile -index 58bd224d7b1329710ee290c2584a40df565418cc..b6ed1a3c06a7a67d1dd79bb7e55421d8eccba492 100644 ---- a/arch/arm/boot/dts/overlays/Makefile -+++ b/arch/arm/boot/dts/overlays/Makefile -@@ -16,6 +16,7 @@ dtbo-$(RPI_DT_OVERLAYS) += adau1977-adc.dtbo - dtbo-$(RPI_DT_OVERLAYS) += ads1015.dtbo - dtbo-$(RPI_DT_OVERLAYS) += ads7846.dtbo - dtbo-$(RPI_DT_OVERLAYS) += akkordion-iqdacplus.dtbo -+dtbo-$(RPI_DT_OVERLAYS) += allo-piano-dac-pcm512x-audio.dtbo - dtbo-$(RPI_DT_OVERLAYS) += at86rf233.dtbo - dtbo-$(RPI_DT_OVERLAYS) += audioinjector-wm8731-audio.dtbo - dtbo-$(RPI_DT_OVERLAYS) += audremap.dtbo -diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README -index a6aa2dfaee53026459a48460ae3df409329a53d2..1ebb94c005d68b17792f95bd9792a08679298b26 100644 ---- a/arch/arm/boot/dts/overlays/README -+++ b/arch/arm/boot/dts/overlays/README -@@ -235,6 +235,26 @@ Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec - that does not result in clipping/distortion!) - - -+Name: allo-piano-dac-pcm512x-audio -+Info: Configures the Allo Piano DAC (2.0/2.1) audio cards. -+ (NB. This initial support is for 2.0 channel audio ONLY! ie. stereo. -+ The subwoofer outputs on the Piano 2.1 are not currently supported!) -+Load: dtoverlay=allo-piano-dac-pcm512x-audio, -+Params: 24db_digital_gain Allow gain to be applied via the PCM512x codec -+ Digital volume control. -+ (The default behaviour is that the Digital -+ volume control is limited to a maximum of -+ 0dB. ie. it can attenuate but not provide -+ gain. For most users, this will be desired -+ as it will prevent clipping. By appending -+ the 24db_digital_gain parameter, the Digital -+ volume control will allow up to 24dB of -+ gain. If this parameter is enabled, it is the -+ responsibility of the user to ensure that -+ the Digital volume control is set to a value -+ that does not result in clipping/distortion!) -+ -+ - Name: at86rf233 - Info: Configures the Atmel AT86RF233 802.15.4 low-power WPAN transceiver, - connected to spi0.0 -diff --git a/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts -new file mode 100644 -index 0000000000000000000000000000000000000000..a5468d850a911cd509365cf25f8ffa6ad071b90a ---- /dev/null -+++ b/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts -@@ -0,0 +1,54 @@ -+/* -+ * Definitions for Allo Piano DAC (2.0/2.1) boards -+ * -+ * NB. The Piano DAC 2.1 board contains 2x TI PCM5142 DAC's. One DAC is stereo -+ * (left/right) and the other provides a subwoofer output, using DSP on the -+ * chip for digital high/low pass crossover. -+ * The initial support for this hardware, that doesn't require any codec driver -+ * modifications, uses only one DAC chip for stereo (left/right) output, the -+ * chip with 0x4c slave address. The other chip at 0x4d is currently ignored! -+ */ -+ -+/dts-v1/; -+/plugin/; -+ -+/ { -+ compatible = "brcm,bcm2708"; -+ -+ fragment@0 { -+ target = <&i2s>; -+ __overlay__ { -+ status = "okay"; -+ }; -+ }; -+ -+ fragment@1 { -+ target = <&i2c1>; -+ __overlay__ { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "okay"; -+ -+ pcm5142@4c { -+ #sound-dai-cells = <0>; -+ compatible = "ti,pcm5142"; -+ reg = <0x4c>; -+ status = "okay"; -+ }; -+ }; -+ }; -+ -+ fragment@2 { -+ target = <&sound>; -+ piano_dac: __overlay__ { -+ compatible = "allo,piano-dac"; -+ i2s-controller = <&i2s>; -+ status = "okay"; -+ }; -+ }; -+ -+ __overrides__ { -+ 24db_digital_gain = -+ <&piano_dac>,"allo,24db_digital_gain?"; -+ }; -+}; -diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig -index 1fbe104b5d46dce196abb750e65467395eb63dea..dc12da10db38efb54628119f0712ed9bc9082665 100644 ---- a/arch/arm/configs/bcm2709_defconfig -+++ b/arch/arm/configs/bcm2709_defconfig -@@ -877,6 +877,7 @@ CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m - CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m - CONFIG_SND_DIGIDAC1_SOUNDCARD=m - CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m -+CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC=m - CONFIG_SND_SOC_ADAU1701=m - CONFIG_SND_SOC_WM8804_I2C=m - CONFIG_SND_SIMPLE_CARD=m -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index b2372c4f366d36a52caa1179a095d6a3e2eeb151..36215a0252a5f6305097319846f13118309b7a21 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -868,6 +868,7 @@ CONFIG_SND_BCM2708_SOC_ADAU1977_ADC=m - CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD=m - CONFIG_SND_DIGIDAC1_SOUNDCARD=m - CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO=m -+CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC=m - CONFIG_SND_SOC_ADAU1701=m - CONFIG_SND_SOC_WM8804_I2C=m - CONFIG_SND_SIMPLE_CARD=m -diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig -index 8873fd8adce1d17cb543251f5cdc6ac8f4bf523d..23eefb56fdc736660ad682217ce77b4ea1725d15 100644 ---- a/sound/soc/bcm/Kconfig -+++ b/sound/soc/bcm/Kconfig -@@ -114,3 +114,10 @@ config SND_BCM2708_SOC_DIONAUDIO_LOCO - select SND_SOC_PCM5102a - help - Say Y or M if you want to add support for Dion Audio LOCO. -+ -+config SND_BCM2708_SOC_ALLO_PIANO_DAC -+ tristate "Support for Allo Piano DAC" -+ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S -+ select SND_SOC_PCM512x_I2C -+ help -+ Say Y or M if you want to add support for Allo Piano DAC. -diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile -index 17f70f951322239696623c2347e5d846bbef2369..a2b642f10ee676a2c65abf1bd0ea1ba5a01ebda1 100644 ---- a/sound/soc/bcm/Makefile -+++ b/sound/soc/bcm/Makefile -@@ -19,6 +19,7 @@ snd-soc-raspidac3-objs := raspidac3.o - snd-soc-audioinjector-pi-soundcard-objs := audioinjector-pi-soundcard.o - snd-soc-digidac1-soundcard-objs := digidac1-soundcard.o - snd-soc-dionaudio-loco-objs := dionaudio_loco.o -+snd-soc-allo-piano-dac-objs := allo-piano-dac.o - - obj-$(CONFIG_SND_BCM2708_SOC_ADAU1977_ADC) += snd-soc-adau1977-adc.o - obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o -@@ -35,3 +36,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o - obj-$(CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD) += snd-soc-audioinjector-pi-soundcard.o - obj-$(CONFIG_SND_DIGIDAC1_SOUNDCARD) += snd-soc-digidac1-soundcard.o - obj-$(CONFIG_SND_BCM2708_SOC_DIONAUDIO_LOCO) += snd-soc-dionaudio-loco.o -+obj-$(CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC) += snd-soc-allo-piano-dac.o -diff --git a/sound/soc/bcm/allo-piano-dac.c b/sound/soc/bcm/allo-piano-dac.c -new file mode 100644 -index 0000000000000000000000000000000000000000..8e8e62e5a36a279b425ed4655cfbac99ecd7e4cf ---- /dev/null -+++ b/sound/soc/bcm/allo-piano-dac.c -@@ -0,0 +1,144 @@ -+/* -+ * ALSA ASoC Machine Driver for Allo Piano DAC -+ * -+ * Author: Baswaraj K -+ * Copyright 2016 -+ * based on code by Daniel Matuschek -+ * based on code by Florian Meier -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * version 2 as published by the Free Software Foundation. -+ * -+ * This program is distributed in the hope that it will be useful, but -+ * WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * General Public License for more details. -+ */ -+ -+#include -+#include -+ -+#include -+#include -+#include -+#include -+ -+static bool digital_gain_0db_limit = true; -+ -+static int snd_allo_piano_dac_init(struct snd_soc_pcm_runtime *rtd) -+{ -+ if (digital_gain_0db_limit) { -+ int ret; -+ struct snd_soc_card *card = rtd->card; -+ -+ ret = snd_soc_limit_volume(card, "Digital Playback Volume", -+ 207); -+ if (ret < 0) -+ dev_warn(card->dev, "Failed to set volume limit: %d\n", -+ ret); -+ } -+ -+ return 0; -+} -+ -+static int snd_allo_piano_dac_hw_params( -+ struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) -+{ -+ struct snd_soc_pcm_runtime *rtd = substream->private_data; -+ struct snd_soc_dai *cpu_dai = rtd->cpu_dai; -+ -+ unsigned int sample_bits = -+ snd_pcm_format_physical_width(params_format(params)); -+ -+ return snd_soc_dai_set_bclk_ratio(cpu_dai, sample_bits * 2); -+} -+ -+/* machine stream operations */ -+static struct snd_soc_ops snd_allo_piano_dac_ops = { -+ .hw_params = snd_allo_piano_dac_hw_params, -+}; -+ -+static struct snd_soc_dai_link snd_allo_piano_dac_dai[] = { -+{ -+ .name = "Piano DAC", -+ .stream_name = "Piano DAC HiFi", -+ .cpu_dai_name = "bcm2708-i2s.0", -+ .codec_dai_name = "pcm512x-hifi", -+ .platform_name = "bcm2708-i2s.0", -+ .codec_name = "pcm512x.1-004c", -+ .dai_fmt = SND_SOC_DAIFMT_I2S | -+ SND_SOC_DAIFMT_NB_NF | -+ SND_SOC_DAIFMT_CBS_CFS, -+ .ops = &snd_allo_piano_dac_ops, -+ .init = snd_allo_piano_dac_init, -+}, -+}; -+ -+/* audio machine driver */ -+static struct snd_soc_card snd_allo_piano_dac = { -+ .name = "PianoDAC", -+ .owner = THIS_MODULE, -+ .dai_link = snd_allo_piano_dac_dai, -+ .num_links = ARRAY_SIZE(snd_allo_piano_dac_dai), -+}; -+ -+static int snd_allo_piano_dac_probe(struct platform_device *pdev) -+{ -+ int ret = 0; -+ -+ snd_allo_piano_dac.dev = &pdev->dev; -+ -+ if (pdev->dev.of_node) { -+ struct device_node *i2s_node; -+ struct snd_soc_dai_link *dai; -+ -+ dai = &snd_allo_piano_dac_dai[0]; -+ i2s_node = of_parse_phandle(pdev->dev.of_node, -+ "i2s-controller", 0); -+ -+ if (i2s_node) { -+ dai->cpu_dai_name = NULL; -+ dai->cpu_of_node = i2s_node; -+ dai->platform_name = NULL; -+ dai->platform_of_node = i2s_node; -+ } -+ -+ digital_gain_0db_limit = !of_property_read_bool( -+ pdev->dev.of_node, "allo,24db_digital_gain"); -+ } -+ -+ ret = snd_soc_register_card(&snd_allo_piano_dac); -+ if (ret) -+ dev_err(&pdev->dev, -+ "snd_soc_register_card() failed: %d\n", ret); -+ -+ return ret; -+} -+ -+static int snd_allo_piano_dac_remove(struct platform_device *pdev) -+{ -+ return snd_soc_unregister_card(&snd_allo_piano_dac); -+} -+ -+static const struct of_device_id snd_allo_piano_dac_of_match[] = { -+ { .compatible = "allo,piano-dac", }, -+ { /* sentinel */ }, -+}; -+MODULE_DEVICE_TABLE(of, snd_allo_piano_dac_of_match); -+ -+static struct platform_driver snd_allo_piano_dac_driver = { -+ .driver = { -+ .name = "snd-allo-piano-dac", -+ .owner = THIS_MODULE, -+ .of_match_table = snd_allo_piano_dac_of_match, -+ }, -+ .probe = snd_allo_piano_dac_probe, -+ .remove = snd_allo_piano_dac_remove, -+}; -+ -+module_platform_driver(snd_allo_piano_dac_driver); -+ -+MODULE_AUTHOR("Baswaraj K "); -+MODULE_DESCRIPTION("ALSA ASoC Machine Driver for Allo Piano DAC"); -+MODULE_LICENSE("GPL v2"); - -From c71527dea3b7635e7975232adad862d74bef7366 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Mon, 19 Sep 2016 17:16:09 +0100 -Subject: [PATCH 157/160] overlays: adjust overlays for absent pwm_clk - -Clocks are now managed by cprman, so pwm_clk no longer exists. - -Signed-off-by: Phil Elwell ---- - arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts | 12 +++--------- - arch/arm/boot/dts/overlays/pwm-overlay.dts | 12 +++--------- - 2 files changed, 6 insertions(+), 18 deletions(-) - -diff --git a/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts -index 18e4e4fa9465c87eb96c8d712a9967c4805c7176..abdeddd0f2c873e2b1fffcf6f2b838ee0123768f 100644 ---- a/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts -+++ b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts -@@ -29,25 +29,19 @@ N.B.: - - fragment@1 { - target = <&pwm>; -- __overlay__ { -+ frag1: __overlay__ { - pinctrl-names = "default"; - pinctrl-0 = <&pwm_pins>; -+ assigned-clock-rates = <100000000>; - status = "okay"; - }; - }; - -- fragment@2 { -- target = <&clk_pwm>; -- frag2: __overlay__ { -- clock-frequency = <100000000>; -- }; -- }; +- ret = of_clk_add_provider(dev->of_node, of_clk_src_onecell_get, +- &cprman->onecell); +- if (ret) +- return ret; - - __overrides__ { - pin = <&pwm_pins>,"brcm,pins:0"; - pin2 = <&pwm_pins>,"brcm,pins:4"; - func = <&pwm_pins>,"brcm,function:0"; - func2 = <&pwm_pins>,"brcm,function:4"; -- clock = <&frag2>,"clock-frequency:0"; -+ clock = <&frag1>,"assigned-clock-rates:0"; - }; - }; -diff --git a/arch/arm/boot/dts/overlays/pwm-overlay.dts b/arch/arm/boot/dts/overlays/pwm-overlay.dts -index bf030a6d1545448faf5e7992a0dc5c505522433e..27809e8dc74660a8e922a1aff1bb2ca7186e411c 100644 ---- a/arch/arm/boot/dts/overlays/pwm-overlay.dts -+++ b/arch/arm/boot/dts/overlays/pwm-overlay.dts -@@ -27,23 +27,17 @@ N.B.: - - fragment@1 { - target = <&pwm>; -- __overlay__ { -+ frag1: __overlay__ { - pinctrl-names = "default"; - pinctrl-0 = <&pwm_pins>; -+ assigned-clock-rates = <100000000>; - status = "okay"; - }; - }; - -- fragment@2 { -- target = <&clk_pwm>; -- frag2: __overlay__ { -- clock-frequency = <100000000>; -- }; -- }; +- /* note that we have registered all the clocks */ +- dev_dbg(dev, "registered %d clocks\n", asize); - - __overrides__ { - pin = <&pwm_pins>,"brcm,pins:0"; - func = <&pwm_pins>,"brcm,function:0"; -- clock = <&frag2>,"clock-frequency:0"; -+ clock = <&frag1>,"assigned-clock-rates:0"; - }; - }; - -From 8ed93b25fa736c156dd36ecc0fc3bf8ba7001a49 Mon Sep 17 00:00:00 2001 -From: Blogs14 -Date: Fri, 23 Sep 2016 11:02:56 +0100 -Subject: [PATCH 158/160] Correct typos in spi-gpio35-39-overlay.dts (#1651) - -bcrm,pins corrected to brcm,pins ---- - arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts -index 9648063d5963f2f6ec8f31038f3af5820a8135a6..49803b309f8643385a3c97f6cdd2015f863d2d34 100644 ---- a/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts -+++ b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts -@@ -18,14 +18,14 @@ - fragment@1 { - target = <&spi0_cs_pins>; - __overlay__ { -- bcrm,pins = <36 35>; -+ brcm,pins = <36 35>; - }; - }; +- return 0; ++ return of_clk_add_provider(dev->of_node, of_clk_src_onecell_get, ++ &cprman->onecell); + } - fragment@2 { - target = <&spi0_pins>; - __overlay__ { -- bcrm,pins = <37 38 39>; -+ brcm,pins = <37 38 39>; - }; - }; + static const struct of_device_id bcm2835_clk_of_match[] = { +@@ -1916,11 +1909,7 @@ static struct platform_driver bcm2835_clk_driver = { + .probe = bcm2835_clk_probe, }; + +-static int __init __bcm2835_clk_driver_init(void) +-{ +- return platform_driver_register(&bcm2835_clk_driver); +-} +-core_initcall(__bcm2835_clk_driver_init); ++builtin_platform_driver(bcm2835_clk_driver); + + MODULE_AUTHOR("Eric Anholt "); + MODULE_DESCRIPTION("BCM2835 clock driver"); -From 7c0a61084c55fc7bebcc992ec302b202617fabff Mon Sep 17 00:00:00 2001 +From 1556abe256ec0a9e34cae5ae0a4e2e660aad1cae Mon Sep 17 00:00:00 2001 From: Phil Elwell -Date: Wed, 31 Aug 2016 17:10:09 +0100 -Subject: [PATCH 159/160] brcmfmac: Change stop_ap sequence - -Patch from Broadcom/Cypress to resolve a customer error - -Signed-off-by: Phil Elwell ---- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) - -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -index 4a9a636d85b29eb379fa477dfbc7af80ec380dab..d859202156e7d877eb3d383c7a9386d6d188cba4 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -4663,12 +4663,15 @@ static int brcmf_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev) - err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_DOWN, 1); - if (err < 0) - brcmf_err("BRCMF_C_DOWN error %d\n", err); -- err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_AP, 0); -- if (err < 0) -- brcmf_err("setting AP mode failed %d\n", err); -+ - err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_INFRA, 0); - if (err < 0) - brcmf_err("setting INFRA mode failed %d\n", err); -+ -+ err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_AP, 0); -+ if (err < 0) -+ brcmf_err("setting AP mode failed %d\n", err); -+ - if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS)) - brcmf_fil_iovar_int_set(ifp, "mbss", 0); - err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_REGULATORY, - -From 4ae95a6ee577065dbab1cae66ba1537de0b7a169 Mon Sep 17 00:00:00 2001 -From: Eric Anholt -Date: Thu, 15 Sep 2016 17:52:17 +0100 -Subject: [PATCH 160/160] drm/vc4: Enable limited range RGB output with CEA - modes. +Date: Wed, 12 Oct 2016 15:10:14 +0100 +Subject: [PATCH 132/132] mmc: info (not err) msg on clock probe deferral --- - drivers/gpu/drm/vc4/vc4_hdmi.c | 28 ++++++++++++++++++++++++++-- - drivers/gpu/drm/vc4/vc4_regs.h | 9 ++++++++- - 2 files changed, 34 insertions(+), 3 deletions(-) + drivers/mmc/host/bcm2835-mmc.c | 5 ++++- + drivers/mmc/host/bcm2835-sdhost.c | 5 ++++- + 2 files changed, 8 insertions(+), 2 deletions(-) -diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c -index ed9c5274d06a215331aee44da1f7214a0e1f6e28..5cf6ecbe8f6e1304d77678fc05a7a6fbde63523a 100644 ---- a/drivers/gpu/drm/vc4/vc4_hdmi.c -+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c -@@ -284,6 +284,7 @@ static void vc4_hdmi_encoder_mode_set(struct drm_encoder *encoder, - struct drm_display_mode *unadjusted_mode, - struct drm_display_mode *mode) - { -+ struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder); - struct drm_device *dev = encoder->dev; - struct vc4_dev *vc4 = to_vc4_dev(dev); - bool debug_dump_regs = false; -@@ -299,6 +300,7 @@ static void vc4_hdmi_encoder_mode_set(struct drm_encoder *encoder, - u32 vertb = (VC4_SET_FIELD(0, VC4_HDMI_VERTB_VSPO) | - VC4_SET_FIELD(mode->vtotal - mode->vsync_end, - VC4_HDMI_VERTB_VBP)); -+ u32 csc_ctl; +diff --git a/drivers/mmc/host/bcm2835-mmc.c b/drivers/mmc/host/bcm2835-mmc.c +index ceb37930e167f47c9c848e8de757ad098eec9a19..4fe8d1fe44578fbefcd48f8c327ba3d03f3d0a2a 100644 +--- a/drivers/mmc/host/bcm2835-mmc.c ++++ b/drivers/mmc/host/bcm2835-mmc.c +@@ -1459,8 +1459,11 @@ static int bcm2835_mmc_probe(struct platform_device *pdev) + #endif + clk = devm_clk_get(dev, NULL); + if (IS_ERR(clk)) { +- dev_err(dev, "could not get clk\n"); + ret = PTR_ERR(clk); ++ if (ret == -EPROBE_DEFER) ++ dev_info(dev, "could not get clk, deferring probe\n"); ++ else ++ dev_err(dev, "could not get clk\n"); + goto err; + } - if (debug_dump_regs) { - DRM_INFO("HDMI regs before:\n"); -@@ -337,9 +339,31 @@ static void vc4_hdmi_encoder_mode_set(struct drm_encoder *encoder, - (vsync_pos ? 0 : VC4_HD_VID_CTL_VSYNC_LOW) | - (hsync_pos ? 0 : VC4_HD_VID_CTL_HSYNC_LOW)); +diff --git a/drivers/mmc/host/bcm2835-sdhost.c b/drivers/mmc/host/bcm2835-sdhost.c +index 23dea422182534e248435aeaee3ecb5da69c0d33..9e55d5ac08b5809c40fe391ae6e685fdb4d62df7 100644 +--- a/drivers/mmc/host/bcm2835-sdhost.c ++++ b/drivers/mmc/host/bcm2835-sdhost.c +@@ -2089,8 +2089,11 @@ static int bcm2835_sdhost_probe(struct platform_device *pdev) -+ csc_ctl = VC4_SET_FIELD(VC4_HD_CSC_CTL_ORDER_BGR, -+ VC4_HD_CSC_CTL_ORDER); -+ -+ if (vc4_encoder->hdmi_monitor && drm_match_cea_mode(mode) != 0) { -+ /* Enable limited range RGB output. This matrix is: -+ * [ 0 0 0.8594 16] -+ * [ 0 0.8594 0 16] -+ * [ 0.8594 0 0 16] -+ * [ 0 0 0 1] -+ */ -+ csc_ctl |= VC4_HD_CSC_CTL_ENABLE; -+ csc_ctl |= VC4_HD_CSC_CTL_RGB2YCC; -+ csc_ctl |= VC4_SET_FIELD(VC4_HD_CSC_CTL_MODE_CUSTOM, -+ VC4_HD_CSC_CTL_MODE); -+ -+ HD_WRITE(VC4_HD_CSC_12_11, (0x000 << 16) | 0x000); -+ HD_WRITE(VC4_HD_CSC_14_13, (0x100 << 16) | 0x6e0); -+ HD_WRITE(VC4_HD_CSC_22_21, (0x6e0 << 16) | 0x000); -+ HD_WRITE(VC4_HD_CSC_24_23, (0x100 << 16) | 0x000); -+ HD_WRITE(VC4_HD_CSC_32_31, (0x000 << 16) | 0x6e0); -+ HD_WRITE(VC4_HD_CSC_34_33, (0x100 << 16) | 0x000); -+ } -+ - /* The RGB order applies even when CSC is disabled. */ -- HD_WRITE(VC4_HD_CSC_CTL, VC4_SET_FIELD(VC4_HD_CSC_CTL_ORDER_BGR, -- VC4_HD_CSC_CTL_ORDER)); -+ HD_WRITE(VC4_HD_CSC_CTL, csc_ctl); + clk = devm_clk_get(dev, NULL); + if (IS_ERR(clk)) { +- dev_err(dev, "could not get clk\n"); + ret = PTR_ERR(clk); ++ if (ret == -EPROBE_DEFER) ++ dev_info(dev, "could not get clk, deferring probe\n"); ++ else ++ dev_err(dev, "could not get clk\n"); + goto err; + } - HDMI_WRITE(VC4_HDMI_FIFO_CTL, VC4_HDMI_FIFO_CTL_MASTER_SLAVE_N); - -diff --git a/drivers/gpu/drm/vc4/vc4_regs.h b/drivers/gpu/drm/vc4/vc4_regs.h -index f99eece4cc97200ba664514dc26941cb6879e77d..6d3787739aae39c9f982acb3545e9ce39412a1f5 100644 ---- a/drivers/gpu/drm/vc4/vc4_regs.h -+++ b/drivers/gpu/drm/vc4/vc4_regs.h -@@ -508,10 +508,17 @@ - # define VC4_HD_CSC_CTL_MODE_SHIFT 2 - # define VC4_HD_CSC_CTL_MODE_RGB_TO_SD_YPRPB 0 - # define VC4_HD_CSC_CTL_MODE_RGB_TO_HD_YPRPB 1 --# define VC4_HD_CSC_CTL_MODE_CUSTOM 2 -+# define VC4_HD_CSC_CTL_MODE_CUSTOM 3 - # define VC4_HD_CSC_CTL_RGB2YCC BIT(1) - # define VC4_HD_CSC_CTL_ENABLE BIT(0) - -+#define VC4_HD_CSC_12_11 0x044 -+#define VC4_HD_CSC_14_13 0x048 -+#define VC4_HD_CSC_22_21 0x04c -+#define VC4_HD_CSC_24_23 0x050 -+#define VC4_HD_CSC_32_31 0x054 -+#define VC4_HD_CSC_34_33 0x058 -+ - #define VC4_HD_FRAME_COUNT 0x068 - - /* HVS display list information. */ diff --git a/projects/Virtual/linux/linux.x86_64.conf b/projects/Virtual/linux/linux.x86_64.conf index f7c317961f..e7937500dd 100644 --- a/projects/Virtual/linux/linux.x86_64.conf +++ b/projects/Virtual/linux/linux.x86_64.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 4.7.4 Kernel Configuration +# Linux/x86_64 4.8.1 Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y @@ -38,7 +38,6 @@ CONFIG_AUDIT_ARCH=y CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_X86_64_SMP=y -CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_FIX_EARLYCON_MEM=y CONFIG_DEBUG_RODATA=y @@ -234,6 +233,7 @@ CONFIG_SLUB_DEBUG=y # CONFIG_SLAB is not set CONFIG_SLUB=y # CONFIG_SLOB is not set +# CONFIG_SLAB_FREELIST_RANDOM is not set CONFIG_SLUB_CPU_PARTIAL=y # CONFIG_SYSTEM_DATA_VERIFICATION is not set # CONFIG_PROFILING is not set @@ -274,11 +274,14 @@ CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y CONFIG_HAVE_ARCH_SECCOMP_FILTER=y CONFIG_SECCOMP_FILTER=y +CONFIG_HAVE_GCC_PLUGINS=y +# CONFIG_GCC_PLUGINS is not set CONFIG_HAVE_CC_STACKPROTECTOR=y # CONFIG_CC_STACKPROTECTOR is not set CONFIG_CC_STACKPROTECTOR_NONE=y # CONFIG_CC_STACKPROTECTOR_REGULAR is not set # CONFIG_CC_STACKPROTECTOR_STRONG is not set +CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y CONFIG_HAVE_CONTEXT_TRACKING=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y @@ -502,6 +505,7 @@ CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 CONFIG_TRANSPARENT_HUGEPAGE=y # CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +CONFIG_TRANSPARENT_HUGE_PAGECACHE=y CONFIG_CLEANCACHE=y # CONFIG_FRONTSWAP is not set # CONFIG_CMA is not set @@ -597,6 +601,7 @@ CONFIG_ACPI_VIDEO=y CONFIG_ACPI_FAN=y # CONFIG_ACPI_DOCK is not set CONFIG_ACPI_CPU_FREQ_PSS=y +CONFIG_ACPI_PROCESSOR_CSTATE=y CONFIG_ACPI_PROCESSOR_IDLE=y CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_HOTPLUG_CPU=y @@ -604,6 +609,7 @@ CONFIG_ACPI_PROCESSOR_AGGREGATOR=y CONFIG_ACPI_THERMAL=y CONFIG_ACPI_NUMA=y # CONFIG_ACPI_CUSTOM_DSDT is not set +CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y CONFIG_ACPI_TABLE_UPGRADE=y # CONFIG_ACPI_DEBUG is not set # CONFIG_ACPI_PCI_SLOT is not set @@ -619,7 +625,9 @@ CONFIG_ACPI_HOTPLUG_IOAPIC=y CONFIG_HAVE_ACPI_APEI=y CONFIG_HAVE_ACPI_APEI_NMI=y # CONFIG_ACPI_APEI is not set +# CONFIG_DPTF_POWER is not set # CONFIG_PMIC_OPREGION is not set +# CONFIG_ACPI_CONFIGFS is not set # CONFIG_SFI is not set # @@ -1028,6 +1036,7 @@ CONFIG_DNS_RESOLVER=y # CONFIG_HSR is not set # CONFIG_NET_SWITCHDEV is not set # CONFIG_NET_L3_MASTER_DEV is not set +# CONFIG_NET_NCSI is not set CONFIG_RPS=y CONFIG_RFS_ACCEL=y CONFIG_XPS=y @@ -1214,7 +1223,6 @@ CONFIG_BLK_DEV_NVME=y # CONFIG_ISL29003 is not set # CONFIG_ISL29020 is not set # CONFIG_SENSORS_TSL2550 is not set -# CONFIG_SENSORS_BH1780 is not set # CONFIG_SENSORS_BH1770 is not set # CONFIG_SENSORS_APDS990X is not set # CONFIG_HMC6352 is not set @@ -1285,8 +1293,7 @@ CONFIG_ALTERA_STAPL=m # CONFIG_GENWQE is not set # CONFIG_ECHO is not set # CONFIG_CXL_BASE is not set -# CONFIG_CXL_KERNEL_API is not set -# CONFIG_CXL_EEH is not set +# CONFIG_CXL_AFU_DRIVER_OPS is not set CONFIG_HAVE_IDE=y # CONFIG_IDE is not set @@ -1683,6 +1690,7 @@ CONFIG_REALTEK_PHY=y # CONFIG_MDIO_OCTEON is not set # CONFIG_MDIO_THUNDER is not set # CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_INTEL_XWAY_PHY is not set CONFIG_PPP=m CONFIG_PPP_BSDCOMP=m CONFIG_PPP_DEFLATE=m @@ -2072,6 +2080,9 @@ CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y # CONFIG_TOUCHSCREEN_TSC_SERIO is not set # CONFIG_TOUCHSCREEN_TSC2004 is not set # CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_RM_TS is not set +# CONFIG_TOUCHSCREEN_SILEAD is not set +# CONFIG_TOUCHSCREEN_SIS_I2C is not set CONFIG_TOUCHSCREEN_ST1232=m # CONFIG_TOUCHSCREEN_SUR40 is not set # CONFIG_TOUCHSCREEN_SX8654 is not set @@ -2215,6 +2226,7 @@ CONFIG_I2C_MUX=m # CONFIG_I2C_MUX_PINCTRL is not set # CONFIG_I2C_MUX_REG is not set CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_SMBUS=y CONFIG_I2C_ALGOBIT=y # @@ -2322,7 +2334,6 @@ CONFIG_PINCTRL_BAYTRAIL=y CONFIG_PINCTRL_CHERRYVIEW=y # CONFIG_PINCTRL_BROXTON is not set # CONFIG_PINCTRL_SUNRISEPOINT is not set -CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y CONFIG_GPIOLIB=y CONFIG_GPIO_DEVRES=y CONFIG_GPIO_ACPI=y @@ -2369,14 +2380,12 @@ CONFIG_GPIOLIB_IRQCHIP=y # # CONFIG_GPIO_AMD8111 is not set # CONFIG_GPIO_BT8XX is not set -# CONFIG_GPIO_INTEL_MID is not set # CONFIG_GPIO_ML_IOH is not set # CONFIG_GPIO_RDC321X is not set # # SPI or I2C GPIO expanders # -# CONFIG_GPIO_MCP23S08 is not set # # USB GPIO expanders @@ -2499,6 +2508,7 @@ CONFIG_SENSORS_IT87=m # CONFIG_PMBUS is not set # CONFIG_SENSORS_SHT15 is not set # CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x is not set # CONFIG_SENSORS_SHTC1 is not set # CONFIG_SENSORS_SIS5595 is not set # CONFIG_SENSORS_DME1737 is not set @@ -2516,6 +2526,7 @@ CONFIG_SENSORS_IT87=m # CONFIG_SENSORS_AMC6821 is not set # CONFIG_SENSORS_INA209 is not set # CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA3221 is not set # CONFIG_SENSORS_TC74 is not set # CONFIG_SENSORS_THMC50 is not set # CONFIG_SENSORS_TMP102 is not set @@ -2644,7 +2655,6 @@ CONFIG_MFD_RTSX_PCI=y # CONFIG_MFD_RT5033 is not set CONFIG_MFD_RTSX_USB=y # CONFIG_MFD_RC5T583 is not set -# CONFIG_MFD_RN5T618 is not set # CONFIG_MFD_SEC_CORE is not set # CONFIG_MFD_SI476X_CORE is not set # CONFIG_MFD_SM501 is not set @@ -3049,6 +3059,8 @@ CONFIG_DVB_M88DS3103=m CONFIG_DVB_DRXK=m CONFIG_DVB_TDA18271C2DD=m CONFIG_DVB_SI2165=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m CONFIG_DVB_STV0367DD=m CONFIG_DVB_CXD2843=m @@ -3196,7 +3208,6 @@ CONFIG_DRM_TTM=y # # I2C encoder or helper chips # -# CONFIG_DRM_I2C_ADV7511 is not set # CONFIG_DRM_I2C_CH7006 is not set # CONFIG_DRM_I2C_SIL164 is not set # CONFIG_DRM_I2C_NXP_TDA998X is not set @@ -3219,6 +3230,7 @@ CONFIG_DRM_AMD_ACP=y CONFIG_DRM_I915=y # CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set CONFIG_DRM_I915_USERPTR=y +# CONFIG_DRM_I915_GVT is not set # # drm/i915 Debugging @@ -3530,7 +3542,10 @@ CONFIG_SND_SST_IPC_ACPI=m CONFIG_SND_SOC_INTEL_SST=m CONFIG_SND_SOC_INTEL_SST_ACPI=m CONFIG_SND_SOC_INTEL_SST_MATCH=m +# CONFIG_SND_SOC_INTEL_HASWELL_MACH is not set +# CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH is not set # CONFIG_SND_SOC_INTEL_BXT_RT298_MACH is not set +# CONFIG_SND_SOC_INTEL_BROADWELL_MACH is not set CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m # CONFIG_SND_SOC_INTEL_BYTCR_RT5651_MACH is not set CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m @@ -3544,6 +3559,7 @@ CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m # Allwinner SoC Audio support # # CONFIG_SND_SUN4I_CODEC is not set +# CONFIG_SND_SUN4I_I2S is not set # CONFIG_SND_SOC_XTFPGA_I2S is not set CONFIG_SND_SOC_I2C_AND_SPI=y @@ -3552,12 +3568,15 @@ CONFIG_SND_SOC_I2C_AND_SPI=y # # CONFIG_SND_SOC_AC97_CODEC is not set # CONFIG_SND_SOC_ADAU1701 is not set +# CONFIG_SND_SOC_ADAU7002 is not set # CONFIG_SND_SOC_AK4554 is not set # CONFIG_SND_SOC_AK4613 is not set # CONFIG_SND_SOC_AK4642 is not set # CONFIG_SND_SOC_AK5386 is not set # CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_BT_SCO is not set # CONFIG_SND_SOC_CS35L32 is not set +# CONFIG_SND_SOC_CS35L33 is not set # CONFIG_SND_SOC_CS42L51_I2C is not set # CONFIG_SND_SOC_CS42L52 is not set # CONFIG_SND_SOC_CS42L56 is not set @@ -3567,10 +3586,13 @@ CONFIG_SND_SOC_I2C_AND_SPI=y # CONFIG_SND_SOC_CS4271_I2C is not set # CONFIG_SND_SOC_CS42XX8_I2C is not set # CONFIG_SND_SOC_CS4349 is not set +# CONFIG_SND_SOC_CS53L30 is not set # CONFIG_SND_SOC_ES8328 is not set # CONFIG_SND_SOC_GTM601 is not set # CONFIG_SND_SOC_INNO_RK3036 is not set CONFIG_SND_SOC_MAX98090=m +# CONFIG_SND_SOC_MAX98504 is not set +# CONFIG_SND_SOC_MAX9860 is not set # CONFIG_SND_SOC_PCM1681 is not set # CONFIG_SND_SOC_PCM179X_I2C is not set # CONFIG_SND_SOC_PCM3168A_I2C is not set @@ -3616,7 +3638,9 @@ CONFIG_SND_SOC_TS3A227E=m # CONFIG_SND_SOC_WM8962 is not set # CONFIG_SND_SOC_WM8974 is not set # CONFIG_SND_SOC_WM8978 is not set +# CONFIG_SND_SOC_WM8985 is not set # CONFIG_SND_SOC_TPA6130A2 is not set +CONFIG_SND_SIMPLE_CARD_UTILS=m CONFIG_SND_SIMPLE_CARD=m # CONFIG_SOUND_PRIME is not set CONFIG_AC97_BUS=m @@ -3667,6 +3691,7 @@ CONFIG_HID_GYRATION=y CONFIG_HID_TWINHAN=y CONFIG_HID_KENSINGTON=y CONFIG_HID_LCPOWER=y +# CONFIG_HID_LED is not set CONFIG_HID_LENOVO=y CONFIG_HID_LOGITECH=y CONFIG_HID_LOGITECH_DJ=y @@ -3678,7 +3703,7 @@ CONFIG_LOGIWHEELS_FF=y # CONFIG_HID_MAGICMOUSE is not set CONFIG_HID_MICROSOFT=y CONFIG_HID_MONTEREY=y -# CONFIG_HID_MULTITOUCH is not set +CONFIG_HID_MULTITOUCH=m # CONFIG_HID_NTRIG is not set CONFIG_HID_ORTEK=y CONFIG_HID_OUYA=y @@ -3712,6 +3737,7 @@ CONFIG_HID_XINMO=y # CONFIG_HID_ZEROPLUS is not set CONFIG_HID_ZYDACRON=y # CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set # # USB HID support @@ -3879,7 +3905,6 @@ CONFIG_USB_SERIAL_PL2303=m # CONFIG_USB_RIO500 is not set # CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LCD is not set -# CONFIG_USB_LED is not set # CONFIG_USB_CYPRESS_CY7C63 is not set # CONFIG_USB_CYTHERM is not set # CONFIG_USB_IDMOUSE is not set @@ -3970,6 +3995,7 @@ CONFIG_LEDS_CLASS_FLASH=y # CONFIG_LEDS_PCA9532 is not set # CONFIG_LEDS_GPIO is not set # CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP3952 is not set # CONFIG_LEDS_LP5521 is not set # CONFIG_LEDS_LP5523 is not set # CONFIG_LEDS_LP5562 is not set @@ -3996,6 +4022,7 @@ CONFIG_LEDS_CLASS_FLASH=y CONFIG_LEDS_TRIGGERS=y # CONFIG_LEDS_TRIGGER_TIMER is not set # CONFIG_LEDS_TRIGGER_ONESHOT is not set +# CONFIG_LEDS_TRIGGER_DISK is not set # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set # CONFIG_LEDS_TRIGGER_BACKLIGHT is not set # CONFIG_LEDS_TRIGGER_CPU is not set @@ -4014,6 +4041,7 @@ CONFIG_EDAC_ATOMIC_SCRUB=y CONFIG_EDAC_SUPPORT=y # CONFIG_EDAC is not set CONFIG_RTC_LIB=y +CONFIG_RTC_MC146818_LIB=y CONFIG_RTC_CLASS=y CONFIG_RTC_HCTOSYS=y CONFIG_RTC_HCTOSYS_DEVICE="rtc0" @@ -4173,8 +4201,8 @@ CONFIG_VT6656=m # # CONFIG_SPEAKUP is not set CONFIG_STAGING_MEDIA=y +# CONFIG_MEDIA_CEC is not set CONFIG_DVB_CXD2099=m -CONFIG_DVB_MN88472=m # CONFIG_VIDEO_TW686X_KH is not set CONFIG_LIRC_STAGING=y # CONFIG_LIRC_BT829 is not set @@ -4198,6 +4226,7 @@ CONFIG_LIRC_XBOX=m # CONFIG_UNISYSSPAR is not set # CONFIG_WILC1000_SDIO is not set # CONFIG_MOST is not set +# CONFIG_KS7010 is not set # CONFIG_X86_PLATFORM_DEVICES is not set # CONFIG_CHROME_PLATFORMS is not set CONFIG_CLKDEV_LOOKUP=y @@ -4213,7 +4242,7 @@ CONFIG_COMMON_CLK=y # CONFIG_COMMON_CLK_NXP is not set # CONFIG_COMMON_CLK_PXA is not set # CONFIG_COMMON_CLK_PIC32 is not set -# CONFIG_COMMON_CLK_OXNAS is not set +# CONFIG_SUNXI_CCU is not set # # Hardware Spinlock drivers @@ -4244,6 +4273,10 @@ CONFIG_CLKBLD_I8253=y # # SOC (System On Chip) specific Drivers # + +# +# Broadcom SoC drivers +# # CONFIG_SUNXI_SRAM is not set # CONFIG_SOC_TI is not set # CONFIG_PM_DEVFREQ is not set @@ -4319,6 +4352,7 @@ CONFIG_EFI_RUNTIME_WRAPPERS=y # File systems # CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_FS_IOMAP=y # CONFIG_EXT2_FS is not set # CONFIG_EXT3_FS is not set CONFIG_EXT4_FS=y @@ -4361,6 +4395,7 @@ CONFIG_F2FS_CHECK_FS=y # CONFIG_FS_DAX is not set CONFIG_FS_POSIX_ACL=y CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set CONFIG_FILE_LOCKING=y CONFIG_MANDATORY_FILE_LOCKING=y # CONFIG_FS_ENCRYPTION is not set @@ -4671,8 +4706,6 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=60 # CONFIG_NOTIFIER_ERROR_INJECTION is not set # CONFIG_FAULT_INJECTION is not set # CONFIG_LATENCYTOP is not set -CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y -# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set CONFIG_USER_STACKTRACE_SUPPORT=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y @@ -4763,6 +4796,9 @@ CONFIG_KEYS=y # CONFIG_SECURITY_DMESG_RESTRICT is not set # CONFIG_SECURITY is not set # CONFIG_SECURITYFS is not set +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y +CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y +# CONFIG_HARDENED_USERCOPY is not set CONFIG_DEFAULT_SECURITY_DAC=y CONFIG_DEFAULT_SECURITY="" CONFIG_XOR_BLOCKS=y @@ -4783,7 +4819,10 @@ CONFIG_CRYPTO_RNG=m CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_RNG_DEFAULT=m CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_KPP2=y # CONFIG_CRYPTO_RSA is not set +# CONFIG_CRYPTO_DH is not set +# CONFIG_CRYPTO_ECDH is not set CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y # CONFIG_CRYPTO_USER is not set @@ -4850,8 +4889,11 @@ CONFIG_CRYPTO_SHA1=m # CONFIG_CRYPTO_SHA256_SSSE3 is not set # CONFIG_CRYPTO_SHA512_SSSE3 is not set # CONFIG_CRYPTO_SHA1_MB is not set +# CONFIG_CRYPTO_SHA256_MB is not set +# CONFIG_CRYPTO_SHA512_MB is not set CONFIG_CRYPTO_SHA256=y # CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_SHA3 is not set # CONFIG_CRYPTO_TGR192 is not set # CONFIG_CRYPTO_WP512 is not set # CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set diff --git a/scripts/image b/scripts/image index a2126aad3d..28cffb476e 100755 --- a/scripts/image +++ b/scripts/image @@ -223,13 +223,7 @@ mkdir -p $TARGET_IMG rm -rf $TARGET_IMG/$IMAGE_NAME.kernel # copy kernel to target dir -if [ "$BOOTLOADER" = "bcm2835-bootloader" ]; then - echo "injecting DeviceTreeBlobs to kernel..." - perl $BUILD/linux-$(kernel_version)/scripts/mkknlimg $BUILD/linux-$(kernel_version)/arch/$TARGET_KERNEL_ARCH/boot/$KERNEL_TARGET $TARGET_IMG/$IMAGE_NAME.kernel - echo "...done" -else - cp -PR $BUILD/linux-$(kernel_version)/arch/$TARGET_KERNEL_ARCH/boot/$KERNEL_TARGET $TARGET_IMG/$IMAGE_NAME.kernel -fi +cp -PR $BUILD/linux-$(kernel_version)/arch/$TARGET_KERNEL_ARCH/boot/$KERNEL_TARGET $TARGET_IMG/$IMAGE_NAME.kernel chmod 0644 $TARGET_IMG/$IMAGE_NAME.kernel # create squashfs file diff --git a/tools/RPi/rpi-linux-rebase.sh b/tools/RPi/rpi-linux-rebase.sh index 3b46d60a9e..6b02d85a65 100755 --- a/tools/RPi/rpi-linux-rebase.sh +++ b/tools/RPi/rpi-linux-rebase.sh @@ -17,20 +17,6 @@ DROP_COMMITS=" Added Device IDs for August DVB-T 205 net\: Add non-mainline source for rtl8192cu wlan net\: Fix rtl8192cu build errors on other platforms - -# Other rtl8192cu related commits below... -Fix cfg80211 for kernel >= 4.7 \(#1624\) -suppress spurious messages -Add #if for 3\.14 kernel change \(#87\) -Set dev_type to wlan -Tentatively added support for more 8188CUS based devices\. -Add support for more 8188CUS and 8192CUS devices -Add ProductId for the Netgear N150 - WNA1000M -Fixes CONFIG_CONCURRENT_MODE CONFIG_MULTI_VIR_IFACES -Fixes compatibility with 3\.13 -Enables warning in the compiler and fixes some issues, reference => https\:\/\/github.com\/diederikdehaas\/rtl8812AU -Starts device in station mode instead of monitor, fixes NetworkManager issues -Enable cfg80211 support " IFS=$'\n'