From ef58fcd8122a0488937620dcf7cac04d2d6cdc1a Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Sun, 23 Oct 2016 02:01:36 +0100 Subject: [PATCH] RPi/RPi2: update linux support patches for linux 4.8.4 --- .../patches/linux/linux-01-RPi_support.patch | 1601 ++++++++++++++--- .../patches/linux/linux-01-RPi_support.patch | 1601 ++++++++++++++--- 2 files changed, 2794 insertions(+), 408 deletions(-) diff --git a/projects/RPi/patches/linux/linux-01-RPi_support.patch b/projects/RPi/patches/linux/linux-01-RPi_support.patch index adae52fd87..db3b0e6822 100644 --- a/projects/RPi/patches/linux/linux-01-RPi_support.patch +++ b/projects/RPi/patches/linux/linux-01-RPi_support.patch @@ -1,4 +1,4 @@ -From 5f168eaadbd8e731359c8fda12268f1eb9777a89 Mon Sep 17 00:00:00 2001 +From 22ad2a514798c9748803e1f6e9d01fa0f9c413ba Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 27 Apr 2016 17:43:28 +0100 Subject: [PATCH 001/133] Revert "SUNRPC: Make NFS swap work with multipath" @@ -95,7 +95,7 @@ index 66f23b376fa04a91134eddf6d8ee22a2f5de5808..f55fe2b0137e8fbefcd20c336b28ad48 EXPORT_SYMBOL_GPL(rpc_clnt_swap_deactivate); #endif /* CONFIG_SUNRPC_SWAP */ -From b57b907a656c079c22350462c952ea12c6a3b34c Mon Sep 17 00:00:00 2001 +From d60dea6b48078d26b3aac303045082e2313b3ea0 Mon Sep 17 00:00:00 2001 From: Steve Glendinning Date: Thu, 19 Feb 2015 18:47:12 +0000 Subject: [PATCH 002/133] smsx95xx: fix crimes against truesize @@ -145,7 +145,7 @@ index dc989a8b5afbd62b07cd65a2fa5edde67d3cc5fb..116680e3089f16e1e3e9113a3b93e62c usbnet_skb_return(dev, ax_skb); } -From 1b91528a29c7b7a216a3f974c1df17e9666970ee Mon Sep 17 00:00:00 2001 +From 7a8df51375053d0f24027d2d0600627f275e6cdd Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 17 Apr 2015 16:58:45 +0100 Subject: [PATCH 003/133] smsc95xx: Disable turbo mode by default @@ -168,7 +168,7 @@ index 116680e3089f16e1e3e9113a3b93e62cb78cc1bb..aa4cb43dcd9ba83b042332bc15a4dce6 MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction"); -From ea71b37216af8b41d32555cbf6b32334d198bffe Mon Sep 17 00:00:00 2001 +From 5edee9a8107124ff13f6748d906823f0de13d4c7 Mon Sep 17 00:00:00 2001 From: Sam Nazarko Date: Fri, 1 Apr 2016 17:27:21 +0100 Subject: [PATCH 004/133] add smsc95xx packetsize module_param @@ -213,7 +213,7 @@ index aa4cb43dcd9ba83b042332bc15a4dce68affce28..889bdabd9dea6cebccc361aa4ac569d7 netif_dbg(dev, ifup, dev->net, "rx_urb_size=%ld\n", -From d95335fb2a1e94d9571cbb272531c8ec88e0c60e Mon Sep 17 00:00:00 2001 +From 118cc9a01ab37eda968e0568f8f88e051c0f2701 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 26 Mar 2013 17:26:38 +0000 Subject: [PATCH 005/133] Allow mac address to be set in smsc95xx @@ -312,7 +312,7 @@ index 889bdabd9dea6cebccc361aa4ac569d73681396b..d22a2324085fbf61fbd8920362bfc7b9 eth_hw_addr_random(dev->net); netif_dbg(dev, ifup, dev->net, "MAC address set to eth_random_addr\n"); -From 326beeca49f750a848bf612a07533bbe3daba13b Mon Sep 17 00:00:00 2001 +From d9dbf25a2e3d16e84a93a15b28a8964cc08ad033 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 9 Aug 2016 22:19:28 +0100 Subject: [PATCH 006/133] smsc95xx: Experimental: Enable turbo_mode and @@ -346,7 +346,7 @@ index d22a2324085fbf61fbd8920362bfc7b9f72bebe3..c846c55075387398d9bcb0957e31f5c8 MODULE_PARM_DESC(packetsize, "Override the RX URB packet size"); -From 790d18e6b933bd21f9b9931f14699d115a2818d3 Mon Sep 17 00:00:00 2001 +From 71e2a1712058109a030244dcc73e8a77e1ce9e1b Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 9 Mar 2016 13:28:24 +0000 Subject: [PATCH 007/133] serial: Take care starting a hung-up tty's port @@ -377,7 +377,7 @@ index 2f44e20136545162d15ee9a39c2eae38352580d1..6b0518ce13ad210b888b73dd6c02a555 return 0; } -From bda0c4920d8c466cf65c9d5fbad43a0d2e617e85 Mon Sep 17 00:00:00 2001 +From 4b865496e5f0c2847749ed18e987b9edbccd7bdf Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 13 Mar 2015 12:43:36 +0000 Subject: [PATCH 008/133] Protect __release_resource against resources without @@ -408,7 +408,7 @@ index 9b5f04404152c296af3a96132f27cfc80ffa9af9..f8a9af6e6b915812be2ba2c1c2b40106 for (;;) { tmp = *p; -From 59df9e9d36fcfac03715b5c4fd2d899709a58833 Mon Sep 17 00:00:00 2001 +From 7b2fb7ebb7971e25f8d3097f5b66e42afac17efd Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 18 Dec 2014 16:07:15 -0800 Subject: [PATCH 009/133] mm: Remove the PFN busy warning @@ -436,7 +436,7 @@ index a2214c64ed3cd04dceaed7a579f593852e458df1..de26bffb1baa5cffa692fcb12b478263 goto done; } -From 518dc33d99451dec2d49e1bb24c6eff0219c5bc4 Mon Sep 17 00:00:00 2001 +From 8a3e2fa3b57d6992d12a636715cd108f093499f7 Mon Sep 17 00:00:00 2001 From: Robert Tiemann Date: Mon, 20 Jul 2015 11:01:25 +0200 Subject: [PATCH 010/133] BCM2835_DT: Fix I2S register map @@ -477,7 +477,7 @@ index 65783de0aedf3da79adc36fd077b7a89954ddb6b..a89fe4220fdc3f26f75ee66daf187554 dmas = <&dma 2>, <&dma 3>; -From 83ce9f1a637ad109f607a73ac4d5033159e7979f Mon Sep 17 00:00:00 2001 +From 3eda77d21eace8c70848f6cc131f2b81a767571b Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 4 Dec 2015 17:41:50 +0000 Subject: [PATCH 011/133] irq-bcm2836: Prevent spurious interrupts, and trap @@ -507,7 +507,7 @@ index d96b2c947e74e3edab3917551c64fbd1ced0f34c..93e3f7660c4230c9f1dd3b195958cb49 #endif } else if (stat) { -From f4e282add1c9635bca5e76f6aee9243bc75cbaf5 Mon Sep 17 00:00:00 2001 +From e48d7853af14ed499222a918e8d8628956ec985b 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/133] irqchip: bcm2835: Add FIQ support @@ -639,7 +639,7 @@ index 44d7c38dde479d771f3552e914bf8c1c1f5019f7..42ff5e6a8e0d532f5b60a1e7af7cc4d9 } -From d7817ee5ce8797ef0b7eb513d3edbe50ab675f1b Mon Sep 17 00:00:00 2001 +From 9dbf9e9b3970068fb05224536d041a76c4ab7eaa 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/133] irqchip: irq-bcm2835: Add 2836 FIQ support @@ -741,7 +741,7 @@ index 42ff5e6a8e0d532f5b60a1e7af7cc4d941bd5008..eccf6ed025299cb480884f5bcbe77abf for (b = 0; b < NR_BANKS; b++) { for (i = 0; i < bank_irqs[b]; i++) { -From f0857eabc9b1666a0a1c9254e9f3b8cc36eb2d35 Mon Sep 17 00:00:00 2001 +From 8e7877b9735a76ac8fa5f4abcfe952ab55bae911 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 14 Jul 2015 10:26:09 +0100 Subject: [PATCH 014/133] spidev: Add "spidev" compatible string to silence @@ -765,7 +765,7 @@ index 2e05046f866bd01bf87edcdeff0d5b76d4d0aea7..d780491b8013a4e97fa843958964454e }; MODULE_DEVICE_TABLE(of, spidev_dt_ids); -From 6bf68a22a0ced27d91087ac0037b0961f5fb7707 Mon Sep 17 00:00:00 2001 +From 7b0af07f6a0af6792b809035f93700ce1f029294 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 30 Jun 2015 14:12:42 +0100 Subject: [PATCH 015/133] serial: 8250: Don't crash when nr_uarts is 0 @@ -788,7 +788,7 @@ index dcf43f66404f12d2bd290a30adfe494dd056162e..0fba189c676ded310b92a09c4e7e8f76 for (i = 0; i < nr_uarts; i++) { struct uart_8250_port *up = &serial8250_ports[i]; -From 7543bd68a87b5114c40d2bde76f712d3a239bb86 Mon Sep 17 00:00:00 2001 +From fade6fd9658203524a83cc806dc58001c275b297 Mon Sep 17 00:00:00 2001 From: notro Date: Thu, 10 Jul 2014 13:59:47 +0200 Subject: [PATCH 016/133] pinctrl-bcm2835: Set base to 0 give expected gpio @@ -813,7 +813,7 @@ index fa77165fab2c1348163979da507df17e7168c49b..d11e2e4ea189466e686d762cb6c6fef9 .can_sleep = false, }; -From 314aafa1a433f7f9216ffa7762cfbf0e109bd713 Mon Sep 17 00:00:00 2001 +From faf52efe1c23d4cfbff42e8bfa4f16caafc3eb0b Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 24 Feb 2015 13:40:50 +0000 Subject: [PATCH 017/133] pinctrl-bcm2835: Fix interrupt handling for GPIOs @@ -962,7 +962,7 @@ index d11e2e4ea189466e686d762cb6c6fef9111ecf8e..107ad7d58de8f8a7f55e09c9cdcf7d66 }, }; -From 087946e18f63ed63c3bae4846b32d51f14620191 Mon Sep 17 00:00:00 2001 +From 352f27ed30f1ee6f5700c16141a35e12c7900348 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 26 Feb 2015 09:58:22 +0000 Subject: [PATCH 018/133] pinctrl-bcm2835: Only request the interrupts listed @@ -992,7 +992,7 @@ index 107ad7d58de8f8a7f55e09c9cdcf7d66fa7ab66b..644bdecbcfcb79d3b84a33769265fca5 pc->irq_data[i].irqgroup = i; -From 2a20b5bb88fad4e4830a626d04cd2a904503cb59 Mon Sep 17 00:00:00 2001 +From b1257924703c2b200fbcc692f0a7c76bde3abf5b Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 6 May 2016 12:32:47 +0100 Subject: [PATCH 019/133] pinctrl-bcm2835: Return pins to inputs when freed @@ -1036,7 +1036,7 @@ index 644bdecbcfcb79d3b84a33769265fca5d3d0c9e5..81a66cba2ab0f7e3ae179de7edd10122 .get_function_name = bcm2835_pmx_get_function_name, .get_function_groups = bcm2835_pmx_get_function_groups, -From f177dcc304347cfc3fd9fedc106962122aade532 Mon Sep 17 00:00:00 2001 +From 91778ecd864c25b0abb37221d7a2f5c709a8b6bf Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 24 Jun 2015 14:10:44 +0100 Subject: [PATCH 020/133] spi-bcm2835: Support pin groups other than 7-11 @@ -1120,7 +1120,7 @@ index f35cc10772f6670397ea923ad30158270dd68578..5dfe20ffc2866fa6789825016c585175 /* and set up the "mode" and level */ dev_info(&spi->dev, "setting up native-CS%i as GPIO %i\n", -From 96874b4e6c2dc9dbe3197e999e7a923c238a61b1 Mon Sep 17 00:00:00 2001 +From 52485f1ae81f0f49a789b4fd4038a41c8a6834b0 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 1 Jul 2016 22:09:24 +0100 Subject: [PATCH 021/133] spi-bcm2835: Disable forced software CS @@ -1157,7 +1157,7 @@ index 5dfe20ffc2866fa6789825016c585175a29705b6..8493474d286f7a1ac6454a22c61c8c2c return 0; } -From bbebb0cda28bd80fe506b2929bd6cb79ea1f4dc6 Mon Sep 17 00:00:00 2001 +From 1d3ce1396a5d204e9caec86ff7d7ecf0b0f89e2a 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 022/133] ARM: bcm2835: Set Serial number and Revision @@ -1213,7 +1213,7 @@ index 0c1edfc98696da0e0bb7f4a18cdfbcdd27a9795d..8f152266ba9b470df2eaaed9ebcf158e static const char * const bcm2835_compat[] = { -From 4eca98bd59ac619c3486f8dc6287029eba737853 Mon Sep 17 00:00:00 2001 +From d4b91e1a5706ee7257b2d7d51e21cb084c864169 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 023/133] dmaengine: bcm2835: Load driver early and support @@ -1319,7 +1319,7 @@ index e18dc596cf2447fa9ef7e41b62d9396e29043426..80d35f760b4a4a51e60c355a84d538ba MODULE_ALIAS("platform:bcm2835-dma"); MODULE_DESCRIPTION("BCM2835 DMA engine driver"); -From 3cc6245931749870c5ab561d4ac85f4b3830f07b Mon Sep 17 00:00:00 2001 +From b4bcc7f785a173139bd02f1ad7e9a3fc2ec2fc62 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 024/133] bcm2835: Add support for uart1 @@ -1379,7 +1379,7 @@ index 8f152266ba9b470df2eaaed9ebcf158ed2079834..0ef5cd3d1d6ec420360294acc98d40d6 static const char * const bcm2835_compat[] = { -From 1426cf7e549a1708fda75c0f7f5671a2d0e0e659 Mon Sep 17 00:00:00 2001 +From 36d0f9a29d1bea6920ea4cc653dcefb473f8bd92 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 25 Jan 2016 17:25:12 +0000 Subject: [PATCH 025/133] firmware: Updated mailbox header @@ -1445,7 +1445,7 @@ index 3fb357193f09914fe21f8555a4b8613f74f22bc3..227a107214a02deadcca3db202da265e RPI_FIRMWARE_GET_COMMAND_LINE = 0x00050001, RPI_FIRMWARE_GET_DMA_CHANNELS = 0x00060001, -From e0c8cc9617b6c34cdf4723af668bd9af58fdefc0 Mon Sep 17 00:00:00 2001 +From 9cba2df5f7561a806e277eb3072e1a7f1fc46acc Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 26 Apr 2016 11:44:59 -0700 Subject: [PATCH 026/133] clk: bcm2835: Mark the VPU clock as critical @@ -1494,7 +1494,7 @@ index 7a7970865c2d856b6b57113c2bb7e8074140a5dd..d9db03cb3fd84163f320dca6f2e533c6 /* clocks with per parent mux */ -From abb7f9e36f3c1e8e3b9f556eaa2e146217ffeeb8 Mon Sep 17 00:00:00 2001 +From 4192862c24bc31eb92393913ff6bbafdd82dd7b4 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 9 May 2016 17:28:18 -0700 Subject: [PATCH 027/133] clk: bcm2835: Mark GPIO clocks enabled at boot as @@ -1552,7 +1552,7 @@ index d9db03cb3fd84163f320dca6f2e533c61f61b5ad..f6bbe8d5929828048114286ec29a33e0 /* HDMI state machine */ [BCM2835_CLOCK_HSM] = REGISTER_PER_CLK( -From f91627e15f312025f418c9691aba384bc3a49725 Mon Sep 17 00:00:00 2001 +From 3513813a98006e6ccbb9efda27643de751b4d3f9 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 26 Apr 2016 12:39:45 -0700 Subject: [PATCH 028/133] clk: bcm2835: Skip PLLC clocks when deciding on a new @@ -1626,7 +1626,7 @@ index f6bbe8d5929828048114286ec29a33e02519eab8..e527649ee5e32d20cebd762f4badbfca div = bcm2835_clock_choose_div(hw, req->rate, prate, true); rate = bcm2835_clock_rate_from_divisor(clock, prate, div); -From a47ea61d6152613d8ae94d93918b0618b84e5611 Mon Sep 17 00:00:00 2001 +From a0fff5c58561060aea5d5661cf690f20cee67b59 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 1 Jun 2016 12:05:35 -0700 Subject: [PATCH 029/133] clk: bcm2835: Mark the CM SDRAM clock's parent as @@ -1703,7 +1703,7 @@ index e527649ee5e32d20cebd762f4badbfca06657a84..fbf616021704178a9d007219a0ea2a9f &cprman->onecell); } -From 467295bc571b09da933560c263e1776c6a7e9bbf Mon Sep 17 00:00:00 2001 +From 2c8ec9b8aab3846395bcd6a18b9cce69b8d57123 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Oct 2016 13:58:40 +0100 Subject: [PATCH 030/133] Enable upstream BCM2835 auxiliar mini UART support @@ -1726,7 +1726,7 @@ index 7c6f7afca5ddeed7b25fa6272246fc539bf31b04..748098f900d3474b5d535b24da76ad06 help Support for the BCM2835 auxiliar mini UART. -From 67563c733e2fcfc415243f24692bdb3664b5e303 Mon Sep 17 00:00:00 2001 +From dd842c1ecd7e8aa67f9eeb74f9dfd2dd5dfb3a22 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 15 Jun 2016 16:48:41 +0100 Subject: [PATCH 031/133] rtc: Add SPI alias for pcf2123 driver @@ -1749,7 +1749,7 @@ index b4478cc92b55dbd76731ea8ec6a4228677adcebb..6981064d5cbad7d7078b23ce4ed5227e MODULE_LICENSE("GPL"); +MODULE_ALIAS("spi:rtc-pcf2123"); -From b8dd54d695f8fb5541c50205ca44d034ab51b4d4 Mon Sep 17 00:00:00 2001 +From 34a4517eeb6e4eaaeb09681d1905cdd91e7b885c Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 19 Apr 2016 15:55:02 -0700 Subject: [PATCH 032/133] ARM: bcm2708: Enable building power domain driver. @@ -1773,7 +1773,7 @@ index a39b0d58ddd0fdf0ac1cc7295f8aafb12546e226..7d11a44f36d2e6f8697773cd49a72e53 select PM_GENERIC_DOMAINS if PM help -From 61dcee3bd73d81d60102bf07135bbad016d415f0 Mon Sep 17 00:00:00 2001 +From 030e766c1255c016089956c1b735ddd411bdcd79 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 12 May 2013 12:24:19 +0100 Subject: [PATCH 033/133] Main bcm2708/bcm2709 linux port @@ -4301,7 +4301,7 @@ index aa4bfbf129e4585ebb89b25fca4b03c928925022..89f7a3a539b5a1b84ddcf0a1548160c0 mmc_pm_flag_t pm_caps; /* supported pm features */ -From 19a8491dcec90a2ba95eb99caef15ecbedbe12d4 Mon Sep 17 00:00:00 2001 +From 3590c152bc93eb52713e115ab8a94bdeb4df0e1a Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 5 Apr 2016 19:40:12 +0100 Subject: [PATCH 034/133] reboot: Use power off rather than busy spinning when @@ -4327,7 +4327,7 @@ index 3fa867a2aae672755c6ce6448f4148c989dbf964..80dca8dcd6709034b643c6a3f35729e0 /* -From d4ca226c5f37b6af64fc28b2da77686192c076eb Mon Sep 17 00:00:00 2001 +From 7c94b0d784d2ac4e6f431a8c138b0070a4210558 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 11 Nov 2015 21:01:15 +0000 Subject: [PATCH 035/133] squash: include ARCH_BCM2708 / ARCH_BCM2709 @@ -4494,7 +4494,7 @@ index d528aaceaad95bc6bae2147ebe66249629d2512e..03a303e52d5fe57bbdd8769d24bca590 select REGMAP_MMIO help -From cf2afc7680460a07ebee70d33e1d51904db81bcd Mon Sep 17 00:00:00 2001 +From 803da67aa6257789f65ac74fb4c60216557e56a3 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 1 May 2013 19:46:17 +0100 Subject: [PATCH 036/133] Add dwc_otg driver @@ -65523,7 +65523,7 @@ index 0000000000000000000000000000000000000000..cdc9963176e5a4a0d5250613b61e26c5 +test_main(); +0; -From 56099634e064759c0b8e79f3714048c69f444800 Mon Sep 17 00:00:00 2001 +From 7c7e3f19c99b5bcbba13df411be58f5d47e67b38 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 17 Jun 2015 17:06:34 +0100 Subject: [PATCH 037/133] bcm2708 framebuffer driver @@ -68985,7 +68985,7 @@ 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 907a0b73b81516ee08cc28afb8542da7d8e6a608 Mon Sep 17 00:00:00 2001 +From 58cdbb2c5c39e1ad230f57581a38d777776a7454 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 14:22:53 +0100 Subject: [PATCH 038/133] dmaengine: Add support for BCM2708 @@ -69610,7 +69610,7 @@ index 0000000000000000000000000000000000000000..c5bfff2765be4606077e6c8af73040ec + +#endif /* _PLAT_BCM2708_DMA_H */ -From 794afcaa298703a5a80a587080c49f12acaa9977 Mon Sep 17 00:00:00 2001 +From 9d4105c8791b3d3ee6a6eaa51879142875166831 Mon Sep 17 00:00:00 2001 From: gellert Date: Fri, 15 Aug 2014 16:35:06 +0100 Subject: [PATCH 039/133] MMC: added alternative MMC driver @@ -71360,7 +71360,7 @@ index 0000000000000000000000000000000000000000..ceb37930e167f47c9c848e8de757ad09 +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Gellert Weisz"); -From 1daa639defb9acf2a0a99eb2c3f631f312fd6933 Mon Sep 17 00:00:00 2001 +From c37a3521e6cd3fe01c3ac774311271bf3c0c49b1 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 25 Mar 2015 17:49:47 +0000 Subject: [PATCH 040/133] Adding bcm2835-sdhost driver, and an overlay to @@ -73755,7 +73755,7 @@ index 0000000000000000000000000000000000000000..23dea422182534e248435aeaee3ecb5d +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Phil Elwell"); -From 8a2419eed2afd2209292e9bad4ffde7ee2f85375 Mon Sep 17 00:00:00 2001 +From 50067c20afbd42922981343d28894d474e1d7d43 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 11 May 2016 12:50:33 +0100 Subject: [PATCH 041/133] mmc: Add MMC_QUIRK_ERASE_BROKEN for some cards @@ -73894,7 +73894,7 @@ index d8673ca968ba2d65fb3da39680583ca5152641e4..510c3872929b3267fb6665bb69d26f5a unsigned int erase_shift; /* if erase unit is power 2 */ unsigned int pref_erase; /* in sectors */ -From dcd6f3944a8b90284f4a058d2ca69cdb63eeb5cf Mon Sep 17 00:00:00 2001 +From af44f3c2d5631fe1dd413838cf150f8573829b44 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:31:47 +0100 Subject: [PATCH 042/133] cma: Add vc_cma driver to enable use of CMA @@ -75240,7 +75240,7 @@ index 0000000000000000000000000000000000000000..be2819d5d41f9d5ed65daf8eedb94c9e + +#endif /* VC_CMA_H */ -From c8216ff675a803346bc44997932f25074c7757a8 Mon Sep 17 00:00:00 2001 +From 2e89eff887d0aad7b4269cb38996187bfe7a8ded Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 26 Mar 2012 22:15:50 +0100 Subject: [PATCH 043/133] bcm2708: alsa sound driver @@ -77979,7 +77979,7 @@ index 0000000000000000000000000000000000000000..af3e6eb690113fc32ce9e06bd2f0f294 + +#endif // _VC_AUDIO_DEFS_H_ -From 0f683d0e2c8a1fa128b15e0042a468d5aaa3b8d2 Mon Sep 17 00:00:00 2001 +From c82f2bb59be5d01c5cafe3f53fb0c4295c2f8917 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 2 Jul 2013 23:42:01 +0100 Subject: [PATCH 044/133] bcm2708 vchiq driver @@ -91347,7 +91347,7 @@ index 0000000000000000000000000000000000000000..b6bfa21155e431e93bfb2c149d324371 + return vchiq_build_time; +} -From d457ca1335a4e8111af02e4644d2eb60589e3ef6 Mon Sep 17 00:00:00 2001 +From 56bcbb1c15897cac27788fb419ec4326c2e323f6 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 17 Jun 2015 16:07:06 +0100 Subject: [PATCH 045/133] vc_mem: Add vc_mem driver @@ -92355,7 +92355,7 @@ index 0000000000000000000000000000000000000000..20a475377eb3078ea1ecaef2b24efc35 + +#endif /* _VC_MEM_H */ -From bcdbbb98ad7993cd912648968f8df26739dfefdf Mon Sep 17 00:00:00 2001 +From 8099c52e8672766bce4142be97b1b3f5ce54e5ab Mon Sep 17 00:00:00 2001 From: Tim Gover Date: Tue, 22 Jul 2014 15:41:04 +0100 Subject: [PATCH 046/133] vcsm: VideoCore shared memory service for BCM2835 @@ -96776,7 +96776,7 @@ index 0000000000000000000000000000000000000000..334f36d0d697b047df2922b5f2db67f3 + +#endif /* __VMCS_SM_IOCTL_H__INCLUDED__ */ -From a7429bf992eb2c53e29850ad5a4da4b867124202 Mon Sep 17 00:00:00 2001 +From 5246ed7cbe4739c6752264e452f8d7e0bdbc9725 Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Fri, 21 Aug 2015 23:14:48 +0100 Subject: [PATCH 047/133] Add /dev/gpiomem device for rootless user GPIO access @@ -97090,7 +97090,7 @@ index 0000000000000000000000000000000000000000..911f5b7393ed48ceed8751f06967ae64 +MODULE_DESCRIPTION("gpiomem driver for accessing GPIO from userspace"); +MODULE_AUTHOR("Luke Wren "); -From 0a911c72137ea8436eab1340eecaa37d65f684e0 Mon Sep 17 00:00:00 2001 +From 1f79ba972a11655e56296a00226c936c2ec1bf98 Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Sat, 5 Sep 2015 01:14:45 +0100 Subject: [PATCH 048/133] Add SMI driver @@ -99044,7 +99044,7 @@ index 0000000000000000000000000000000000000000..ee3a75edfc033eeb0d90a687ffb68b10 + +#endif /* BCM2835_SMI_H */ -From bb3a013a835e3e680dc0fa520aa52d41b0eafbb2 Mon Sep 17 00:00:00 2001 +From eedc98f450f15d5964f3a83be550dd71d79da181 Mon Sep 17 00:00:00 2001 From: Martin Sperl Date: Tue, 26 Apr 2016 14:59:21 +0000 Subject: [PATCH 049/133] MISC: bcm2835: smi: use clock manager and fix reload @@ -99217,7 +99217,7 @@ index 63a4ea08b9930a3a31a985f0a1d969b488ed49ec..1261540703127d1d63b9f3c87042c6e5 return 0; } -From 0e031f89e276870ba3f0d5df73c4e147fb37f2ed Mon Sep 17 00:00:00 2001 +From 757c8ea3fc3c4ff43b5a3c6bc137917b1bb11097 Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Sat, 5 Sep 2015 01:16:10 +0100 Subject: [PATCH 050/133] Add SMI NAND driver @@ -99585,7 +99585,7 @@ index 0000000000000000000000000000000000000000..02adda6da18bd0ba9ab19a104975b79d + ("Driver for NAND chips using Broadcom Secondary Memory Interface"); +MODULE_AUTHOR("Luke Wren "); -From c3698a86141222f1435a299c2501ad5b0f8c547f Mon Sep 17 00:00:00 2001 +From 2b78376e267757011c3ace089ab02bc1957ce731 Mon Sep 17 00:00:00 2001 From: Aron Szabo Date: Sat, 16 Jun 2012 12:15:55 +0200 Subject: [PATCH 051/133] lirc: added support for RaspberryPi GPIO @@ -100451,7 +100451,7 @@ index 0000000000000000000000000000000000000000..fb69624ccef00ddbdccf8256d6baf1b1 + +#endif -From ebe8368d2b3dc570990f4943fbd752b6b36459c6 Mon Sep 17 00:00:00 2001 +From 26fec1142057f9ccf3484be0cf47dfccbcdbe464 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:49:20 +0100 Subject: [PATCH 052/133] Add cpufreq driver @@ -100716,7 +100716,7 @@ index 0000000000000000000000000000000000000000..3eb9e9326231b08e6ee95ad486485245 +module_init(bcm2835_cpufreq_module_init); +module_exit(bcm2835_cpufreq_module_exit); -From 01c9c95e7f2b142513530b31f9e544c3018c5332 Mon Sep 17 00:00:00 2001 +From e9b11b676f3d703fe9a2f27cfce5a9fae571c2e4 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 26 Mar 2013 19:24:24 +0000 Subject: [PATCH 053/133] Added hwmon/thermal driver for reporting core @@ -100885,7 +100885,7 @@ index 0000000000000000000000000000000000000000..c63fb9f9d143e19612a18fe530c7b2b3 +MODULE_DESCRIPTION("Thermal driver for bcm2835 chip"); +MODULE_LICENSE("GPL"); -From bef6ae3646a31fc3ca85aae6d78201be346b4ac8 Mon Sep 17 00:00:00 2001 +From 9fc131b5e21ad6741aabc73fa5a48e80c54ec3ee Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 17 Jun 2015 15:44:08 +0100 Subject: [PATCH 054/133] Add Chris Boot's i2c driver @@ -101562,7 +101562,7 @@ index 0000000000000000000000000000000000000000..962f2e5c7455d91bf32925d785f5f16b +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" DRV_NAME); -From af3405e9bd88d927560f492984bb769d0ee4a210 Mon Sep 17 00:00:00 2001 +From e13939694965ea45922bb1aac762dd304e29c251 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 055/133] char: broadcom: Add vcio module @@ -101791,7 +101791,7 @@ index 0000000000000000000000000000000000000000..c19bc2075c77879563ef5e59038b5a14 +MODULE_DESCRIPTION("Mailbox userspace access"); +MODULE_LICENSE("GPL"); -From 749a971f69d98d534f24c6816c5fbd8af4ffca27 Mon Sep 17 00:00:00 2001 +From 0c533fb19eccd178d7422816dcf42eb046b2a1c8 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 056/133] firmware: bcm2835: Support ARCH_BCM270x @@ -101900,7 +101900,7 @@ index dd506cd3a5b874f9e1acd07efb8cd151bb6145d1..b980d531b35b9981a88356ef1c8a7b86 MODULE_AUTHOR("Eric Anholt "); MODULE_DESCRIPTION("Raspberry Pi firmware driver"); -From b42e7a59915a50ba494c895593f825d618d8289d Mon Sep 17 00:00:00 2001 +From a7f5c542ca7327ae83a670b48e808098fecbee7b Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Wed, 30 Jan 2013 12:45:18 +0000 Subject: [PATCH 057/133] bcm2835: add v4l2 camera device @@ -109635,7 +109635,7 @@ index 0000000000000000000000000000000000000000..9d1d11e4a53e510c04a416d92d195a7d + +#endif /* MMAL_VCHIQ_H */ -From 18b5ab4588316cd8191786bdb79e50ee2c2f88f1 Mon Sep 17 00:00:00 2001 +From 4f3b4755d1fdaf21c2196584897243f480375af6 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 11 May 2015 09:00:42 +0100 Subject: [PATCH 058/133] scripts: Add mkknlimg and knlinfo scripts from tools @@ -110150,7 +110150,7 @@ index 0000000000000000000000000000000000000000..78c5845d2f01deb04b477327d83fa606 + return $trailer; +} -From 1dd324a060b8eab5ef7d4eb1dcf21e80c5df39b0 Mon Sep 17 00:00:00 2001 +From 9aa153fcdf67297ff85cd52e7c9420c782d530df Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 10 Aug 2015 09:49:15 +0100 Subject: [PATCH 059/133] scripts/dtc: Update to upstream version 1.4.1 @@ -113004,7 +113004,7 @@ index ad9b05ae698b0495ecbda42ffcf4743555313a27..2595dfda020fd9e03f0beff5006f229d -#define DTC_VERSION "DTC 1.4.1-g53bf130b" +#define DTC_VERSION "DTC 1.4.1-g25efc119" -From 8408e228a5f72b7c614f4c257d3392689712f6f7 Mon Sep 17 00:00:00 2001 +From 59aa060bf3e8bb828c9a4009877166e90c9bc3a1 Mon Sep 17 00:00:00 2001 From: notro Date: Wed, 9 Jul 2014 14:46:08 +0200 Subject: [PATCH 060/133] BCM2708: Add core Device Tree support @@ -122836,7 +122836,7 @@ index 0000000000000000000000000000000000000000..8498134fdbb3912e9ce18282b53084d8 + +}; -From 34fc507f939edb6f02ff6d3f2a2dc3f0de4017bf Mon Sep 17 00:00:00 2001 +From e2b767015c0689ec0d0a60b36f9541329a8a3f42 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 24 Aug 2016 16:28:44 +0100 Subject: [PATCH 061/133] kbuild: Ignore dtco targets when filtering symbols @@ -122859,7 +122859,7 @@ index 179219845dfcdfbeb586d12c5ec1296095d9fbf4..e0743e44f84188667a0c322e8c3d36f1 esac | tr ";" "\n" | sed -rn 's/^.*=== __KSYM_(.*) ===.*$$/KSYM_\1/p' -From b936ffbe110f2ff85d31ebfca695c58d96cf13ee Mon Sep 17 00:00:00 2001 +From e0e1b2218408e14a9b0671fdba9200ec3e66b010 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 13 Mar 2015 20:00:21 +0000 Subject: [PATCH 062/133] BCM270X_DT: Add a .dtbo target, use for overlays @@ -122945,7 +122945,7 @@ index 0a07f9014944ed92a8e2e42983ae43be60b3e471..b1513a7c175885137034b9f7225788c0 # Bzip2 -From e7ec9b6de4dd8a3dff524425b6884dd76596dae2 Mon Sep 17 00:00:00 2001 +From 71710ca1cd727834551a5c0cd851831e05ac99ec Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 8 Apr 2016 17:43:27 +0100 Subject: [PATCH 063/133] BCM270X_DT: Don't generate "linux,phandle" props @@ -122974,7 +122974,7 @@ index b1513a7c175885137034b9f7225788c0a7c35027..1d949b7410600dd3b04a3acde8c41cfe -d $(depfile).dtc.tmp $(dtc-tmp) ; \ cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) -From cc97745fd12a52d81624ae90a8caaca4b73a38b9 Mon Sep 17 00:00:00 2001 +From 3367dcee4ae6fad79183c4943b9f3cbe403aa45b Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 6 Feb 2015 13:50:57 +0000 Subject: [PATCH 064/133] BCM270x_DT: Add pwr_led, and the required "input" @@ -123153,7 +123153,7 @@ index 8a3b5d29602ffe665cfb26522180f3a696664371..d067976ddc2f34d5476bcd9321856b1c /* Set LED brightness level * Must not sleep. Use brightness_set_blocking for drivers -From 8b5af7a27f5fccf8ff00af66e85c56f4f870f3cf Mon Sep 17 00:00:00 2001 +From 5ff040fa30a3899c0b24b5b808abd3286943eeba Mon Sep 17 00:00:00 2001 From: Siarhei Siamashka Date: Mon, 17 Jun 2013 13:32:11 +0300 Subject: [PATCH 065/133] fbdev: add FBIOCOPYAREA ioctl @@ -123255,7 +123255,7 @@ index fb795c3b3c178ad3cd7c9e9e4547ffd492bac181..fa72af0c981710fe80bacf4cf6612f6d #define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */ #define FB_TYPE_PLANES 1 /* Non interleaved planes */ -From 7a2283c1db876185989b98b580a4b10408376274 Mon Sep 17 00:00:00 2001 +From f21804eef6f572ed104ddbd998aa0f35f0af1238 Mon Sep 17 00:00:00 2001 From: Harm Hanemaaijer Date: Thu, 20 Jun 2013 20:21:39 +0200 Subject: [PATCH 066/133] Speed up console framebuffer imageblit function @@ -123467,7 +123467,7 @@ index a2bb276a8b2463eee98eb237c4647bc00cd93601..436494fba15abecb400ef28688466faf start_index, pitch_index); } else -From 6917833d0e500c5b58e60a51e2317a9e838a3a3a Mon Sep 17 00:00:00 2001 +From a33a99a7be2f23ef94e0396abdd8a9981a4e3252 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 8 May 2013 11:46:50 +0100 Subject: [PATCH 067/133] enabling the realtime clock 1-wire chip DS1307 and @@ -123720,7 +123720,7 @@ index d58594a3232492e33f1dd4babd3798b03e0f0203..feae94256256316fd9d850c3d83325af unsigned int ext_pullup_enable_pin; unsigned int pullup_duration; -From 8a5349711374bc17138be91245c645f5adcd96a3 Mon Sep 17 00:00:00 2001 +From 3aae96b0bda04b82d6bd4f35de7760f570f5d6ff Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 18 Dec 2013 22:16:19 +0000 Subject: [PATCH 068/133] config: Enable CONFIG_MEMCG, but leave it disabled @@ -123773,7 +123773,7 @@ index d6b729beba4930bbb1a1ddc4a6a6b8533bbf94e0..69e8d214f663572319f784fe17032b1e * css_tryget_online_from_dir - get corresponding css from a cgroup dentry * @dentry: directory dentry of interest -From ac0c8ad8fd4aabf0301ce0c4fba2ca17c080a642 Mon Sep 17 00:00:00 2001 +From 40be2be146712cebcbaa70e2cd84a384bb1e2ddb Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 14 Jul 2014 22:02:09 +0100 Subject: [PATCH 069/133] hid: Reduce default mouse polling interval to 60Hz @@ -123812,7 +123812,7 @@ index ae83af649a607f67239f1a64bf45dd4b5770cc7d..4a7af9d0b910f59d17421ce14138400d ret = -ENOMEM; if (usb_endpoint_dir_in(endpoint)) { -From c45ca313c620cd0c89e006b8d6a76f119fb6bdef Mon Sep 17 00:00:00 2001 +From fb5905311ee0a57d1ebdb5220aa571b63075f203 Mon Sep 17 00:00:00 2001 From: Gordon Hollingworth Date: Tue, 12 May 2015 14:47:56 +0100 Subject: [PATCH 070/133] rpi-ft5406: Add touchscreen driver for pi LCD display @@ -124110,7 +124110,7 @@ index 0000000000000000000000000000000000000000..b27dbee8f56773dbd2a5503dc864747d +MODULE_DESCRIPTION("Touchscreen driver for memory based FT5406"); +MODULE_LICENSE("GPL"); -From cb377b63a6685624863eca57102f1a8aa861e0f7 Mon Sep 17 00:00:00 2001 +From 06a51e0b34869a8059d9f8f0335a8253245da51a Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 13 Oct 2014 11:47:53 +0100 Subject: [PATCH 071/133] Improve __copy_to_user and __copy_from_user @@ -125669,7 +125669,7 @@ index 6bd1089b07e0960830ed6bd6a8345202b7efd8b0..cd17dd11ebe7bbe00089e70cd2ccea74 static unsigned long noinline __clear_user_memset(void __user *addr, unsigned long n) -From 5603839ac26c4f41def5ecf5175071bae23e8b7b Mon Sep 17 00:00:00 2001 +From c22b680f44ff3703ab3670bbb801b0a2f0f5c2a7 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 25 Jun 2015 12:16:11 +0100 Subject: [PATCH 072/133] gpio-poweroff: Allow it to work on Raspberry Pi @@ -125707,7 +125707,7 @@ index be3d81ff51cc3f510d85e4eed7a52960e51e7bc1..a030ae9fb1fca325061c093696e82186 "%s: pm_power_off function already registered", __func__); -From 428270a47ec03d35af2d428e117f95f7239bbf2b Mon Sep 17 00:00:00 2001 +From 1bb52e6360c88bcb3ae0638fadbee236d50678cf Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 14 Jul 2015 14:32:47 +0100 Subject: [PATCH 073/133] mfd: Add Raspberry Pi Sense HAT core driver @@ -126575,7 +126575,7 @@ index 0000000000000000000000000000000000000000..56196dc2af10e464a1e3f98b028dca1c + +#endif -From e48fd071bbc48fb4889105e4484d91362488e8dd Mon Sep 17 00:00:00 2001 +From 8d441097e8301ddfe71b411695f277b9e9158c56 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 19:19:08 +0100 Subject: [PATCH 074/133] ASoC: Add support for HifiBerry DAC @@ -126752,7 +126752,7 @@ index 0000000000000000000000000000000000000000..29ecc08a227cdd4b3c6141935d0c5d21 +MODULE_DESCRIPTION("ASoC Driver for HifiBerry DAC"); +MODULE_LICENSE("GPL v2"); -From 20231065f5a688e3bdf6c10bb00e030f3a6bbc27 Mon Sep 17 00:00:00 2001 +From 99b41cf3b303275458ad9360746ddc1e41e8d7b6 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Mon, 25 Jan 2016 15:48:59 +0000 Subject: [PATCH 075/133] ASoC: Add support for Rpi-DAC @@ -127039,7 +127039,7 @@ index 0000000000000000000000000000000000000000..afe1b419582aa40c4b2729d242bb13cd +MODULE_AUTHOR("Florian Meier "); +MODULE_LICENSE("GPL v2"); -From 771040e82eb1860c53dd44afd906613ccf4e7d41 Mon Sep 17 00:00:00 2001 +From 4ba0700ed4024b02ed837e6aa20472d540b642e7 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Wed, 15 Jan 2014 21:41:23 +0100 Subject: [PATCH 076/133] ASoC: wm8804: Implement MCLK configuration options, @@ -127091,7 +127091,7 @@ index 8d914702cae4a3fe2c0ca0599cd1ec79f7322c83..c846716b4ed1027ade5512e8be90801d .dapm_widgets = wm8804_dapm_widgets, .num_dapm_widgets = ARRAY_SIZE(wm8804_dapm_widgets), -From 0ad30227152c9b528583555efb97e0814992e927 Mon Sep 17 00:00:00 2001 +From 362d51e6d195b4fd1c24bd3f3cc0c32654f730e3 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Wed, 15 Jan 2014 21:42:08 +0100 Subject: [PATCH 077/133] ASoC: BCM:Add support for HiFiBerry Digi. Driver is @@ -127382,7 +127382,7 @@ index 0000000000000000000000000000000000000000..9840e15d3e2be6396bc3ce6e74749408 +MODULE_DESCRIPTION("ASoC Driver for HifiBerry Digi"); +MODULE_LICENSE("GPL v2"); -From e5c37237eabcdac6657c151ff57645609ff84b58 Mon Sep 17 00:00:00 2001 +From 722a9e44f813b02bda1ebca5765b817cddc0f566 Mon Sep 17 00:00:00 2001 From: Gordon Garrity Date: Sat, 8 Mar 2014 16:56:57 +0000 Subject: [PATCH 078/133] Add IQaudIO Sound Card support for Raspberry Pi @@ -127715,7 +127715,7 @@ index 0000000000000000000000000000000000000000..4e8e6dec14bcf4a1ff286c43742d4097 +MODULE_DESCRIPTION("ASoC Driver for IQAudio DAC"); +MODULE_LICENSE("GPL v2"); -From be291a7d7691daedbcea4310804bf8e5c0be2d19 Mon Sep 17 00:00:00 2001 +From 497b938312ca04558a3ac9b58bbbb009eb4dbbc3 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 25 Jul 2016 17:06:50 +0100 Subject: [PATCH 079/133] iqaudio-dac: Compile fix - untested @@ -127742,7 +127742,7 @@ index 4e8e6dec14bcf4a1ff286c43742d4097249d6777..aa15bc4b49ca95edec905fddd8fd0a6d if (dapm->dev != codec_dai->dev) return 0; -From 41c0f23ead247551161d55bbfed445e50a4855e9 Mon Sep 17 00:00:00 2001 +From 27aca523108059e07b28bd73e49a455d1ad07afe Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Mon, 4 Aug 2014 10:06:56 +0200 Subject: [PATCH 080/133] Added support for HiFiBerry DAC+ @@ -128374,7 +128374,7 @@ index 047c48953a20cd4075000ac294a17fe59baedcde..090fe0ee08e8765f9edbb62777413bb6 dev_err(dev, "No LRCLK?\n"); return -EINVAL; -From d9a67c321395007b43d0f367845abec6e1fa2bfd Mon Sep 17 00:00:00 2001 +From c5a5fb9ed76afba271fde65059904fca4d90bfb2 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Mon, 4 Aug 2014 11:09:58 +0200 Subject: [PATCH 081/133] Added driver for HiFiBerry Amp amplifier add-on board @@ -129209,7 +129209,7 @@ index 0000000000000000000000000000000000000000..8f019e04898754d2f87e9630137be9e8 + +#endif /* _TAS5713_H */ -From 821a4a5d6873b3e5dbbf2de11fd010aa07757463 Mon Sep 17 00:00:00 2001 +From f60a9818aba0457dc2b18a9577f9435371a1cdc6 Mon Sep 17 00:00:00 2001 From: "Daniel Matuschek (HiFiBerry)" Date: Tue, 26 Jul 2016 19:16:25 +0200 Subject: [PATCH 082/133] Added HiFiBerry Digi+ Pro driver @@ -129320,7 +129320,7 @@ index 9840e15d3e2be6396bc3ce6e74749408cc28c333..52ab9dea2e724c4238986ca53c59c849 ret = snd_soc_register_card(&snd_rpi_hifiberry_digi); -From 6e2f1a16d00045f667d32195174363e49b6827fd Mon Sep 17 00:00:00 2001 +From 5986266b254bf71871c77cbeb734e79c9fc64198 Mon Sep 17 00:00:00 2001 From: Ryan Coe Date: Sat, 31 Jan 2015 18:25:49 -0700 Subject: [PATCH 083/133] Update ds1307 driver for device-tree support @@ -129350,7 +129350,7 @@ index 8e1c5cb6ece6f60619e5cafcea4271e056d96778..f9536679b270a39a4d9639fdbd3420fe .driver = { .name = "rtc-ds1307", -From 7420b376c139f855278744f8b3352a21bc71d130 Mon Sep 17 00:00:00 2001 +From bb714661d70519e8712d8cc66661093656f58358 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Wed, 25 Mar 2015 09:26:17 +0100 Subject: [PATCH 084/133] Add driver for rpi-proto @@ -129569,7 +129569,7 @@ index 0000000000000000000000000000000000000000..9db678e885efd63d84d60a098a84ed67 +MODULE_DESCRIPTION("ASoC Driver for Raspberry Pi connected to PROTO board (WM8731)"); +MODULE_LICENSE("GPL"); -From e7746320e7fc8f073a56cfe99eee391d2a53bd42 Mon Sep 17 00:00:00 2001 +From 63319d985ede2f7ef61282f4d747808d93a92b7d Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Mon, 24 Aug 2015 16:03:47 +0100 Subject: [PATCH 085/133] RaspiDAC3 support @@ -129815,7 +129815,7 @@ index 0000000000000000000000000000000000000000..dd9eeea2af0382307f437e6db09d1546 +MODULE_DESCRIPTION("ASoC Driver for RaspiDAC Rev.3x"); +MODULE_LICENSE("GPL v2"); -From 40543851c29730ad9b78b97025a2ffe6091eced7 Mon Sep 17 00:00:00 2001 +From 3a182dafc91ca024aee3c64b9bf443cdb516fc71 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 9 Aug 2016 14:49:23 +0100 Subject: [PATCH 086/133] tpa6130a2: Add headphone switch control @@ -129927,7 +129927,7 @@ index f1ea052a822e1f584eb55cbc876b8e079e813ccd..3bf0163956c5665683d7950798df527f { struct tpa6130a2_data *data = snd_soc_component_get_drvdata(component); -From 67dc0f1ba8eaacbbb12332051830ebed7e281ab0 Mon Sep 17 00:00:00 2001 +From d43316c3ff8ea4822df2496be31400e91438fc3e Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 9 Aug 2016 14:49:29 +0100 Subject: [PATCH 087/133] Revert "tpa6130a2: Add headphone switch control" @@ -130039,7 +130039,7 @@ index 3bf0163956c5665683d7950798df527fa1b57b59..f1ea052a822e1f584eb55cbc876b8e07 { struct tpa6130a2_data *data = snd_soc_component_get_drvdata(component); -From 91dbef4b0b3f8c13d484f40de7738db11ca0d27b Mon Sep 17 00:00:00 2001 +From cb97e9c6a0b9aaf7ebb6b9c9a11974a6759e5a33 Mon Sep 17 00:00:00 2001 From: Aaron Shaw Date: Thu, 7 Apr 2016 21:26:21 +0100 Subject: [PATCH 088/133] Add Support for JustBoom Audio boards @@ -130496,7 +130496,7 @@ index 0000000000000000000000000000000000000000..91acb666380faa3c0deb2230f8a0f8bb +MODULE_DESCRIPTION("ASoC Driver for JustBoom PI Digi HAT Sound Card"); +MODULE_LICENSE("GPL v2"); -From 4df23efc45d5ea9152da9bb28ebe8a999b7fbf02 Mon Sep 17 00:00:00 2001 +From 552f2030ac9a8a6714494e0cfbb5b6db3ac16913 Mon Sep 17 00:00:00 2001 From: Andrey Grodzovsky Date: Tue, 3 May 2016 22:10:59 -0400 Subject: [PATCH 089/133] ARM: adau1977-adc: Add basic machine driver for @@ -130681,7 +130681,7 @@ index 0000000000000000000000000000000000000000..6e2ee027926ee63c89222f75ceb89e3d +MODULE_DESCRIPTION("ASoC Driver for ADAU1977 ADC"); +MODULE_LICENSE("GPL v2"); -From 4d1a66b24f66b88cdb4ab02bfd70587e1c29690b Mon Sep 17 00:00:00 2001 +From dbdab3a61d86bb349e8303007338c9e9068120e2 Mon Sep 17 00:00:00 2001 From: Matt Flax Date: Mon, 16 May 2016 21:36:31 +1000 Subject: [PATCH 090/133] New AudioInjector.net Pi soundcard with low jitter @@ -130933,7 +130933,7 @@ index 0000000000000000000000000000000000000000..5ff0985e07efb96b95634a65995f09f7 +MODULE_ALIAS("platform:audioinjector-pi-soundcard"); + -From dc02dff9d51c80084879037345cc3f9773ff65ff Mon Sep 17 00:00:00 2001 +From 917a96d289cab81fea006276c07deef0bc594c3f Mon Sep 17 00:00:00 2001 From: DigitalDreamtime Date: Thu, 30 Jun 2016 18:38:42 +0100 Subject: [PATCH 091/133] Add IQAudIO Digi WM8804 board support @@ -131236,7 +131236,7 @@ index 0000000000000000000000000000000000000000..9b6e829bcb5b1762a853775e78163196 +MODULE_DESCRIPTION("ASoC Driver for IQAudIO WM8804 Digi"); +MODULE_LICENSE("GPL v2"); -From 9b36ab6c869b182e2f34d1bf1bd346700da1e841 Mon Sep 17 00:00:00 2001 +From 6c9818de78faa595e8dec34921db0f5a3c24dbdd Mon Sep 17 00:00:00 2001 From: escalator2015 Date: Tue, 24 May 2016 16:20:09 +0100 Subject: [PATCH 092/133] New driver for RRA DigiDAC1 soundcard using WM8741 + @@ -131712,7 +131712,7 @@ index 0000000000000000000000000000000000000000..446796e7e4c14a7d95b2f2a01211d9a0 +MODULE_DESCRIPTION("ASoC Driver for RRA DigiDAC1"); +MODULE_LICENSE("GPL v2"); -From 6129fa0c8b10f4c670e61227de424762df249f50 Mon Sep 17 00:00:00 2001 +From f36e6ef700f5d416745ac40a848d620de89b0fc0 Mon Sep 17 00:00:00 2001 From: DigitalDreamtime Date: Sat, 2 Jul 2016 16:26:19 +0100 Subject: [PATCH 093/133] Add support for Dion Audio LOCO DAC-AMP HAT @@ -131888,7 +131888,7 @@ index 0000000000000000000000000000000000000000..89e65317512bc774453ac8d0d5b0ff98 +MODULE_DESCRIPTION("ASoC Driver for DionAudio LOCO"); +MODULE_LICENSE("GPL v2"); -From d9cae57761eb2a3cf96dcdaad04363f76960fb65 Mon Sep 17 00:00:00 2001 +From 80b1d272eaf5373aa4aaef1025180e17173724bc Mon Sep 17 00:00:00 2001 From: Clive Messer Date: Mon, 19 Sep 2016 14:01:04 +0100 Subject: [PATCH 094/133] Allo Piano DAC boards: Initial 2 channel (stereo) @@ -132098,7 +132098,7 @@ index 0000000000000000000000000000000000000000..8e8e62e5a36a279b425ed4655cfbac99 +MODULE_DESCRIPTION("ALSA ASoC Machine Driver for Allo Piano DAC"); +MODULE_LICENSE("GPL v2"); -From 733cb62a453138ed46fce36aef38fdc5761294ee Mon Sep 17 00:00:00 2001 +From 95f53ad904af8e3b9be9e62f0f84e52b43edd219 Mon Sep 17 00:00:00 2001 From: P33M Date: Wed, 21 Oct 2015 14:55:21 +0100 Subject: [PATCH 095/133] rpi_display: add backlight driver and overlay @@ -132270,7 +132270,7 @@ index 0000000000000000000000000000000000000000..14a0d9b037395497c1fdae2961feccd5 +MODULE_DESCRIPTION("Raspberry Pi mailbox based Backlight Driver"); +MODULE_LICENSE("GPL"); -From b66978c79d42288887c48f7b0aba8e302158939f Mon Sep 17 00:00:00 2001 +From bd6634fc3b4c6b05819371848921eeb7517cf902 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 23 Feb 2016 19:56:04 +0000 Subject: [PATCH 096/133] bcm2835-virtgpio: Virtual GPIO driver @@ -132499,7 +132499,7 @@ index 0000000000000000000000000000000000000000..f3e0f1620b979e4fa3c7e556eb785ac2 +MODULE_DESCRIPTION("brcmvirt GPIO driver"); +MODULE_ALIAS("platform:brcmvirt-gpio"); -From ce00d0bcc772349fd7e7b10a542ee3b91cd3216e Mon Sep 17 00:00:00 2001 +From dd4fa828f6f545fc6dadd4ef4b5d5c82ec117690 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 4 Mar 2016 12:49:09 +0000 Subject: [PATCH 097/133] DRM_VC4: Allow to be built for ARCH_BCM270x @@ -132521,7 +132521,7 @@ index e53df59cb139f25f8e6ae916bca93abf0c49e063..f6e938208b73512f20eab46a383ca91b select DRM_KMS_HELPER select DRM_KMS_CMA_HELPER -From 57a8dea225977d7adcbe04f6ab3f3526884178d2 Mon Sep 17 00:00:00 2001 +From 8044f69ae2b56ea458a20b513f1f2d56e5910d11 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 23 Feb 2016 17:26:48 +0000 Subject: [PATCH 098/133] amba_pl011: Don't use DT aliases for numbering @@ -132553,7 +132553,7 @@ index 8a9e213387a79fcc335caad27520a68edf03f446..4a5a1c5cf9b345e255f4d79714a7ae46 uap->old_cr = 0; uap->port.dev = dev; -From 82c4ed7e0e54c918b84a3dd45824312b0505df67 Mon Sep 17 00:00:00 2001 +From 48e96cdb3fbd584ac2e6b5412ac45318c867fb9a Mon Sep 17 00:00:00 2001 From: Pantelis Antoniou Date: Wed, 3 Dec 2014 13:23:28 +0200 Subject: [PATCH 099/133] OF: DT-Overlay configfs interface @@ -132988,7 +132988,7 @@ index 0000000000000000000000000000000000000000..0037e6868a6cda8706c88194c6a4454b +} +late_initcall(of_cfs_init); -From 474664bc68b6dd8b217e4f1c5fb8144da2741d96 Mon Sep 17 00:00:00 2001 +From 3e09710fca5b0bd7ae65c8fb8ca8f471d496fcef Mon Sep 17 00:00:00 2001 From: Cheong2K Date: Fri, 26 Feb 2016 18:20:10 +0800 Subject: [PATCH 100/133] brcm: adds support for BCM43341 wifi @@ -133031,7 +133031,7 @@ index 3cc42bef6245529c37320f0ec6ab5e7b77f1d2f6..2ae9d0c9dbaaab6bc16610ac012039cd #define BRCM_CC_4335_CHIP_ID 0x4335 #define BRCM_CC_4339_CHIP_ID 0x4339 -From bcd3e9e092f35b76532777fc1ded0dce325827fe Mon Sep 17 00:00:00 2001 +From 78357f179e557462830725efebc2ffd8b8711d97 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 9 Mar 2016 17:25:59 +0000 Subject: [PATCH 101/133] brcmfmac: Disable power management @@ -133046,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 b8aec5e5ef93e28dfb70c95557d7388fd9b67bef..a13351c4f8401263c04ae1f2dd81e84f28303c12 100644 +index abaf003a5b396f94e891c6569217ffbb595987e1..f6221c20ff8e2c07a9ddb329204cc59ce574117b 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -2759,6 +2759,8 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, +@@ -2762,6 +2762,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 */ @@ -133059,7 +133059,7 @@ index b8aec5e5ef93e28dfb70c95557d7388fd9b67bef..a13351c4f8401263c04ae1f2dd81e84f if (!check_vif_up(ifp->vif)) { -From 2c3a1291a7bc8c888e4e7423c0240f58e2b6d5e3 Mon Sep 17 00:00:00 2001 +From 4504b967e9be672f59852b3ca985b3b667472ffa Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 28 Apr 2016 17:13:47 +0100 Subject: [PATCH 102/133] brcmfmac: Use original country code as a fallback @@ -133078,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 a13351c4f8401263c04ae1f2dd81e84f28303c12..25efa073602397780e308bf00416e949c60ab678 100644 +index f6221c20ff8e2c07a9ddb329204cc59ce574117b..12bffe239e9d28ce8f73db48b3f5759ffe550162 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -6737,12 +6737,18 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], +@@ -6740,12 +6740,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; @@ -133102,7 +133102,7 @@ index a13351c4f8401263c04ae1f2dd81e84f28303c12..25efa073602397780e308bf00416e949 } if ((alpha2[0] == ccreq->country_abbrev[0]) && -@@ -6766,10 +6772,14 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], +@@ -6769,10 +6775,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; } @@ -133121,46 +133121,10 @@ index a13351c4f8401263c04ae1f2dd81e84f28303c12..25efa073602397780e308bf00416e949 ccreq->country_abbrev[1] = alpha2[1]; ccreq->country_abbrev[2] = 0; -From 826d67d2a5d87fdcae2a1cebfb344f25f2d0009d Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Thu, 19 May 2016 15:36:09 +0100 -Subject: [PATCH 103/133] brcmfmac: Plug memory leak in brcmf_fill_bss_param - -See: https://github.com/raspberrypi/linux/issues/1471 - -Signed-off-by: Phil Elwell ---- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 5 ++++- - 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 25efa073602397780e308bf00416e949c60ab678..9f50ef00a8823011a806a2b86775abb8d5f9de54 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -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); -- return; -+ goto out_err; - } - si->filled |= BIT(NL80211_STA_INFO_BSS_PARAM); - si->bss_param.beacon_interval = le16_to_cpu(buf->bss_le.beacon_period); -@@ -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; -+ -+out_err: -+ kfree(buf); - } - - static s32 - -From 042f3b792977f3d8c04a18edc261c77f526c0c77 Mon Sep 17 00:00:00 2001 +From f4effcdad3727c800a85771a121a7c81cb662bad Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 13 Sep 2016 16:32:37 +0100 -Subject: [PATCH 104/133] brcmfmac: do not use internal roaming engine by +Subject: [PATCH 103/133] brcmfmac: do not use internal roaming engine by default Some evidence of curing disconnects with this disabled, so make it a default. @@ -133184,10 +133148,10 @@ index 3e15d64c64813513bc22202dd9e468588699abb0..4051780f64f44a5ce522babe6c371a1b MODULE_PARM_DESC(roamoff, "Do not use internal roaming engine"); -From f164e38cf7f30f0b9ee4f0acbfdf70ae3c967cd0 Mon Sep 17 00:00:00 2001 +From 26a7afe4bdd277a8ed282fe6d924ae59b83384c6 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 31 Aug 2016 17:10:09 +0100 -Subject: [PATCH 105/133] brcmfmac: Change stop_ap sequence +Subject: [PATCH 104/133] brcmfmac: Change stop_ap sequence Patch from Broadcom/Cypress to resolve a customer error @@ -133197,7 +133161,7 @@ Signed-off-by: Phil Elwell 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 +index 12bffe239e9d28ce8f73db48b3f5759ffe550162..0c3cecb22763db2db5ccbc1789f50b2b361e4a9c 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) @@ -133220,10 +133184,10 @@ index 9f50ef00a8823011a806a2b86775abb8d5f9de54..b3ef2bb5642ce3ff0b74c5bab97114f7 brcmf_fil_iovar_int_set(ifp, "mbss", 0); err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_REGULATORY, -From f79c9a8978d52194c98c65d653c7b18ff3469737 Mon Sep 17 00:00:00 2001 +From 2e77cd765f85994a46ca1f64b1c2d638f4eba866 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 17 Dec 2015 13:37:07 +0000 -Subject: [PATCH 106/133] hci_h5: Don't send conf_req when ACTIVE +Subject: [PATCH 105/133] 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. @@ -133246,10 +133210,10 @@ index 0879d64b1caf58afb6e5d494c07d9ab7e7cdf983..5161ab30fd533d50f516bb93d5b9f402 if (H5_HDR_LEN(hdr) > 2) h5->tx_win = (data[2] & 0x07); -From 3e42b2f4ac358bc2e28962073240014f3b2d2864 Mon Sep 17 00:00:00 2001 +From d0bacd8ae2b478be18e0463d630bc46d0a540a22 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 22 Jan 2016 13:06:39 -0800 -Subject: [PATCH 107/133] drm/vc4: Add a debugfs node for tracking execution +Subject: [PATCH 106/133] drm/vc4: Add a debugfs node for tracking execution state. Signed-off-by: Eric Anholt @@ -133309,10 +133273,10 @@ index b262c5c26f109702572ed613fa0965f06a993ef9..27f42023fa49c7e62e643dc007e9e121 vc4_queue_hangcheck(struct drm_device *dev) { -From b4bb84ce6c8cf7630cc9e9ecde3b33a2e9a7c452 Mon Sep 17 00:00:00 2001 +From f64994b0175ade91579e3b337804b4c4661924e8 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 25 Jan 2016 13:03:33 -0800 -Subject: [PATCH 108/133] drm/vc4: Include vc4_drm.h in uapi in downstream +Subject: [PATCH 107/133] drm/vc4: Include vc4_drm.h in uapi in downstream build. Signed-off-by: Eric Anholt @@ -133333,10 +133297,10 @@ index 9355dd8eff3ba39401dfe37e7fbf7737f0397f11..68828bf586f05a8d9b0a6ab409ee91a7 header-y += vmwgfx_drm.h header-y += msm_drm.h -From c22f3983b5514c5ed39c3a5639e082ec9ae67389 Mon Sep 17 00:00:00 2001 +From 35da78653fd3c928405841ca2e2f36c660d199de Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 14 Oct 2015 11:32:14 -0700 -Subject: [PATCH 109/133] drm/vc4: Force HDMI to connected. +Subject: [PATCH 108/133] drm/vc4: Force HDMI to connected. For some reason on the downstream tree, the HPD GPIO isn't working. @@ -133359,10 +133323,10 @@ index 4452f3631cacea37bbd5dc8a594367631e308adc..3a622f70a077c2ebe214830f5d700cd8 if (gpio_get_value_cansleep(vc4->hdmi->hpd_gpio) ^ vc4->hdmi->hpd_active_low) -From ad9b6dc8b0ac99384cefa90928c6130ad2225689 Mon Sep 17 00:00:00 2001 +From 90d38277d9d9974217927887e330cd6db24479b3 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 13 Apr 2015 17:16:29 +0100 -Subject: [PATCH 110/133] config: Add default configs +Subject: [PATCH 109/133] config: Add default configs --- arch/arm/configs/bcm2709_defconfig | 1294 +++++++++++++++++++++++++++++++++++ @@ -135981,10 +135945,10 @@ index 0000000000000000000000000000000000000000..cfe21355f7d95326b292be1b018b988f +CONFIG_CRC_ITU_T=y +CONFIG_LIBCRC32C=y -From 912bf1f3da1894d3018be20fe9ee39c023cacdd8 Mon Sep 17 00:00:00 2001 +From 8dc615f6120d3b2461fbfbaebb12b6836161e192 Mon Sep 17 00:00:00 2001 From: Michael Zoran Date: Wed, 24 Aug 2016 03:35:56 -0700 -Subject: [PATCH 111/133] Add arm64 configuration and device tree differences. +Subject: [PATCH 110/133] Add arm64 configuration and device tree differences. Disable MMC_BCM2835_SDHOST and MMC_BCM2835 since these drivers are crashing at the moment. @@ -137387,10 +137351,10 @@ index 0000000000000000000000000000000000000000..1fcde8c1329bbfd329245a8bb1769199 +CONFIG_LIBCRC32C=y +CONFIG_BCM2708_VCHIQ=n -From 185ba8c40aa985d54692020a61d45d499cabb3ae Mon Sep 17 00:00:00 2001 +From 13c1b1bef46969e12fe3a56278c1cda9ebea1a57 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 5 Oct 2016 16:10:59 +0100 -Subject: [PATCH 112/133] bcm2835-cpufreq: Only report a single frequency when +Subject: [PATCH 111/133] 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) @@ -137459,10 +137423,10 @@ index 3eb9e9326231b08e6ee95ad486485245c71cf868..414fbdc10dfbfc6e4bb47870a7af3fd5 /* the CPUFreq driver */ -From 40920ca8f094d54576befc80cd384f69a70d4a3a Mon Sep 17 00:00:00 2001 +From 3c603169e9eddab5d8b1c37235a3802ea257071b Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 7 Oct 2016 12:37:09 +0100 -Subject: [PATCH 113/133] scripts/mkknlimg: Change string for DDT detection +Subject: [PATCH 112/133] scripts/mkknlimg: Change string for DDT detection 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 @@ -137489,10 +137453,10 @@ index 78c5845d2f01deb04b477327d83fa60624f87f98..a21f7e31bc904233e980e66ae3e6337e my $res = try_extract($kernel_file, $tmpfile1); -From 0c9eadf7a7fcfe0e54e2ee3c9bc7a53d6bb75561 Mon Sep 17 00:00:00 2001 +From 3cd83195169e2473da3f1b0b463525b15b099821 Mon Sep 17 00:00:00 2001 From: Herve Jourdain Date: Fri, 20 May 2016 16:02:23 +0800 -Subject: [PATCH 114/133] build: support for .dtbo files for dtb overlays +Subject: [PATCH 113/133] 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 @@ -137534,10 +137498,10 @@ index 1d949b7410600dd3b04a3acde8c41cfead15bfa4..1967878a843461c3ff1f473b9a030eb0 -d $(depfile).dtc.tmp $(dtc-tmp) ; \ cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) -From 9473e3e35b968de7d55d20572dc0699ed2c7b5d3 Mon Sep 17 00:00:00 2001 +From 22f0fb2b8542920ca9af3add8348d05803d8b276 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Thu, 6 Oct 2016 19:42:55 -0700 -Subject: [PATCH 115/133] [media]bcm2835-camera: fix compilation warning/werror +Subject: [PATCH 114/133] [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 ] @@ -137567,10 +137531,10 @@ index 70f4db2741037381e638d1dda5a95478809eb161..cb5bab642eaab2f60d641801dd0afdac struct bm2835_mmal_dev *dev = vb2_get_drv_priv(vq); unsigned long size; -From 3c1511fa2d36da24b0865534327ee2d6a836d8fc Mon Sep 17 00:00:00 2001 +From 616c5c4cd2030dd22981b5918bddb76a778e7c4a 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/133] bcm2709: Drop platform smp and timer init code +Subject: [PATCH 115/133] bcm2709: Drop platform smp and timer init code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -137745,10 +137709,10 @@ index 90773a30b87abbfda1615326c6faf59b9db6d68e..d4c9d57d78a964fbbf799b534471462d .init_early = bcm2709_init_early, .reserve = board_reserve, -From 837db1841c3305cba3257de7fa9acded0d3e43d8 Mon Sep 17 00:00:00 2001 +From 37a8cc3aa4b014988237b32c4488a57be94b8ca3 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/133] BCM270X_DT: Use bcm283x.dtsi, bcm2835.dtsi and +Subject: [PATCH 116/133] BCM270X_DT: Use bcm283x.dtsi, bcm2835.dtsi and bcm2836.dtsi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -138877,10 +138841,10 @@ index 223bd9627b3dcaac5458909dc59c877eed751ce4..491594c918cf5da94fbb19a606edb0dd +}; +#endif -From 4c3a15347f23d25c02bf21d93c7acb24aee2f0ba Mon Sep 17 00:00:00 2001 +From 5a13c708c76934bc7483650a218f75dca70fb8c3 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/133] watchdog: bcm2835: Support setting reboot partition +Subject: [PATCH 117/133] watchdog: bcm2835: Support setting reboot partition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -139004,10 +138968,10 @@ index 4dddd8298a227d64862f2e92954a465f2e44b3f6..1f545e024422f59280932713e6a1b051 register_restart_handler(&wdt->restart_handler); if (pm_power_off == NULL) -From 39e27f829bd8762885bbe882f3957135821d6497 Mon Sep 17 00:00:00 2001 +From 9eba7f4bdc01e2d7efb6c1e12d55111e07a2738b 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/133] bcm270x: Use watchdog for reboot/poweroff +Subject: [PATCH 118/133] bcm270x: Use watchdog for reboot/poweroff MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -139266,10 +139230,10 @@ index d4c9d57d78a964fbbf799b534471462d3c3b88f1..ed5c5414f7a3ad7284cda881e9e55077 module_param(serial, uint, 0644); -module_param(reboot_part, uint, 0644); -From 80a42c7c0562105089444dd68071d62a345bb79d Mon Sep 17 00:00:00 2001 +From d3463d34f01707e97ac000c65c2abe276ff54028 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/133] bcm270x: Remove dead files +Subject: [PATCH 119/133] bcm270x: Remove dead files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -139470,10 +139434,10 @@ index 6aa68260dd866c83527dffece8de483913231fb3..00000000000000000000000000000000 - */ -#define VMALLOC_END (0xff000000) -From daaa7bb6ab36a9f2c5134bcacd2bc68b57a34691 Mon Sep 17 00:00:00 2001 +From 82da69473f3e27c89d26701e9bd2e6e81153a6c6 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/133] bcm270x: Drop bcm2835-aux-uart hack +Subject: [PATCH 120/133] bcm270x: Drop bcm2835-aux-uart hack MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -139553,10 +139517,10 @@ index ed5c5414f7a3ad7284cda881e9e550777cd29282..9a1ad48d13172856e3ec748db015cb95 system_serial_low = serial; } -From 1f1a94d603bc5175910448b886bdec68ef0664e1 Mon Sep 17 00:00:00 2001 +From d680b9c559d1cfc467f42695128254d1471cf00e 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/133] Revert "bcm2835: Add support for uart1" +Subject: [PATCH 121/133] Revert "bcm2835: Add support for uart1" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -139614,10 +139578,10 @@ index 0ef5cd3d1d6ec420360294acc98d40d698d38d8a..8f152266ba9b470df2eaaed9ebcf158e static const char * const bcm2835_compat[] = { -From 339aad90adc3a12f2a09ce5a1daee17a749506c2 Mon Sep 17 00:00:00 2001 +From 932b2d1bbff9515be1e6e3ec6901c024d40554d4 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/133] bcm270x: Remove unnecessary of_platform_populate +Subject: [PATCH 122/133] bcm270x: Remove unnecessary of_platform_populate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -139692,10 +139656,10 @@ index 9a1ad48d13172856e3ec748db015cb95cd110b76..d2762f558f644ac87c56ba9402a638a3 system_serial_low = serial; } -From 1f6f93598f0badf5d1f448ad8db3081a2b37d52b Mon Sep 17 00:00:00 2001 +From 8c2512c07ada399a412e22a60b4d568e734b6145 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/133] bcm270x: Remove 4MB dma coherent pool +Subject: [PATCH 123/133] bcm270x: Remove 4MB dma coherent pool MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -139776,10 +139740,10 @@ index d2762f558f644ac87c56ba9402a638a3c7a26397..d0e43619669e851350c5d9d7bb7e9dd1 .dt_compat = bcm2709_compat, MACHINE_END -From 29d1d588931d9fe7843d62962fde7ff7e2bebded Mon Sep 17 00:00:00 2001 +From f1128ffff4dd59610e68a74f453ecd02faa72c19 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/133] bcm270x: Drop map_io device mapping +Subject: [PATCH 124/133] bcm270x: Drop map_io device mapping MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -140728,10 +140692,10 @@ index de7504bfc20ba24be8707861b8389783860adb77..00000000000000000000000000000000 - */ -#define arch_decomp_wdog() -From 92c6799f0299e081e9e9c737f7bb02a1e30a56fc Mon Sep 17 00:00:00 2001 +From 2f9da3eb26ad9794e14751dafe317fcdf1f9f884 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/133] bcm270x: Use DT_MACHINE_START +Subject: [PATCH 125/133] bcm270x: Use DT_MACHINE_START MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -140813,10 +140777,10 @@ index b52d949ee91d96eb7672fbbb4969bfa1e7afc376..2ed1b8a922ed02b9e3545991873af77b ics_if_voip MACH_ICS_IF_VOIP ICS_IF_VOIP 3206 wlf_cragg_6410 MACH_WLF_CRAGG_6410 WLF_CRAGG_6410 3207 -From f5e3cafd855dda46e310849991ee4923445b86e1 Mon Sep 17 00:00:00 2001 +From 73425c95121ff9235ca2221c490841c2441694fe Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 11 Oct 2016 17:48:07 +0100 -Subject: [PATCH 127/133] Use DT rather than modules params for board rev and +Subject: [PATCH 126/133] Use DT rather than modules params for board rev and serial --- @@ -140910,10 +140874,10 @@ index 9cf36118e57b3c362de9adcf089425023d4a601d..9f113736627175bdcb362e0eda469e09 -module_param(boardrev, uint, 0644); -module_param(serial, uint, 0644); -From d14a603a47fbedc793bba0dce63b19a1545ad9be Mon Sep 17 00:00:00 2001 +From 58670873d8bbc78caa5fb27912b4cce51a7be225 Mon Sep 17 00:00:00 2001 From: Martin Sperl Date: Fri, 2 Sep 2016 16:45:27 +0100 -Subject: [PATCH 128/133] Register the clocks early during the boot process, so +Subject: [PATCH 127/133] 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. @@ -140959,10 +140923,10 @@ index fbf616021704178a9d007219a0ea2a9f1704f0a6..cbbc8d4ddcffc797268c0ecb6477005f MODULE_AUTHOR("Eric Anholt "); MODULE_DESCRIPTION("BCM2835 clock driver"); -From 16ecc1b9ec6dcb636b3e0bd6cc96d56ed16c170d Mon Sep 17 00:00:00 2001 +From dce21deb558be888b6a3744ed14c8f096416aa7e Mon Sep 17 00:00:00 2001 From: Scott Ellis Date: Tue, 27 Sep 2016 04:29:00 -0400 -Subject: [PATCH 129/133] Add Adafruit pitft35 touchscreen support (#1657) +Subject: [PATCH 128/133] Add Adafruit pitft35 touchscreen support (#1657) The dts comes from the Adafruit repository @@ -141167,10 +141131,10 @@ index 952104ab6c4cd0e9d8f7bd5f2fba7a72da75424e..26fa6c2b6b6d745178e666465ba226af CONFIG_FB_TFT_ILI9320=m CONFIG_FB_TFT_ILI9325=m -From 2a59957ae7482d3bf1b6e4e45ab209da6365c66c Mon Sep 17 00:00:00 2001 +From 48dbca68f2cb7bb5d72721415c39f2206fd6495c Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 10 Oct 2016 15:06:20 +0100 -Subject: [PATCH 130/133] BCM270X_DT: Update CM3 to use sdhost interface +Subject: [PATCH 129/133] BCM270X_DT: Update CM3 to use sdhost interface --- arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 9 ++++----- @@ -141206,10 +141170,10 @@ index b5a5ae7747455438f8eabd28e8c11c6aeb0c1ecc..d13e3d4dac4e198c8cac451e3f64ef68 bus-width = <4>; status = "okay"; -From 938aa4394c9ab18f4674df2854a2970afa5da5b8 Mon Sep 17 00:00:00 2001 +From 7ece1f81bf9766f552742e7ec4019cbc10c92535 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 11 Oct 2016 18:10:17 +0100 -Subject: [PATCH 131/133] Revert "Register the clocks early during the boot +Subject: [PATCH 130/133] Revert "Register the clocks early during the boot process," This reverts commit bcc804ce3dfd5eb4800c9dd77370da7e7913f77d. @@ -141253,10 +141217,10 @@ index cbbc8d4ddcffc797268c0ecb6477005fa14e228b..fbf616021704178a9d007219a0ea2a9f MODULE_AUTHOR("Eric Anholt "); MODULE_DESCRIPTION("BCM2835 clock driver"); -From d64cdc61cc63683ada1004d9a8c97ffd62e6bab4 Mon Sep 17 00:00:00 2001 +From 5c9bf74f1c69d59342147bded52718452eda6fa9 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 12 Oct 2016 15:10:14 +0100 -Subject: [PATCH 132/133] mmc: info (not err) msg on clock probe deferral +Subject: [PATCH 131/133] mmc: info (not err) msg on clock probe deferral --- drivers/mmc/host/bcm2835-mmc.c | 5 ++++- @@ -141298,10 +141262,10 @@ index 23dea422182534e248435aeaee3ecb5da69c0d33..9e55d5ac08b5809c40fe391ae6e685fd } -From 3f69235898cb5f4b969d4efe824af131dc817117 Mon Sep 17 00:00:00 2001 +From 2844dad796a4f9c9dc2157aa7b6011b55a58ce25 Mon Sep 17 00:00:00 2001 From: Electron752 Date: Sat, 15 Oct 2016 11:49:52 -0700 -Subject: [PATCH 133/133] ARM64: Modify default config to get raspbian to boot +Subject: [PATCH 132/133] ARM64: Modify default config to get raspbian to boot (#1686) 1. Enable emulation of deprecated instructions. @@ -141365,3 +141329,1232 @@ index 1fcde8c1329bbfd329245a8bb17691999882ccfc..d7406f5a4620151044b8f716b4d10bb8 CONFIG_UCB1400_CORE=m CONFIG_MFD_STMPE=y CONFIG_STMPE_SPI=y + +From 3c08504053c3b87477b33dde65ede3527f45b32d Mon Sep 17 00:00:00 2001 +From: gtrainavicius +Date: Sun, 23 Oct 2016 12:06:53 +0300 +Subject: [PATCH 133/133] Support for Blokas Labs pisound board + +--- + .../devicetree/bindings/vendor-prefixes.txt | 1 + + arch/arm/boot/dts/overlays/Makefile | 1 + + arch/arm/boot/dts/overlays/README | 6 + + arch/arm/boot/dts/overlays/pisound-overlay.dts | 114 +++ + arch/arm/configs/bcm2709_defconfig | 1 + + arch/arm/configs/bcmrpi_defconfig | 1 + + sound/soc/bcm/Kconfig | 6 + + sound/soc/bcm/Makefile | 2 + + sound/soc/bcm/pisound.c | 987 +++++++++++++++++++++ + 9 files changed, 1119 insertions(+) + create mode 100644 arch/arm/boot/dts/overlays/pisound-overlay.dts + create mode 100644 sound/soc/bcm/pisound.c + +diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt +index 1992aa97d45ac8b0a9cfaefbaf5de40780c601ad..562cc57b75227e9dba77af035d26926b0ce8894e 100644 +--- a/Documentation/devicetree/bindings/vendor-prefixes.txt ++++ b/Documentation/devicetree/bindings/vendor-prefixes.txt +@@ -39,6 +39,7 @@ auo AU Optronics Corporation + avago Avago Technologies + avic Shanghai AVIC Optoelectronics Co., Ltd. + axis Axis Communications AB ++blokaslabs Vilniaus Blokas UAB + boe BOE Technology Group Co., Ltd. + bosch Bosch Sensortec GmbH + boundary Boundary Devices Inc. +diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile +index 6179b21af2fa8ec63429c3d379fc46085681dc7e..555bb5050aaf8464e209f35c50dc1f5c0295e585 100644 +--- a/arch/arm/boot/dts/overlays/Makefile ++++ b/arch/arm/boot/dts/overlays/Makefile +@@ -61,6 +61,7 @@ dtbo-$(RPI_DT_OVERLAYS) += pi3-disable-bt.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pi3-miniuart-bt.dtbo + dtbo-$(RPI_DT_OVERLAYS) += piscreen.dtbo + dtbo-$(RPI_DT_OVERLAYS) += piscreen2r.dtbo ++dtbo-$(RPI_DT_OVERLAYS) += pisound.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pitft22.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pitft28-capacitive.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pitft28-resistive.dtbo +diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README +index 2252ab9f5bab5dd40be9ebefa8e37c5bfb07d00f..4f9f0ac43f4fe2cb9376fff5a214ffdaf8179591 100644 +--- a/arch/arm/boot/dts/overlays/README ++++ b/arch/arm/boot/dts/overlays/README +@@ -802,6 +802,12 @@ Params: speed Display SPI bus speed + xohms Touchpanel sensitivity (X-plate resistance) + + ++Name: pisound ++Info: Configures the Blokas Labs pisound card ++Load: dtoverlay=pisound ++Params: ++ ++ + Name: pitft22 + Info: Adafruit PiTFT 2.2" screen + Load: dtoverlay=pitft22,= +diff --git a/arch/arm/boot/dts/overlays/pisound-overlay.dts b/arch/arm/boot/dts/overlays/pisound-overlay.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..7cdfc29ba4fbffd3216376677922e7ae26019055 +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/pisound-overlay.dts +@@ -0,0 +1,114 @@ ++/* ++ * pisound Linux kernel module. ++ * Copyright (C) 2016 Vilniaus Blokas UAB, http://blokas.io/pisound ++ * ++ * 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; version 2 of the ++ * License. ++ * ++ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++ */ ++ ++/dts-v1/; ++/plugin/; ++ ++#include ++ ++/ { ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target = <&sound>; ++ __overlay__ { ++ compatible = "blokaslabs,pisound"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ ++ pinctrl-0 = <&pisound_button_pins>; ++ ++ osr-gpios = ++ <&gpio 13 GPIO_ACTIVE_HIGH>, ++ <&gpio 26 GPIO_ACTIVE_HIGH>, ++ <&gpio 16 GPIO_ACTIVE_HIGH>; ++ ++ reset-gpios = ++ <&gpio 12 GPIO_ACTIVE_HIGH>, ++ <&gpio 24 GPIO_ACTIVE_HIGH>; ++ ++ data_available-gpios = <&gpio 25 GPIO_ACTIVE_HIGH>; ++ ++ button-gpios = <&gpio 17 GPIO_ACTIVE_LOW>; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&gpio>; ++ __overlay__ { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pisound_button_pins>; ++ ++ pisound_button_pins: pisound_button_pins { ++ brcm,pins = <17>; ++ brcm,function = <0>; // Input ++ brcm,pull = <2>; // Pull-Up ++ }; ++ }; ++ }; ++ ++ fragment@2 { ++ target = <&i2s>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ fragment@3 { ++ target-path = "/"; ++ __overlay__ { ++ pcm5102a-codec { ++ #sound-dai-cells = <0>; ++ compatible = "ti,pcm5102a"; ++ status = "okay"; ++ }; ++ }; ++ }; ++ ++ fragment@4 { ++ target = <&spi0>; ++ __overlay__ { ++ status = "okay"; ++ ++ spidev@0{ ++ status = "disabled"; ++ }; ++ ++ spidev@1{ ++ status = "okay"; ++ }; ++ }; ++ }; ++ ++ fragment@5 { ++ target = <&spi0>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ pisound_spi: pisound_spi@0{ ++ compatible = "blokaslabs,pisound-spi"; ++ reg = <0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&spi0_pins>; ++ spi-max-frequency = <1000000>; ++ }; ++ }; ++ }; ++}; +diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig +index aa57989600923198d4bfb913c4d2e8a565a93e07..40841d8421e44f8863cb23c53802388b502e61a3 100644 +--- a/arch/arm/configs/bcm2709_defconfig ++++ b/arch/arm/configs/bcm2709_defconfig +@@ -875,6 +875,7 @@ 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_PISOUND=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 26fa6c2b6b6d745178e666465ba226afee701ab1..46b91678fef473334b9417409fd1c529c0415977 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -866,6 +866,7 @@ 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_PISOUND=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 4ccaba67a887432afe7f527569c4e2865925734b..aed7b47d8736ea3fb1810b0c77916855082f3b2d 100644 +--- a/sound/soc/bcm/Kconfig ++++ b/sound/soc/bcm/Kconfig +@@ -130,3 +130,9 @@ config SND_BCM2708_SOC_ALLO_PIANO_DAC + select SND_SOC_PCM512x_I2C + help + Say Y or M if you want to add support for Allo Piano DAC. ++ ++config SND_PISOUND ++ tristate "Support for Blokas Labs pisound" ++ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S ++ help ++ Say Y or M if you want to add support for Blokas Labs pisound. +diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile +index b9f98f0bcf3ee0d6b490e1bb185ba0de8f0f9701..5fb380a2f8a87ed5e67786f5afb31682128b70ed 100644 +--- a/sound/soc/bcm/Makefile ++++ b/sound/soc/bcm/Makefile +@@ -25,6 +25,7 @@ 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 ++snd-soc-pisound-objs := pisound.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 +@@ -42,3 +43,4 @@ obj-$(CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD) += snd-soc-audioinjector-pi-soundca + 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 ++obj-$(CONFIG_SND_PISOUND) += snd-soc-pisound.o +diff --git a/sound/soc/bcm/pisound.c b/sound/soc/bcm/pisound.c +new file mode 100644 +index 0000000000000000000000000000000000000000..b156e5793e4c482385dedafd85bbf190acc8162b +--- /dev/null ++++ b/sound/soc/bcm/pisound.c +@@ -0,0 +1,987 @@ ++/* ++ * pisound Linux kernel module. ++ * Copyright (C) 2016 Vilniaus Blokas UAB, http://blokas.io/pisound ++ * ++ * 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; version 2 of the ++ * License. ++ * ++ * 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., 51 Franklin Street, Fifth Floor, Boston, ++ * MA 02110-1301, USA. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static int pisnd_spi_init(struct device *dev); ++static void pisnd_spi_uninit(void); ++ ++static void pisnd_spi_send(uint8_t val); ++static uint8_t pisnd_spi_recv(uint8_t *buffer, uint8_t length); ++ ++typedef void (*pisnd_spi_recv_cb)(void *data); ++static void pisnd_spi_set_callback(pisnd_spi_recv_cb cb, void *data); ++ ++static const char *pisnd_spi_get_serial(void); ++static const char *pisnd_spi_get_id(void); ++static const char *pisnd_spi_get_version(void); ++ ++static int pisnd_midi_init(struct snd_card *card); ++static void pisnd_midi_uninit(void); ++ ++#define PISOUND_LOG_PREFIX "pisound: " ++ ++#ifdef DEBUG ++# define printd(...) pr_alert(PISOUND_LOG_PREFIX __VA_ARGS__) ++#else ++# define printd(...) do {} while (0) ++#endif ++ ++#define printe(...) pr_err(PISOUND_LOG_PREFIX __VA_ARGS__) ++#define printi(...) pr_info(PISOUND_LOG_PREFIX __VA_ARGS__) ++ ++static int pisnd_output_open(struct snd_rawmidi_substream *substream) ++{ ++ return 0; ++} ++ ++static int pisnd_output_close(struct snd_rawmidi_substream *substream) ++{ ++ return 0; ++} ++ ++static void pisnd_output_trigger( ++ struct snd_rawmidi_substream *substream, ++ int up ++ ) ++{ ++ uint8_t data; ++ ++ if (!up) ++ return; ++ ++ while (snd_rawmidi_transmit_peek(substream, &data, 1)) { ++ pisnd_spi_send(data); ++ snd_rawmidi_transmit_ack(substream, 1); ++ } ++} ++ ++static void pisnd_output_drain(struct snd_rawmidi_substream *substream) ++{ ++ uint8_t data; ++ ++ while (snd_rawmidi_transmit_peek(substream, &data, 1)) { ++ pisnd_spi_send(data); ++ ++ snd_rawmidi_transmit_ack(substream, 1); ++ } ++} ++ ++static int pisnd_input_open(struct snd_rawmidi_substream *substream) ++{ ++ return 0; ++} ++ ++static int pisnd_input_close(struct snd_rawmidi_substream *substream) ++{ ++ return 0; ++} ++ ++static void pisnd_midi_recv_callback(void *substream) ++{ ++ uint8_t data[128]; ++ uint8_t n = 0; ++ ++ while ((n = pisnd_spi_recv(data, sizeof(data)))) { ++ int res = snd_rawmidi_receive(substream, data, n); ++ (void)res; ++ printd("midi recv 0x%02x, res = %d\n", data, res); ++ } ++} ++ ++static void pisnd_input_trigger(struct snd_rawmidi_substream *substream, int up) ++{ ++ if (up) { ++ pisnd_spi_set_callback(pisnd_midi_recv_callback, substream); ++ pisnd_midi_recv_callback(substream); ++ } else { ++ pisnd_spi_set_callback(NULL, NULL); ++ } ++} ++ ++static struct snd_rawmidi *g_rmidi; ++ ++static struct snd_rawmidi_ops pisnd_output_ops = { ++ .open = pisnd_output_open, ++ .close = pisnd_output_close, ++ .trigger = pisnd_output_trigger, ++ .drain = pisnd_output_drain, ++}; ++ ++static struct snd_rawmidi_ops pisnd_input_ops = { ++ .open = pisnd_input_open, ++ .close = pisnd_input_close, ++ .trigger = pisnd_input_trigger, ++}; ++ ++static void pisnd_get_port_info( ++ struct snd_rawmidi *rmidi, ++ int number, ++ struct snd_seq_port_info *seq_port_info ++ ) ++{ ++ seq_port_info->type = ++ SNDRV_SEQ_PORT_TYPE_MIDI_GENERIC | ++ SNDRV_SEQ_PORT_TYPE_HARDWARE | ++ SNDRV_SEQ_PORT_TYPE_PORT; ++ seq_port_info->midi_voices = 0; ++} ++ ++static struct snd_rawmidi_global_ops pisnd_global_ops = { ++ .get_port_info = pisnd_get_port_info, ++}; ++ ++static int pisnd_midi_init(struct snd_card *card) ++{ ++ int err = snd_rawmidi_new(card, "pisound MIDI", 0, 1, 1, &g_rmidi); ++ ++ if (err < 0) { ++ printe("snd_rawmidi_new failed: %d\n", err); ++ return err; ++ } ++ ++ strcpy(g_rmidi->name, "pisound MIDI "); ++ strcat(g_rmidi->name, pisnd_spi_get_serial()); ++ ++ g_rmidi->info_flags = ++ SNDRV_RAWMIDI_INFO_OUTPUT | ++ SNDRV_RAWMIDI_INFO_INPUT | ++ SNDRV_RAWMIDI_INFO_DUPLEX; ++ ++ g_rmidi->ops = &pisnd_global_ops; ++ ++ g_rmidi->private_data = (void *)0; ++ ++ snd_rawmidi_set_ops( ++ g_rmidi, ++ SNDRV_RAWMIDI_STREAM_OUTPUT, ++ &pisnd_output_ops ++ ); ++ ++ snd_rawmidi_set_ops( ++ g_rmidi, ++ SNDRV_RAWMIDI_STREAM_INPUT, ++ &pisnd_input_ops ++ ); ++ ++ return 0; ++} ++ ++static void pisnd_midi_uninit(void) ++{ ++} ++ ++static void *g_recvData; ++static pisnd_spi_recv_cb g_recvCallback; ++ ++#define FIFO_SIZE 512 ++ ++static char g_serial_num[11]; ++static char g_id[25]; ++static char g_version[5]; ++ ++DEFINE_KFIFO(spi_fifo_in, uint8_t, FIFO_SIZE); ++DEFINE_KFIFO(spi_fifo_out, uint8_t, FIFO_SIZE); ++ ++static struct gpio_desc *data_available; ++static struct gpio_desc *spi_reset; ++ ++static struct spi_device *pisnd_spi_device; ++ ++static struct workqueue_struct *pisnd_workqueue; ++static struct work_struct pisnd_work_process; ++ ++static void pisnd_work_handler(struct work_struct *work); ++ ++static uint16_t spi_transfer16(uint16_t val); ++ ++static int pisnd_init_workqueues(void) ++{ ++ pisnd_workqueue = create_singlethread_workqueue("pisnd_workqueue"); ++ INIT_WORK(&pisnd_work_process, pisnd_work_handler); ++ ++ return 0; ++} ++ ++static void pisnd_uninit_workqueues(void) ++{ ++ flush_workqueue(pisnd_workqueue); ++ destroy_workqueue(pisnd_workqueue); ++ ++ pisnd_workqueue = NULL; ++} ++ ++static bool pisnd_spi_has_more(void) ++{ ++ return gpiod_get_value(data_available); ++} ++ ++enum task_e { ++ TASK_PROCESS = 0, ++}; ++ ++static void pisnd_schedule_process(enum task_e task) ++{ ++ if (pisnd_spi_device != NULL && ++ pisnd_workqueue != NULL && ++ !work_pending(&pisnd_work_process) ++ ) { ++ printd("schedule: has more = %d\n", pisnd_spi_has_more()); ++ if (task == TASK_PROCESS) ++ queue_work(pisnd_workqueue, &pisnd_work_process); ++ } ++} ++ ++static irqreturn_t data_available_interrupt_handler(int irq, void *dev_id) ++{ ++ if (irq == gpiod_to_irq(data_available) && pisnd_spi_has_more()) { ++ printd("schedule from irq\n"); ++ pisnd_schedule_process(TASK_PROCESS); ++ } ++ ++ return IRQ_HANDLED; ++} ++ ++static DEFINE_SPINLOCK(spilock); ++static unsigned long spilockflags; ++ ++static uint16_t spi_transfer16(uint16_t val) ++{ ++ int err; ++ struct spi_transfer transfer; ++ struct spi_message msg; ++ uint8_t txbuf[2]; ++ uint8_t rxbuf[2]; ++ ++ if (!pisnd_spi_device) { ++ printe("pisnd_spi_device null, returning\n"); ++ return 0; ++ } ++ ++ spi_message_init(&msg); ++ ++ memset(&transfer, 0, sizeof(transfer)); ++ memset(&rxbuf, 0, sizeof(rxbuf)); ++ ++ txbuf[0] = val >> 8; ++ txbuf[1] = val & 0xff; ++ ++ transfer.tx_buf = &txbuf; ++ transfer.rx_buf = &rxbuf; ++ transfer.len = sizeof(txbuf); ++ transfer.speed_hz = 125000; ++ transfer.delay_usecs = 100; ++ spi_message_add_tail(&transfer, &msg); ++ ++ spin_lock_irqsave(&spilock, spilockflags); ++ err = spi_sync(pisnd_spi_device, &msg); ++ spin_unlock_irqrestore(&spilock, spilockflags); ++ ++ if (err < 0) { ++ printe("spi_sync error %d\n", err); ++ return 0; ++ } ++ ++ printd("received: %02x%02x\n", rxbuf[0], rxbuf[1]); ++ printd("hasMore %d\n", pisnd_spi_has_more()); ++ ++ return (rxbuf[0] << 8) | rxbuf[1]; ++} ++ ++static int spi_read_bytes(char *dst, size_t length, uint8_t *bytesRead) ++{ ++ uint16_t rx; ++ uint8_t size; ++ uint8_t i; ++ ++ memset(dst, 0, length); ++ *bytesRead = 0; ++ ++ rx = spi_transfer16(0); ++ if (!(rx >> 8)) ++ return -EINVAL; ++ ++ size = rx & 0xff; ++ ++ if (size > length) ++ return -EINVAL; ++ ++ for (i = 0; i < size; ++i) { ++ rx = spi_transfer16(0); ++ if (!(rx >> 8)) ++ return -EINVAL; ++ ++ dst[i] = rx & 0xff; ++ } ++ ++ *bytesRead = i; ++ ++ return 0; ++} ++ ++static int spi_device_match(struct device *dev, void *data) ++{ ++ struct spi_device *spi = container_of(dev, struct spi_device, dev); ++ ++ printd(" %s %s %dkHz %d bits mode=0x%02X\n", ++ spi->modalias, dev_name(dev), spi->max_speed_hz/1000, ++ spi->bits_per_word, spi->mode); ++ ++ if (strcmp("pisound-spi", spi->modalias) == 0) { ++ printi("\tFound!\n"); ++ return 1; ++ } ++ ++ printe("\tNot found!\n"); ++ return 0; ++} ++ ++static struct spi_device *pisnd_spi_find_device(void) ++{ ++ struct device *dev; ++ ++ printi("Searching for spi device...\n"); ++ dev = bus_find_device(&spi_bus_type, NULL, NULL, spi_device_match); ++ if (dev != NULL) ++ return container_of(dev, struct spi_device, dev); ++ else ++ return NULL; ++} ++ ++static void pisnd_work_handler(struct work_struct *work) ++{ ++ uint16_t rx; ++ uint16_t tx; ++ uint8_t val; ++ ++ if (work == &pisnd_work_process) { ++ if (pisnd_spi_device == NULL) ++ return; ++ ++ do { ++ val = 0; ++ tx = 0; ++ ++ if (kfifo_get(&spi_fifo_out, &val)) ++ tx = 0x0f00 | val; ++ ++ rx = spi_transfer16(tx); ++ ++ if (rx & 0xff00) { ++ kfifo_put(&spi_fifo_in, rx & 0xff); ++ if (kfifo_len(&spi_fifo_in) > 16 ++ && g_recvCallback) ++ g_recvCallback(g_recvData); ++ } ++ } while (rx != 0 ++ || !kfifo_is_empty(&spi_fifo_out) ++ || pisnd_spi_has_more() ++ ); ++ ++ if (!kfifo_is_empty(&spi_fifo_in) && g_recvCallback) ++ g_recvCallback(g_recvData); ++ } ++} ++ ++static int pisnd_spi_gpio_init(struct device *dev) ++{ ++ spi_reset = gpiod_get_index(dev, "reset", 1, GPIOD_ASIS); ++ data_available = gpiod_get_index(dev, "data_available", 0, GPIOD_ASIS); ++ ++ gpiod_direction_output(spi_reset, 1); ++ gpiod_direction_input(data_available); ++ ++ /* Reset the slave. */ ++ gpiod_set_value(spi_reset, false); ++ mdelay(1); ++ gpiod_set_value(spi_reset, true); ++ ++ /* Give time for spi slave to start. */ ++ mdelay(64); ++ ++ return 0; ++} ++ ++static void pisnd_spi_gpio_uninit(void) ++{ ++ gpiod_set_value(spi_reset, false); ++ gpiod_put(spi_reset); ++ spi_reset = NULL; ++ ++ gpiod_put(data_available); ++ data_available = NULL; ++} ++ ++static int pisnd_spi_gpio_irq_init(struct device *dev) ++{ ++ return request_irq( ++ gpiod_to_irq(data_available), ++ data_available_interrupt_handler, ++ IRQF_TIMER | IRQF_TRIGGER_RISING, ++ "data_available_int", ++ NULL ++ ); ++} ++ ++static void pisnd_spi_gpio_irq_uninit(void) ++{ ++ free_irq(gpiod_to_irq(data_available), NULL); ++} ++ ++static int spi_read_info(void) ++{ ++ uint16_t tmp; ++ uint8_t count; ++ uint8_t n; ++ uint8_t i; ++ uint8_t j; ++ char buffer[257]; ++ int ret; ++ char *p; ++ ++ memset(g_serial_num, 0, sizeof(g_serial_num)); ++ memset(g_version, 0, sizeof(g_version)); ++ memset(g_id, 0, sizeof(g_id)); ++ ++ tmp = spi_transfer16(0); ++ ++ if (!(tmp >> 8)) ++ return -EINVAL; ++ ++ count = tmp & 0xff; ++ ++ for (i = 0; i < count; ++i) { ++ memset(buffer, 0, sizeof(buffer)); ++ ret = spi_read_bytes(buffer, sizeof(buffer)-1, &n); ++ ++ if (ret < 0) ++ return ret; ++ ++ switch (i) { ++ case 0: ++ if (n != 2) ++ return -EINVAL; ++ ++ snprintf( ++ g_version, ++ sizeof(g_version), ++ "%x.%02x", ++ buffer[0], ++ buffer[1] ++ ); ++ break; ++ case 1: ++ if (n >= sizeof(g_serial_num)) ++ return -EINVAL; ++ ++ memcpy(g_serial_num, buffer, sizeof(g_serial_num)); ++ break; ++ case 2: ++ { ++ if (n >= sizeof(g_id)) ++ return -EINVAL; ++ ++ p = g_id; ++ for (j = 0; j < n; ++j) ++ p += sprintf(p, "%02x", buffer[j]); ++ } ++ break; ++ default: ++ break; ++ } ++ } ++ ++ return 0; ++} ++ ++static int pisnd_spi_init(struct device *dev) ++{ ++ int ret; ++ struct spi_device *spi; ++ ++ memset(g_serial_num, 0, sizeof(g_serial_num)); ++ memset(g_id, 0, sizeof(g_id)); ++ memset(g_version, 0, sizeof(g_version)); ++ ++ spi = pisnd_spi_find_device(); ++ ++ if (spi != NULL) { ++ printd("initializing spi!\n"); ++ pisnd_spi_device = spi; ++ ret = spi_setup(pisnd_spi_device); ++ } else { ++ printe("SPI device not found, deferring!\n"); ++ return -EPROBE_DEFER; ++ } ++ ++ ret = pisnd_spi_gpio_init(dev); ++ ++ if (ret < 0) { ++ printe("SPI GPIO init failed: %d\n", ret); ++ spi_dev_put(pisnd_spi_device); ++ pisnd_spi_device = NULL; ++ pisnd_spi_gpio_uninit(); ++ return ret; ++ } ++ ++ ret = spi_read_info(); ++ ++ if (ret < 0) { ++ printe("Reading card info failed: %d\n", ret); ++ spi_dev_put(pisnd_spi_device); ++ pisnd_spi_device = NULL; ++ pisnd_spi_gpio_uninit(); ++ return ret; ++ } ++ ++ /* Flash the LEDs. */ ++ spi_transfer16(0xf000); ++ ++ ret = pisnd_spi_gpio_irq_init(dev); ++ if (ret < 0) { ++ printe("SPI irq request failed: %d\n", ret); ++ spi_dev_put(pisnd_spi_device); ++ pisnd_spi_device = NULL; ++ pisnd_spi_gpio_irq_uninit(); ++ pisnd_spi_gpio_uninit(); ++ } ++ ++ ret = pisnd_init_workqueues(); ++ if (ret != 0) { ++ printe("Workqueue initialization failed: %d\n", ret); ++ spi_dev_put(pisnd_spi_device); ++ pisnd_spi_device = NULL; ++ pisnd_spi_gpio_irq_uninit(); ++ pisnd_spi_gpio_uninit(); ++ pisnd_uninit_workqueues(); ++ return ret; ++ } ++ ++ if (pisnd_spi_has_more()) { ++ printd("data is available, scheduling from init\n"); ++ pisnd_schedule_process(TASK_PROCESS); ++ } ++ ++ return 0; ++} ++ ++static void pisnd_spi_uninit(void) ++{ ++ pisnd_uninit_workqueues(); ++ ++ spi_dev_put(pisnd_spi_device); ++ pisnd_spi_device = NULL; ++ ++ pisnd_spi_gpio_irq_uninit(); ++ pisnd_spi_gpio_uninit(); ++} ++ ++static void pisnd_spi_send(uint8_t val) ++{ ++ kfifo_put(&spi_fifo_out, val); ++ printd("schedule from spi_send\n"); ++ pisnd_schedule_process(TASK_PROCESS); ++} ++ ++static uint8_t pisnd_spi_recv(uint8_t *buffer, uint8_t length) ++{ ++ return kfifo_out(&spi_fifo_in, buffer, length); ++} ++ ++static void pisnd_spi_set_callback(pisnd_spi_recv_cb cb, void *data) ++{ ++ g_recvData = data; ++ g_recvCallback = cb; ++} ++ ++static const char *pisnd_spi_get_serial(void) ++{ ++ if (strlen(g_serial_num)) ++ return g_serial_num; ++ ++ return ""; ++} ++ ++static const char *pisnd_spi_get_id(void) ++{ ++ if (strlen(g_id)) ++ return g_id; ++ ++ return ""; ++} ++ ++static const char *pisnd_spi_get_version(void) ++{ ++ if (strlen(g_version)) ++ return g_version; ++ ++ return ""; ++} ++ ++static const struct of_device_id pisound_of_match[] = { ++ { .compatible = "blokaslabs,pisound", }, ++ { .compatible = "blokaslabs,pisound-spi", }, ++ {}, ++}; ++ ++static struct gpio_desc *osr0, *osr1, *osr2; ++static struct gpio_desc *reset; ++static struct gpio_desc *button; ++ ++static int pisnd_hw_params( ++ struct snd_pcm_substream *substream, ++ struct snd_pcm_hw_params *params ++ ) ++{ ++ printd("rate = %d\n", params_rate(params)); ++ printd("ch = %d\n", params_channels(params)); ++ printd("bits = %u\n", ++ snd_pcm_format_physical_width(params_format(params))); ++ printd("format = %d\n", params_format(params)); ++ ++ gpiod_set_value(reset, false); ++ ++ switch (params_rate(params)) { ++ case 48000: ++ gpiod_set_value(osr0, true); ++ gpiod_set_value(osr1, false); ++ gpiod_set_value(osr2, false); ++ break; ++ case 96000: ++ gpiod_set_value(osr0, true); ++ gpiod_set_value(osr1, true); ++ gpiod_set_value(osr2, false); ++ break; ++ case 192000: ++ gpiod_set_value(osr0, true); ++ gpiod_set_value(osr1, true); ++ gpiod_set_value(osr2, true); ++ break; ++ default: ++ printe("Unsupported rate %u!\n", params_rate(params)); ++ return -EINVAL; ++ } ++ ++ gpiod_set_value(reset, true); ++ ++ return 0; ++} ++ ++static unsigned int rates[3] = { ++ 48000, 96000, 192000 ++}; ++ ++static struct snd_pcm_hw_constraint_list constraints_rates = { ++ .count = ARRAY_SIZE(rates), ++ .list = rates, ++ .mask = 0, ++}; ++ ++static unsigned int sample_bits[] = { ++ 24, 32 ++}; ++ ++static struct snd_pcm_hw_constraint_list constraints_sample_bits = { ++ .count = ARRAY_SIZE(sample_bits), ++ .list = sample_bits, ++ .mask = 0, ++}; ++ ++static int pisnd_startup(struct snd_pcm_substream *substream) ++{ ++ int err = snd_pcm_hw_constraint_list( ++ substream->runtime, ++ 0, ++ SNDRV_PCM_HW_PARAM_RATE, ++ &constraints_rates ++ ); ++ ++ if (err < 0) ++ return err; ++ ++ err = snd_pcm_hw_constraint_list( ++ substream->runtime, ++ 0, ++ SNDRV_PCM_HW_PARAM_SAMPLE_BITS, ++ &constraints_sample_bits ++ ); ++ ++ if (err < 0) ++ return err; ++ ++ return 0; ++} ++ ++static struct snd_soc_ops pisnd_ops = { ++ .startup = pisnd_startup, ++ .hw_params = pisnd_hw_params, ++}; ++ ++static struct snd_soc_dai_link pisnd_dai[] = { ++ { ++ .name = "pisound", ++ .stream_name = "pisound", ++ .cpu_dai_name = "bcm2708-i2s.0", ++ .codec_dai_name = "snd-soc-dummy-dai", ++ .platform_name = "bcm2708-i2s.0", ++ .codec_name = "snd-soc-dummy", ++ .dai_fmt = ++ SND_SOC_DAIFMT_I2S | ++ SND_SOC_DAIFMT_NB_NF | ++ SND_SOC_DAIFMT_CBM_CFM, ++ .ops = &pisnd_ops, ++ }, ++}; ++ ++static int pisnd_card_probe(struct snd_soc_card *card) ++{ ++ int err = pisnd_midi_init(card->snd_card); ++ ++ if (err < 0) ++ printe("pisnd_midi_init failed: %d\n", err); ++ ++ return err; ++} ++ ++static int pisnd_card_remove(struct snd_soc_card *card) ++{ ++ pisnd_midi_uninit(); ++ return 0; ++} ++ ++static struct snd_soc_card pisnd_card = { ++ .name = "pisound", ++ .owner = THIS_MODULE, ++ .dai_link = pisnd_dai, ++ .num_links = ARRAY_SIZE(pisnd_dai), ++ .probe = pisnd_card_probe, ++ .remove = pisnd_card_remove, ++}; ++ ++static int pisnd_init_gpio(struct device *dev) ++{ ++ osr0 = gpiod_get_index(dev, "osr", 0, GPIOD_ASIS); ++ osr1 = gpiod_get_index(dev, "osr", 1, GPIOD_ASIS); ++ osr2 = gpiod_get_index(dev, "osr", 2, GPIOD_ASIS); ++ ++ reset = gpiod_get_index(dev, "reset", 0, GPIOD_ASIS); ++ ++ button = gpiod_get_index(dev, "button", 0, GPIOD_ASIS); ++ ++ gpiod_direction_output(osr0, 1); ++ gpiod_direction_output(osr1, 1); ++ gpiod_direction_output(osr2, 1); ++ gpiod_direction_output(reset, 1); ++ ++ gpiod_set_value(reset, false); ++ gpiod_set_value(osr0, true); ++ gpiod_set_value(osr1, false); ++ gpiod_set_value(osr2, false); ++ gpiod_set_value(reset, true); ++ ++ gpiod_export(button, false); ++ ++ return 0; ++} ++ ++static int pisnd_uninit_gpio(void) ++{ ++ int i; ++ ++ struct gpio_desc **gpios[] = { ++ &osr0, &osr1, &osr2, &reset, &button, ++ }; ++ ++ gpiod_unexport(button); ++ ++ for (i = 0; i < ARRAY_SIZE(gpios); ++i) { ++ if (*gpios[i] == NULL) { ++ printd("weird, GPIO[%d] is NULL already\n", i); ++ continue; ++ } ++ ++ gpiod_put(*gpios[i]); ++ *gpios[i] = NULL; ++ } ++ ++ return 0; ++} ++ ++static struct kobject *pisnd_kobj; ++ ++static ssize_t pisnd_serial_show( ++ struct kobject *kobj, ++ struct kobj_attribute *attr, ++ char *buf ++ ) ++{ ++ return sprintf(buf, "%s\n", pisnd_spi_get_serial()); ++} ++ ++static ssize_t pisnd_id_show( ++ struct kobject *kobj, ++ struct kobj_attribute *attr, ++ char *buf ++ ) ++{ ++ return sprintf(buf, "%s\n", pisnd_spi_get_id()); ++} ++ ++static ssize_t pisnd_version_show( ++ struct kobject *kobj, ++ struct kobj_attribute *attr, ++ char *buf ++ ) ++{ ++ return sprintf(buf, "%s\n", pisnd_spi_get_version()); ++} ++ ++static struct kobj_attribute pisnd_serial_attribute = ++ __ATTR(serial, 0644, pisnd_serial_show, NULL); ++static struct kobj_attribute pisnd_id_attribute = ++ __ATTR(id, 0644, pisnd_id_show, NULL); ++static struct kobj_attribute pisnd_version_attribute = ++ __ATTR(version, 0644, pisnd_version_show, NULL); ++ ++static struct attribute *attrs[] = { ++ &pisnd_serial_attribute.attr, ++ &pisnd_id_attribute.attr, ++ &pisnd_version_attribute.attr, ++ NULL ++}; ++ ++static struct attribute_group attr_group = { .attrs = attrs }; ++ ++static int pisnd_probe(struct platform_device *pdev) ++{ ++ int ret = 0; ++ int i; ++ ++ ret = pisnd_spi_init(&pdev->dev); ++ if (ret < 0) { ++ printe("pisnd_spi_init failed: %d\n", ret); ++ return ret; ++ } ++ ++ printi("Detected pisound card:\n"); ++ printi("\tSerial: %s\n", pisnd_spi_get_serial()); ++ printi("\tVersion: %s\n", pisnd_spi_get_version()); ++ printi("\tId: %s\n", pisnd_spi_get_id()); ++ ++ pisnd_kobj = kobject_create_and_add("pisound", kernel_kobj); ++ if (!pisnd_kobj) { ++ pisnd_spi_uninit(); ++ return -ENOMEM; ++ } ++ ++ ret = sysfs_create_group(pisnd_kobj, &attr_group); ++ if (ret < 0) { ++ pisnd_spi_uninit(); ++ kobject_put(pisnd_kobj); ++ return -ENOMEM; ++ } ++ ++ pisnd_init_gpio(&pdev->dev); ++ pisnd_card.dev = &pdev->dev; ++ ++ if (pdev->dev.of_node) { ++ struct device_node *i2s_node; ++ ++ i2s_node = of_parse_phandle( ++ pdev->dev.of_node, ++ "i2s-controller", ++ 0 ++ ); ++ ++ for (i = 0; i < pisnd_card.num_links; ++i) { ++ struct snd_soc_dai_link *dai = &pisnd_dai[i]; ++ ++ if (i2s_node) { ++ dai->cpu_dai_name = NULL; ++ dai->cpu_of_node = i2s_node; ++ dai->platform_name = NULL; ++ dai->platform_of_node = i2s_node; ++ dai->stream_name = pisnd_spi_get_serial(); ++ } ++ } ++ } ++ ++ ret = snd_soc_register_card(&pisnd_card); ++ ++ if (ret < 0) { ++ printe("snd_soc_register_card() failed: %d\n", ret); ++ pisnd_uninit_gpio(); ++ kobject_put(pisnd_kobj); ++ pisnd_spi_uninit(); ++ } ++ ++ return ret; ++} ++ ++static int pisnd_remove(struct platform_device *pdev) ++{ ++ if (pisnd_kobj) { ++ kobject_put(pisnd_kobj); ++ pisnd_kobj = NULL; ++ } ++ ++ pisnd_spi_uninit(); ++ ++ /* Turn off */ ++ gpiod_set_value(reset, false); ++ pisnd_uninit_gpio(); ++ ++ return snd_soc_unregister_card(&pisnd_card); ++} ++ ++MODULE_DEVICE_TABLE(of, pisound_of_match); ++ ++static struct platform_driver pisnd_driver = { ++ .driver = { ++ .name = "snd-rpi-pisound", ++ .owner = THIS_MODULE, ++ .of_match_table = pisound_of_match, ++ }, ++ .probe = pisnd_probe, ++ .remove = pisnd_remove, ++}; ++ ++module_platform_driver(pisnd_driver); ++ ++MODULE_AUTHOR("Giedrius Trainavicius "); ++MODULE_DESCRIPTION("ASoC Driver for pisound, http://blokas.io/pisound"); ++MODULE_LICENSE("GPL v2"); diff --git a/projects/RPi2/patches/linux/linux-01-RPi_support.patch b/projects/RPi2/patches/linux/linux-01-RPi_support.patch index adae52fd87..db3b0e6822 100644 --- a/projects/RPi2/patches/linux/linux-01-RPi_support.patch +++ b/projects/RPi2/patches/linux/linux-01-RPi_support.patch @@ -1,4 +1,4 @@ -From 5f168eaadbd8e731359c8fda12268f1eb9777a89 Mon Sep 17 00:00:00 2001 +From 22ad2a514798c9748803e1f6e9d01fa0f9c413ba Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 27 Apr 2016 17:43:28 +0100 Subject: [PATCH 001/133] Revert "SUNRPC: Make NFS swap work with multipath" @@ -95,7 +95,7 @@ index 66f23b376fa04a91134eddf6d8ee22a2f5de5808..f55fe2b0137e8fbefcd20c336b28ad48 EXPORT_SYMBOL_GPL(rpc_clnt_swap_deactivate); #endif /* CONFIG_SUNRPC_SWAP */ -From b57b907a656c079c22350462c952ea12c6a3b34c Mon Sep 17 00:00:00 2001 +From d60dea6b48078d26b3aac303045082e2313b3ea0 Mon Sep 17 00:00:00 2001 From: Steve Glendinning Date: Thu, 19 Feb 2015 18:47:12 +0000 Subject: [PATCH 002/133] smsx95xx: fix crimes against truesize @@ -145,7 +145,7 @@ index dc989a8b5afbd62b07cd65a2fa5edde67d3cc5fb..116680e3089f16e1e3e9113a3b93e62c usbnet_skb_return(dev, ax_skb); } -From 1b91528a29c7b7a216a3f974c1df17e9666970ee Mon Sep 17 00:00:00 2001 +From 7a8df51375053d0f24027d2d0600627f275e6cdd Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 17 Apr 2015 16:58:45 +0100 Subject: [PATCH 003/133] smsc95xx: Disable turbo mode by default @@ -168,7 +168,7 @@ index 116680e3089f16e1e3e9113a3b93e62cb78cc1bb..aa4cb43dcd9ba83b042332bc15a4dce6 MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction"); -From ea71b37216af8b41d32555cbf6b32334d198bffe Mon Sep 17 00:00:00 2001 +From 5edee9a8107124ff13f6748d906823f0de13d4c7 Mon Sep 17 00:00:00 2001 From: Sam Nazarko Date: Fri, 1 Apr 2016 17:27:21 +0100 Subject: [PATCH 004/133] add smsc95xx packetsize module_param @@ -213,7 +213,7 @@ index aa4cb43dcd9ba83b042332bc15a4dce68affce28..889bdabd9dea6cebccc361aa4ac569d7 netif_dbg(dev, ifup, dev->net, "rx_urb_size=%ld\n", -From d95335fb2a1e94d9571cbb272531c8ec88e0c60e Mon Sep 17 00:00:00 2001 +From 118cc9a01ab37eda968e0568f8f88e051c0f2701 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 26 Mar 2013 17:26:38 +0000 Subject: [PATCH 005/133] Allow mac address to be set in smsc95xx @@ -312,7 +312,7 @@ index 889bdabd9dea6cebccc361aa4ac569d73681396b..d22a2324085fbf61fbd8920362bfc7b9 eth_hw_addr_random(dev->net); netif_dbg(dev, ifup, dev->net, "MAC address set to eth_random_addr\n"); -From 326beeca49f750a848bf612a07533bbe3daba13b Mon Sep 17 00:00:00 2001 +From d9dbf25a2e3d16e84a93a15b28a8964cc08ad033 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 9 Aug 2016 22:19:28 +0100 Subject: [PATCH 006/133] smsc95xx: Experimental: Enable turbo_mode and @@ -346,7 +346,7 @@ index d22a2324085fbf61fbd8920362bfc7b9f72bebe3..c846c55075387398d9bcb0957e31f5c8 MODULE_PARM_DESC(packetsize, "Override the RX URB packet size"); -From 790d18e6b933bd21f9b9931f14699d115a2818d3 Mon Sep 17 00:00:00 2001 +From 71e2a1712058109a030244dcc73e8a77e1ce9e1b Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 9 Mar 2016 13:28:24 +0000 Subject: [PATCH 007/133] serial: Take care starting a hung-up tty's port @@ -377,7 +377,7 @@ index 2f44e20136545162d15ee9a39c2eae38352580d1..6b0518ce13ad210b888b73dd6c02a555 return 0; } -From bda0c4920d8c466cf65c9d5fbad43a0d2e617e85 Mon Sep 17 00:00:00 2001 +From 4b865496e5f0c2847749ed18e987b9edbccd7bdf Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 13 Mar 2015 12:43:36 +0000 Subject: [PATCH 008/133] Protect __release_resource against resources without @@ -408,7 +408,7 @@ index 9b5f04404152c296af3a96132f27cfc80ffa9af9..f8a9af6e6b915812be2ba2c1c2b40106 for (;;) { tmp = *p; -From 59df9e9d36fcfac03715b5c4fd2d899709a58833 Mon Sep 17 00:00:00 2001 +From 7b2fb7ebb7971e25f8d3097f5b66e42afac17efd Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 18 Dec 2014 16:07:15 -0800 Subject: [PATCH 009/133] mm: Remove the PFN busy warning @@ -436,7 +436,7 @@ index a2214c64ed3cd04dceaed7a579f593852e458df1..de26bffb1baa5cffa692fcb12b478263 goto done; } -From 518dc33d99451dec2d49e1bb24c6eff0219c5bc4 Mon Sep 17 00:00:00 2001 +From 8a3e2fa3b57d6992d12a636715cd108f093499f7 Mon Sep 17 00:00:00 2001 From: Robert Tiemann Date: Mon, 20 Jul 2015 11:01:25 +0200 Subject: [PATCH 010/133] BCM2835_DT: Fix I2S register map @@ -477,7 +477,7 @@ index 65783de0aedf3da79adc36fd077b7a89954ddb6b..a89fe4220fdc3f26f75ee66daf187554 dmas = <&dma 2>, <&dma 3>; -From 83ce9f1a637ad109f607a73ac4d5033159e7979f Mon Sep 17 00:00:00 2001 +From 3eda77d21eace8c70848f6cc131f2b81a767571b Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 4 Dec 2015 17:41:50 +0000 Subject: [PATCH 011/133] irq-bcm2836: Prevent spurious interrupts, and trap @@ -507,7 +507,7 @@ index d96b2c947e74e3edab3917551c64fbd1ced0f34c..93e3f7660c4230c9f1dd3b195958cb49 #endif } else if (stat) { -From f4e282add1c9635bca5e76f6aee9243bc75cbaf5 Mon Sep 17 00:00:00 2001 +From e48d7853af14ed499222a918e8d8628956ec985b 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/133] irqchip: bcm2835: Add FIQ support @@ -639,7 +639,7 @@ index 44d7c38dde479d771f3552e914bf8c1c1f5019f7..42ff5e6a8e0d532f5b60a1e7af7cc4d9 } -From d7817ee5ce8797ef0b7eb513d3edbe50ab675f1b Mon Sep 17 00:00:00 2001 +From 9dbf9e9b3970068fb05224536d041a76c4ab7eaa 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/133] irqchip: irq-bcm2835: Add 2836 FIQ support @@ -741,7 +741,7 @@ index 42ff5e6a8e0d532f5b60a1e7af7cc4d941bd5008..eccf6ed025299cb480884f5bcbe77abf for (b = 0; b < NR_BANKS; b++) { for (i = 0; i < bank_irqs[b]; i++) { -From f0857eabc9b1666a0a1c9254e9f3b8cc36eb2d35 Mon Sep 17 00:00:00 2001 +From 8e7877b9735a76ac8fa5f4abcfe952ab55bae911 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 14 Jul 2015 10:26:09 +0100 Subject: [PATCH 014/133] spidev: Add "spidev" compatible string to silence @@ -765,7 +765,7 @@ index 2e05046f866bd01bf87edcdeff0d5b76d4d0aea7..d780491b8013a4e97fa843958964454e }; MODULE_DEVICE_TABLE(of, spidev_dt_ids); -From 6bf68a22a0ced27d91087ac0037b0961f5fb7707 Mon Sep 17 00:00:00 2001 +From 7b0af07f6a0af6792b809035f93700ce1f029294 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 30 Jun 2015 14:12:42 +0100 Subject: [PATCH 015/133] serial: 8250: Don't crash when nr_uarts is 0 @@ -788,7 +788,7 @@ index dcf43f66404f12d2bd290a30adfe494dd056162e..0fba189c676ded310b92a09c4e7e8f76 for (i = 0; i < nr_uarts; i++) { struct uart_8250_port *up = &serial8250_ports[i]; -From 7543bd68a87b5114c40d2bde76f712d3a239bb86 Mon Sep 17 00:00:00 2001 +From fade6fd9658203524a83cc806dc58001c275b297 Mon Sep 17 00:00:00 2001 From: notro Date: Thu, 10 Jul 2014 13:59:47 +0200 Subject: [PATCH 016/133] pinctrl-bcm2835: Set base to 0 give expected gpio @@ -813,7 +813,7 @@ index fa77165fab2c1348163979da507df17e7168c49b..d11e2e4ea189466e686d762cb6c6fef9 .can_sleep = false, }; -From 314aafa1a433f7f9216ffa7762cfbf0e109bd713 Mon Sep 17 00:00:00 2001 +From faf52efe1c23d4cfbff42e8bfa4f16caafc3eb0b Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 24 Feb 2015 13:40:50 +0000 Subject: [PATCH 017/133] pinctrl-bcm2835: Fix interrupt handling for GPIOs @@ -962,7 +962,7 @@ index d11e2e4ea189466e686d762cb6c6fef9111ecf8e..107ad7d58de8f8a7f55e09c9cdcf7d66 }, }; -From 087946e18f63ed63c3bae4846b32d51f14620191 Mon Sep 17 00:00:00 2001 +From 352f27ed30f1ee6f5700c16141a35e12c7900348 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 26 Feb 2015 09:58:22 +0000 Subject: [PATCH 018/133] pinctrl-bcm2835: Only request the interrupts listed @@ -992,7 +992,7 @@ index 107ad7d58de8f8a7f55e09c9cdcf7d66fa7ab66b..644bdecbcfcb79d3b84a33769265fca5 pc->irq_data[i].irqgroup = i; -From 2a20b5bb88fad4e4830a626d04cd2a904503cb59 Mon Sep 17 00:00:00 2001 +From b1257924703c2b200fbcc692f0a7c76bde3abf5b Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 6 May 2016 12:32:47 +0100 Subject: [PATCH 019/133] pinctrl-bcm2835: Return pins to inputs when freed @@ -1036,7 +1036,7 @@ index 644bdecbcfcb79d3b84a33769265fca5d3d0c9e5..81a66cba2ab0f7e3ae179de7edd10122 .get_function_name = bcm2835_pmx_get_function_name, .get_function_groups = bcm2835_pmx_get_function_groups, -From f177dcc304347cfc3fd9fedc106962122aade532 Mon Sep 17 00:00:00 2001 +From 91778ecd864c25b0abb37221d7a2f5c709a8b6bf Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 24 Jun 2015 14:10:44 +0100 Subject: [PATCH 020/133] spi-bcm2835: Support pin groups other than 7-11 @@ -1120,7 +1120,7 @@ index f35cc10772f6670397ea923ad30158270dd68578..5dfe20ffc2866fa6789825016c585175 /* and set up the "mode" and level */ dev_info(&spi->dev, "setting up native-CS%i as GPIO %i\n", -From 96874b4e6c2dc9dbe3197e999e7a923c238a61b1 Mon Sep 17 00:00:00 2001 +From 52485f1ae81f0f49a789b4fd4038a41c8a6834b0 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 1 Jul 2016 22:09:24 +0100 Subject: [PATCH 021/133] spi-bcm2835: Disable forced software CS @@ -1157,7 +1157,7 @@ index 5dfe20ffc2866fa6789825016c585175a29705b6..8493474d286f7a1ac6454a22c61c8c2c return 0; } -From bbebb0cda28bd80fe506b2929bd6cb79ea1f4dc6 Mon Sep 17 00:00:00 2001 +From 1d3ce1396a5d204e9caec86ff7d7ecf0b0f89e2a 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 022/133] ARM: bcm2835: Set Serial number and Revision @@ -1213,7 +1213,7 @@ index 0c1edfc98696da0e0bb7f4a18cdfbcdd27a9795d..8f152266ba9b470df2eaaed9ebcf158e static const char * const bcm2835_compat[] = { -From 4eca98bd59ac619c3486f8dc6287029eba737853 Mon Sep 17 00:00:00 2001 +From d4b91e1a5706ee7257b2d7d51e21cb084c864169 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 023/133] dmaengine: bcm2835: Load driver early and support @@ -1319,7 +1319,7 @@ index e18dc596cf2447fa9ef7e41b62d9396e29043426..80d35f760b4a4a51e60c355a84d538ba MODULE_ALIAS("platform:bcm2835-dma"); MODULE_DESCRIPTION("BCM2835 DMA engine driver"); -From 3cc6245931749870c5ab561d4ac85f4b3830f07b Mon Sep 17 00:00:00 2001 +From b4bcc7f785a173139bd02f1ad7e9a3fc2ec2fc62 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 024/133] bcm2835: Add support for uart1 @@ -1379,7 +1379,7 @@ index 8f152266ba9b470df2eaaed9ebcf158ed2079834..0ef5cd3d1d6ec420360294acc98d40d6 static const char * const bcm2835_compat[] = { -From 1426cf7e549a1708fda75c0f7f5671a2d0e0e659 Mon Sep 17 00:00:00 2001 +From 36d0f9a29d1bea6920ea4cc653dcefb473f8bd92 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 25 Jan 2016 17:25:12 +0000 Subject: [PATCH 025/133] firmware: Updated mailbox header @@ -1445,7 +1445,7 @@ index 3fb357193f09914fe21f8555a4b8613f74f22bc3..227a107214a02deadcca3db202da265e RPI_FIRMWARE_GET_COMMAND_LINE = 0x00050001, RPI_FIRMWARE_GET_DMA_CHANNELS = 0x00060001, -From e0c8cc9617b6c34cdf4723af668bd9af58fdefc0 Mon Sep 17 00:00:00 2001 +From 9cba2df5f7561a806e277eb3072e1a7f1fc46acc Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 26 Apr 2016 11:44:59 -0700 Subject: [PATCH 026/133] clk: bcm2835: Mark the VPU clock as critical @@ -1494,7 +1494,7 @@ index 7a7970865c2d856b6b57113c2bb7e8074140a5dd..d9db03cb3fd84163f320dca6f2e533c6 /* clocks with per parent mux */ -From abb7f9e36f3c1e8e3b9f556eaa2e146217ffeeb8 Mon Sep 17 00:00:00 2001 +From 4192862c24bc31eb92393913ff6bbafdd82dd7b4 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 9 May 2016 17:28:18 -0700 Subject: [PATCH 027/133] clk: bcm2835: Mark GPIO clocks enabled at boot as @@ -1552,7 +1552,7 @@ index d9db03cb3fd84163f320dca6f2e533c61f61b5ad..f6bbe8d5929828048114286ec29a33e0 /* HDMI state machine */ [BCM2835_CLOCK_HSM] = REGISTER_PER_CLK( -From f91627e15f312025f418c9691aba384bc3a49725 Mon Sep 17 00:00:00 2001 +From 3513813a98006e6ccbb9efda27643de751b4d3f9 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 26 Apr 2016 12:39:45 -0700 Subject: [PATCH 028/133] clk: bcm2835: Skip PLLC clocks when deciding on a new @@ -1626,7 +1626,7 @@ index f6bbe8d5929828048114286ec29a33e02519eab8..e527649ee5e32d20cebd762f4badbfca div = bcm2835_clock_choose_div(hw, req->rate, prate, true); rate = bcm2835_clock_rate_from_divisor(clock, prate, div); -From a47ea61d6152613d8ae94d93918b0618b84e5611 Mon Sep 17 00:00:00 2001 +From a0fff5c58561060aea5d5661cf690f20cee67b59 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 1 Jun 2016 12:05:35 -0700 Subject: [PATCH 029/133] clk: bcm2835: Mark the CM SDRAM clock's parent as @@ -1703,7 +1703,7 @@ index e527649ee5e32d20cebd762f4badbfca06657a84..fbf616021704178a9d007219a0ea2a9f &cprman->onecell); } -From 467295bc571b09da933560c263e1776c6a7e9bbf Mon Sep 17 00:00:00 2001 +From 2c8ec9b8aab3846395bcd6a18b9cce69b8d57123 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 3 Oct 2016 13:58:40 +0100 Subject: [PATCH 030/133] Enable upstream BCM2835 auxiliar mini UART support @@ -1726,7 +1726,7 @@ index 7c6f7afca5ddeed7b25fa6272246fc539bf31b04..748098f900d3474b5d535b24da76ad06 help Support for the BCM2835 auxiliar mini UART. -From 67563c733e2fcfc415243f24692bdb3664b5e303 Mon Sep 17 00:00:00 2001 +From dd842c1ecd7e8aa67f9eeb74f9dfd2dd5dfb3a22 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 15 Jun 2016 16:48:41 +0100 Subject: [PATCH 031/133] rtc: Add SPI alias for pcf2123 driver @@ -1749,7 +1749,7 @@ index b4478cc92b55dbd76731ea8ec6a4228677adcebb..6981064d5cbad7d7078b23ce4ed5227e MODULE_LICENSE("GPL"); +MODULE_ALIAS("spi:rtc-pcf2123"); -From b8dd54d695f8fb5541c50205ca44d034ab51b4d4 Mon Sep 17 00:00:00 2001 +From 34a4517eeb6e4eaaeb09681d1905cdd91e7b885c Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 19 Apr 2016 15:55:02 -0700 Subject: [PATCH 032/133] ARM: bcm2708: Enable building power domain driver. @@ -1773,7 +1773,7 @@ index a39b0d58ddd0fdf0ac1cc7295f8aafb12546e226..7d11a44f36d2e6f8697773cd49a72e53 select PM_GENERIC_DOMAINS if PM help -From 61dcee3bd73d81d60102bf07135bbad016d415f0 Mon Sep 17 00:00:00 2001 +From 030e766c1255c016089956c1b735ddd411bdcd79 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 12 May 2013 12:24:19 +0100 Subject: [PATCH 033/133] Main bcm2708/bcm2709 linux port @@ -4301,7 +4301,7 @@ index aa4bfbf129e4585ebb89b25fca4b03c928925022..89f7a3a539b5a1b84ddcf0a1548160c0 mmc_pm_flag_t pm_caps; /* supported pm features */ -From 19a8491dcec90a2ba95eb99caef15ecbedbe12d4 Mon Sep 17 00:00:00 2001 +From 3590c152bc93eb52713e115ab8a94bdeb4df0e1a Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 5 Apr 2016 19:40:12 +0100 Subject: [PATCH 034/133] reboot: Use power off rather than busy spinning when @@ -4327,7 +4327,7 @@ index 3fa867a2aae672755c6ce6448f4148c989dbf964..80dca8dcd6709034b643c6a3f35729e0 /* -From d4ca226c5f37b6af64fc28b2da77686192c076eb Mon Sep 17 00:00:00 2001 +From 7c94b0d784d2ac4e6f431a8c138b0070a4210558 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 11 Nov 2015 21:01:15 +0000 Subject: [PATCH 035/133] squash: include ARCH_BCM2708 / ARCH_BCM2709 @@ -4494,7 +4494,7 @@ index d528aaceaad95bc6bae2147ebe66249629d2512e..03a303e52d5fe57bbdd8769d24bca590 select REGMAP_MMIO help -From cf2afc7680460a07ebee70d33e1d51904db81bcd Mon Sep 17 00:00:00 2001 +From 803da67aa6257789f65ac74fb4c60216557e56a3 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 1 May 2013 19:46:17 +0100 Subject: [PATCH 036/133] Add dwc_otg driver @@ -65523,7 +65523,7 @@ index 0000000000000000000000000000000000000000..cdc9963176e5a4a0d5250613b61e26c5 +test_main(); +0; -From 56099634e064759c0b8e79f3714048c69f444800 Mon Sep 17 00:00:00 2001 +From 7c7e3f19c99b5bcbba13df411be58f5d47e67b38 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 17 Jun 2015 17:06:34 +0100 Subject: [PATCH 037/133] bcm2708 framebuffer driver @@ -68985,7 +68985,7 @@ 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 907a0b73b81516ee08cc28afb8542da7d8e6a608 Mon Sep 17 00:00:00 2001 +From 58cdbb2c5c39e1ad230f57581a38d777776a7454 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 14:22:53 +0100 Subject: [PATCH 038/133] dmaengine: Add support for BCM2708 @@ -69610,7 +69610,7 @@ index 0000000000000000000000000000000000000000..c5bfff2765be4606077e6c8af73040ec + +#endif /* _PLAT_BCM2708_DMA_H */ -From 794afcaa298703a5a80a587080c49f12acaa9977 Mon Sep 17 00:00:00 2001 +From 9d4105c8791b3d3ee6a6eaa51879142875166831 Mon Sep 17 00:00:00 2001 From: gellert Date: Fri, 15 Aug 2014 16:35:06 +0100 Subject: [PATCH 039/133] MMC: added alternative MMC driver @@ -71360,7 +71360,7 @@ index 0000000000000000000000000000000000000000..ceb37930e167f47c9c848e8de757ad09 +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Gellert Weisz"); -From 1daa639defb9acf2a0a99eb2c3f631f312fd6933 Mon Sep 17 00:00:00 2001 +From c37a3521e6cd3fe01c3ac774311271bf3c0c49b1 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 25 Mar 2015 17:49:47 +0000 Subject: [PATCH 040/133] Adding bcm2835-sdhost driver, and an overlay to @@ -73755,7 +73755,7 @@ index 0000000000000000000000000000000000000000..23dea422182534e248435aeaee3ecb5d +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Phil Elwell"); -From 8a2419eed2afd2209292e9bad4ffde7ee2f85375 Mon Sep 17 00:00:00 2001 +From 50067c20afbd42922981343d28894d474e1d7d43 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 11 May 2016 12:50:33 +0100 Subject: [PATCH 041/133] mmc: Add MMC_QUIRK_ERASE_BROKEN for some cards @@ -73894,7 +73894,7 @@ index d8673ca968ba2d65fb3da39680583ca5152641e4..510c3872929b3267fb6665bb69d26f5a unsigned int erase_shift; /* if erase unit is power 2 */ unsigned int pref_erase; /* in sectors */ -From dcd6f3944a8b90284f4a058d2ca69cdb63eeb5cf Mon Sep 17 00:00:00 2001 +From af44f3c2d5631fe1dd413838cf150f8573829b44 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:31:47 +0100 Subject: [PATCH 042/133] cma: Add vc_cma driver to enable use of CMA @@ -75240,7 +75240,7 @@ index 0000000000000000000000000000000000000000..be2819d5d41f9d5ed65daf8eedb94c9e + +#endif /* VC_CMA_H */ -From c8216ff675a803346bc44997932f25074c7757a8 Mon Sep 17 00:00:00 2001 +From 2e89eff887d0aad7b4269cb38996187bfe7a8ded Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 26 Mar 2012 22:15:50 +0100 Subject: [PATCH 043/133] bcm2708: alsa sound driver @@ -77979,7 +77979,7 @@ index 0000000000000000000000000000000000000000..af3e6eb690113fc32ce9e06bd2f0f294 + +#endif // _VC_AUDIO_DEFS_H_ -From 0f683d0e2c8a1fa128b15e0042a468d5aaa3b8d2 Mon Sep 17 00:00:00 2001 +From c82f2bb59be5d01c5cafe3f53fb0c4295c2f8917 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 2 Jul 2013 23:42:01 +0100 Subject: [PATCH 044/133] bcm2708 vchiq driver @@ -91347,7 +91347,7 @@ index 0000000000000000000000000000000000000000..b6bfa21155e431e93bfb2c149d324371 + return vchiq_build_time; +} -From d457ca1335a4e8111af02e4644d2eb60589e3ef6 Mon Sep 17 00:00:00 2001 +From 56bcbb1c15897cac27788fb419ec4326c2e323f6 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 17 Jun 2015 16:07:06 +0100 Subject: [PATCH 045/133] vc_mem: Add vc_mem driver @@ -92355,7 +92355,7 @@ index 0000000000000000000000000000000000000000..20a475377eb3078ea1ecaef2b24efc35 + +#endif /* _VC_MEM_H */ -From bcdbbb98ad7993cd912648968f8df26739dfefdf Mon Sep 17 00:00:00 2001 +From 8099c52e8672766bce4142be97b1b3f5ce54e5ab Mon Sep 17 00:00:00 2001 From: Tim Gover Date: Tue, 22 Jul 2014 15:41:04 +0100 Subject: [PATCH 046/133] vcsm: VideoCore shared memory service for BCM2835 @@ -96776,7 +96776,7 @@ index 0000000000000000000000000000000000000000..334f36d0d697b047df2922b5f2db67f3 + +#endif /* __VMCS_SM_IOCTL_H__INCLUDED__ */ -From a7429bf992eb2c53e29850ad5a4da4b867124202 Mon Sep 17 00:00:00 2001 +From 5246ed7cbe4739c6752264e452f8d7e0bdbc9725 Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Fri, 21 Aug 2015 23:14:48 +0100 Subject: [PATCH 047/133] Add /dev/gpiomem device for rootless user GPIO access @@ -97090,7 +97090,7 @@ index 0000000000000000000000000000000000000000..911f5b7393ed48ceed8751f06967ae64 +MODULE_DESCRIPTION("gpiomem driver for accessing GPIO from userspace"); +MODULE_AUTHOR("Luke Wren "); -From 0a911c72137ea8436eab1340eecaa37d65f684e0 Mon Sep 17 00:00:00 2001 +From 1f79ba972a11655e56296a00226c936c2ec1bf98 Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Sat, 5 Sep 2015 01:14:45 +0100 Subject: [PATCH 048/133] Add SMI driver @@ -99044,7 +99044,7 @@ index 0000000000000000000000000000000000000000..ee3a75edfc033eeb0d90a687ffb68b10 + +#endif /* BCM2835_SMI_H */ -From bb3a013a835e3e680dc0fa520aa52d41b0eafbb2 Mon Sep 17 00:00:00 2001 +From eedc98f450f15d5964f3a83be550dd71d79da181 Mon Sep 17 00:00:00 2001 From: Martin Sperl Date: Tue, 26 Apr 2016 14:59:21 +0000 Subject: [PATCH 049/133] MISC: bcm2835: smi: use clock manager and fix reload @@ -99217,7 +99217,7 @@ index 63a4ea08b9930a3a31a985f0a1d969b488ed49ec..1261540703127d1d63b9f3c87042c6e5 return 0; } -From 0e031f89e276870ba3f0d5df73c4e147fb37f2ed Mon Sep 17 00:00:00 2001 +From 757c8ea3fc3c4ff43b5a3c6bc137917b1bb11097 Mon Sep 17 00:00:00 2001 From: Luke Wren Date: Sat, 5 Sep 2015 01:16:10 +0100 Subject: [PATCH 050/133] Add SMI NAND driver @@ -99585,7 +99585,7 @@ index 0000000000000000000000000000000000000000..02adda6da18bd0ba9ab19a104975b79d + ("Driver for NAND chips using Broadcom Secondary Memory Interface"); +MODULE_AUTHOR("Luke Wren "); -From c3698a86141222f1435a299c2501ad5b0f8c547f Mon Sep 17 00:00:00 2001 +From 2b78376e267757011c3ace089ab02bc1957ce731 Mon Sep 17 00:00:00 2001 From: Aron Szabo Date: Sat, 16 Jun 2012 12:15:55 +0200 Subject: [PATCH 051/133] lirc: added support for RaspberryPi GPIO @@ -100451,7 +100451,7 @@ index 0000000000000000000000000000000000000000..fb69624ccef00ddbdccf8256d6baf1b1 + +#endif -From ebe8368d2b3dc570990f4943fbd752b6b36459c6 Mon Sep 17 00:00:00 2001 +From 26fec1142057f9ccf3484be0cf47dfccbcdbe464 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:49:20 +0100 Subject: [PATCH 052/133] Add cpufreq driver @@ -100716,7 +100716,7 @@ index 0000000000000000000000000000000000000000..3eb9e9326231b08e6ee95ad486485245 +module_init(bcm2835_cpufreq_module_init); +module_exit(bcm2835_cpufreq_module_exit); -From 01c9c95e7f2b142513530b31f9e544c3018c5332 Mon Sep 17 00:00:00 2001 +From e9b11b676f3d703fe9a2f27cfce5a9fae571c2e4 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 26 Mar 2013 19:24:24 +0000 Subject: [PATCH 053/133] Added hwmon/thermal driver for reporting core @@ -100885,7 +100885,7 @@ index 0000000000000000000000000000000000000000..c63fb9f9d143e19612a18fe530c7b2b3 +MODULE_DESCRIPTION("Thermal driver for bcm2835 chip"); +MODULE_LICENSE("GPL"); -From bef6ae3646a31fc3ca85aae6d78201be346b4ac8 Mon Sep 17 00:00:00 2001 +From 9fc131b5e21ad6741aabc73fa5a48e80c54ec3ee Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 17 Jun 2015 15:44:08 +0100 Subject: [PATCH 054/133] Add Chris Boot's i2c driver @@ -101562,7 +101562,7 @@ index 0000000000000000000000000000000000000000..962f2e5c7455d91bf32925d785f5f16b +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" DRV_NAME); -From af3405e9bd88d927560f492984bb769d0ee4a210 Mon Sep 17 00:00:00 2001 +From e13939694965ea45922bb1aac762dd304e29c251 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 055/133] char: broadcom: Add vcio module @@ -101791,7 +101791,7 @@ index 0000000000000000000000000000000000000000..c19bc2075c77879563ef5e59038b5a14 +MODULE_DESCRIPTION("Mailbox userspace access"); +MODULE_LICENSE("GPL"); -From 749a971f69d98d534f24c6816c5fbd8af4ffca27 Mon Sep 17 00:00:00 2001 +From 0c533fb19eccd178d7422816dcf42eb046b2a1c8 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 056/133] firmware: bcm2835: Support ARCH_BCM270x @@ -101900,7 +101900,7 @@ index dd506cd3a5b874f9e1acd07efb8cd151bb6145d1..b980d531b35b9981a88356ef1c8a7b86 MODULE_AUTHOR("Eric Anholt "); MODULE_DESCRIPTION("Raspberry Pi firmware driver"); -From b42e7a59915a50ba494c895593f825d618d8289d Mon Sep 17 00:00:00 2001 +From a7f5c542ca7327ae83a670b48e808098fecbee7b Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Wed, 30 Jan 2013 12:45:18 +0000 Subject: [PATCH 057/133] bcm2835: add v4l2 camera device @@ -109635,7 +109635,7 @@ index 0000000000000000000000000000000000000000..9d1d11e4a53e510c04a416d92d195a7d + +#endif /* MMAL_VCHIQ_H */ -From 18b5ab4588316cd8191786bdb79e50ee2c2f88f1 Mon Sep 17 00:00:00 2001 +From 4f3b4755d1fdaf21c2196584897243f480375af6 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 11 May 2015 09:00:42 +0100 Subject: [PATCH 058/133] scripts: Add mkknlimg and knlinfo scripts from tools @@ -110150,7 +110150,7 @@ index 0000000000000000000000000000000000000000..78c5845d2f01deb04b477327d83fa606 + return $trailer; +} -From 1dd324a060b8eab5ef7d4eb1dcf21e80c5df39b0 Mon Sep 17 00:00:00 2001 +From 9aa153fcdf67297ff85cd52e7c9420c782d530df Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 10 Aug 2015 09:49:15 +0100 Subject: [PATCH 059/133] scripts/dtc: Update to upstream version 1.4.1 @@ -113004,7 +113004,7 @@ index ad9b05ae698b0495ecbda42ffcf4743555313a27..2595dfda020fd9e03f0beff5006f229d -#define DTC_VERSION "DTC 1.4.1-g53bf130b" +#define DTC_VERSION "DTC 1.4.1-g25efc119" -From 8408e228a5f72b7c614f4c257d3392689712f6f7 Mon Sep 17 00:00:00 2001 +From 59aa060bf3e8bb828c9a4009877166e90c9bc3a1 Mon Sep 17 00:00:00 2001 From: notro Date: Wed, 9 Jul 2014 14:46:08 +0200 Subject: [PATCH 060/133] BCM2708: Add core Device Tree support @@ -122836,7 +122836,7 @@ index 0000000000000000000000000000000000000000..8498134fdbb3912e9ce18282b53084d8 + +}; -From 34fc507f939edb6f02ff6d3f2a2dc3f0de4017bf Mon Sep 17 00:00:00 2001 +From e2b767015c0689ec0d0a60b36f9541329a8a3f42 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 24 Aug 2016 16:28:44 +0100 Subject: [PATCH 061/133] kbuild: Ignore dtco targets when filtering symbols @@ -122859,7 +122859,7 @@ index 179219845dfcdfbeb586d12c5ec1296095d9fbf4..e0743e44f84188667a0c322e8c3d36f1 esac | tr ";" "\n" | sed -rn 's/^.*=== __KSYM_(.*) ===.*$$/KSYM_\1/p' -From b936ffbe110f2ff85d31ebfca695c58d96cf13ee Mon Sep 17 00:00:00 2001 +From e0e1b2218408e14a9b0671fdba9200ec3e66b010 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 13 Mar 2015 20:00:21 +0000 Subject: [PATCH 062/133] BCM270X_DT: Add a .dtbo target, use for overlays @@ -122945,7 +122945,7 @@ index 0a07f9014944ed92a8e2e42983ae43be60b3e471..b1513a7c175885137034b9f7225788c0 # Bzip2 -From e7ec9b6de4dd8a3dff524425b6884dd76596dae2 Mon Sep 17 00:00:00 2001 +From 71710ca1cd727834551a5c0cd851831e05ac99ec Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 8 Apr 2016 17:43:27 +0100 Subject: [PATCH 063/133] BCM270X_DT: Don't generate "linux,phandle" props @@ -122974,7 +122974,7 @@ index b1513a7c175885137034b9f7225788c0a7c35027..1d949b7410600dd3b04a3acde8c41cfe -d $(depfile).dtc.tmp $(dtc-tmp) ; \ cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) -From cc97745fd12a52d81624ae90a8caaca4b73a38b9 Mon Sep 17 00:00:00 2001 +From 3367dcee4ae6fad79183c4943b9f3cbe403aa45b Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 6 Feb 2015 13:50:57 +0000 Subject: [PATCH 064/133] BCM270x_DT: Add pwr_led, and the required "input" @@ -123153,7 +123153,7 @@ index 8a3b5d29602ffe665cfb26522180f3a696664371..d067976ddc2f34d5476bcd9321856b1c /* Set LED brightness level * Must not sleep. Use brightness_set_blocking for drivers -From 8b5af7a27f5fccf8ff00af66e85c56f4f870f3cf Mon Sep 17 00:00:00 2001 +From 5ff040fa30a3899c0b24b5b808abd3286943eeba Mon Sep 17 00:00:00 2001 From: Siarhei Siamashka Date: Mon, 17 Jun 2013 13:32:11 +0300 Subject: [PATCH 065/133] fbdev: add FBIOCOPYAREA ioctl @@ -123255,7 +123255,7 @@ index fb795c3b3c178ad3cd7c9e9e4547ffd492bac181..fa72af0c981710fe80bacf4cf6612f6d #define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */ #define FB_TYPE_PLANES 1 /* Non interleaved planes */ -From 7a2283c1db876185989b98b580a4b10408376274 Mon Sep 17 00:00:00 2001 +From f21804eef6f572ed104ddbd998aa0f35f0af1238 Mon Sep 17 00:00:00 2001 From: Harm Hanemaaijer Date: Thu, 20 Jun 2013 20:21:39 +0200 Subject: [PATCH 066/133] Speed up console framebuffer imageblit function @@ -123467,7 +123467,7 @@ index a2bb276a8b2463eee98eb237c4647bc00cd93601..436494fba15abecb400ef28688466faf start_index, pitch_index); } else -From 6917833d0e500c5b58e60a51e2317a9e838a3a3a Mon Sep 17 00:00:00 2001 +From a33a99a7be2f23ef94e0396abdd8a9981a4e3252 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 8 May 2013 11:46:50 +0100 Subject: [PATCH 067/133] enabling the realtime clock 1-wire chip DS1307 and @@ -123720,7 +123720,7 @@ index d58594a3232492e33f1dd4babd3798b03e0f0203..feae94256256316fd9d850c3d83325af unsigned int ext_pullup_enable_pin; unsigned int pullup_duration; -From 8a5349711374bc17138be91245c645f5adcd96a3 Mon Sep 17 00:00:00 2001 +From 3aae96b0bda04b82d6bd4f35de7760f570f5d6ff Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 18 Dec 2013 22:16:19 +0000 Subject: [PATCH 068/133] config: Enable CONFIG_MEMCG, but leave it disabled @@ -123773,7 +123773,7 @@ index d6b729beba4930bbb1a1ddc4a6a6b8533bbf94e0..69e8d214f663572319f784fe17032b1e * css_tryget_online_from_dir - get corresponding css from a cgroup dentry * @dentry: directory dentry of interest -From ac0c8ad8fd4aabf0301ce0c4fba2ca17c080a642 Mon Sep 17 00:00:00 2001 +From 40be2be146712cebcbaa70e2cd84a384bb1e2ddb Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 14 Jul 2014 22:02:09 +0100 Subject: [PATCH 069/133] hid: Reduce default mouse polling interval to 60Hz @@ -123812,7 +123812,7 @@ index ae83af649a607f67239f1a64bf45dd4b5770cc7d..4a7af9d0b910f59d17421ce14138400d ret = -ENOMEM; if (usb_endpoint_dir_in(endpoint)) { -From c45ca313c620cd0c89e006b8d6a76f119fb6bdef Mon Sep 17 00:00:00 2001 +From fb5905311ee0a57d1ebdb5220aa571b63075f203 Mon Sep 17 00:00:00 2001 From: Gordon Hollingworth Date: Tue, 12 May 2015 14:47:56 +0100 Subject: [PATCH 070/133] rpi-ft5406: Add touchscreen driver for pi LCD display @@ -124110,7 +124110,7 @@ index 0000000000000000000000000000000000000000..b27dbee8f56773dbd2a5503dc864747d +MODULE_DESCRIPTION("Touchscreen driver for memory based FT5406"); +MODULE_LICENSE("GPL"); -From cb377b63a6685624863eca57102f1a8aa861e0f7 Mon Sep 17 00:00:00 2001 +From 06a51e0b34869a8059d9f8f0335a8253245da51a Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 13 Oct 2014 11:47:53 +0100 Subject: [PATCH 071/133] Improve __copy_to_user and __copy_from_user @@ -125669,7 +125669,7 @@ index 6bd1089b07e0960830ed6bd6a8345202b7efd8b0..cd17dd11ebe7bbe00089e70cd2ccea74 static unsigned long noinline __clear_user_memset(void __user *addr, unsigned long n) -From 5603839ac26c4f41def5ecf5175071bae23e8b7b Mon Sep 17 00:00:00 2001 +From c22b680f44ff3703ab3670bbb801b0a2f0f5c2a7 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 25 Jun 2015 12:16:11 +0100 Subject: [PATCH 072/133] gpio-poweroff: Allow it to work on Raspberry Pi @@ -125707,7 +125707,7 @@ index be3d81ff51cc3f510d85e4eed7a52960e51e7bc1..a030ae9fb1fca325061c093696e82186 "%s: pm_power_off function already registered", __func__); -From 428270a47ec03d35af2d428e117f95f7239bbf2b Mon Sep 17 00:00:00 2001 +From 1bb52e6360c88bcb3ae0638fadbee236d50678cf Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 14 Jul 2015 14:32:47 +0100 Subject: [PATCH 073/133] mfd: Add Raspberry Pi Sense HAT core driver @@ -126575,7 +126575,7 @@ index 0000000000000000000000000000000000000000..56196dc2af10e464a1e3f98b028dca1c + +#endif -From e48fd071bbc48fb4889105e4484d91362488e8dd Mon Sep 17 00:00:00 2001 +From 8d441097e8301ddfe71b411695f277b9e9158c56 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 19:19:08 +0100 Subject: [PATCH 074/133] ASoC: Add support for HifiBerry DAC @@ -126752,7 +126752,7 @@ index 0000000000000000000000000000000000000000..29ecc08a227cdd4b3c6141935d0c5d21 +MODULE_DESCRIPTION("ASoC Driver for HifiBerry DAC"); +MODULE_LICENSE("GPL v2"); -From 20231065f5a688e3bdf6c10bb00e030f3a6bbc27 Mon Sep 17 00:00:00 2001 +From 99b41cf3b303275458ad9360746ddc1e41e8d7b6 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Mon, 25 Jan 2016 15:48:59 +0000 Subject: [PATCH 075/133] ASoC: Add support for Rpi-DAC @@ -127039,7 +127039,7 @@ index 0000000000000000000000000000000000000000..afe1b419582aa40c4b2729d242bb13cd +MODULE_AUTHOR("Florian Meier "); +MODULE_LICENSE("GPL v2"); -From 771040e82eb1860c53dd44afd906613ccf4e7d41 Mon Sep 17 00:00:00 2001 +From 4ba0700ed4024b02ed837e6aa20472d540b642e7 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Wed, 15 Jan 2014 21:41:23 +0100 Subject: [PATCH 076/133] ASoC: wm8804: Implement MCLK configuration options, @@ -127091,7 +127091,7 @@ index 8d914702cae4a3fe2c0ca0599cd1ec79f7322c83..c846716b4ed1027ade5512e8be90801d .dapm_widgets = wm8804_dapm_widgets, .num_dapm_widgets = ARRAY_SIZE(wm8804_dapm_widgets), -From 0ad30227152c9b528583555efb97e0814992e927 Mon Sep 17 00:00:00 2001 +From 362d51e6d195b4fd1c24bd3f3cc0c32654f730e3 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Wed, 15 Jan 2014 21:42:08 +0100 Subject: [PATCH 077/133] ASoC: BCM:Add support for HiFiBerry Digi. Driver is @@ -127382,7 +127382,7 @@ index 0000000000000000000000000000000000000000..9840e15d3e2be6396bc3ce6e74749408 +MODULE_DESCRIPTION("ASoC Driver for HifiBerry Digi"); +MODULE_LICENSE("GPL v2"); -From e5c37237eabcdac6657c151ff57645609ff84b58 Mon Sep 17 00:00:00 2001 +From 722a9e44f813b02bda1ebca5765b817cddc0f566 Mon Sep 17 00:00:00 2001 From: Gordon Garrity Date: Sat, 8 Mar 2014 16:56:57 +0000 Subject: [PATCH 078/133] Add IQaudIO Sound Card support for Raspberry Pi @@ -127715,7 +127715,7 @@ index 0000000000000000000000000000000000000000..4e8e6dec14bcf4a1ff286c43742d4097 +MODULE_DESCRIPTION("ASoC Driver for IQAudio DAC"); +MODULE_LICENSE("GPL v2"); -From be291a7d7691daedbcea4310804bf8e5c0be2d19 Mon Sep 17 00:00:00 2001 +From 497b938312ca04558a3ac9b58bbbb009eb4dbbc3 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 25 Jul 2016 17:06:50 +0100 Subject: [PATCH 079/133] iqaudio-dac: Compile fix - untested @@ -127742,7 +127742,7 @@ index 4e8e6dec14bcf4a1ff286c43742d4097249d6777..aa15bc4b49ca95edec905fddd8fd0a6d if (dapm->dev != codec_dai->dev) return 0; -From 41c0f23ead247551161d55bbfed445e50a4855e9 Mon Sep 17 00:00:00 2001 +From 27aca523108059e07b28bd73e49a455d1ad07afe Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Mon, 4 Aug 2014 10:06:56 +0200 Subject: [PATCH 080/133] Added support for HiFiBerry DAC+ @@ -128374,7 +128374,7 @@ index 047c48953a20cd4075000ac294a17fe59baedcde..090fe0ee08e8765f9edbb62777413bb6 dev_err(dev, "No LRCLK?\n"); return -EINVAL; -From d9a67c321395007b43d0f367845abec6e1fa2bfd Mon Sep 17 00:00:00 2001 +From c5a5fb9ed76afba271fde65059904fca4d90bfb2 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Mon, 4 Aug 2014 11:09:58 +0200 Subject: [PATCH 081/133] Added driver for HiFiBerry Amp amplifier add-on board @@ -129209,7 +129209,7 @@ index 0000000000000000000000000000000000000000..8f019e04898754d2f87e9630137be9e8 + +#endif /* _TAS5713_H */ -From 821a4a5d6873b3e5dbbf2de11fd010aa07757463 Mon Sep 17 00:00:00 2001 +From f60a9818aba0457dc2b18a9577f9435371a1cdc6 Mon Sep 17 00:00:00 2001 From: "Daniel Matuschek (HiFiBerry)" Date: Tue, 26 Jul 2016 19:16:25 +0200 Subject: [PATCH 082/133] Added HiFiBerry Digi+ Pro driver @@ -129320,7 +129320,7 @@ index 9840e15d3e2be6396bc3ce6e74749408cc28c333..52ab9dea2e724c4238986ca53c59c849 ret = snd_soc_register_card(&snd_rpi_hifiberry_digi); -From 6e2f1a16d00045f667d32195174363e49b6827fd Mon Sep 17 00:00:00 2001 +From 5986266b254bf71871c77cbeb734e79c9fc64198 Mon Sep 17 00:00:00 2001 From: Ryan Coe Date: Sat, 31 Jan 2015 18:25:49 -0700 Subject: [PATCH 083/133] Update ds1307 driver for device-tree support @@ -129350,7 +129350,7 @@ index 8e1c5cb6ece6f60619e5cafcea4271e056d96778..f9536679b270a39a4d9639fdbd3420fe .driver = { .name = "rtc-ds1307", -From 7420b376c139f855278744f8b3352a21bc71d130 Mon Sep 17 00:00:00 2001 +From bb714661d70519e8712d8cc66661093656f58358 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Wed, 25 Mar 2015 09:26:17 +0100 Subject: [PATCH 084/133] Add driver for rpi-proto @@ -129569,7 +129569,7 @@ index 0000000000000000000000000000000000000000..9db678e885efd63d84d60a098a84ed67 +MODULE_DESCRIPTION("ASoC Driver for Raspberry Pi connected to PROTO board (WM8731)"); +MODULE_LICENSE("GPL"); -From e7746320e7fc8f073a56cfe99eee391d2a53bd42 Mon Sep 17 00:00:00 2001 +From 63319d985ede2f7ef61282f4d747808d93a92b7d Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Mon, 24 Aug 2015 16:03:47 +0100 Subject: [PATCH 085/133] RaspiDAC3 support @@ -129815,7 +129815,7 @@ index 0000000000000000000000000000000000000000..dd9eeea2af0382307f437e6db09d1546 +MODULE_DESCRIPTION("ASoC Driver for RaspiDAC Rev.3x"); +MODULE_LICENSE("GPL v2"); -From 40543851c29730ad9b78b97025a2ffe6091eced7 Mon Sep 17 00:00:00 2001 +From 3a182dafc91ca024aee3c64b9bf443cdb516fc71 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 9 Aug 2016 14:49:23 +0100 Subject: [PATCH 086/133] tpa6130a2: Add headphone switch control @@ -129927,7 +129927,7 @@ index f1ea052a822e1f584eb55cbc876b8e079e813ccd..3bf0163956c5665683d7950798df527f { struct tpa6130a2_data *data = snd_soc_component_get_drvdata(component); -From 67dc0f1ba8eaacbbb12332051830ebed7e281ab0 Mon Sep 17 00:00:00 2001 +From d43316c3ff8ea4822df2496be31400e91438fc3e Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 9 Aug 2016 14:49:29 +0100 Subject: [PATCH 087/133] Revert "tpa6130a2: Add headphone switch control" @@ -130039,7 +130039,7 @@ index 3bf0163956c5665683d7950798df527fa1b57b59..f1ea052a822e1f584eb55cbc876b8e07 { struct tpa6130a2_data *data = snd_soc_component_get_drvdata(component); -From 91dbef4b0b3f8c13d484f40de7738db11ca0d27b Mon Sep 17 00:00:00 2001 +From cb97e9c6a0b9aaf7ebb6b9c9a11974a6759e5a33 Mon Sep 17 00:00:00 2001 From: Aaron Shaw Date: Thu, 7 Apr 2016 21:26:21 +0100 Subject: [PATCH 088/133] Add Support for JustBoom Audio boards @@ -130496,7 +130496,7 @@ index 0000000000000000000000000000000000000000..91acb666380faa3c0deb2230f8a0f8bb +MODULE_DESCRIPTION("ASoC Driver for JustBoom PI Digi HAT Sound Card"); +MODULE_LICENSE("GPL v2"); -From 4df23efc45d5ea9152da9bb28ebe8a999b7fbf02 Mon Sep 17 00:00:00 2001 +From 552f2030ac9a8a6714494e0cfbb5b6db3ac16913 Mon Sep 17 00:00:00 2001 From: Andrey Grodzovsky Date: Tue, 3 May 2016 22:10:59 -0400 Subject: [PATCH 089/133] ARM: adau1977-adc: Add basic machine driver for @@ -130681,7 +130681,7 @@ index 0000000000000000000000000000000000000000..6e2ee027926ee63c89222f75ceb89e3d +MODULE_DESCRIPTION("ASoC Driver for ADAU1977 ADC"); +MODULE_LICENSE("GPL v2"); -From 4d1a66b24f66b88cdb4ab02bfd70587e1c29690b Mon Sep 17 00:00:00 2001 +From dbdab3a61d86bb349e8303007338c9e9068120e2 Mon Sep 17 00:00:00 2001 From: Matt Flax Date: Mon, 16 May 2016 21:36:31 +1000 Subject: [PATCH 090/133] New AudioInjector.net Pi soundcard with low jitter @@ -130933,7 +130933,7 @@ index 0000000000000000000000000000000000000000..5ff0985e07efb96b95634a65995f09f7 +MODULE_ALIAS("platform:audioinjector-pi-soundcard"); + -From dc02dff9d51c80084879037345cc3f9773ff65ff Mon Sep 17 00:00:00 2001 +From 917a96d289cab81fea006276c07deef0bc594c3f Mon Sep 17 00:00:00 2001 From: DigitalDreamtime Date: Thu, 30 Jun 2016 18:38:42 +0100 Subject: [PATCH 091/133] Add IQAudIO Digi WM8804 board support @@ -131236,7 +131236,7 @@ index 0000000000000000000000000000000000000000..9b6e829bcb5b1762a853775e78163196 +MODULE_DESCRIPTION("ASoC Driver for IQAudIO WM8804 Digi"); +MODULE_LICENSE("GPL v2"); -From 9b36ab6c869b182e2f34d1bf1bd346700da1e841 Mon Sep 17 00:00:00 2001 +From 6c9818de78faa595e8dec34921db0f5a3c24dbdd Mon Sep 17 00:00:00 2001 From: escalator2015 Date: Tue, 24 May 2016 16:20:09 +0100 Subject: [PATCH 092/133] New driver for RRA DigiDAC1 soundcard using WM8741 + @@ -131712,7 +131712,7 @@ index 0000000000000000000000000000000000000000..446796e7e4c14a7d95b2f2a01211d9a0 +MODULE_DESCRIPTION("ASoC Driver for RRA DigiDAC1"); +MODULE_LICENSE("GPL v2"); -From 6129fa0c8b10f4c670e61227de424762df249f50 Mon Sep 17 00:00:00 2001 +From f36e6ef700f5d416745ac40a848d620de89b0fc0 Mon Sep 17 00:00:00 2001 From: DigitalDreamtime Date: Sat, 2 Jul 2016 16:26:19 +0100 Subject: [PATCH 093/133] Add support for Dion Audio LOCO DAC-AMP HAT @@ -131888,7 +131888,7 @@ index 0000000000000000000000000000000000000000..89e65317512bc774453ac8d0d5b0ff98 +MODULE_DESCRIPTION("ASoC Driver for DionAudio LOCO"); +MODULE_LICENSE("GPL v2"); -From d9cae57761eb2a3cf96dcdaad04363f76960fb65 Mon Sep 17 00:00:00 2001 +From 80b1d272eaf5373aa4aaef1025180e17173724bc Mon Sep 17 00:00:00 2001 From: Clive Messer Date: Mon, 19 Sep 2016 14:01:04 +0100 Subject: [PATCH 094/133] Allo Piano DAC boards: Initial 2 channel (stereo) @@ -132098,7 +132098,7 @@ index 0000000000000000000000000000000000000000..8e8e62e5a36a279b425ed4655cfbac99 +MODULE_DESCRIPTION("ALSA ASoC Machine Driver for Allo Piano DAC"); +MODULE_LICENSE("GPL v2"); -From 733cb62a453138ed46fce36aef38fdc5761294ee Mon Sep 17 00:00:00 2001 +From 95f53ad904af8e3b9be9e62f0f84e52b43edd219 Mon Sep 17 00:00:00 2001 From: P33M Date: Wed, 21 Oct 2015 14:55:21 +0100 Subject: [PATCH 095/133] rpi_display: add backlight driver and overlay @@ -132270,7 +132270,7 @@ index 0000000000000000000000000000000000000000..14a0d9b037395497c1fdae2961feccd5 +MODULE_DESCRIPTION("Raspberry Pi mailbox based Backlight Driver"); +MODULE_LICENSE("GPL"); -From b66978c79d42288887c48f7b0aba8e302158939f Mon Sep 17 00:00:00 2001 +From bd6634fc3b4c6b05819371848921eeb7517cf902 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 23 Feb 2016 19:56:04 +0000 Subject: [PATCH 096/133] bcm2835-virtgpio: Virtual GPIO driver @@ -132499,7 +132499,7 @@ index 0000000000000000000000000000000000000000..f3e0f1620b979e4fa3c7e556eb785ac2 +MODULE_DESCRIPTION("brcmvirt GPIO driver"); +MODULE_ALIAS("platform:brcmvirt-gpio"); -From ce00d0bcc772349fd7e7b10a542ee3b91cd3216e Mon Sep 17 00:00:00 2001 +From dd4fa828f6f545fc6dadd4ef4b5d5c82ec117690 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 4 Mar 2016 12:49:09 +0000 Subject: [PATCH 097/133] DRM_VC4: Allow to be built for ARCH_BCM270x @@ -132521,7 +132521,7 @@ index e53df59cb139f25f8e6ae916bca93abf0c49e063..f6e938208b73512f20eab46a383ca91b select DRM_KMS_HELPER select DRM_KMS_CMA_HELPER -From 57a8dea225977d7adcbe04f6ab3f3526884178d2 Mon Sep 17 00:00:00 2001 +From 8044f69ae2b56ea458a20b513f1f2d56e5910d11 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 23 Feb 2016 17:26:48 +0000 Subject: [PATCH 098/133] amba_pl011: Don't use DT aliases for numbering @@ -132553,7 +132553,7 @@ index 8a9e213387a79fcc335caad27520a68edf03f446..4a5a1c5cf9b345e255f4d79714a7ae46 uap->old_cr = 0; uap->port.dev = dev; -From 82c4ed7e0e54c918b84a3dd45824312b0505df67 Mon Sep 17 00:00:00 2001 +From 48e96cdb3fbd584ac2e6b5412ac45318c867fb9a Mon Sep 17 00:00:00 2001 From: Pantelis Antoniou Date: Wed, 3 Dec 2014 13:23:28 +0200 Subject: [PATCH 099/133] OF: DT-Overlay configfs interface @@ -132988,7 +132988,7 @@ index 0000000000000000000000000000000000000000..0037e6868a6cda8706c88194c6a4454b +} +late_initcall(of_cfs_init); -From 474664bc68b6dd8b217e4f1c5fb8144da2741d96 Mon Sep 17 00:00:00 2001 +From 3e09710fca5b0bd7ae65c8fb8ca8f471d496fcef Mon Sep 17 00:00:00 2001 From: Cheong2K Date: Fri, 26 Feb 2016 18:20:10 +0800 Subject: [PATCH 100/133] brcm: adds support for BCM43341 wifi @@ -133031,7 +133031,7 @@ index 3cc42bef6245529c37320f0ec6ab5e7b77f1d2f6..2ae9d0c9dbaaab6bc16610ac012039cd #define BRCM_CC_4335_CHIP_ID 0x4335 #define BRCM_CC_4339_CHIP_ID 0x4339 -From bcd3e9e092f35b76532777fc1ded0dce325827fe Mon Sep 17 00:00:00 2001 +From 78357f179e557462830725efebc2ffd8b8711d97 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 9 Mar 2016 17:25:59 +0000 Subject: [PATCH 101/133] brcmfmac: Disable power management @@ -133046,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 b8aec5e5ef93e28dfb70c95557d7388fd9b67bef..a13351c4f8401263c04ae1f2dd81e84f28303c12 100644 +index abaf003a5b396f94e891c6569217ffbb595987e1..f6221c20ff8e2c07a9ddb329204cc59ce574117b 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -2759,6 +2759,8 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, +@@ -2762,6 +2762,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 */ @@ -133059,7 +133059,7 @@ index b8aec5e5ef93e28dfb70c95557d7388fd9b67bef..a13351c4f8401263c04ae1f2dd81e84f if (!check_vif_up(ifp->vif)) { -From 2c3a1291a7bc8c888e4e7423c0240f58e2b6d5e3 Mon Sep 17 00:00:00 2001 +From 4504b967e9be672f59852b3ca985b3b667472ffa Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 28 Apr 2016 17:13:47 +0100 Subject: [PATCH 102/133] brcmfmac: Use original country code as a fallback @@ -133078,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 a13351c4f8401263c04ae1f2dd81e84f28303c12..25efa073602397780e308bf00416e949c60ab678 100644 +index f6221c20ff8e2c07a9ddb329204cc59ce574117b..12bffe239e9d28ce8f73db48b3f5759ffe550162 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -6737,12 +6737,18 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], +@@ -6740,12 +6740,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; @@ -133102,7 +133102,7 @@ index a13351c4f8401263c04ae1f2dd81e84f28303c12..25efa073602397780e308bf00416e949 } if ((alpha2[0] == ccreq->country_abbrev[0]) && -@@ -6766,10 +6772,14 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], +@@ -6769,10 +6775,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; } @@ -133121,46 +133121,10 @@ index a13351c4f8401263c04ae1f2dd81e84f28303c12..25efa073602397780e308bf00416e949 ccreq->country_abbrev[1] = alpha2[1]; ccreq->country_abbrev[2] = 0; -From 826d67d2a5d87fdcae2a1cebfb344f25f2d0009d Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Thu, 19 May 2016 15:36:09 +0100 -Subject: [PATCH 103/133] brcmfmac: Plug memory leak in brcmf_fill_bss_param - -See: https://github.com/raspberrypi/linux/issues/1471 - -Signed-off-by: Phil Elwell ---- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 5 ++++- - 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 25efa073602397780e308bf00416e949c60ab678..9f50ef00a8823011a806a2b86775abb8d5f9de54 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -@@ -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); -- return; -+ goto out_err; - } - si->filled |= BIT(NL80211_STA_INFO_BSS_PARAM); - si->bss_param.beacon_interval = le16_to_cpu(buf->bss_le.beacon_period); -@@ -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; -+ -+out_err: -+ kfree(buf); - } - - static s32 - -From 042f3b792977f3d8c04a18edc261c77f526c0c77 Mon Sep 17 00:00:00 2001 +From f4effcdad3727c800a85771a121a7c81cb662bad Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 13 Sep 2016 16:32:37 +0100 -Subject: [PATCH 104/133] brcmfmac: do not use internal roaming engine by +Subject: [PATCH 103/133] brcmfmac: do not use internal roaming engine by default Some evidence of curing disconnects with this disabled, so make it a default. @@ -133184,10 +133148,10 @@ index 3e15d64c64813513bc22202dd9e468588699abb0..4051780f64f44a5ce522babe6c371a1b MODULE_PARM_DESC(roamoff, "Do not use internal roaming engine"); -From f164e38cf7f30f0b9ee4f0acbfdf70ae3c967cd0 Mon Sep 17 00:00:00 2001 +From 26a7afe4bdd277a8ed282fe6d924ae59b83384c6 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 31 Aug 2016 17:10:09 +0100 -Subject: [PATCH 105/133] brcmfmac: Change stop_ap sequence +Subject: [PATCH 104/133] brcmfmac: Change stop_ap sequence Patch from Broadcom/Cypress to resolve a customer error @@ -133197,7 +133161,7 @@ Signed-off-by: Phil Elwell 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 +index 12bffe239e9d28ce8f73db48b3f5759ffe550162..0c3cecb22763db2db5ccbc1789f50b2b361e4a9c 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) @@ -133220,10 +133184,10 @@ index 9f50ef00a8823011a806a2b86775abb8d5f9de54..b3ef2bb5642ce3ff0b74c5bab97114f7 brcmf_fil_iovar_int_set(ifp, "mbss", 0); err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_REGULATORY, -From f79c9a8978d52194c98c65d653c7b18ff3469737 Mon Sep 17 00:00:00 2001 +From 2e77cd765f85994a46ca1f64b1c2d638f4eba866 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 17 Dec 2015 13:37:07 +0000 -Subject: [PATCH 106/133] hci_h5: Don't send conf_req when ACTIVE +Subject: [PATCH 105/133] 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. @@ -133246,10 +133210,10 @@ index 0879d64b1caf58afb6e5d494c07d9ab7e7cdf983..5161ab30fd533d50f516bb93d5b9f402 if (H5_HDR_LEN(hdr) > 2) h5->tx_win = (data[2] & 0x07); -From 3e42b2f4ac358bc2e28962073240014f3b2d2864 Mon Sep 17 00:00:00 2001 +From d0bacd8ae2b478be18e0463d630bc46d0a540a22 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 22 Jan 2016 13:06:39 -0800 -Subject: [PATCH 107/133] drm/vc4: Add a debugfs node for tracking execution +Subject: [PATCH 106/133] drm/vc4: Add a debugfs node for tracking execution state. Signed-off-by: Eric Anholt @@ -133309,10 +133273,10 @@ index b262c5c26f109702572ed613fa0965f06a993ef9..27f42023fa49c7e62e643dc007e9e121 vc4_queue_hangcheck(struct drm_device *dev) { -From b4bb84ce6c8cf7630cc9e9ecde3b33a2e9a7c452 Mon Sep 17 00:00:00 2001 +From f64994b0175ade91579e3b337804b4c4661924e8 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 25 Jan 2016 13:03:33 -0800 -Subject: [PATCH 108/133] drm/vc4: Include vc4_drm.h in uapi in downstream +Subject: [PATCH 107/133] drm/vc4: Include vc4_drm.h in uapi in downstream build. Signed-off-by: Eric Anholt @@ -133333,10 +133297,10 @@ index 9355dd8eff3ba39401dfe37e7fbf7737f0397f11..68828bf586f05a8d9b0a6ab409ee91a7 header-y += vmwgfx_drm.h header-y += msm_drm.h -From c22f3983b5514c5ed39c3a5639e082ec9ae67389 Mon Sep 17 00:00:00 2001 +From 35da78653fd3c928405841ca2e2f36c660d199de Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 14 Oct 2015 11:32:14 -0700 -Subject: [PATCH 109/133] drm/vc4: Force HDMI to connected. +Subject: [PATCH 108/133] drm/vc4: Force HDMI to connected. For some reason on the downstream tree, the HPD GPIO isn't working. @@ -133359,10 +133323,10 @@ index 4452f3631cacea37bbd5dc8a594367631e308adc..3a622f70a077c2ebe214830f5d700cd8 if (gpio_get_value_cansleep(vc4->hdmi->hpd_gpio) ^ vc4->hdmi->hpd_active_low) -From ad9b6dc8b0ac99384cefa90928c6130ad2225689 Mon Sep 17 00:00:00 2001 +From 90d38277d9d9974217927887e330cd6db24479b3 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 13 Apr 2015 17:16:29 +0100 -Subject: [PATCH 110/133] config: Add default configs +Subject: [PATCH 109/133] config: Add default configs --- arch/arm/configs/bcm2709_defconfig | 1294 +++++++++++++++++++++++++++++++++++ @@ -135981,10 +135945,10 @@ index 0000000000000000000000000000000000000000..cfe21355f7d95326b292be1b018b988f +CONFIG_CRC_ITU_T=y +CONFIG_LIBCRC32C=y -From 912bf1f3da1894d3018be20fe9ee39c023cacdd8 Mon Sep 17 00:00:00 2001 +From 8dc615f6120d3b2461fbfbaebb12b6836161e192 Mon Sep 17 00:00:00 2001 From: Michael Zoran Date: Wed, 24 Aug 2016 03:35:56 -0700 -Subject: [PATCH 111/133] Add arm64 configuration and device tree differences. +Subject: [PATCH 110/133] Add arm64 configuration and device tree differences. Disable MMC_BCM2835_SDHOST and MMC_BCM2835 since these drivers are crashing at the moment. @@ -137387,10 +137351,10 @@ index 0000000000000000000000000000000000000000..1fcde8c1329bbfd329245a8bb1769199 +CONFIG_LIBCRC32C=y +CONFIG_BCM2708_VCHIQ=n -From 185ba8c40aa985d54692020a61d45d499cabb3ae Mon Sep 17 00:00:00 2001 +From 13c1b1bef46969e12fe3a56278c1cda9ebea1a57 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 5 Oct 2016 16:10:59 +0100 -Subject: [PATCH 112/133] bcm2835-cpufreq: Only report a single frequency when +Subject: [PATCH 111/133] 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) @@ -137459,10 +137423,10 @@ index 3eb9e9326231b08e6ee95ad486485245c71cf868..414fbdc10dfbfc6e4bb47870a7af3fd5 /* the CPUFreq driver */ -From 40920ca8f094d54576befc80cd384f69a70d4a3a Mon Sep 17 00:00:00 2001 +From 3c603169e9eddab5d8b1c37235a3802ea257071b Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 7 Oct 2016 12:37:09 +0100 -Subject: [PATCH 113/133] scripts/mkknlimg: Change string for DDT detection +Subject: [PATCH 112/133] scripts/mkknlimg: Change string for DDT detection 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 @@ -137489,10 +137453,10 @@ index 78c5845d2f01deb04b477327d83fa60624f87f98..a21f7e31bc904233e980e66ae3e6337e my $res = try_extract($kernel_file, $tmpfile1); -From 0c9eadf7a7fcfe0e54e2ee3c9bc7a53d6bb75561 Mon Sep 17 00:00:00 2001 +From 3cd83195169e2473da3f1b0b463525b15b099821 Mon Sep 17 00:00:00 2001 From: Herve Jourdain Date: Fri, 20 May 2016 16:02:23 +0800 -Subject: [PATCH 114/133] build: support for .dtbo files for dtb overlays +Subject: [PATCH 113/133] 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 @@ -137534,10 +137498,10 @@ index 1d949b7410600dd3b04a3acde8c41cfead15bfa4..1967878a843461c3ff1f473b9a030eb0 -d $(depfile).dtc.tmp $(dtc-tmp) ; \ cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) -From 9473e3e35b968de7d55d20572dc0699ed2c7b5d3 Mon Sep 17 00:00:00 2001 +From 22f0fb2b8542920ca9af3add8348d05803d8b276 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Thu, 6 Oct 2016 19:42:55 -0700 -Subject: [PATCH 115/133] [media]bcm2835-camera: fix compilation warning/werror +Subject: [PATCH 114/133] [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 ] @@ -137567,10 +137531,10 @@ index 70f4db2741037381e638d1dda5a95478809eb161..cb5bab642eaab2f60d641801dd0afdac struct bm2835_mmal_dev *dev = vb2_get_drv_priv(vq); unsigned long size; -From 3c1511fa2d36da24b0865534327ee2d6a836d8fc Mon Sep 17 00:00:00 2001 +From 616c5c4cd2030dd22981b5918bddb76a778e7c4a 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/133] bcm2709: Drop platform smp and timer init code +Subject: [PATCH 115/133] bcm2709: Drop platform smp and timer init code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -137745,10 +137709,10 @@ index 90773a30b87abbfda1615326c6faf59b9db6d68e..d4c9d57d78a964fbbf799b534471462d .init_early = bcm2709_init_early, .reserve = board_reserve, -From 837db1841c3305cba3257de7fa9acded0d3e43d8 Mon Sep 17 00:00:00 2001 +From 37a8cc3aa4b014988237b32c4488a57be94b8ca3 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/133] BCM270X_DT: Use bcm283x.dtsi, bcm2835.dtsi and +Subject: [PATCH 116/133] BCM270X_DT: Use bcm283x.dtsi, bcm2835.dtsi and bcm2836.dtsi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -138877,10 +138841,10 @@ index 223bd9627b3dcaac5458909dc59c877eed751ce4..491594c918cf5da94fbb19a606edb0dd +}; +#endif -From 4c3a15347f23d25c02bf21d93c7acb24aee2f0ba Mon Sep 17 00:00:00 2001 +From 5a13c708c76934bc7483650a218f75dca70fb8c3 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/133] watchdog: bcm2835: Support setting reboot partition +Subject: [PATCH 117/133] watchdog: bcm2835: Support setting reboot partition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -139004,10 +138968,10 @@ index 4dddd8298a227d64862f2e92954a465f2e44b3f6..1f545e024422f59280932713e6a1b051 register_restart_handler(&wdt->restart_handler); if (pm_power_off == NULL) -From 39e27f829bd8762885bbe882f3957135821d6497 Mon Sep 17 00:00:00 2001 +From 9eba7f4bdc01e2d7efb6c1e12d55111e07a2738b 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/133] bcm270x: Use watchdog for reboot/poweroff +Subject: [PATCH 118/133] bcm270x: Use watchdog for reboot/poweroff MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -139266,10 +139230,10 @@ index d4c9d57d78a964fbbf799b534471462d3c3b88f1..ed5c5414f7a3ad7284cda881e9e55077 module_param(serial, uint, 0644); -module_param(reboot_part, uint, 0644); -From 80a42c7c0562105089444dd68071d62a345bb79d Mon Sep 17 00:00:00 2001 +From d3463d34f01707e97ac000c65c2abe276ff54028 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/133] bcm270x: Remove dead files +Subject: [PATCH 119/133] bcm270x: Remove dead files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -139470,10 +139434,10 @@ index 6aa68260dd866c83527dffece8de483913231fb3..00000000000000000000000000000000 - */ -#define VMALLOC_END (0xff000000) -From daaa7bb6ab36a9f2c5134bcacd2bc68b57a34691 Mon Sep 17 00:00:00 2001 +From 82da69473f3e27c89d26701e9bd2e6e81153a6c6 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/133] bcm270x: Drop bcm2835-aux-uart hack +Subject: [PATCH 120/133] bcm270x: Drop bcm2835-aux-uart hack MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -139553,10 +139517,10 @@ index ed5c5414f7a3ad7284cda881e9e550777cd29282..9a1ad48d13172856e3ec748db015cb95 system_serial_low = serial; } -From 1f1a94d603bc5175910448b886bdec68ef0664e1 Mon Sep 17 00:00:00 2001 +From d680b9c559d1cfc467f42695128254d1471cf00e 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/133] Revert "bcm2835: Add support for uart1" +Subject: [PATCH 121/133] Revert "bcm2835: Add support for uart1" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -139614,10 +139578,10 @@ index 0ef5cd3d1d6ec420360294acc98d40d698d38d8a..8f152266ba9b470df2eaaed9ebcf158e static const char * const bcm2835_compat[] = { -From 339aad90adc3a12f2a09ce5a1daee17a749506c2 Mon Sep 17 00:00:00 2001 +From 932b2d1bbff9515be1e6e3ec6901c024d40554d4 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/133] bcm270x: Remove unnecessary of_platform_populate +Subject: [PATCH 122/133] bcm270x: Remove unnecessary of_platform_populate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -139692,10 +139656,10 @@ index 9a1ad48d13172856e3ec748db015cb95cd110b76..d2762f558f644ac87c56ba9402a638a3 system_serial_low = serial; } -From 1f6f93598f0badf5d1f448ad8db3081a2b37d52b Mon Sep 17 00:00:00 2001 +From 8c2512c07ada399a412e22a60b4d568e734b6145 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/133] bcm270x: Remove 4MB dma coherent pool +Subject: [PATCH 123/133] bcm270x: Remove 4MB dma coherent pool MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -139776,10 +139740,10 @@ index d2762f558f644ac87c56ba9402a638a3c7a26397..d0e43619669e851350c5d9d7bb7e9dd1 .dt_compat = bcm2709_compat, MACHINE_END -From 29d1d588931d9fe7843d62962fde7ff7e2bebded Mon Sep 17 00:00:00 2001 +From f1128ffff4dd59610e68a74f453ecd02faa72c19 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/133] bcm270x: Drop map_io device mapping +Subject: [PATCH 124/133] bcm270x: Drop map_io device mapping MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -140728,10 +140692,10 @@ index de7504bfc20ba24be8707861b8389783860adb77..00000000000000000000000000000000 - */ -#define arch_decomp_wdog() -From 92c6799f0299e081e9e9c737f7bb02a1e30a56fc Mon Sep 17 00:00:00 2001 +From 2f9da3eb26ad9794e14751dafe317fcdf1f9f884 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/133] bcm270x: Use DT_MACHINE_START +Subject: [PATCH 125/133] bcm270x: Use DT_MACHINE_START MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -140813,10 +140777,10 @@ index b52d949ee91d96eb7672fbbb4969bfa1e7afc376..2ed1b8a922ed02b9e3545991873af77b ics_if_voip MACH_ICS_IF_VOIP ICS_IF_VOIP 3206 wlf_cragg_6410 MACH_WLF_CRAGG_6410 WLF_CRAGG_6410 3207 -From f5e3cafd855dda46e310849991ee4923445b86e1 Mon Sep 17 00:00:00 2001 +From 73425c95121ff9235ca2221c490841c2441694fe Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 11 Oct 2016 17:48:07 +0100 -Subject: [PATCH 127/133] Use DT rather than modules params for board rev and +Subject: [PATCH 126/133] Use DT rather than modules params for board rev and serial --- @@ -140910,10 +140874,10 @@ index 9cf36118e57b3c362de9adcf089425023d4a601d..9f113736627175bdcb362e0eda469e09 -module_param(boardrev, uint, 0644); -module_param(serial, uint, 0644); -From d14a603a47fbedc793bba0dce63b19a1545ad9be Mon Sep 17 00:00:00 2001 +From 58670873d8bbc78caa5fb27912b4cce51a7be225 Mon Sep 17 00:00:00 2001 From: Martin Sperl Date: Fri, 2 Sep 2016 16:45:27 +0100 -Subject: [PATCH 128/133] Register the clocks early during the boot process, so +Subject: [PATCH 127/133] 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. @@ -140959,10 +140923,10 @@ index fbf616021704178a9d007219a0ea2a9f1704f0a6..cbbc8d4ddcffc797268c0ecb6477005f MODULE_AUTHOR("Eric Anholt "); MODULE_DESCRIPTION("BCM2835 clock driver"); -From 16ecc1b9ec6dcb636b3e0bd6cc96d56ed16c170d Mon Sep 17 00:00:00 2001 +From dce21deb558be888b6a3744ed14c8f096416aa7e Mon Sep 17 00:00:00 2001 From: Scott Ellis Date: Tue, 27 Sep 2016 04:29:00 -0400 -Subject: [PATCH 129/133] Add Adafruit pitft35 touchscreen support (#1657) +Subject: [PATCH 128/133] Add Adafruit pitft35 touchscreen support (#1657) The dts comes from the Adafruit repository @@ -141167,10 +141131,10 @@ index 952104ab6c4cd0e9d8f7bd5f2fba7a72da75424e..26fa6c2b6b6d745178e666465ba226af CONFIG_FB_TFT_ILI9320=m CONFIG_FB_TFT_ILI9325=m -From 2a59957ae7482d3bf1b6e4e45ab209da6365c66c Mon Sep 17 00:00:00 2001 +From 48dbca68f2cb7bb5d72721415c39f2206fd6495c Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 10 Oct 2016 15:06:20 +0100 -Subject: [PATCH 130/133] BCM270X_DT: Update CM3 to use sdhost interface +Subject: [PATCH 129/133] BCM270X_DT: Update CM3 to use sdhost interface --- arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 9 ++++----- @@ -141206,10 +141170,10 @@ index b5a5ae7747455438f8eabd28e8c11c6aeb0c1ecc..d13e3d4dac4e198c8cac451e3f64ef68 bus-width = <4>; status = "okay"; -From 938aa4394c9ab18f4674df2854a2970afa5da5b8 Mon Sep 17 00:00:00 2001 +From 7ece1f81bf9766f552742e7ec4019cbc10c92535 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 11 Oct 2016 18:10:17 +0100 -Subject: [PATCH 131/133] Revert "Register the clocks early during the boot +Subject: [PATCH 130/133] Revert "Register the clocks early during the boot process," This reverts commit bcc804ce3dfd5eb4800c9dd77370da7e7913f77d. @@ -141253,10 +141217,10 @@ index cbbc8d4ddcffc797268c0ecb6477005fa14e228b..fbf616021704178a9d007219a0ea2a9f MODULE_AUTHOR("Eric Anholt "); MODULE_DESCRIPTION("BCM2835 clock driver"); -From d64cdc61cc63683ada1004d9a8c97ffd62e6bab4 Mon Sep 17 00:00:00 2001 +From 5c9bf74f1c69d59342147bded52718452eda6fa9 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 12 Oct 2016 15:10:14 +0100 -Subject: [PATCH 132/133] mmc: info (not err) msg on clock probe deferral +Subject: [PATCH 131/133] mmc: info (not err) msg on clock probe deferral --- drivers/mmc/host/bcm2835-mmc.c | 5 ++++- @@ -141298,10 +141262,10 @@ index 23dea422182534e248435aeaee3ecb5da69c0d33..9e55d5ac08b5809c40fe391ae6e685fd } -From 3f69235898cb5f4b969d4efe824af131dc817117 Mon Sep 17 00:00:00 2001 +From 2844dad796a4f9c9dc2157aa7b6011b55a58ce25 Mon Sep 17 00:00:00 2001 From: Electron752 Date: Sat, 15 Oct 2016 11:49:52 -0700 -Subject: [PATCH 133/133] ARM64: Modify default config to get raspbian to boot +Subject: [PATCH 132/133] ARM64: Modify default config to get raspbian to boot (#1686) 1. Enable emulation of deprecated instructions. @@ -141365,3 +141329,1232 @@ index 1fcde8c1329bbfd329245a8bb17691999882ccfc..d7406f5a4620151044b8f716b4d10bb8 CONFIG_UCB1400_CORE=m CONFIG_MFD_STMPE=y CONFIG_STMPE_SPI=y + +From 3c08504053c3b87477b33dde65ede3527f45b32d Mon Sep 17 00:00:00 2001 +From: gtrainavicius +Date: Sun, 23 Oct 2016 12:06:53 +0300 +Subject: [PATCH 133/133] Support for Blokas Labs pisound board + +--- + .../devicetree/bindings/vendor-prefixes.txt | 1 + + arch/arm/boot/dts/overlays/Makefile | 1 + + arch/arm/boot/dts/overlays/README | 6 + + arch/arm/boot/dts/overlays/pisound-overlay.dts | 114 +++ + arch/arm/configs/bcm2709_defconfig | 1 + + arch/arm/configs/bcmrpi_defconfig | 1 + + sound/soc/bcm/Kconfig | 6 + + sound/soc/bcm/Makefile | 2 + + sound/soc/bcm/pisound.c | 987 +++++++++++++++++++++ + 9 files changed, 1119 insertions(+) + create mode 100644 arch/arm/boot/dts/overlays/pisound-overlay.dts + create mode 100644 sound/soc/bcm/pisound.c + +diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt +index 1992aa97d45ac8b0a9cfaefbaf5de40780c601ad..562cc57b75227e9dba77af035d26926b0ce8894e 100644 +--- a/Documentation/devicetree/bindings/vendor-prefixes.txt ++++ b/Documentation/devicetree/bindings/vendor-prefixes.txt +@@ -39,6 +39,7 @@ auo AU Optronics Corporation + avago Avago Technologies + avic Shanghai AVIC Optoelectronics Co., Ltd. + axis Axis Communications AB ++blokaslabs Vilniaus Blokas UAB + boe BOE Technology Group Co., Ltd. + bosch Bosch Sensortec GmbH + boundary Boundary Devices Inc. +diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile +index 6179b21af2fa8ec63429c3d379fc46085681dc7e..555bb5050aaf8464e209f35c50dc1f5c0295e585 100644 +--- a/arch/arm/boot/dts/overlays/Makefile ++++ b/arch/arm/boot/dts/overlays/Makefile +@@ -61,6 +61,7 @@ dtbo-$(RPI_DT_OVERLAYS) += pi3-disable-bt.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pi3-miniuart-bt.dtbo + dtbo-$(RPI_DT_OVERLAYS) += piscreen.dtbo + dtbo-$(RPI_DT_OVERLAYS) += piscreen2r.dtbo ++dtbo-$(RPI_DT_OVERLAYS) += pisound.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pitft22.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pitft28-capacitive.dtbo + dtbo-$(RPI_DT_OVERLAYS) += pitft28-resistive.dtbo +diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README +index 2252ab9f5bab5dd40be9ebefa8e37c5bfb07d00f..4f9f0ac43f4fe2cb9376fff5a214ffdaf8179591 100644 +--- a/arch/arm/boot/dts/overlays/README ++++ b/arch/arm/boot/dts/overlays/README +@@ -802,6 +802,12 @@ Params: speed Display SPI bus speed + xohms Touchpanel sensitivity (X-plate resistance) + + ++Name: pisound ++Info: Configures the Blokas Labs pisound card ++Load: dtoverlay=pisound ++Params: ++ ++ + Name: pitft22 + Info: Adafruit PiTFT 2.2" screen + Load: dtoverlay=pitft22,= +diff --git a/arch/arm/boot/dts/overlays/pisound-overlay.dts b/arch/arm/boot/dts/overlays/pisound-overlay.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..7cdfc29ba4fbffd3216376677922e7ae26019055 +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/pisound-overlay.dts +@@ -0,0 +1,114 @@ ++/* ++ * pisound Linux kernel module. ++ * Copyright (C) 2016 Vilniaus Blokas UAB, http://blokas.io/pisound ++ * ++ * 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; version 2 of the ++ * License. ++ * ++ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++ */ ++ ++/dts-v1/; ++/plugin/; ++ ++#include ++ ++/ { ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target = <&sound>; ++ __overlay__ { ++ compatible = "blokaslabs,pisound"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ ++ pinctrl-0 = <&pisound_button_pins>; ++ ++ osr-gpios = ++ <&gpio 13 GPIO_ACTIVE_HIGH>, ++ <&gpio 26 GPIO_ACTIVE_HIGH>, ++ <&gpio 16 GPIO_ACTIVE_HIGH>; ++ ++ reset-gpios = ++ <&gpio 12 GPIO_ACTIVE_HIGH>, ++ <&gpio 24 GPIO_ACTIVE_HIGH>; ++ ++ data_available-gpios = <&gpio 25 GPIO_ACTIVE_HIGH>; ++ ++ button-gpios = <&gpio 17 GPIO_ACTIVE_LOW>; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&gpio>; ++ __overlay__ { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pisound_button_pins>; ++ ++ pisound_button_pins: pisound_button_pins { ++ brcm,pins = <17>; ++ brcm,function = <0>; // Input ++ brcm,pull = <2>; // Pull-Up ++ }; ++ }; ++ }; ++ ++ fragment@2 { ++ target = <&i2s>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ fragment@3 { ++ target-path = "/"; ++ __overlay__ { ++ pcm5102a-codec { ++ #sound-dai-cells = <0>; ++ compatible = "ti,pcm5102a"; ++ status = "okay"; ++ }; ++ }; ++ }; ++ ++ fragment@4 { ++ target = <&spi0>; ++ __overlay__ { ++ status = "okay"; ++ ++ spidev@0{ ++ status = "disabled"; ++ }; ++ ++ spidev@1{ ++ status = "okay"; ++ }; ++ }; ++ }; ++ ++ fragment@5 { ++ target = <&spi0>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ pisound_spi: pisound_spi@0{ ++ compatible = "blokaslabs,pisound-spi"; ++ reg = <0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&spi0_pins>; ++ spi-max-frequency = <1000000>; ++ }; ++ }; ++ }; ++}; +diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig +index aa57989600923198d4bfb913c4d2e8a565a93e07..40841d8421e44f8863cb23c53802388b502e61a3 100644 +--- a/arch/arm/configs/bcm2709_defconfig ++++ b/arch/arm/configs/bcm2709_defconfig +@@ -875,6 +875,7 @@ 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_PISOUND=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 26fa6c2b6b6d745178e666465ba226afee701ab1..46b91678fef473334b9417409fd1c529c0415977 100644 +--- a/arch/arm/configs/bcmrpi_defconfig ++++ b/arch/arm/configs/bcmrpi_defconfig +@@ -866,6 +866,7 @@ 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_PISOUND=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 4ccaba67a887432afe7f527569c4e2865925734b..aed7b47d8736ea3fb1810b0c77916855082f3b2d 100644 +--- a/sound/soc/bcm/Kconfig ++++ b/sound/soc/bcm/Kconfig +@@ -130,3 +130,9 @@ config SND_BCM2708_SOC_ALLO_PIANO_DAC + select SND_SOC_PCM512x_I2C + help + Say Y or M if you want to add support for Allo Piano DAC. ++ ++config SND_PISOUND ++ tristate "Support for Blokas Labs pisound" ++ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S ++ help ++ Say Y or M if you want to add support for Blokas Labs pisound. +diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile +index b9f98f0bcf3ee0d6b490e1bb185ba0de8f0f9701..5fb380a2f8a87ed5e67786f5afb31682128b70ed 100644 +--- a/sound/soc/bcm/Makefile ++++ b/sound/soc/bcm/Makefile +@@ -25,6 +25,7 @@ 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 ++snd-soc-pisound-objs := pisound.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 +@@ -42,3 +43,4 @@ obj-$(CONFIG_SND_AUDIOINJECTOR_PI_SOUNDCARD) += snd-soc-audioinjector-pi-soundca + 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 ++obj-$(CONFIG_SND_PISOUND) += snd-soc-pisound.o +diff --git a/sound/soc/bcm/pisound.c b/sound/soc/bcm/pisound.c +new file mode 100644 +index 0000000000000000000000000000000000000000..b156e5793e4c482385dedafd85bbf190acc8162b +--- /dev/null ++++ b/sound/soc/bcm/pisound.c +@@ -0,0 +1,987 @@ ++/* ++ * pisound Linux kernel module. ++ * Copyright (C) 2016 Vilniaus Blokas UAB, http://blokas.io/pisound ++ * ++ * 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; version 2 of the ++ * License. ++ * ++ * 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., 51 Franklin Street, Fifth Floor, Boston, ++ * MA 02110-1301, USA. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static int pisnd_spi_init(struct device *dev); ++static void pisnd_spi_uninit(void); ++ ++static void pisnd_spi_send(uint8_t val); ++static uint8_t pisnd_spi_recv(uint8_t *buffer, uint8_t length); ++ ++typedef void (*pisnd_spi_recv_cb)(void *data); ++static void pisnd_spi_set_callback(pisnd_spi_recv_cb cb, void *data); ++ ++static const char *pisnd_spi_get_serial(void); ++static const char *pisnd_spi_get_id(void); ++static const char *pisnd_spi_get_version(void); ++ ++static int pisnd_midi_init(struct snd_card *card); ++static void pisnd_midi_uninit(void); ++ ++#define PISOUND_LOG_PREFIX "pisound: " ++ ++#ifdef DEBUG ++# define printd(...) pr_alert(PISOUND_LOG_PREFIX __VA_ARGS__) ++#else ++# define printd(...) do {} while (0) ++#endif ++ ++#define printe(...) pr_err(PISOUND_LOG_PREFIX __VA_ARGS__) ++#define printi(...) pr_info(PISOUND_LOG_PREFIX __VA_ARGS__) ++ ++static int pisnd_output_open(struct snd_rawmidi_substream *substream) ++{ ++ return 0; ++} ++ ++static int pisnd_output_close(struct snd_rawmidi_substream *substream) ++{ ++ return 0; ++} ++ ++static void pisnd_output_trigger( ++ struct snd_rawmidi_substream *substream, ++ int up ++ ) ++{ ++ uint8_t data; ++ ++ if (!up) ++ return; ++ ++ while (snd_rawmidi_transmit_peek(substream, &data, 1)) { ++ pisnd_spi_send(data); ++ snd_rawmidi_transmit_ack(substream, 1); ++ } ++} ++ ++static void pisnd_output_drain(struct snd_rawmidi_substream *substream) ++{ ++ uint8_t data; ++ ++ while (snd_rawmidi_transmit_peek(substream, &data, 1)) { ++ pisnd_spi_send(data); ++ ++ snd_rawmidi_transmit_ack(substream, 1); ++ } ++} ++ ++static int pisnd_input_open(struct snd_rawmidi_substream *substream) ++{ ++ return 0; ++} ++ ++static int pisnd_input_close(struct snd_rawmidi_substream *substream) ++{ ++ return 0; ++} ++ ++static void pisnd_midi_recv_callback(void *substream) ++{ ++ uint8_t data[128]; ++ uint8_t n = 0; ++ ++ while ((n = pisnd_spi_recv(data, sizeof(data)))) { ++ int res = snd_rawmidi_receive(substream, data, n); ++ (void)res; ++ printd("midi recv 0x%02x, res = %d\n", data, res); ++ } ++} ++ ++static void pisnd_input_trigger(struct snd_rawmidi_substream *substream, int up) ++{ ++ if (up) { ++ pisnd_spi_set_callback(pisnd_midi_recv_callback, substream); ++ pisnd_midi_recv_callback(substream); ++ } else { ++ pisnd_spi_set_callback(NULL, NULL); ++ } ++} ++ ++static struct snd_rawmidi *g_rmidi; ++ ++static struct snd_rawmidi_ops pisnd_output_ops = { ++ .open = pisnd_output_open, ++ .close = pisnd_output_close, ++ .trigger = pisnd_output_trigger, ++ .drain = pisnd_output_drain, ++}; ++ ++static struct snd_rawmidi_ops pisnd_input_ops = { ++ .open = pisnd_input_open, ++ .close = pisnd_input_close, ++ .trigger = pisnd_input_trigger, ++}; ++ ++static void pisnd_get_port_info( ++ struct snd_rawmidi *rmidi, ++ int number, ++ struct snd_seq_port_info *seq_port_info ++ ) ++{ ++ seq_port_info->type = ++ SNDRV_SEQ_PORT_TYPE_MIDI_GENERIC | ++ SNDRV_SEQ_PORT_TYPE_HARDWARE | ++ SNDRV_SEQ_PORT_TYPE_PORT; ++ seq_port_info->midi_voices = 0; ++} ++ ++static struct snd_rawmidi_global_ops pisnd_global_ops = { ++ .get_port_info = pisnd_get_port_info, ++}; ++ ++static int pisnd_midi_init(struct snd_card *card) ++{ ++ int err = snd_rawmidi_new(card, "pisound MIDI", 0, 1, 1, &g_rmidi); ++ ++ if (err < 0) { ++ printe("snd_rawmidi_new failed: %d\n", err); ++ return err; ++ } ++ ++ strcpy(g_rmidi->name, "pisound MIDI "); ++ strcat(g_rmidi->name, pisnd_spi_get_serial()); ++ ++ g_rmidi->info_flags = ++ SNDRV_RAWMIDI_INFO_OUTPUT | ++ SNDRV_RAWMIDI_INFO_INPUT | ++ SNDRV_RAWMIDI_INFO_DUPLEX; ++ ++ g_rmidi->ops = &pisnd_global_ops; ++ ++ g_rmidi->private_data = (void *)0; ++ ++ snd_rawmidi_set_ops( ++ g_rmidi, ++ SNDRV_RAWMIDI_STREAM_OUTPUT, ++ &pisnd_output_ops ++ ); ++ ++ snd_rawmidi_set_ops( ++ g_rmidi, ++ SNDRV_RAWMIDI_STREAM_INPUT, ++ &pisnd_input_ops ++ ); ++ ++ return 0; ++} ++ ++static void pisnd_midi_uninit(void) ++{ ++} ++ ++static void *g_recvData; ++static pisnd_spi_recv_cb g_recvCallback; ++ ++#define FIFO_SIZE 512 ++ ++static char g_serial_num[11]; ++static char g_id[25]; ++static char g_version[5]; ++ ++DEFINE_KFIFO(spi_fifo_in, uint8_t, FIFO_SIZE); ++DEFINE_KFIFO(spi_fifo_out, uint8_t, FIFO_SIZE); ++ ++static struct gpio_desc *data_available; ++static struct gpio_desc *spi_reset; ++ ++static struct spi_device *pisnd_spi_device; ++ ++static struct workqueue_struct *pisnd_workqueue; ++static struct work_struct pisnd_work_process; ++ ++static void pisnd_work_handler(struct work_struct *work); ++ ++static uint16_t spi_transfer16(uint16_t val); ++ ++static int pisnd_init_workqueues(void) ++{ ++ pisnd_workqueue = create_singlethread_workqueue("pisnd_workqueue"); ++ INIT_WORK(&pisnd_work_process, pisnd_work_handler); ++ ++ return 0; ++} ++ ++static void pisnd_uninit_workqueues(void) ++{ ++ flush_workqueue(pisnd_workqueue); ++ destroy_workqueue(pisnd_workqueue); ++ ++ pisnd_workqueue = NULL; ++} ++ ++static bool pisnd_spi_has_more(void) ++{ ++ return gpiod_get_value(data_available); ++} ++ ++enum task_e { ++ TASK_PROCESS = 0, ++}; ++ ++static void pisnd_schedule_process(enum task_e task) ++{ ++ if (pisnd_spi_device != NULL && ++ pisnd_workqueue != NULL && ++ !work_pending(&pisnd_work_process) ++ ) { ++ printd("schedule: has more = %d\n", pisnd_spi_has_more()); ++ if (task == TASK_PROCESS) ++ queue_work(pisnd_workqueue, &pisnd_work_process); ++ } ++} ++ ++static irqreturn_t data_available_interrupt_handler(int irq, void *dev_id) ++{ ++ if (irq == gpiod_to_irq(data_available) && pisnd_spi_has_more()) { ++ printd("schedule from irq\n"); ++ pisnd_schedule_process(TASK_PROCESS); ++ } ++ ++ return IRQ_HANDLED; ++} ++ ++static DEFINE_SPINLOCK(spilock); ++static unsigned long spilockflags; ++ ++static uint16_t spi_transfer16(uint16_t val) ++{ ++ int err; ++ struct spi_transfer transfer; ++ struct spi_message msg; ++ uint8_t txbuf[2]; ++ uint8_t rxbuf[2]; ++ ++ if (!pisnd_spi_device) { ++ printe("pisnd_spi_device null, returning\n"); ++ return 0; ++ } ++ ++ spi_message_init(&msg); ++ ++ memset(&transfer, 0, sizeof(transfer)); ++ memset(&rxbuf, 0, sizeof(rxbuf)); ++ ++ txbuf[0] = val >> 8; ++ txbuf[1] = val & 0xff; ++ ++ transfer.tx_buf = &txbuf; ++ transfer.rx_buf = &rxbuf; ++ transfer.len = sizeof(txbuf); ++ transfer.speed_hz = 125000; ++ transfer.delay_usecs = 100; ++ spi_message_add_tail(&transfer, &msg); ++ ++ spin_lock_irqsave(&spilock, spilockflags); ++ err = spi_sync(pisnd_spi_device, &msg); ++ spin_unlock_irqrestore(&spilock, spilockflags); ++ ++ if (err < 0) { ++ printe("spi_sync error %d\n", err); ++ return 0; ++ } ++ ++ printd("received: %02x%02x\n", rxbuf[0], rxbuf[1]); ++ printd("hasMore %d\n", pisnd_spi_has_more()); ++ ++ return (rxbuf[0] << 8) | rxbuf[1]; ++} ++ ++static int spi_read_bytes(char *dst, size_t length, uint8_t *bytesRead) ++{ ++ uint16_t rx; ++ uint8_t size; ++ uint8_t i; ++ ++ memset(dst, 0, length); ++ *bytesRead = 0; ++ ++ rx = spi_transfer16(0); ++ if (!(rx >> 8)) ++ return -EINVAL; ++ ++ size = rx & 0xff; ++ ++ if (size > length) ++ return -EINVAL; ++ ++ for (i = 0; i < size; ++i) { ++ rx = spi_transfer16(0); ++ if (!(rx >> 8)) ++ return -EINVAL; ++ ++ dst[i] = rx & 0xff; ++ } ++ ++ *bytesRead = i; ++ ++ return 0; ++} ++ ++static int spi_device_match(struct device *dev, void *data) ++{ ++ struct spi_device *spi = container_of(dev, struct spi_device, dev); ++ ++ printd(" %s %s %dkHz %d bits mode=0x%02X\n", ++ spi->modalias, dev_name(dev), spi->max_speed_hz/1000, ++ spi->bits_per_word, spi->mode); ++ ++ if (strcmp("pisound-spi", spi->modalias) == 0) { ++ printi("\tFound!\n"); ++ return 1; ++ } ++ ++ printe("\tNot found!\n"); ++ return 0; ++} ++ ++static struct spi_device *pisnd_spi_find_device(void) ++{ ++ struct device *dev; ++ ++ printi("Searching for spi device...\n"); ++ dev = bus_find_device(&spi_bus_type, NULL, NULL, spi_device_match); ++ if (dev != NULL) ++ return container_of(dev, struct spi_device, dev); ++ else ++ return NULL; ++} ++ ++static void pisnd_work_handler(struct work_struct *work) ++{ ++ uint16_t rx; ++ uint16_t tx; ++ uint8_t val; ++ ++ if (work == &pisnd_work_process) { ++ if (pisnd_spi_device == NULL) ++ return; ++ ++ do { ++ val = 0; ++ tx = 0; ++ ++ if (kfifo_get(&spi_fifo_out, &val)) ++ tx = 0x0f00 | val; ++ ++ rx = spi_transfer16(tx); ++ ++ if (rx & 0xff00) { ++ kfifo_put(&spi_fifo_in, rx & 0xff); ++ if (kfifo_len(&spi_fifo_in) > 16 ++ && g_recvCallback) ++ g_recvCallback(g_recvData); ++ } ++ } while (rx != 0 ++ || !kfifo_is_empty(&spi_fifo_out) ++ || pisnd_spi_has_more() ++ ); ++ ++ if (!kfifo_is_empty(&spi_fifo_in) && g_recvCallback) ++ g_recvCallback(g_recvData); ++ } ++} ++ ++static int pisnd_spi_gpio_init(struct device *dev) ++{ ++ spi_reset = gpiod_get_index(dev, "reset", 1, GPIOD_ASIS); ++ data_available = gpiod_get_index(dev, "data_available", 0, GPIOD_ASIS); ++ ++ gpiod_direction_output(spi_reset, 1); ++ gpiod_direction_input(data_available); ++ ++ /* Reset the slave. */ ++ gpiod_set_value(spi_reset, false); ++ mdelay(1); ++ gpiod_set_value(spi_reset, true); ++ ++ /* Give time for spi slave to start. */ ++ mdelay(64); ++ ++ return 0; ++} ++ ++static void pisnd_spi_gpio_uninit(void) ++{ ++ gpiod_set_value(spi_reset, false); ++ gpiod_put(spi_reset); ++ spi_reset = NULL; ++ ++ gpiod_put(data_available); ++ data_available = NULL; ++} ++ ++static int pisnd_spi_gpio_irq_init(struct device *dev) ++{ ++ return request_irq( ++ gpiod_to_irq(data_available), ++ data_available_interrupt_handler, ++ IRQF_TIMER | IRQF_TRIGGER_RISING, ++ "data_available_int", ++ NULL ++ ); ++} ++ ++static void pisnd_spi_gpio_irq_uninit(void) ++{ ++ free_irq(gpiod_to_irq(data_available), NULL); ++} ++ ++static int spi_read_info(void) ++{ ++ uint16_t tmp; ++ uint8_t count; ++ uint8_t n; ++ uint8_t i; ++ uint8_t j; ++ char buffer[257]; ++ int ret; ++ char *p; ++ ++ memset(g_serial_num, 0, sizeof(g_serial_num)); ++ memset(g_version, 0, sizeof(g_version)); ++ memset(g_id, 0, sizeof(g_id)); ++ ++ tmp = spi_transfer16(0); ++ ++ if (!(tmp >> 8)) ++ return -EINVAL; ++ ++ count = tmp & 0xff; ++ ++ for (i = 0; i < count; ++i) { ++ memset(buffer, 0, sizeof(buffer)); ++ ret = spi_read_bytes(buffer, sizeof(buffer)-1, &n); ++ ++ if (ret < 0) ++ return ret; ++ ++ switch (i) { ++ case 0: ++ if (n != 2) ++ return -EINVAL; ++ ++ snprintf( ++ g_version, ++ sizeof(g_version), ++ "%x.%02x", ++ buffer[0], ++ buffer[1] ++ ); ++ break; ++ case 1: ++ if (n >= sizeof(g_serial_num)) ++ return -EINVAL; ++ ++ memcpy(g_serial_num, buffer, sizeof(g_serial_num)); ++ break; ++ case 2: ++ { ++ if (n >= sizeof(g_id)) ++ return -EINVAL; ++ ++ p = g_id; ++ for (j = 0; j < n; ++j) ++ p += sprintf(p, "%02x", buffer[j]); ++ } ++ break; ++ default: ++ break; ++ } ++ } ++ ++ return 0; ++} ++ ++static int pisnd_spi_init(struct device *dev) ++{ ++ int ret; ++ struct spi_device *spi; ++ ++ memset(g_serial_num, 0, sizeof(g_serial_num)); ++ memset(g_id, 0, sizeof(g_id)); ++ memset(g_version, 0, sizeof(g_version)); ++ ++ spi = pisnd_spi_find_device(); ++ ++ if (spi != NULL) { ++ printd("initializing spi!\n"); ++ pisnd_spi_device = spi; ++ ret = spi_setup(pisnd_spi_device); ++ } else { ++ printe("SPI device not found, deferring!\n"); ++ return -EPROBE_DEFER; ++ } ++ ++ ret = pisnd_spi_gpio_init(dev); ++ ++ if (ret < 0) { ++ printe("SPI GPIO init failed: %d\n", ret); ++ spi_dev_put(pisnd_spi_device); ++ pisnd_spi_device = NULL; ++ pisnd_spi_gpio_uninit(); ++ return ret; ++ } ++ ++ ret = spi_read_info(); ++ ++ if (ret < 0) { ++ printe("Reading card info failed: %d\n", ret); ++ spi_dev_put(pisnd_spi_device); ++ pisnd_spi_device = NULL; ++ pisnd_spi_gpio_uninit(); ++ return ret; ++ } ++ ++ /* Flash the LEDs. */ ++ spi_transfer16(0xf000); ++ ++ ret = pisnd_spi_gpio_irq_init(dev); ++ if (ret < 0) { ++ printe("SPI irq request failed: %d\n", ret); ++ spi_dev_put(pisnd_spi_device); ++ pisnd_spi_device = NULL; ++ pisnd_spi_gpio_irq_uninit(); ++ pisnd_spi_gpio_uninit(); ++ } ++ ++ ret = pisnd_init_workqueues(); ++ if (ret != 0) { ++ printe("Workqueue initialization failed: %d\n", ret); ++ spi_dev_put(pisnd_spi_device); ++ pisnd_spi_device = NULL; ++ pisnd_spi_gpio_irq_uninit(); ++ pisnd_spi_gpio_uninit(); ++ pisnd_uninit_workqueues(); ++ return ret; ++ } ++ ++ if (pisnd_spi_has_more()) { ++ printd("data is available, scheduling from init\n"); ++ pisnd_schedule_process(TASK_PROCESS); ++ } ++ ++ return 0; ++} ++ ++static void pisnd_spi_uninit(void) ++{ ++ pisnd_uninit_workqueues(); ++ ++ spi_dev_put(pisnd_spi_device); ++ pisnd_spi_device = NULL; ++ ++ pisnd_spi_gpio_irq_uninit(); ++ pisnd_spi_gpio_uninit(); ++} ++ ++static void pisnd_spi_send(uint8_t val) ++{ ++ kfifo_put(&spi_fifo_out, val); ++ printd("schedule from spi_send\n"); ++ pisnd_schedule_process(TASK_PROCESS); ++} ++ ++static uint8_t pisnd_spi_recv(uint8_t *buffer, uint8_t length) ++{ ++ return kfifo_out(&spi_fifo_in, buffer, length); ++} ++ ++static void pisnd_spi_set_callback(pisnd_spi_recv_cb cb, void *data) ++{ ++ g_recvData = data; ++ g_recvCallback = cb; ++} ++ ++static const char *pisnd_spi_get_serial(void) ++{ ++ if (strlen(g_serial_num)) ++ return g_serial_num; ++ ++ return ""; ++} ++ ++static const char *pisnd_spi_get_id(void) ++{ ++ if (strlen(g_id)) ++ return g_id; ++ ++ return ""; ++} ++ ++static const char *pisnd_spi_get_version(void) ++{ ++ if (strlen(g_version)) ++ return g_version; ++ ++ return ""; ++} ++ ++static const struct of_device_id pisound_of_match[] = { ++ { .compatible = "blokaslabs,pisound", }, ++ { .compatible = "blokaslabs,pisound-spi", }, ++ {}, ++}; ++ ++static struct gpio_desc *osr0, *osr1, *osr2; ++static struct gpio_desc *reset; ++static struct gpio_desc *button; ++ ++static int pisnd_hw_params( ++ struct snd_pcm_substream *substream, ++ struct snd_pcm_hw_params *params ++ ) ++{ ++ printd("rate = %d\n", params_rate(params)); ++ printd("ch = %d\n", params_channels(params)); ++ printd("bits = %u\n", ++ snd_pcm_format_physical_width(params_format(params))); ++ printd("format = %d\n", params_format(params)); ++ ++ gpiod_set_value(reset, false); ++ ++ switch (params_rate(params)) { ++ case 48000: ++ gpiod_set_value(osr0, true); ++ gpiod_set_value(osr1, false); ++ gpiod_set_value(osr2, false); ++ break; ++ case 96000: ++ gpiod_set_value(osr0, true); ++ gpiod_set_value(osr1, true); ++ gpiod_set_value(osr2, false); ++ break; ++ case 192000: ++ gpiod_set_value(osr0, true); ++ gpiod_set_value(osr1, true); ++ gpiod_set_value(osr2, true); ++ break; ++ default: ++ printe("Unsupported rate %u!\n", params_rate(params)); ++ return -EINVAL; ++ } ++ ++ gpiod_set_value(reset, true); ++ ++ return 0; ++} ++ ++static unsigned int rates[3] = { ++ 48000, 96000, 192000 ++}; ++ ++static struct snd_pcm_hw_constraint_list constraints_rates = { ++ .count = ARRAY_SIZE(rates), ++ .list = rates, ++ .mask = 0, ++}; ++ ++static unsigned int sample_bits[] = { ++ 24, 32 ++}; ++ ++static struct snd_pcm_hw_constraint_list constraints_sample_bits = { ++ .count = ARRAY_SIZE(sample_bits), ++ .list = sample_bits, ++ .mask = 0, ++}; ++ ++static int pisnd_startup(struct snd_pcm_substream *substream) ++{ ++ int err = snd_pcm_hw_constraint_list( ++ substream->runtime, ++ 0, ++ SNDRV_PCM_HW_PARAM_RATE, ++ &constraints_rates ++ ); ++ ++ if (err < 0) ++ return err; ++ ++ err = snd_pcm_hw_constraint_list( ++ substream->runtime, ++ 0, ++ SNDRV_PCM_HW_PARAM_SAMPLE_BITS, ++ &constraints_sample_bits ++ ); ++ ++ if (err < 0) ++ return err; ++ ++ return 0; ++} ++ ++static struct snd_soc_ops pisnd_ops = { ++ .startup = pisnd_startup, ++ .hw_params = pisnd_hw_params, ++}; ++ ++static struct snd_soc_dai_link pisnd_dai[] = { ++ { ++ .name = "pisound", ++ .stream_name = "pisound", ++ .cpu_dai_name = "bcm2708-i2s.0", ++ .codec_dai_name = "snd-soc-dummy-dai", ++ .platform_name = "bcm2708-i2s.0", ++ .codec_name = "snd-soc-dummy", ++ .dai_fmt = ++ SND_SOC_DAIFMT_I2S | ++ SND_SOC_DAIFMT_NB_NF | ++ SND_SOC_DAIFMT_CBM_CFM, ++ .ops = &pisnd_ops, ++ }, ++}; ++ ++static int pisnd_card_probe(struct snd_soc_card *card) ++{ ++ int err = pisnd_midi_init(card->snd_card); ++ ++ if (err < 0) ++ printe("pisnd_midi_init failed: %d\n", err); ++ ++ return err; ++} ++ ++static int pisnd_card_remove(struct snd_soc_card *card) ++{ ++ pisnd_midi_uninit(); ++ return 0; ++} ++ ++static struct snd_soc_card pisnd_card = { ++ .name = "pisound", ++ .owner = THIS_MODULE, ++ .dai_link = pisnd_dai, ++ .num_links = ARRAY_SIZE(pisnd_dai), ++ .probe = pisnd_card_probe, ++ .remove = pisnd_card_remove, ++}; ++ ++static int pisnd_init_gpio(struct device *dev) ++{ ++ osr0 = gpiod_get_index(dev, "osr", 0, GPIOD_ASIS); ++ osr1 = gpiod_get_index(dev, "osr", 1, GPIOD_ASIS); ++ osr2 = gpiod_get_index(dev, "osr", 2, GPIOD_ASIS); ++ ++ reset = gpiod_get_index(dev, "reset", 0, GPIOD_ASIS); ++ ++ button = gpiod_get_index(dev, "button", 0, GPIOD_ASIS); ++ ++ gpiod_direction_output(osr0, 1); ++ gpiod_direction_output(osr1, 1); ++ gpiod_direction_output(osr2, 1); ++ gpiod_direction_output(reset, 1); ++ ++ gpiod_set_value(reset, false); ++ gpiod_set_value(osr0, true); ++ gpiod_set_value(osr1, false); ++ gpiod_set_value(osr2, false); ++ gpiod_set_value(reset, true); ++ ++ gpiod_export(button, false); ++ ++ return 0; ++} ++ ++static int pisnd_uninit_gpio(void) ++{ ++ int i; ++ ++ struct gpio_desc **gpios[] = { ++ &osr0, &osr1, &osr2, &reset, &button, ++ }; ++ ++ gpiod_unexport(button); ++ ++ for (i = 0; i < ARRAY_SIZE(gpios); ++i) { ++ if (*gpios[i] == NULL) { ++ printd("weird, GPIO[%d] is NULL already\n", i); ++ continue; ++ } ++ ++ gpiod_put(*gpios[i]); ++ *gpios[i] = NULL; ++ } ++ ++ return 0; ++} ++ ++static struct kobject *pisnd_kobj; ++ ++static ssize_t pisnd_serial_show( ++ struct kobject *kobj, ++ struct kobj_attribute *attr, ++ char *buf ++ ) ++{ ++ return sprintf(buf, "%s\n", pisnd_spi_get_serial()); ++} ++ ++static ssize_t pisnd_id_show( ++ struct kobject *kobj, ++ struct kobj_attribute *attr, ++ char *buf ++ ) ++{ ++ return sprintf(buf, "%s\n", pisnd_spi_get_id()); ++} ++ ++static ssize_t pisnd_version_show( ++ struct kobject *kobj, ++ struct kobj_attribute *attr, ++ char *buf ++ ) ++{ ++ return sprintf(buf, "%s\n", pisnd_spi_get_version()); ++} ++ ++static struct kobj_attribute pisnd_serial_attribute = ++ __ATTR(serial, 0644, pisnd_serial_show, NULL); ++static struct kobj_attribute pisnd_id_attribute = ++ __ATTR(id, 0644, pisnd_id_show, NULL); ++static struct kobj_attribute pisnd_version_attribute = ++ __ATTR(version, 0644, pisnd_version_show, NULL); ++ ++static struct attribute *attrs[] = { ++ &pisnd_serial_attribute.attr, ++ &pisnd_id_attribute.attr, ++ &pisnd_version_attribute.attr, ++ NULL ++}; ++ ++static struct attribute_group attr_group = { .attrs = attrs }; ++ ++static int pisnd_probe(struct platform_device *pdev) ++{ ++ int ret = 0; ++ int i; ++ ++ ret = pisnd_spi_init(&pdev->dev); ++ if (ret < 0) { ++ printe("pisnd_spi_init failed: %d\n", ret); ++ return ret; ++ } ++ ++ printi("Detected pisound card:\n"); ++ printi("\tSerial: %s\n", pisnd_spi_get_serial()); ++ printi("\tVersion: %s\n", pisnd_spi_get_version()); ++ printi("\tId: %s\n", pisnd_spi_get_id()); ++ ++ pisnd_kobj = kobject_create_and_add("pisound", kernel_kobj); ++ if (!pisnd_kobj) { ++ pisnd_spi_uninit(); ++ return -ENOMEM; ++ } ++ ++ ret = sysfs_create_group(pisnd_kobj, &attr_group); ++ if (ret < 0) { ++ pisnd_spi_uninit(); ++ kobject_put(pisnd_kobj); ++ return -ENOMEM; ++ } ++ ++ pisnd_init_gpio(&pdev->dev); ++ pisnd_card.dev = &pdev->dev; ++ ++ if (pdev->dev.of_node) { ++ struct device_node *i2s_node; ++ ++ i2s_node = of_parse_phandle( ++ pdev->dev.of_node, ++ "i2s-controller", ++ 0 ++ ); ++ ++ for (i = 0; i < pisnd_card.num_links; ++i) { ++ struct snd_soc_dai_link *dai = &pisnd_dai[i]; ++ ++ if (i2s_node) { ++ dai->cpu_dai_name = NULL; ++ dai->cpu_of_node = i2s_node; ++ dai->platform_name = NULL; ++ dai->platform_of_node = i2s_node; ++ dai->stream_name = pisnd_spi_get_serial(); ++ } ++ } ++ } ++ ++ ret = snd_soc_register_card(&pisnd_card); ++ ++ if (ret < 0) { ++ printe("snd_soc_register_card() failed: %d\n", ret); ++ pisnd_uninit_gpio(); ++ kobject_put(pisnd_kobj); ++ pisnd_spi_uninit(); ++ } ++ ++ return ret; ++} ++ ++static int pisnd_remove(struct platform_device *pdev) ++{ ++ if (pisnd_kobj) { ++ kobject_put(pisnd_kobj); ++ pisnd_kobj = NULL; ++ } ++ ++ pisnd_spi_uninit(); ++ ++ /* Turn off */ ++ gpiod_set_value(reset, false); ++ pisnd_uninit_gpio(); ++ ++ return snd_soc_unregister_card(&pisnd_card); ++} ++ ++MODULE_DEVICE_TABLE(of, pisound_of_match); ++ ++static struct platform_driver pisnd_driver = { ++ .driver = { ++ .name = "snd-rpi-pisound", ++ .owner = THIS_MODULE, ++ .of_match_table = pisound_of_match, ++ }, ++ .probe = pisnd_probe, ++ .remove = pisnd_remove, ++}; ++ ++module_platform_driver(pisnd_driver); ++ ++MODULE_AUTHOR("Giedrius Trainavicius "); ++MODULE_DESCRIPTION("ASoC Driver for pisound, http://blokas.io/pisound"); ++MODULE_LICENSE("GPL v2");