Re: Associating nodes with phandles for pci devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Hi All,

Back onto this from a brief hiatus

On 01/24/2015 11:40 AM, Florian Fainelli wrote:
> On 23/01/15 11:38, Chris Packham wrote:
>>
>> Hi Arnd,
>>
>> Thanks for the quick response (and sorry for the horribly formatted
>> message, travelling with only a webmail interface at the moment).
>>
>> On Fri, 23 Jan 2015, Arnd Bergmann wrote:
>>
>>> On Friday 23 January 2015 19:02:33 Chris Packham wrote:
>>>> Hi,
>>>>
>>>> I'm working on a new board that has a marvell,dsa switch. Similar to
>>>> the kirkwood-mv88f6281gtw-ge board. However the major difference is
>>>> that instead of being connected to an integrated Ethernet port it is
>>>> connected via a PCI-e Ethernet port (basically a NIC hardwired onto
>>>> the board).
>>>>
>>>> Generally you don't need to define PCI devices in the .dts because
>>>> the bus is scanned at run time and the method for identifying devices
>>>> is well defined. But to satisfy the marvell,dsa binding[1] I need to
>>>> tell it the Ethernet port it is connected to. The answer might be in
>>>> the PCI bindings but the urls in the documentation[2] don't appear to
>>>> be valid anymore.
>>>>
>>>> Is it possible to enumerate PCI devices in the .dts? Or is there a
>>>> way of satisfying the dsa requirements without knowing the Ethernet
>>>> device?
>>>>
>>>
>>> In general, it is possible, and we do that on PowerPC, but it may be that
>>> there are parts missing on ARM and you have to try it out.
>>>
>>> In particular, you need to know the address of the PCI device and then
>>> create a device node that will be associated with the
>>> pci_dev->dev.of_node
>>> pointer.
>>
>> Encouraging to know. I think I can figure out the relevant addresses for
>> my device based on the run-time scan.

With Arnd's help I've figured out the appropriate reg property for my 
PCI based Ethernet nodes.

	pcie-controller {
		pcie@1,0 {
			ethernet0: tg3@01,0 {
				reg = <0x00000000 0 0 0 0>;
			};
			ethernet1: tg3@01,1 {
				reg = <0x00000100 0 0 0 0>;
			};
		};
	};

>
> BTW, one thing that is high in my TODO list regarding DSA is to stop
> using this platform device/driver architecture and use the actual device
> driver model. Your switch driver entry point would be a pci_drive
> probe's function where you end-up registering a switch the DSA. This
> should solve portions of your problem although this is a long shot as we
> need to convert existing drivers as well.
>

My current problem is that of_find_device_by_node() (called by 
dsa_of_probe) can't find the device. After a bit of debugging I can see 
that the populated platform bus only goes as far as 
/soc/pcie-controller, anything beyond that seems to be missing. I can't 
see anything obvious in of_platform_bus_create() that would actually 
stop it from continuing down the pcie-controller branch provided the dts 
actually enumerates the children.

Any suggestions?��.n��������+%������w��{.n����z�{��ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f





[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux