[OpenWrt-Devel] [PATCH 1/2] ath79: fix qca955x pcie0 memory size

Philippe Mathieu-Daudé f4bug at amsat.org
Fri Feb 1 15:37:34 EST 2019


On 2/1/19 5:32 PM, Philippe Mathieu-Daudé wrote:
> On 2/1/19 4:01 PM, Chuanhong Guo wrote:
>> Hi!
>>
>> On Fri, Feb 1, 2019 at 9:53 PM Philippe Mathieu-Daudé <f4bug at amsat.org> wrote:
>>> [...]
>>> Now that you pointed this line, I am not sure it is correct...
>>> It maps I/O (0x01000000) region of 1B (0 0x000001) from PCI 0x00000000
>>> (0 0x00000000) at 0x0000000 (0x0000000) into cpu space.
>>> But the DDR is already mapped at 0x0000000 in cpu address space...
>>> Am I missing something?
>> The atheros PCIE controller doesn't have an IO space at all. (at least
>> the documentation doesn't mention it.)
>> I'm not sure if it's possible to write a PCIE driver without IO space.
> 
> Yes we can.

I checked with someone from upstream Linux PCI before going with that
statement; however Santiago told me via side chat this tree is based on
a 4.14 kernel, where ath79 uses the pci-legacy driver.

The legacy mips driver (and the sh4) fails if no IO space is provided.
I see in the tree the similar pattern used by other boards ath79 based,
so this is effectively a kludge for the legacy PCI driver.

Since this is about a downstream distribution, I'd go with a patch to
fix pci-legacy.c rather than mapping in DDR.
If someone disagree, then I'd rather map those phantom IO spaces out of
the DDR space.

>> I guess the existing code just uses 1 byte of system memory as a
>> placeholder.
> 
> OK, so we can clearly get ride of that space then :)
> 
> Cc'ing John who introduced the QCA in 53c474abbd.
> 
> SAn: Can you test this snippet on your board and resend a patch?
> 
> -- >8 --
> --- a/target/linux/ath79/dts/qca9557.dtsi
> +++ b/target/linux/ath79/dts/qca9557.dtsi
> @@ -187,6 +187,5 @@
>                                       <0x14000000 0x1000>; /* CFG */
>                                 reg-names = "crp_base", "ctrl_base",
> "cfg_base";
> -                               ranges = <0x2000000 0 0x10000000
> 0x10000000 0 0x04000000        /* pci memory */
> -                                         0x1000000 0 0x00000000
> 0x0000000 0 0x000001>;         /* io space */
> +                               ranges = <0x02000000 0 0x10000000
> 0x10000000 0 0x02000000>;
>                                 interrupt-parent = <&intc2>;
>                                 interrupts = <1>;
> @@ -209,6 +208,5 @@
>                                       <0x16000000 0x1000>; /* CFG */
>                                 reg-names = "crp_base", "ctrl_base",
> "cfg_base";
> -                               ranges = <0x2000000 0 0x12000000
> 0x12000000 0 0x02000000        /* pci memory */
> -                                         0x1000000 0 0x00000000
> 0x0000000 0 0x000001>;         /* io space */
> +                               ranges = <0x02000000 0 0x12000000
> 0x12000000 0 0x02000000>;
>                                 interrupt-parent = <&intc3>;
>                                 interrupts = <0>;
> 
> ---
> 
> Regards,
> 
> Phil.
> 

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list