Bug#785707: Add USB support for APM Mustang
Package: src:linux
Version: 3.16.7-ckt9-2
Severity: normal
Tags: d-i patch
Hi folks,
As described a little at
http://blog.einval.com/2015/05/19#mustang_installer I've been working
on getting Mustang support working. There's a (quite generic!) patch
from Mark Langsdorf for the XHCI platform code that allows for a
64-bit DMA mask:
http://www.spinics.net/lists/arm-kernel/msg373699.html
AFAICS this is needed for the Mustang, as all of its memory is mapped
over 4GiB. The patch hasn't (yet!) been accepted upstream, but I've
swapped mail with Mark and he says he's about to propose it again this
week. With the small attached patch applied to the Jessie kernel
(Mark's code plus a config tweak), I've got things working just fine.
It would be lovely if we could get this into Jessie for the 8.1 point
release. :-)
-- System Information:
Debian Release: 8.0
APT prefers stable
APT policy: (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.16.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
diff -Nru linux-3.16.7-ckt9/debian/changelog linux-3.16.7-ckt9/debian/changelog
--- linux-3.16.7-ckt9/debian/changelog 2015-04-13 01:01:55.000000000 +0000
+++ linux-3.16.7-ckt9/debian/changelog 2015-05-15 08:47:00.000000000 +0000
@@ -1,3 +1,10 @@
+linux (3.16.7-ckt9-2.1) unstable; urgency=medium
+
+ * arm64: enable XHCI USB on APM X-Gene
+ * usb: host: allow 64-bit DMA mask for XHCI
+
+ -- Steve McIntyre <93sam@debian.org> Fri, 15 May 2015 09:41:31 +0100
+
linux (3.16.7-ckt9-2) unstable; urgency=medium
* btrfs: simplify insert_orphan_item (Closes: #782362)
diff -Nru linux-3.16.7-ckt9/debian/config/arm64/config linux-3.16.7-ckt9/debian/config/arm64/config
--- linux-3.16.7-ckt9/debian/config/arm64/config 2015-01-02 03:46:07.000000000 +0000
+++ linux-3.16.7-ckt9/debian/config/arm64/config 2015-05-15 08:54:05.000000000 +0000
@@ -120,6 +120,8 @@
CONFIG_USB_EHCI_HCD_PLATFORM=m
CONFIG_USB_OHCI_HCD=m
CONFIG_USB_OHCI_HCD_PLATFORM=m
+CONFIG_USB_XHCI_HCD=m
+CONFIG_USB_XHCI_PLATFORM=y
##
## file: drivers/virtio/Kconfig
diff -Nru linux-3.16.7-ckt9/debian/patches/features/arm64/xgene-enable-xhci-usb.patch linux-3.16.7-ckt9/debian/patches/features/arm64/xgene-enable-xhci-usb.patch
--- linux-3.16.7-ckt9/debian/patches/features/arm64/xgene-enable-xhci-usb.patch 1970-01-01 00:00:00.000000000 +0000
+++ linux-3.16.7-ckt9/debian/patches/features/arm64/xgene-enable-xhci-usb.patch 2015-05-15 10:48:28.000000000 +0000
@@ -0,0 +1,40 @@
+Index: linux-3.16.7-ckt9/drivers/usb/host/xhci-plat.c
+===================================================================
+--- linux-3.16.7-ckt9.orig/drivers/usb/host/xhci-plat.c
++++ linux-3.16.7-ckt9/drivers/usb/host/xhci-plat.c
+@@ -115,14 +115,18 @@ static int xhci_plat_probe(struct platfo
+ if (!res)
+ return -ENODEV;
+
+- /* Initialize dma_mask and coherent_dma_mask to 32-bits */
+- ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
+- if (ret)
+- return ret;
++ /* Try setting the coherent_dma_mask to 64 bits, then try 32 bits */
++ if (sizeof(dma_addr_t) < 8 ||
++ dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64))) {
++ ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
++ if (ret)
++ return ret;
++ }
+ if (!pdev->dev.dma_mask)
+ pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask;
+ else
+- dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
++ dma_set_mask(&pdev->dev, pdev->dev.coherent_dma_mask);
++
+
+ hcd = usb_create_hcd(driver, &pdev->dev, dev_name(&pdev->dev));
+ if (!hcd)
+Index: linux-3.16.7-ckt9/drivers/usb/host/Kconfig
+===================================================================
+--- linux-3.16.7-ckt9.orig/drivers/usb/host/Kconfig
++++ linux-3.16.7-ckt9/drivers/usb/host/Kconfig
+@@ -28,6 +28,7 @@
+
+ config USB_XHCI_PLATFORM
+ tristate
++ default m
+
+ config USB_XHCI_MVEBU
+ tristate "xHCI support for Marvell Armada 375/38x"
diff -Nru linux-3.16.7-ckt9/debian/patches/series linux-3.16.7-ckt9/debian/patches/series
--- linux-3.16.7-ckt9/debian/patches/series 2015-04-13 00:40:38.000000000 +0000
+++ linux-3.16.7-ckt9/debian/patches/series 2015-05-15 08:47:26.000000000 +0000
@@ -578,3 +578,4 @@
debian/procfs-avoid-abi-change-in-3.16.7-ckt8.patch
bugfix/all/btrfs-simplify-insert_orphan_item.patch
+features/arm64/xgene-enable-xhci-usb.patch
Reply to: