powerpc/83xx: don't probe broken PCI on mpc837x_mds boards
Subsystems (2)
PATCH 1/1 powerpc/83xx: don't probe broken PCI on mpc837x_mds boards
In the standalone setup the board's CPLD disables the PCI internal arbiter, thus any access to the PCI bus will hang the board.
When there is no PCI arbiter on the bus the u-boot marks the PCI bus as broken and we should not try to probe it.
--- arch/powerpc/platforms/83xx/mpc837x_mds.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)
arch/powerpc/platforms/83xx/mpc837x_mds.c +7 -1
@@ -85,8 +85,14 @@ static void __init mpc837x_mds_setup_arch(void) ppc_md.progress ("mpc837x_mds_setup_arch()" ,0 );#ifdef CONFIG_PCI -for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) +for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) { +if (!of_device_is_available (np)) { +pr_warning ("%s: disabled by the firmware.\n" , + np->full_name); +continue ; + }mpc83xx_add_bridge (np); + }#endif mpc837xmds_usb_cfg (); }
Signature · 1 line
1.5.6.3
Quoted 7 lines · Anton Vorontsov
In the standalone setup the board's CPLD disables the PCI internal arbiter, thus any access to the PCI bus will hang the board.
When there is no PCI arbiter on the bus the u-boot marks the PCI bus as broken and we should not try to probe it.
Signed-off-by Anton Vorontsov <[email protected]>
Can you add to the commit message something about using the 'status field in the device tree to determine if the pci controller is available'
- k
PATCH v2 1/1 powerpc/83xx: don't probe broken PCI on mpc837x_mds boards
In the standalone setup the board's CPLD disables the PCI internal arbiter, thus any access to the PCI bus will hang the board.
When there is no PCI arbiter on the bus the u-boot adds status = "broken (no arbiter)" property into the PCI controller's node, and so marks the PCI controller as unavailable.
---
Quoted 3 lines · Kumar Gala
Can you add to the commit message something about using the 'status field in the device tree to determine if the pci controller is available'
Something like this?
Thanks,
arch/powerpc/platforms/83xx/mpc837x_mds.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)
arch/powerpc/platforms/83xx/mpc837x_mds.c +7 -1
@@ -85,8 +85,14 @@ static void __init mpc837x_mds_setup_arch(void) ppc_md.progress ("mpc837x_mds_setup_arch()" ,0 );#ifdef CONFIG_PCI -for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) +for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) { +if (!of_device_is_available (np)) { +pr_warning ("%s: disabled by the firmware.\n" , + np->full_name); +continue ; + }mpc83xx_add_bridge (np); + }#endif mpc837xmds_usb_cfg (); }
Signature · 1 line
1.5.6.3
Quoted 10 lines · Anton Vorontsov
In the standalone setup the board's CPLD disables the PCI internal arbiter, thus any access to the PCI bus will hang the board.
When there is no PCI arbiter on the bus the u-boot adds status = "broken (no arbiter)" property into the PCI controller's node, and so marks the PCI controller as unavailable.
Signed-off-by Anton Vorontsov <[email protected]>---
Quoted 8 lines
Quoted 3 lines · Kumar Gala
Can you add to the commit message something about using the 'status field in the device tree to determine if the pci controller is available'
Something like this?
Thanks,
yes, but should we just have "status = disabled" since that is the effect?
- k
Quoted 18 lines · Kumar Gala
Quoted 15 lines · Anton Vorontsov
In the standalone setup the board's CPLD disables the PCI internal arbiter, thus any access to the PCI bus will hang the board.
When there is no PCI arbiter on the bus the u-boot adds status = "broken (no arbiter)" property into the PCI controller's node, and so marks the PCI controller as unavailable.
Signed-off-by Anton Vorontsov <[email protected]>---
Quoted 3 lines · Kumar Gala
Can you add to the commit message something about using the 'status field in the device tree to determine if the pci controller is available'
Quoted 6 lines
Quoted 3 lines
Something like this?
Thanks,
yes, but should we just have "status = disabled" since that is the effect?
I don't know, should we? For the unavailable/disabled case the status can be anything but not 'ok' or 'okay' (the only status values for the available devices). So if we can encode the reason, why not do this?
Signature · 3 lines
Anton Vorontsov email: [email protected] irc://irc.freenode.net/bd2
Quoted 21 lines · Anton Vorontsov
Quoted 20 lines · Kumar Gala
Quoted 17 lines · Anton Vorontsov
In the standalone setup the board's CPLD disables the PCI internal arbiter, thus any access to the PCI bus will hang the board.
When there is no PCI arbiter on the bus the u-boot adds status = "broken (no arbiter)" property into the PCI controller's node, and so marks the PCI controller as unavailable.
Signed-off-by Anton Vorontsov <[email protected]>---
Quoted 3 lines · Kumar Gala
Can you add to the commit message something about using the 'status field in the device tree to determine if the pci controller is available'
Something like this?
Quoted 8 lines
Quoted 4 lines
Quoted 1 line
Thanks,
yes, but should we just have "status = disabled" since that is the effect?
I don't know, should we? For the unavailable/disabled case the status can be anything but not 'ok' or 'okay' (the only status values for the available devices). So if we can encode the reason, why not do this?
that works for me, just add the fact to the commit msg that the "valid status's are 'ok' and 'okay' and everything else is treated as "not available or disabled"
- k
PATCH v3 1/1 powerpc/83xx: don't probe broken PCI on mpc837x_mds boards
In the standalone setup the board's CPLD disables the PCI internal arbiter, thus any access to the PCI bus will hang the board.
The common way to disable particular devices in the device tree is to put the "status" property with any value other than "ok" or "okay" into the device node we want to disable.
So, when there is no PCI arbiter on the bus the u-boot adds status = "broken (no arbiter)" property into the PCI controller's node, and so marks the PCI controller as unavailable.
---
On Fri, Oct 03, 2008 at 12:51:41PM -0500, Kumar Gala wrote:
[...]
Quoted 10 lines
Quoted 6 lines
Quoted 2 lines
yes, but should we just have "status = disabled" since that is the effect?
I don't know, should we? For the unavailable/disabled case the status can be anything but not 'ok' or 'okay' (the only status values for the available devices). So if we can encode the reason, why not do this?
that works for me, just add the fact to the commit msg that the "valid status's are 'ok' and 'okay' and everything else is treated as "not available or disabled"
Done.
arch/powerpc/platforms/83xx/mpc837x_mds.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)
arch/powerpc/platforms/83xx/mpc837x_mds.c +7 -1
@@ -85,8 +85,14 @@ static void __init mpc837x_mds_setup_arch(void) ppc_md.progress ("mpc837x_mds_setup_arch()" ,0 );#ifdef CONFIG_PCI -for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) +for_each_compatible_node (np,"pci" ,"fsl,mpc8349-pci" ) { +if (!of_device_is_available (np)) { +pr_warning ("%s: disabled by the firmware.\n" , + np->full_name); +continue ; + }mpc83xx_add_bridge (np); + }#endif mpc837xmds_usb_cfg (); }
Signature · 1 line
1.5.6.3
Kumar Gala
AppliedQuoted 7 lines · Anton Vorontsov
In the standalone setup the board's CPLD disables the PCI internal arbiter, thus any access to the PCI bus will hang the board.
The common way to disable particular devices in the device tree is to put the "status" property with any value other than "ok" or "okay" into the device node we want to disable.
Quoted 6 lines
So, when there is no PCI arbiter on the bus the u-boot adds status = "broken (no arbiter)" property into the PCI controller's node, and so marks the PCI controller as unavailable.
Signed-off-by Anton Vorontsov <[email protected]>---
applied
- k