public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v3 0/8] dm: pci: tegra: Convert Tegra PCI to driver model
@ 2015-11-12 16:57 Simon Glass
  2015-11-13 16:41 ` Stephen Warren
  0 siblings, 1 reply; 4+ messages in thread
From: Simon Glass @ 2015-11-12 16:57 UTC (permalink / raw)
  To: u-boot

This series converts all Tegra boards to use driver model for PCI. The net
effect should be no change in functionality.

A few additional features are added to make this possible:
- Helper functions to support accessing 8- and 16-bit values within a 32-bit
  word
- Fixing a build error for CONFIG_CMD_PCI_ENUM
- Decoding the PCI ranges property such that configuration ranges are
  ignored
- Supporting bus-master devices on boards where RAM does not start at 0

This series is tested on beaver. It is available at u-boot-dm/tegra-working.

Changes in v3:
- Rebase onto tegra/master

Changes in v2:
- Update commit message to explain that the feature is not important
- Drop the feature from tegra boards
- Rename 'addr' to 'size'
- Correct logic for use of gd->pci_ram_top
- Update commit message to mention future work
- Use the device_is_on_pci_bus() API
- Leave pci_skip_dev() at the bottom of the file to reduce the diff size

Simon Glass (8):
  dm: tegra: pci: Move CONFIG_PCI_TEGRA to Kconfig
  dm: pci: Avoid a driver model build error with CONFIG_CMD_PCI_ENUM
  dm: pci: Set up the SDRAM mapping correctly
  dm: pci: Support decoding ranges with duplicate entries
  dm: pci: Add functions to emulate 8- and 16-bit access
  dm: pci: Add a function to get the controller for a bus
  dm: pci: Add a function to find the regions for a PCI bus
  dm: tegra: pci: Convert tegra boards to driver model for PCI

 arch/arm/mach-tegra/Kconfig  |   2 +
 common/cmd_pci.c             |   4 +
 configs/apalis_t30_defconfig |   1 +
 configs/beaver_defconfig     |   1 +
 configs/cardhu_defconfig     |   1 +
 configs/jetson-tk1_defconfig |   1 +
 configs/trimslice_defconfig  |   1 +
 drivers/pci/Kconfig          |  10 +
 drivers/pci/pci-uclass.c     | 105 +++++++++-
 drivers/pci/pci_tegra.c      | 468 ++++++++++++++-----------------------------
 include/configs/apalis_t30.h |   2 -
 include/configs/beaver.h     |   2 -
 include/configs/cardhu.h     |   2 -
 include/configs/jetson-tk1.h |   2 -
 include/configs/trimslice.h  |   2 -
 include/fdtdec.h             |   4 -
 include/pci.h                |  51 +++++
 lib/fdtdec.c                 |   4 -
 18 files changed, 317 insertions(+), 346 deletions(-)

-- 
2.6.0.rc2.230.g3dd15c0

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [U-Boot] [PATCH v3 0/8] dm: pci: tegra: Convert Tegra PCI to driver model
  2015-11-12 16:57 [U-Boot] [PATCH v3 0/8] dm: pci: tegra: Convert Tegra PCI to driver model Simon Glass
@ 2015-11-13 16:41 ` Stephen Warren
  2015-11-13 18:14   ` Simon Glass
  0 siblings, 1 reply; 4+ messages in thread
From: Stephen Warren @ 2015-11-13 16:41 UTC (permalink / raw)
  To: u-boot

On 11/12/2015 09:57 AM, Simon Glass wrote:
> This series converts all Tegra boards to use driver model for PCI. The net
> effect should be no change in functionality.

I applied this series on top of current u-boot/master.

On Jetson TK1 (T124), I see the following errors when U-Boot starts:

> Net:   ERROR: tegra-pcie: failed to power on PHY: -110
>
> at /home/swarren/shared/git_wa/tegra-uboot-flasher/u-boot/drivers/pci/pci_tegra.c:685/tegra_pcie_enable_controller()
> ERROR: tegra-pcie: failed to enable controller
> at /home/swarren/shared/git_wa/tegra-uboot-flasher/u-boot/drivers/pci/pci_tegra.c:997/pci_tegra_probe()
> No ethernet found.

I assume you can investigate that without issue, since you have that board.

On Jetson TX1 (T210), you need to squash the following into the final 
commit of the series:

> diff --git a/drivers/pci/pci_tegra.c b/drivers/pci/pci_tegra.c
> index ecd4313501c4..f88bd0d2858b 100644
> --- a/drivers/pci/pci_tegra.c
> +++ b/drivers/pci/pci_tegra.c
> @@ -1022,6 +1022,7 @@ static const struct udevice_id pci_tegra_ids[] = {
>  	{ .compatible = "nvidia,tegra20-pcie", .data = TEGRA20_PCIE },
>  	{ .compatible = "nvidia,tegra30-pcie", .data = TEGRA30_PCIE },
>  	{ .compatible = "nvidia,tegra124-pcie", .data = TEGRA124_PCIE },
> +	{ .compatible = "nvidia,tegra210-pcie", .data = TEGRA210_PCIE },
>  	{ }
>  };

and even with that fix, PCIe now doesn't work:

> Net:   RTL8169#0
> Warning: RTL8169#0 using MAC address from net device
>
> Hit any key to stop autoboot:  0
> Tegra210 (P2371-2180) # dhcp zImage
> pci_hose_bus_to_phys: invalid physical address
> pci_hose_bus_to_phys: invalid physical address
> pci_hose_bus_to_phys: invalid physical address
> pci_hose_bus_to_phys: invalid physical address
> pci_hose_bus_to_phys: invalid physical address
> pci_hose_bus_to_phys: invalid physical address
> BOOTP broadcast 1
> pci_hose_bus_to_phys: invalid physical address
> BOOTP broadcast 2
> pci_hose_bus_to_phys: invalid physical address
> BOOTP broadcast 3
> pci_hose_bus_to_phys: invalid physical address
...

Perhaps there's some obvious mistake somewhere you can find by code 
inspection. Otherwise, let me know if you need me to debug that.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [U-Boot] [PATCH v3 0/8] dm: pci: tegra: Convert Tegra PCI to driver model
  2015-11-13 16:41 ` Stephen Warren
@ 2015-11-13 18:14   ` Simon Glass
  2015-11-14  4:19     ` Simon Glass
  0 siblings, 1 reply; 4+ messages in thread
From: Simon Glass @ 2015-11-13 18:14 UTC (permalink / raw)
  To: u-boot

Hi Stephen,

On 13 November 2015 at 09:41, Stephen Warren <swarren@wwwdotorg.org> wrote:
> On 11/12/2015 09:57 AM, Simon Glass wrote:
>>
>> This series converts all Tegra boards to use driver model for PCI. The net
>> effect should be no change in functionality.
>
>
> I applied this series on top of current u-boot/master.
>
> On Jetson TK1 (T124), I see the following errors when U-Boot starts:
>
>> Net:   ERROR: tegra-pcie: failed to power on PHY: -110
>>
>> at
>> /home/swarren/shared/git_wa/tegra-uboot-flasher/u-boot/drivers/pci/pci_tegra.c:685/tegra_pcie_enable_controller()
>> ERROR: tegra-pcie: failed to enable controller
>> at
>> /home/swarren/shared/git_wa/tegra-uboot-flasher/u-boot/drivers/pci/pci_tegra.c:997/pci_tegra_probe()
>> No ethernet found.
>
>
> I assume you can investigate that without issue, since you have that board.

It had a problem with the PMIC (I overwrote the contents) so I suspect
I get that error always. But I'll try it.

>
> On Jetson TX1 (T210), you need to squash the following into the final commit
> of the series:
>
>> diff --git a/drivers/pci/pci_tegra.c b/drivers/pci/pci_tegra.c
>> index ecd4313501c4..f88bd0d2858b 100644
>> --- a/drivers/pci/pci_tegra.c
>> +++ b/drivers/pci/pci_tegra.c
>> @@ -1022,6 +1022,7 @@ static const struct udevice_id pci_tegra_ids[] = {
>>         { .compatible = "nvidia,tegra20-pcie", .data = TEGRA20_PCIE },
>>         { .compatible = "nvidia,tegra30-pcie", .data = TEGRA30_PCIE },
>>         { .compatible = "nvidia,tegra124-pcie", .data = TEGRA124_PCIE },
>> +       { .compatible = "nvidia,tegra210-pcie", .data = TEGRA210_PCIE },
>>         { }
>>  };
>
>
> and even with that fix, PCIe now doesn't work:
>
>> Net:   RTL8169#0
>> Warning: RTL8169#0 using MAC address from net device
>>
>> Hit any key to stop autoboot:  0
>> Tegra210 (P2371-2180) # dhcp zImage
>> pci_hose_bus_to_phys: invalid physical address
>> pci_hose_bus_to_phys: invalid physical address
>> pci_hose_bus_to_phys: invalid physical address
>> pci_hose_bus_to_phys: invalid physical address
>> pci_hose_bus_to_phys: invalid physical address
>> pci_hose_bus_to_phys: invalid physical address
>> BOOTP broadcast 1
>> pci_hose_bus_to_phys: invalid physical address
>> BOOTP broadcast 2
>> pci_hose_bus_to_phys: invalid physical address
>> BOOTP broadcast 3
>> pci_hose_bus_to_phys: invalid physical address
>
> ...
>
> Perhaps there's some obvious mistake somewhere you can find by code
> inspection. Otherwise, let me know if you need me to debug that.

