openwrt/target/linux
Koen Vandeputte 6835c13e5a cns3xxx: fix writing to wrong PCI registers
Originally, cns3xxx used it's own functions for mapping, reading and writing registers.

Upstream commit 802b7c06adc7 ("ARM: cns3xxx: Convert PCI to use generic config accessors")
removed the internal PCI config write function in favor of the generic one:

cns3xxx_pci_write_config() --> pci_generic_config_write()

cns3xxx_pci_write_config() expected aligned addresses, being produced by cns3xxx_pci_map_bus()
while the generic one pci_generic_config_write() actually expects the real address
as both the function and hardware are capable of byte-aligned writes.

This currently leads to pci_generic_config_write() writing
to the wrong registers on some ocasions.

First issue seen due to this:

- driver ath9k gets loaded
- The driver wants to write value 0xA8 to register PCI_LATENCY_TIMER, located at 0x0D
- cns3xxx_pci_map_bus() aligns the address to 0x0C
- pci_generic_config_write() effectively writes 0xA8 into register 0x0C (CACHE_LINE_SIZE)

This seems to cause some slight instability when certain PCI devices are used.

Another issue example caused by this this is the PCI bus numbering,
where the primary bus is higher than the secondary, which is impossible.

Before:

00:00.0 PCI bridge: Cavium, Inc. Device 3400 (rev 01) (prog-if 00 [Normal decode])
    Flags: bus master, fast devsel, latency 0, IRQ 255
    Bus: primary=02, secondary=01, subordinate=ff, sec-latency=0

After fix:

00:00.0 PCI bridge: Cavium, Inc. Device 3400 (rev 01) (prog-if 00 [Normal decode])
    Flags: bus master, fast devsel, latency 0, IRQ 255
    Bus: primary=00, secondary=01, subordinate=02, sec-latency=0

And very likely some more ..

Fix all by omitting the alignment being done in the mapping function.

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
2018-12-18 14:24:57 +01:00
..
adm5120 kernel: Replace ledtrig-netdev with upstream backport 2018-12-15 12:50:06 +01:00
adm8668 treewide: use wpad-basic for not small flash targets 2018-10-16 15:07:41 +01:00
apm821xx kernel: bump 4.14 to 4.14.88 2018-12-14 13:01:49 +01:00
ar7 treewide: use wpad-basic for not small flash targets 2018-10-16 15:07:41 +01:00
ar71xx build: move append-string to image-commands.mk 2018-12-17 23:21:26 +01:00
arc770 treewide: use wpad-basic for not small flash targets 2018-10-16 15:07:41 +01:00
archs38 treewide: use wpad-basic for not small flash targets 2018-10-16 15:07:41 +01:00
armvirt kernel: bump 4.14 to 4.14.77 2018-10-19 10:01:57 +02:00
at91 treewide: dts: Remove default-state=off property from all gpio LED nodes 2018-12-17 08:16:28 +01:00
ath25 kernel: bump 4.14 to 4.14.79 2018-11-05 16:00:00 +01:00
ath79 ath79: replace cameo-factory with existing build commands 2018-12-17 23:21:40 +01:00
au1000 treewide: use wpad-basic for not small flash targets 2018-10-16 15:07:41 +01:00
bcm53xx bcm53xx: include WiFi firmware for devices with 4366C0 2018-12-17 12:51:06 +01:00
brcm47xx kernel: bump 4.14 to 4.14.81 2018-11-14 16:27:43 +01:00
brcm63xx ath79, brcm63xx: Fix debounce-interval properties in gpio-keys-polled nodes 2018-12-17 08:05:03 +01:00
brcm2708 kernel: bump 4.9 to 4.9.146 2018-12-18 14:24:57 +01:00
cns3xxx kernel: bump 4.14 to 4.14.77 2018-10-19 10:01:57 +02:00
gemini gemini: Activate USB support again 2018-12-16 14:59:59 +01:00
generic cns3xxx: fix writing to wrong PCI registers 2018-12-18 14:24:57 +01:00
imx6 imx6: image: ventana: Add missing BOOT_SCRIPT variable 2018-11-25 19:23:03 +01:00
ipq40xx ipq40xx: GL-B1300: convert to new partitions layout 2018-12-17 14:22:28 +01:00
ipq806x ipq806x: drop kernel/ rootfs partition images for the ZyXEL NBG6817 2018-12-17 00:21:34 +01:00
ixp4xx treewide: use wpad-basic for not small flash targets 2018-10-16 15:07:41 +01:00
kirkwood treewide: use wpad-basic for not small flash targets 2018-10-16 15:07:41 +01:00
lantiq treewide: dts: Remove default-state=off property from all gpio LED nodes 2018-12-17 08:16:28 +01:00
layerscape kernel: bump 4.9 to 4.9.146 2018-12-18 14:24:57 +01:00
malta treewide: use wpad-basic for not small flash targets 2018-10-16 15:07:41 +01:00
mcs814x kernel: bump 3.18 to 3.18.119 2018-08-20 13:03:23 +02:00
mediatek kernel: bump 4.14 to 4.14.89 2018-12-18 14:24:57 +01:00
mpc85xx mpc85xx: workaround 4.14 cross compile issue 2018-10-20 16:24:29 +02:00
mvebu kernel: bump 4.14 to 4.14.81 2018-11-14 16:27:43 +01:00
mxs mxs: use generic sysinfo board detection 2018-11-28 23:37:29 +01:00
octeon octeon: Evaluate board names in alphabetical order 2018-12-06 08:42:22 +01:00
octeontx kernel: enable memory compaction 2018-10-09 14:29:55 +02:00
omap kernel: bump 4.14 to 4.14.77 2018-10-19 10:01:57 +02:00
omap24xx omap24xx: remove referece to not existing kmod-usb-musb-tusb6010 2018-01-15 13:13:34 +01:00
orion treewide: use wpad-basic for not small flash targets 2018-10-16 15:07:41 +01:00
oxnas oxnas: remove superseded sysupgrade image check 2018-11-08 14:41:42 +01:00
pistachio kernel: bump 4.14 to 4.14.79 2018-11-05 16:00:00 +01:00
ppc40x kernel: only optimized for size if small_flash 2018-07-12 18:15:32 +02:00
ppc44x kernel: only optimized for size if small_flash 2018-07-12 18:15:32 +02:00
ramips treewide: dts: Remove default-state=off property from all gpio LED nodes 2018-12-17 08:16:28 +01:00
rb532 kernel: bump 4.14 to 4.14.86 2018-12-10 11:48:44 +01:00
samsung kernel: bump 4.14 to 4.14.77 2018-10-19 10:01:57 +02:00
sunxi kernel: bump 4.14 to 4.14.77 2018-10-19 10:01:57 +02:00
uml treewide: use wpad-basic for not small flash targets 2018-10-16 15:07:41 +01:00
x86 x86: make sysupgrade.tgz reachable again 2018-12-03 07:38:20 +01:00
xburst kernel: bump 3.18 to 3.18.119 2018-08-20 13:03:23 +02:00
zynq kernel: bump 4.14 to 4.14.77 2018-10-19 10:01:57 +02:00
Makefile