core/linux-aarch64-rc to 4.13.rc4-2

This commit is contained in:
Kevin Mihelich 2017-08-11 00:42:00 +00:00
parent fd6004366f
commit 411dedba80
7 changed files with 227 additions and 12 deletions

View file

@ -1,7 +1,7 @@
From 763e9641f8e3c3e48ff37b33f4bc5a6e452dfbd6 Mon Sep 17 00:00:00 2001
From 1b63f6ad09d1ec870572aeeb8ca25a6f3be5bd28 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 18 Feb 2014 01:43:50 -0300
Subject: [PATCH 1/2] net/smsc95xx: Allow mac address to be set as a parameter
Subject: [PATCH 1/5] net/smsc95xx: Allow mac address to be set as a parameter
---
drivers/net/usb/smsc95xx.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++

View file

@ -1,7 +1,7 @@
From a22772e6359cfa5abeaf73a93ea09cae4ec67efa Mon Sep 17 00:00:00 2001
From 035007e2a13b6ea74f6c43556ae72aeeb0d0df7a Mon Sep 17 00:00:00 2001
From: Shawn Lin <shawn.lin@rock-chips.com>
Date: Fri, 21 Jul 2017 16:30:59 +0800
Subject: [PATCH 2/2] arm64: dts: rockchip: enable sdmmc controller on
Subject: [PATCH 2/5] arm64: dts: rockchip: enable sdmmc controller on
rk3399-firefly
This allows basic support for SD highspeed cards but no UHS-I mode

View file

