[RFC PATCH 02/10] MIPS: Octeon: Add device tree source files.
David Daney
ddaney at caviumnetworks.com
Thu Feb 24 06:06:30 EST 2011
On 02/22/2011 04:07 PM, David Gibson wrote:
> On Tue, Feb 22, 2011 at 12:57:46PM -0800, David Daney wrote:
>> Signed-off-by: David Daney<ddaney at caviumnetworks.com>
>> ---
>> arch/mips/cavium-octeon/.gitignore | 2 +
>> arch/mips/cavium-octeon/Makefile | 13 ++
>> arch/mips/cavium-octeon/octeon_3xxx.dts | 314 +++++++++++++++++++++++++++++++
>> arch/mips/cavium-octeon/octeon_68xx.dts | 99 ++++++++++
>> 4 files changed, 428 insertions(+), 0 deletions(-)
>> create mode 100644 arch/mips/cavium-octeon/.gitignore
>> create mode 100644 arch/mips/cavium-octeon/octeon_3xxx.dts
>> create mode 100644 arch/mips/cavium-octeon/octeon_68xx.dts
>>
>> diff --git a/arch/mips/cavium-octeon/.gitignore b/arch/mips/cavium-octeon/.gitignore
>> new file mode 100644
>> index 0000000..39c9686
>> --- /dev/null
>> +++ b/arch/mips/cavium-octeon/.gitignore
>> @@ -0,0 +1,2 @@
>> +*.dtb.S
>
> .dtb.S?
I think I have the correct .gitignore syntax.
>
> [snip]
>> +/dts-v1/;
>> +/* OCTEON 3XXX, 5XXX, 63XX device tree skeleton. */
>> +/ {
>> + model = "OCTEON";
>
> 1 tab indents are the usual convention for device trees.
OK.
>
>> + compatible = "octeon,octeon";
>
> There's no model number at all for this board?
I think it should be:
compatible = "octeon,octeon-3860";
>
>> + #address-cells =<2>;
>> + #size-cells =<2>;
>> +
>> + soc at 0 {
>> + device_type = "soc";
>
> Drop this device_type.
OK.
>
>> + compatible = "simple-bus";
>> + #address-cells =<2>;
>> + #size-cells =<2>;
>> + ranges; /* Direct mapping */
>> +
>> + ciu: ciu-3xxx at 1070000000000 {
>> + compatible = "octeon,ciu-3xxx";
>
> So, names or compatible values with "wildcards" like 3xxx should be
> avoided. Instead, use the specific model number of this device, then
> future devices can claim compatibility with the earlier one.
>
> But, in addition the generic names convention means that the node name
> should be "interrupt-controller" rather than something model specific.
Let's try:
ciu: interrupt-controller at 1070000000000 {
compatible = "octeon,octeon-3860-ciu";
>
>> + interrupt-controller;
>> + #address-cells =<0>;
>> + #interrupt-cells =<2>;
>> + reg =<0x10700 0x00000000 0x0 0x7000>;
>> + };
>> +
>> + /* SMI0 */
>> + mdio0: mdio at 1180000001800 {
>
> If SMI0 is the name generally used in the documentation, using that in
> the label instead of mdio0 might be more useful.
>
>> + compatible = "octeon,mdio";
>
> No model or revision number?
>
Let's try:
smi0: mdio at 1180000001800 {
compatible = "octeon,octeon-3860-mdio";
>> + #address-cells =<1>;
>> + #size-cells =<0>;
>> + reg =<0x11800 0x00001800 0x0 0x40>;
>> + device_type = "mdio";
>
> Drop this device_type.
OK.
>
[...]
>> + mgmt0: ethernet at 1070000100000 {
>> + compatible = "octeon,mgmt";
This becomes:
mgmt0: ethernet at 1070000100000 {
compatible = "octeon,octeon-5230-mii";
>> + device_type = "network";
>> + model = "mgmt";
>> + reg =<0x10700 0x00100000 0x0 0x100>, /* MIX */
>> +<0x11800 0xE0000000 0x0 0x300>, /* AGL */
>> +<0x11800 0xE0000400 0x0 0x400>, /* AGL_SHARED */
>> +<0x11800 0xE0002000 0x0 0x8>; /* AGL_PRT_CTL */
>> + unit-number =<0>;
>
> What is this 'unit-number' property for?
>
The AGL_SHARED register bank is shared among all the octeon-5230-mii
devices. the 'unit-number' indicates the bit-field index that this
device should use within those registers.
>> + interrupt-parent =<&ciu>;
>> + interrupts =<0 62>,<1 46>;
>> + local-mac-address = [ 00 00 00 00 00 00 ];
>
> That's not a valid MAC address of course. If this has to be patched
> in by the bootloader / later processing, you should add a comment to
> that effect.
>
Right.
>> + phy-handle =<&phy0>;
>> + };
>> +
>> + mgmt1: ethernet at 1070000100800 {
>> + compatible = "octeon,mgmt";
>> + device_type = "network";
>> + model = "mgmt";
>> + reg =<0x10700 0x00100800 0x0 0x100>, /* MIX */
>> +<0x11800 0xE0000800 0x0 0x300>, /* AGL */
>> +<0x11800 0xE0000400 0x0 0x400>, /* AGL_SHARED */
>> +<0x11800 0xE0002008 0x0 0x8>; /* AGL_PRT_CTL */
>> + unit-number =<1>;
>> + interrupt-parent =<&ciu>;
>> + interrupts =<1 18>,< 1 46>;
>> + local-mac-address = [ 00 00 00 00 00 00 ];
>> + phy-handle =<&phy1>;
>> + };
>> +
>> + pip: pip at 11800a0000000 {
>> + compatible = "octeon,pip";
>> + #address-cells =<1>;
>> + #size-cells =<0>;
>> + reg =<0x11800 0xa0000000 0x0 0x2000>;
>> +
>> + interface at 0 {
>
> These subnodes and subsubnodes should have compatible values too, even
> if it's just "octeon,pip-interface" and "octeon,pip-ethernet".
>
OK.
>> + #address-cells =<1>;
>> + #size-cells =<0>;
>> + reg =<0>; /* interface */
>> +
>> + ethernet at 0 {
>> + device_type = "network";
>> + model = "pip";
>
> This model property doesn't look very useful.
>
I will remove it.
> [snip]
>
> Uh.. where are the CPUs?
>
Answered in other e-mail.
Thanks,
David Daney
More information about the devicetree-discuss
mailing list