[PATCH] powerpc/85xx: add host-pci(e) bridge only for RC
Kumar Gala
galak at kernel.crashing.org
Thu May 19 23:22:04 EST 2011
On May 19, 2011, at 6:25 AM, Kushwaha Prabhakar-B32579 wrote:
> Hello Kumar,
> Please find my answer in-lined
>
>> -----Original Message-----
>> From: Kumar Gala [mailto:galak at kernel.crashing.org]
>> Sent: Thursday, May 19, 2011 11:55 AM
>> To: Kushwaha Prabhakar-B32579
>> Cc: linuxppc-dev at lists.ozlabs.org; meet2prabhu at gmail.com; Vivek Mahajan
>> Subject: Re: [PATCH] powerpc/85xx: add host-pci(e) bridge only for RC
>>
>>
>> On Apr 27, 2011, at 12:35 AM, Prabhakar Kushwaha wrote:
>>
>>> FSL PCIe controller can act as agent(EP) or host(RC).
>>> Under Agent(EP) mode they are configured via Host. So it is not
>>> required to add with the PCI(e) sub-system.
>>>
>>> Add and configure PCIe controller only for RC mode.
>>>
>>> Signed-off-by: Vivek Mahajan <vivek.mahajan at freescale.com>
>>> Signed-off-by: Prabhakar Kushwaha <prabhakar at freescale.com>
>>> ---
>>> Based upon
>>> git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git(b
>>> ranch master)
>>>
>>> arch/powerpc/sysdev/fsl_pci.c | 14 ++++++++++++++
>>> 1 files changed, 14 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/arch/powerpc/sysdev/fsl_pci.c
>>> b/arch/powerpc/sysdev/fsl_pci.c index 68ca929..87ac11b 100644
>>> --- a/arch/powerpc/sysdev/fsl_pci.c
>>> +++ b/arch/powerpc/sysdev/fsl_pci.c
>>> @@ -323,6 +323,7 @@ int __init fsl_add_bridge(struct device_node *dev,
>> int is_primary)
>>> struct pci_controller *hose;
>>> struct resource rsrc;
>>> const int *bus_range;
>>> + u8 is_agent;
>>>
>>> if (!of_device_is_available(dev)) {
>>> pr_warning("%s: disabled\n", dev->full_name); @@ -353,6
>> +354,19 @@
>>> int __init fsl_add_bridge(struct device_node *dev, int is_primary)
>>>
>>> setup_indirect_pci(hose, rsrc.start, rsrc.start + 0x4,
>>> PPC_INDIRECT_TYPE_BIG_ENDIAN);
>>> +
>>> + early_read_config_byte(hose, 0, 0, PCI_HEADER_TYPE, &is_agent);
>>
>> Why are we looking at PCI_HEADER_TYPE? We should look at PCI_CLASS_PROG.
>
> I think both are OK. We can check for any one.
> Is there any problem with PCI_HEADER_TYPE?
Let use PCI_CLASS_PROG as its explicit for this purpose of determining agent/host across PCI, PCI-X, PCIe
>
>
>>> + if ((is_agent & 0x7f) == PCI_HEADER_TYPE_NORMAL) {
>>> + u32 temp;
>>> +
>>> + temp = (u32)hose->cfg_data & ~PAGE_MASK;
>>> + if (((u32)hose->cfg_data & PAGE_MASK) != (u32)hose->cfg_addr)
>>> + iounmap(hose->cfg_data - temp);
>>> + iounmap(hose->cfg_addr);
>>> + pcibios_free_controller(hose);
>>> + return 0;
>>> + }
>>> +
>>> setup_pci_cmd(hose);
>>>
>>> /* check PCI express link status */
>>> --
>>> 1.7.3
>>>
>>>
>>> _______________________________________________
>>> Linuxppc-dev mailing list
>>> Linuxppc-dev at lists.ozlabs.org
>>> https://lists.ozlabs.org/listinfo/linuxppc-dev
>>
>
More information about the Linuxppc-dev
mailing list