@ -0,0 +1,26 @@
From 44bb885638224454b907d448d1202640408b235c Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Mon, 7 Aug 2017 19:34:57 -0600
Subject: [PATCH 3/5] arm64: dts: rockchip: disable pwm0 on rk3399-firefly
Workaround for intermittent boot hangs due to pwm0 probe disabling the PWM clock.
---
arch/arm64/boot/dts/rockchip/rk3399-firefly.dts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-firefly.dts b/arch/arm64/boot/dts/rockchip/rk3399-firefly.dts
index e01ef8a77f5e..1fd4e87c61d5 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-firefly.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3399-firefly.dts
@@ -618,7 +618,7 @@
};
&pwm0 {
- status = "okay";
+ status = "disabled";
};
&pwm2 {
--
2.13.3

View file

@ -0,0 +1,76 @@
From 883eeb697555d1d9b7e4c43657a335fe34156f13 Mon Sep 17 00:00:00 2001
From: Stephen Boyd <sboyd@codeaurora.org>
Date: Thu, 13 Jul 2017 19:20:42 -0700
Subject: [PATCH 4/5] arm64: dts: qcom: Force host mode for USB on apq8016-sbc
Commit ed75d6a96905 ("arm64: dts: qcom: Collapse usb support into
one node") breaks host mode support on apq8016-sbc boards. This
is because the mux driver (tc7usb40mu) hasn't been merged.
Without that driver, we can't toggle the GPIO going to the mux to
route out the D+/D- lines to the USB hub that's on the board.
One solution would be to totally revert this change, but that
opens us up to other problems when two USB drivers are operating
the same hardware block at the same time. Let's modify the DT so
that the USB controller is always in host mode and connected to
the hub so that things like USB keyboards and mouses work. This
is the mode that most people prefer anyway with these devices. We
also delete the usb-switch node because the binding was never
accepted upstream.
In the future, we can add muxing support and then update the DT
to support both modes at runtime. Patches to support this are
already on the mailing list.
Fixes: ed75d6a96905 ("arm64: dts: qcom: Collapse usb support into one node")
Reported-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org>
---
arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi b/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi
index bd310ac1967a..efd53ed82a58 100644
--- a/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi
+++ b/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi
@@ -213,11 +213,14 @@
};
usb@78d9000 {
- extcon = <&usb_id>, <&usb_id>;
+ extcon = <&usb_id>;
status = "okay";
adp-disable;
hnp-disable;
srp-disable;
+ dr_mode = "host";
+ pinctrl-names = "default";
+ pinctrl-0 = <&usb_sw_sel_pm>;
ulpi {
phy {
v1p8-supply = <&pm8916_l7>;
@@ -337,19 +340,11 @@
usb_id: usb-id {
compatible = "linux,extcon-usb-gpio";
- id-gpio = <&msmgpio 121 GPIO_ACTIVE_HIGH>;
+ vbus-gpio = <&msmgpio 121 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&usb_id_default>;
};
- usb-switch {
- compatible = "toshiba,tc7usb40mu";
- switch-gpios = <&pm8916_gpios 4 GPIO_ACTIVE_HIGH>;
- extcon = <&usb_id>;
- pinctrl-names = "default";
- pinctrl-0 = <&usb_sw_sel_pm>;
- };
-
hdmi-out {
compatible = "hdmi-connector";
type = "a";
--
2.13.3

View file

@ -0,0 +1,104 @@
From 768ee4a456e28285d5f683ea70147ef595eb54d8 Mon Sep 17 00:00:00 2001
From: Johan Hovold <johan@kernel.org>
Date: Thu, 3 Aug 2017 17:52:08 +0200
Subject: [PATCH 5/5] dma-mapping: skip USB devices when configuring DMA during
probe
USB devices use the DMA mask and offset of the controller, which have
already been setup when a device is probed. Note that modifying the
DMA mask of a USB device would change the mask for the controller (and
all devices on the bus) as the mask is literally shared.
Since commit 2bf698671205 ("USB: of: fix root-hub device-tree node
handling"), of_dma_configure() would be called also for root hubs, which
use the device node of the controller. A separate, long-standing bug
that makes of_dma_configure() generate a 30-bit DMA mask from the RPI3's
"dma-ranges" would thus set a broken mask also for the controller. This
in turn prevents USB devices from enumerating when control transfers
fail:
dwc2 3f980000.usb: Cannot do DMA to address 0x000000003a166a00
Note that the aforementioned DMA-mask bug was benign for the HCD itself
as the dwc2 driver overwrites the mask previously set by
of_dma_configure() for the platform device in its probe callback. The
mask would only later get corrupted when the root-hub child device was
probed.
Fix this, and similar future problems, by adding a flag to struct device
which prevents driver core from calling dma_configure() during probe and
making sure it is set for USB devices.
Fixes: 09515ef5ddad ("of/acpi: Configure dma operations at probe time for platform/amba/pci bus devices")
Cc: stable <stable@vger.kernel.org> # 4.12
Cc: Robin Murphy <robin.murphy@arm.com>
Cc: Sricharan R <sricharan@codeaurora.org>
Cc: Stefan Wahren <stefan.wahren@i2se.com>
Reported-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Johan Hovold <johan@kernel.org>
---
drivers/base/dma-mapping.c | 6 ++++++
drivers/usb/core/usb.c | 1 +
include/linux/device.h | 3 +++
3 files changed, 10 insertions(+)
diff --git a/drivers/base/dma-mapping.c b/drivers/base/dma-mapping.c
index b555ff9dd8fc..f9f703be0ad1 100644
--- a/drivers/base/dma-mapping.c
+++ b/drivers/base/dma-mapping.c
@@ -345,6 +345,9 @@ int dma_configure(struct device *dev)
enum dev_dma_attr attr;
int ret = 0;
+ if (dev->skip_dma_configure)
+ return 0;
+
if (dev_is_pci(dev)) {
bridge = pci_get_host_bridge_device(to_pci_dev(dev));
dma_dev = bridge;
@@ -369,6 +372,9 @@ int dma_configure(struct device *dev)
void dma_deconfigure(struct device *dev)
{
+ if (dev->skip_dma_configure)
+ return;
+
of_dma_deconfigure(dev);
acpi_dma_deconfigure(dev);
}
diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c
index 17681d5638ac..2a85d905b539 100644
--- a/drivers/usb/core/usb.c
+++ b/drivers/usb/core/usb.c
@@ -588,6 +588,7 @@ struct usb_device *usb_alloc_dev(struct usb_device *parent,
* Note: calling dma_set_mask() on a USB device would set the
* mask for the entire HCD, so don't do that.
*/
+ dev->dev.skip_dma_configure = true;
dev->dev.dma_mask = bus->sysdev->dma_mask;
dev->dev.dma_pfn_offset = bus->sysdev->dma_pfn_offset;
set_dev_node(&dev->dev, dev_to_node(bus->sysdev));
diff --git a/include/linux/device.h b/include/linux/device.h
index 723cd54b94da..022cf258068b 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -877,6 +877,8 @@ struct dev_links_info {
* @offline: Set after successful invocation of bus type's .offline().
* @of_node_reused: Set if the device-tree node is shared with an ancestor
* device.
+ * @skip_dma_configure: Set if driver core should not configure DMA for this
+ * device during probe.
*
* At the lowest level, every device in a Linux system is represented by an
* instance of struct device. The device structure contains the information
@@ -965,6 +967,7 @@ struct device {
bool offline_disabled:1;
bool offline:1;
bool of_node_reused:1;
+ bool skip_dma_configure:1;
};
static inline struct device *kobj_to_dev(struct kobject *kobj)
--
2.13.3

View file

@ -11,7 +11,7 @@ _srcname=linux-${_rcver}-rc${_rcrel}
_kernelname=${pkgbase#linux}
_desc="AArch64 multi-platform (release candidate)"
pkgver=${_rcver}.rc${_rcrel}
pkgrel=1
pkgrel=2
arch=('aarch64')
url="http://www.kernel.org/"
license=('GPL2')
@ -20,13 +20,19 @@ options=('!strip')
source=("https://git.kernel.org/torvalds/t/${_srcname}.tar.gz"
'0001-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch'
'0002-arm64-dts-rockchip-enable-sdmmc-controller-on-rk3399.patch'
'0003-arm64-dts-rockchip-disable-pwm0-on-rk3399-firefly.patch'
'0004-arm64-dts-qcom-Force-host-mode-for-USB-on-apq8016-sb.patch'
'0005-dma-mapping-skip-USB-devices-when-configuring-DMA-du.patch'
'config'
'linux.preset'
'99-linux.hook')
md5sums=('0b451973dbd2581db9f44f5ddfbc593d'
'dc03222110a2c4c5755a1d8b3e3ec744'
'8079a35ed2df242046e142c8c2dd036d'
'1cc8a078a4637c31c780b4d08aa278a0'
'6fef5d95707f770b8433b04b1252bcde'
'8ca287bebebf19aa62833afac4cdd2b9'
'f69116bf273340e5d10a6f26a7be3ce0'
'7b45c94c588ad6373b2b384e42982e2a'
'4a4cf8641ad1e6ffe93c7a5180768212'
'57630c71acfcf94c9891a80563920f6a'
'25d8f6983c9a616946848c0e075a949c'
'1d4477026533efaa0358a40855d50a83')
@ -36,6 +42,9 @@ prepare() {
# ALARM patches
git apply ../0001-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch
git apply ../0002-arm64-dts-rockchip-enable-sdmmc-controller-on-rk3399.patch
git apply ../0003-arm64-dts-rockchip-disable-pwm0-on-rk3399-firefly.patch
git apply ../0004-arm64-dts-qcom-Force-host-mode-for-USB-on-apq8016-sb.patch
git apply ../0005-dma-mapping-skip-USB-devices-when-configuring-DMA-du.patch
cat "${srcdir}/config" > ./.config

View file

@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/arm64 4.13.0-rc4-1 Kernel Configuration
# Linux/arm64 4.13.0-rc4-2 Kernel Configuration
#
CONFIG_ARM64=y
CONFIG_64BIT=y
@ -466,7 +466,7 @@ CONFIG_PCI_XGENE=y
CONFIG_PCI_XGENE_MSI=y
# CONFIG_PCI_HOST_THUNDER_PEM is not set
# CONFIG_PCI_HOST_THUNDER_ECAM is not set
# CONFIG_PCIE_ROCKCHIP is not set
CONFIG_PCIE_ROCKCHIP=y
#
# PCI Endpoint
@ -6989,7 +6989,7 @@ CONFIG_PHY_QCOM_USB_HSIC=y
CONFIG_PHY_ROCKCHIP_DP=y
CONFIG_PHY_ROCKCHIP_EMMC=y
CONFIG_PHY_ROCKCHIP_INNO_USB2=y
# CONFIG_PHY_ROCKCHIP_PCIE is not set
CONFIG_PHY_ROCKCHIP_PCIE=y
CONFIG_PHY_ROCKCHIP_TYPEC=y
# CONFIG_PHY_ROCKCHIP_USB is not set
# CONFIG_PHY_SAMSUNG_USB2 is not set
@ -7519,7 +7519,7 @@ CONFIG_HAVE_ARCH_KASAN=y
# CONFIG_KASAN is not set
CONFIG_ARCH_HAS_KCOV=y
# CONFIG_KCOV is not set
CONFIG_DEBUG_SHIRQ=y
# CONFIG_DEBUG_SHIRQ is not set
#
# Debug Lockups and Hangs