aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/boot
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-10-09 15:03:49 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-10-09 15:03:49 -0400
commit80213c03c4151d900cf293ef0fc51f8d88495e14 (patch)
treeaf2422fa255aed96c23cef894e0adbf817f30c45 /arch/arm64/boot
parentea584595fc85e65796335033dfca25ed655cd0ed (diff)
parentf92d9ee3ab39841d1f29f2d1aa96ff7c74b36ee1 (diff)
Merge tag 'pci-v3.18-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
Pull PCI updates from Bjorn Helgaas: "The interesting things here are: - Turn on Config Request Retry Status Software Visibility. This caused hangs last time, but we included a fix this time. - Rework PCI device configuration to use _HPP/_HPX more aggressively - Allow PCI devices to be put into D3cold during system suspend - Add arm64 PCI support - Add APM X-Gene host bridge driver - Add TI Keystone host bridge driver - Add Xilinx AXI host bridge driver More detailed summary: Enumeration - Check Vendor ID only for Config Request Retry Status (Rajat Jain) - Enable Config Request Retry Status when supported (Rajat Jain) - Add generic domain handling (Catalin Marinas) - Generate uppercase hex for modalias interface class (Ricardo Ribalda Delgado) Resource management - Add missing MEM_64 mask in pci_assign_unassigned_bridge_resources() (Yinghai Lu) - Increase IBM ipr SAS Crocodile BARs to at least system page size (Douglas Lehr) PCI device hotplug - Prevent NULL dereference during pciehp probe (Andreas Noever) - Move _HPP & _HPX handling into core (Bjorn Helgaas) - Apply _HPP to PCIe devices as well as PCI (Bjorn Helgaas) - Apply _HPP/_HPX to display devices (Bjorn Helgaas) - Preserve SERR & PARITY settings when applying _HPP/_HPX (Bjorn Helgaas) - Preserve MPS and MRRS settings when applying _HPP/_HPX (Bjorn Helgaas) - Apply _HPP/_HPX to all devices, not just hot-added ones (Bjorn Helgaas) - Fix wait time in pciehp timeout message (Yinghai Lu) - Add more pciehp Slot Control debug output (Yinghai Lu) - Stop disabling pciehp notifications during init (Yinghai Lu) MSI - Remove arch_msi_check_device() (Alexander Gordeev) - Rename pci_msi_check_device() to pci_msi_supported() (Alexander Gordeev) - Move D0 check into pci_msi_check_device() (Alexander Gordeev) - Remove unused kobject from struct msi_desc (Yijing Wang) - Remove "pos" from the struct msi_desc msi_attrib (Yijing Wang) - Add "msi_bus" sysfs MSI/MSI-X control for endpoints (Yijing Wang) - Use __get_cached_msi_msg() instead of get_cached_msi_msg() (Yijing Wang) - Use __read_msi_msg() instead of read_msi_msg() (Yijing Wang) - Use __write_msi_msg() instead of write_msi_msg() (Yijing Wang) Power management - Drop unused runtime PM support code for PCIe ports (Rafael J. Wysocki) - Allow PCI devices to be put into D3cold during system suspend (Rafael J. Wysocki) AER - Add additional AER error strings (Gong Chen) - Make <linux/aer.h> standalone includable (Thierry Reding) Virtualization - Add ACS quirk for Solarflare SFC9120 & SFC9140 (Alex Williamson) - Add ACS quirk for Intel 10G NICs (Alex Williamson) - Add ACS quirk for AMD A88X southbridge (Marti Raudsepp) - Remove unused pci_find_upstream_pcie_bridge(), pci_get_dma_source() (Alex Williamson) - Add device flag helpers (Ethan Zhao) - Assume all Mellanox devices have broken INTx masking (Gavin Shan) Generic host bridge driver - Fix ioport_map() for !CONFIG_GENERIC_IOMAP (Liviu Dudau) - Add pci_register_io_range() and pci_pio_to_address() (Liviu Dudau) - Define PCI_IOBASE as the base of virtual PCI IO space (Liviu Dudau) - Fix the conversion of IO ranges into IO resources (Liviu Dudau) - Add pci_get_new_domain_nr() and of_get_pci_domain_nr() (Liviu Dudau) - Add support for parsing PCI host bridge resources from DT (Liviu Dudau) - Add pci_remap_iospace() to map bus I/O resources (Liviu Dudau) - Add arm64 architectural support for PCI (Liviu Dudau) APM X-Gene - Add APM X-Gene PCIe driver (Tanmay Inamdar) - Add arm64 DT APM X-Gene PCIe device tree nodes (Tanmay Inamdar) Freescale i.MX6 - Probe in module_init(), not fs_initcall() (Lucas Stach) - Delay enabling reference clock for SS until it stabilizes (Tim Harvey) Marvell MVEBU - Fix uninitialized variable in mvebu_get_tgt_attr() (Thomas Petazzoni) NVIDIA Tegra - Make sure the PCIe PLL is really reset (Eric Yuen) - Add error path tegra_msi_teardown_irq() cleanup (Jisheng Zhang) - Fix extended configuration space mapping (Peter Daifuku) - Implement resource hierarchy (Thierry Reding) - Clear CLKREQ# enable on port disable (Thierry Reding) - Add Tegra124 support (Thierry Reding) ST Microelectronics SPEAr13xx - Pass config resource through reg property (Pratyush Anand) Synopsys DesignWare - Use NULL instead of false (Fabio Estevam) - Parse bus-range property from devicetree (Lucas Stach) - Use pci_create_root_bus() instead of pci_scan_root_bus() (Lucas Stach) - Remove pci_assign_unassigned_resources() (Lucas Stach) - Check private_data validity in single place (Lucas Stach) - Setup and clear exactly one MSI at a time (Lucas Stach) - Remove open-coded bitmap operations (Lucas Stach) - Fix configuration base address when using 'reg' (Minghuan Lian) - Fix IO resource end address calculation (Minghuan Lian) - Rename get_msi_data() to get_msi_addr() (Minghuan Lian) - Add get_msi_data() to pcie_host_ops (Minghuan Lian) - Add support for v3.65 hardware (Murali Karicheri) - Fold struct pcie_port_info into struct pcie_port (Pratyush Anand) TI Keystone - Add TI Keystone PCIe driver (Murali Karicheri) - Limit MRSS for all downstream devices (Murali Karicheri) - Assume controller is already in RC mode (Murali Karicheri) - Set device ID based on SoC to support multiple ports (Murali Karicheri) Xilinx AXI - Add Xilinx AXI PCIe driver (Srikanth Thokala) - Fix xilinx_pcie_assign_msi() return value test (Dan Carpenter) Miscellaneous - Clean up whitespace (Quentin Lambert) - Remove assignments from "if" conditions (Quentin Lambert) - Move PCI_VENDOR_ID_VMWARE to pci_ids.h (Francesco Ruggeri) - x86: Mark DMI tables as initialization data (Mathias Krause) - x86: Move __init annotation to the correct place (Mathias Krause) - x86: Mark constants of pci_mmcfg_nvidia_mcp55() as __initconst (Mathias Krause) - x86: Constify pci_mmcfg_probes[] array (Mathias Krause) - x86: Mark PCI BIOS initialization code as such (Mathias Krause) - Parenthesize PCI_DEVID and PCI_VPD_LRDT_ID parameters (Megan Kamiya) - Remove unnecessary variable in pci_add_dynid() (Tobias Klauser)" * tag 'pci-v3.18-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (109 commits) arm64: dts: Add APM X-Gene PCIe device tree nodes PCI: Add ACS quirk for AMD A88X southbridge devices PCI: xgene: Add APM X-Gene PCIe driver PCI: designware: Remove open-coded bitmap operations PCI/MSI: Remove unnecessary temporary variable PCI/MSI: Use __write_msi_msg() instead of write_msi_msg() MSI/powerpc: Use __read_msi_msg() instead of read_msi_msg() PCI/MSI: Use __get_cached_msi_msg() instead of get_cached_msi_msg() PCI/MSI: Add "msi_bus" sysfs MSI/MSI-X control for endpoints PCI/MSI: Remove "pos" from the struct msi_desc msi_attrib PCI/MSI: Remove unused kobject from struct msi_desc PCI/MSI: Rename pci_msi_check_device() to pci_msi_supported() PCI/MSI: Move D0 check into pci_msi_check_device() PCI/MSI: Remove arch_msi_check_device() irqchip: armada-370-xp: Remove arch_msi_check_device() PCI/MSI/PPC: Remove arch_msi_check_device() arm64: Add architectural support for PCI PCI: Add pci_remap_iospace() to map bus I/O resources of/pci: Add support for parsing PCI host bridge resources from DT of/pci: Add pci_get_new_domain_nr() and of_get_pci_domain_nr() ... Conflicts: arch/arm64/boot/dts/apm-storm.dtsi
Diffstat (limited to 'arch/arm64/boot')
-rw-r--r--arch/arm64/boot/dts/apm-mustang.dts8
-rw-r--r--arch/arm64/boot/dts/apm-storm.dtsi165
2 files changed, 173 insertions, 0 deletions
diff --git a/arch/arm64/boot/dts/apm-mustang.dts b/arch/arm64/boot/dts/apm-mustang.dts
index b2f56229aa5e..f64900052f4e 100644
--- a/arch/arm64/boot/dts/apm-mustang.dts
+++ b/arch/arm64/boot/dts/apm-mustang.dts
@@ -25,6 +25,14 @@
25 }; 25 };
26}; 26};
27 27
28&pcie0clk {
29 status = "ok";
30};
31
32&pcie0 {
33 status = "ok";
34};
35
28&serial0 { 36&serial0 {
29 status = "ok"; 37 status = "ok";
30}; 38};
diff --git a/arch/arm64/boot/dts/apm-storm.dtsi b/arch/arm64/boot/dts/apm-storm.dtsi
index f391972ad135..4f6d04d52cca 100644
--- a/arch/arm64/boot/dts/apm-storm.dtsi
+++ b/arch/arm64/boot/dts/apm-storm.dtsi
@@ -282,6 +282,171 @@
282 enable-mask = <0x10>; 282 enable-mask = <0x10>;
283 clock-output-names = "rngpkaclk"; 283 clock-output-names = "rngpkaclk";
284 }; 284 };
285
286 pcie0clk: pcie0clk@1f2bc000 {
287 status = "disabled";
288 compatible = "apm,xgene-device-clock";
289 #clock-cells = <1>;
290 clocks = <&socplldiv2 0>;
291 reg = <0x0 0x1f2bc000 0x0 0x1000>;
292 reg-names = "csr-reg";
293 clock-output-names = "pcie0clk";
294 };
295
296 pcie1clk: pcie1clk@1f2cc000 {
297 status = "disabled";
298 compatible = "apm,xgene-device-clock";
299 #clock-cells = <1>;
300 clocks = <&socplldiv2 0>;
301 reg = <0x0 0x1f2cc000 0x0 0x1000>;
302 reg-names = "csr-reg";
303 clock-output-names = "pcie1clk";
304 };
305
306 pcie2clk: pcie2clk@1f2dc000 {
307 status = "disabled";
308 compatible = "apm,xgene-device-clock";
309 #clock-cells = <1>;
310 clocks = <&socplldiv2 0>;
311 reg = <0x0 0x1f2dc000 0x0 0x1000>;
312 reg-names = "csr-reg";
313 clock-output-names = "pcie2clk";
314 };
315
316 pcie3clk: pcie3clk@1f50c000 {
317 status = "disabled";
318 compatible = "apm,xgene-device-clock";
319 #clock-cells = <1>;
320 clocks = <&socplldiv2 0>;
321 reg = <0x0 0x1f50c000 0x0 0x1000>;
322 reg-names = "csr-reg";
323 clock-output-names = "pcie3clk";
324 };
325
326 pcie4clk: pcie4clk@1f51c000 {
327 status = "disabled";
328 compatible = "apm,xgene-device-clock";
329 #clock-cells = <1>;
330 clocks = <&socplldiv2 0>;
331 reg = <0x0 0x1f51c000 0x0 0x1000>;
332 reg-names = "csr-reg";
333 clock-output-names = "pcie4clk";
334 };
335 };
336
337 pcie0: pcie@1f2b0000 {
338 status = "disabled";
339 device_type = "pci";
340 compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
341 #interrupt-cells = <1>;
342 #size-cells = <2>;
343 #address-cells = <3>;
344 reg = < 0x00 0x1f2b0000 0x0 0x00010000 /* Controller registers */
345 0xe0 0xd0000000 0x0 0x00040000>; /* PCI config space */
346 reg-names = "csr", "cfg";
347 ranges = <0x01000000 0x00 0x00000000 0xe0 0x10000000 0x00 0x00010000 /* io */
348 0x02000000 0x00 0x80000000 0xe1 0x80000000 0x00 0x80000000>; /* mem */
349 dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
350 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
351 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
352 interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc2 0x1
353 0x0 0x0 0x0 0x2 &gic 0x0 0xc3 0x1
354 0x0 0x0 0x0 0x3 &gic 0x0 0xc4 0x1
355 0x0 0x0 0x0 0x4 &gic 0x0 0xc5 0x1>;
356 dma-coherent;
357 clocks = <&pcie0clk 0>;
358 };
359
360 pcie1: pcie@1f2c0000 {
361 status = "disabled";
362 device_type = "pci";
363 compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
364 #interrupt-cells = <1>;
365 #size-cells = <2>;
366 #address-cells = <3>;
367 reg = < 0x00 0x1f2c0000 0x0 0x00010000 /* Controller registers */
368 0xd0 0xd0000000 0x0 0x00040000>; /* PCI config space */
369 reg-names = "csr", "cfg";
370 ranges = <0x01000000 0x0 0x00000000 0xd0 0x10000000 0x00 0x00010000 /* io */
371 0x02000000 0x0 0x80000000 0xd1 0x80000000 0x00 0x80000000>; /* mem */
372 dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
373 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
374 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
375 interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc8 0x1
376 0x0 0x0 0x0 0x2 &gic 0x0 0xc9 0x1
377 0x0 0x0 0x0 0x3 &gic 0x0 0xca 0x1
378 0x0 0x0 0x0 0x4 &gic 0x0 0xcb 0x1>;
379 dma-coherent;
380 clocks = <&pcie1clk 0>;
381 };
382
383 pcie2: pcie@1f2d0000 {
384 status = "disabled";
385 device_type = "pci";
386 compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
387 #interrupt-cells = <1>;
388 #size-cells = <2>;
389 #address-cells = <3>;
390 reg = < 0x00 0x1f2d0000 0x0 0x00010000 /* Controller registers */
391 0x90 0xd0000000 0x0 0x00040000>; /* PCI config space */
392 reg-names = "csr", "cfg";
393 ranges = <0x01000000 0x0 0x00000000 0x90 0x10000000 0x0 0x00010000 /* io */
394 0x02000000 0x0 0x80000000 0x91 0x80000000 0x0 0x80000000>; /* mem */
395 dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
396 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
397 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
398 interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xce 0x1
399 0x0 0x0 0x0 0x2 &gic 0x0 0xcf 0x1
400 0x0 0x0 0x0 0x3 &gic 0x0 0xd0 0x1
401 0x0 0x0 0x0 0x4 &gic 0x0 0xd1 0x1>;
402 dma-coherent;
403 clocks = <&pcie2clk 0>;
404 };
405
406 pcie3: pcie@1f500000 {
407 status = "disabled";
408 device_type = "pci";
409 compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
410 #interrupt-cells = <1>;
411 #size-cells = <2>;
412 #address-cells = <3>;
413 reg = < 0x00 0x1f500000 0x0 0x00010000 /* Controller registers */
414 0xa0 0xd0000000 0x0 0x00040000>; /* PCI config space */
415 reg-names = "csr", "cfg";
416 ranges = <0x01000000 0x0 0x00000000 0xa0 0x10000000 0x0 0x00010000 /* io */
417 0x02000000 0x0 0x80000000 0xa1 0x80000000 0x0 0x80000000>; /* mem */
418 dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
419 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
420 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
421 interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xd4 0x1
422 0x0 0x0 0x0 0x2 &gic 0x0 0xd5 0x1
423 0x0 0x0 0x0 0x3 &gic 0x0 0xd6 0x1
424 0x0 0x0 0x0 0x4 &gic 0x0 0xd7 0x1>;
425 dma-coherent;
426 clocks = <&pcie3clk 0>;
427 };
428
429 pcie4: pcie@1f510000 {
430 status = "disabled";
431 device_type = "pci";
432 compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
433 #interrupt-cells = <1>;
434 #size-cells = <2>;
435 #address-cells = <3>;
436 reg = < 0x00 0x1f510000 0x0 0x00010000 /* Controller registers */
437 0xc0 0xd0000000 0x0 0x00200000>; /* PCI config space */
438 reg-names = "csr", "cfg";
439 ranges = <0x01000000 0x0 0x00000000 0xc0 0x10000000 0x0 0x00010000 /* io */
440 0x02000000 0x0 0x80000000 0xc1 0x80000000 0x0 0x80000000>; /* mem */
441 dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
442 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
443 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
444 interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xda 0x1
445 0x0 0x0 0x0 0x2 &gic 0x0 0xdb 0x1
446 0x0 0x0 0x0 0x3 &gic 0x0 0xdc 0x1
447 0x0 0x0 0x0 0x4 &gic 0x0 0xdd 0x1>;
448 dma-coherent;
449 clocks = <&pcie4clk 0>;
285 }; 450 };
286 451
287 serial0: serial@1c020000 { 452 serial0: serial@1c020000 {