I'll take a look and let you know if I get stuck.

Regards,
Simon

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [U-Boot] [PATCH v3 0/8] dm: pci: tegra: Convert Tegra PCI to driver model
  2015-11-13 18:14   ` Simon Glass
@ 2015-11-14  4:19     ` Simon Glass
  0 siblings, 0 replies; 4+ messages in thread
From: Simon Glass @ 2015-11-14  4:19 UTC (permalink / raw)
  To: u-boot

Hi Stephen,

On 13 November 2015 at 11:14, Simon Glass <sjg@chromium.org> wrote:
> Hi Stephen,
>
> On 13 November 2015 at 09:41, Stephen Warren <swarren@wwwdotorg.org> wrote:
>> On 11/12/2015 09:57 AM, Simon Glass wrote:
>>>
>>> This series converts all Tegra boards to use driver model for PCI. The net
>>> effect should be no change in functionality.
>>
>>
>> I applied this series on top of current u-boot/master.
>>
>> On Jetson TK1 (T124), I see the following errors when U-Boot starts:
>>
>>> Net:   ERROR: tegra-pcie: failed to power on PHY: -110
>>>
>>> at
>>> /home/swarren/shared/git_wa/tegra-uboot-flasher/u-boot/drivers/pci/pci_tegra.c:685/tegra_pcie_enable_controller()
>>> ERROR: tegra-pcie: failed to enable controller
>>> at
>>> /home/swarren/shared/git_wa/tegra-uboot-flasher/u-boot/drivers/pci/pci_tegra.c:997/pci_tegra_probe()
>>> No ethernet found.
>>
>>
>> I assume you can investigate that without issue, since you have that board.
>
> It had a problem with the PMIC (I overwrote the contents) so I suspect
> I get that error always. But I'll try it.

Yes, Jetson doesn't work for me, but I found the problem and tested it
on Beaver. It was a merge conflict. I'll send v4 when I finish build
testing.

>
>>
>> On Jetson TX1 (T210), you need to squash the following into the final commit
>> of the series:
>>
>>> diff --git a/drivers/pci/pci_tegra.c b/drivers/pci/pci_tegra.c
>>> index ecd4313501c4..f88bd0d2858b 100644
>>> --- a/drivers/pci/pci_tegra.c
>>> +++ b/drivers/pci/pci_tegra.c
>>> @@ -1022,6 +1022,7 @@ static const struct udevice_id pci_tegra_ids[] = {
>>>         { .compatible = "nvidia,tegra20-pcie", .data = TEGRA20_PCIE },
>>>         { .compatible = "nvidia,tegra30-pcie", .data = TEGRA30_PCIE },
>>>         { .compatible = "nvidia,tegra124-pcie", .data = TEGRA124_PCIE },
>>> +       { .compatible = "nvidia,tegra210-pcie", .data = TEGRA210_PCIE },
>>>         { }
>>>  };
>>
>>
>> and even with that fix, PCIe now doesn't work:
>>
>>> Net:   RTL8169#0
>>> Warning: RTL8169#0 using MAC address from net device
>>>
>>> Hit any key to stop autoboot:  0
>>> Tegra210 (P2371-2180) # dhcp zImage
>>> pci_hose_bus_to_phys: invalid physical address
>>> pci_hose_bus_to_phys: invalid physical address
>>> pci_hose_bus_to_phys: invalid physical address
>>> pci_hose_bus_to_phys: invalid physical address
>>> pci_hose_bus_to_phys: invalid physical address
>>> pci_hose_bus_to_phys: invalid physical address
>>> BOOTP broadcast 1
>>> pci_hose_bus_to_phys: invalid physical address
>>> BOOTP broadcast 2
>>> pci_hose_bus_to_phys: invalid physical address
>>> BOOTP broadcast 3
>>> pci_hose_bus_to_phys: invalid physical address
>>
>> ...
>>
>> Perhaps there's some obvious mistake somewhere you can find by code
>> inspection. Otherwise, let me know if you need me to debug that.
>
> I'll take a look and let you know if I get stuck.
>
> Regards,
> Simon

Regards,
Simon

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-11-14  4:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-12 16:57 [U-Boot] [PATCH v3 0/8] dm: pci: tegra: Convert Tegra PCI to driver model Simon Glass
2015-11-13 16:41 ` Stephen Warren
2015-11-13 18:14   ` Simon Glass
2015-11-14  4:19     ` Simon Glass

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox