/* * Device Tree Source for Keystone 2 Lamarr Netcp driver * * Copyright 2015 Texas Instruments, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ qmss: qmss@2a40000 { compatible = "ti,keystone-navigator-qmss"; dma-coherent; #address-cells = <1>; #size-cells = <1>; clocks = <&chipclk13>; ranges; queue-range = <0 0x2000>; linkram0 = <0x100000 0x4000>; linkram1 = <0x70000000 0x10000>; /* 1MB OSR mem */ qmgrs { #address-cells = <1>; #size-cells = <1>; ranges; qmgr0 { managed-queues = <0 0x2000>; reg = <0x2a40000 0x20000>, <0x2a06000 0x400>, <0x2a02000 0x1000>, <0x2a03000 0x1000>, <0x23a80000 0x20000>, <0x2a80000 0x20000>; reg-names = "peek", "status", "config", "region", "push", "pop"; }; }; queue-pools { qpend { qpend-0 { qrange = <658 8>; interrupts =<0 40 0xf04 0 41 0xf04 0 42 0xf04 0 43 0xf04 0 44 0xf04 0 45 0xf04 0 46 0xf04 0 47 0xf04>; }; qpend-1 { qrange = <528 16>; interrupts = <0 48 0xf04 0 49 0xf04 0 50 0xf04 0 51 0xf04 0 52 0xf04 0 53 0xf04 0 54 0xf04 0 55 0xf04 0 56 0xf04 0 57 0xf04 0 58 0xf04 0 59 0xf04 0 60 0xf04 0 61 0xf04 0 62 0xf04 0 63 0xf04>; qalloc-by-id; }; qpend-2 { qrange = <544 16>; interrupts = <0 64 0xf04 0 65 0xf04 0 66 0xf04 0 59 0xf04 0 68 0xf04 0 69 0xf04 0 70 0xf04 0 71 0xf04 0 72 0xf04 0 73 0xf04 0 74 0xf04 0 75 0xf04 0 76 0xf04 0 77 0xf04 0 78 0xf04 0 79 0xf04>; }; }; general-purpose { gp-0 { qrange = <4000 64>; }; netcp-tx { qrange = <896 128>; qalloc-by-id; }; }; accumulator { acc-low-0 { qrange = <480 32>; accumulator = <0 47 16 2 50>; interrupts = <0 226 0xf01>; multi-queue; }; }; }; descriptor-regions { #address-cells = <1>; #size-cells = <1>; ranges; region-12 { id = <12>; region-spec = <8192 128>; /* num_desc desc_size */ link-index = <0x4000>; }; }; pdsps { #address-cells = <1>; #size-cells = <1>; ranges; pdsp0@0x2a10000 { reg = <0x2a10000 0x1000 /*iram */ 0x2a0f000 0x100 /*reg*/ 0x2a0c000 0x3c8 /*intd */ 0x2a20000 0x4000>; /*cmd*/ id = <0>; }; }; }; /* qmss */ knav_dmas: knav_dmas@0 { compatible = "ti,keystone-navigator-dma"; clocks = <&papllclk>; #address-cells = <1>; #size-cells = <1>; ranges; ti,navigator-cloud-address = <0x23a80000 0x23a90000>; dma_gbe: dma_gbe@0 { reg = <0x26186000 0x100>, <0x26187000 0x2a0>, <0x26188000 0xb60>, <0x26186100 0x80>, <0x26189000 0x1000>; reg-names = "global", "txchan", "rxchan", "txsched", "rxflow"; ti,enable-all; }; }; gbe_subsys: subsys@26200000 { compatible = "syscon"; reg = <0x26200000 0x100>; }; gbe_serdes0: phy@232a000 { status = "disabled"; #phy-cells = <0>; compatible = "ti,keystone-serdes-gbe"; reg = <0x0232a000 0x2000>; link-rate-kbps = <1250000>; num-lanes = <2>; /*rx-force-enable;*/ lanes { #address-cells = <1>; #size-cells = <0>; lane@0 { /*loopback;*/ reg = <0>; control-rate = <2>; /* quart */ rx-start = <7 5>; rx-force = <1 1>; tx-coeff = <0 0 0 12 4>; /* c1 c2 cm att vreg */ }; lane@1 { /*loopback;*/ reg = <1>; control-rate = <2>; /* quart */ rx-start = <7 5>; rx-force = <1 1>; tx-coeff = <0 0 0 12 4>; /* c1 c2 cm att vreg */ }; }; }; gbe_serdes1: phy@2320000 { status = "disabled"; #phy-cells = <0>; compatible = "ti,keystone-serdes-gbe"; reg = <0x02320000 0x2000>; link-rate-kbps = <1250000>; num-lanes = <2>; /*rx-force-enable;*/ lanes { #address-cells = <1>; #size-cells = <0>; lane@0 { /*loopback;*/ reg = <0>; control-rate = <2>; /* quart */ rx-start = <7 5>; rx-force = <1 1>; tx-coeff = <0 0 0 12 4>; /* c1 c2 cm att vreg */ }; lane@1 { /*loopback;*/ reg = <1>; control-rate = <2>; /* quart */ rx-start = <7 5>; rx-force = <1 1>; tx-coeff = <0 0 0 12 4>; /* c1 c2 cm att vreg */ }; }; }; netcp: netcp@26000000 { reg = <0x2620110 0x8>; reg-names = "efuse"; compatible = "ti,netcp-1.0"; #address-cells = <1>; #size-cells = <1>; /* NetCP address range */ ranges = <0 0x26000000 0x1000000>; clocks = <&clkpa>, <&clkcpgmac>, <&chipclk12>, <&clkosr>; clock-names = "pa_clk", "ethss_clk", "cpts_rft_clk", "osr_clk"; dma-coherent; ti,navigator-dmas = <&dma_gbe 0>, <&dma_gbe 8>, <&dma_gbe 0>, <&dma_gbe 22>, <&dma_gbe 23>, <&dma_gbe 24>, <&dma_gbe 25>, <&dma_gbe 27>, <&dma_gbe 28>, <&dma_gbe 29>, <&dma_gbe 30>, <&dma_gbe 8>, <&dma_gbe 9>, <&dma_gbe 10>, <&dma_gbe 11>, <&dma_gbe 12>, <&dma_gbe 13>, <&dma_gbe 14>, /* for egress cluster */ <&dma_gbe 31>; ti,navigator-dma-names = "netrx0", "netrx1", "nettx", "netrx0-pa", "netrx1-pa", "netrx2-pa", "netrx3-pa", "netrx4-pa", "netrx5-pa", "netrx6-pa", "netrx7-pa", "pa-cl0", "pa-cl1", "pa-cl2", "pa-cl3", "pa-cl4", "pa-cl5", "pa-cl6", "pa-cmd-rsp"; netcp-devices { #address-cells = <1>; #size-cells = <1>; ranges; gbe@200000 { /* ETHSS */ label = "netcp-gbe"; compatible = "ti,netcp-gbe-5"; syscon-subsys = <&gbe_subsys>; reg = <0x200100 0x400>, <0x220000 0x20000>; /* enable-ale; */ tx-queue = <896>; tx-channel = "nettx"; phys = <&gbe_serdes0>, <&gbe_serdes1>; interfaces { gbe0: interface-0 { slave-port = <0>; link-interface = <1>; phy-handle = <ðphy0>; }; gbe1: interface-1 { slave-port = <1>; link-interface = <1>; phy-handle = <ðphy1>; }; }; secondary-slave-ports { port-2 { slave-port = <2>; link-interface = <2>; }; port-3 { slave-port = <3>; link-interface = <2>; }; }; }; pa@0 { #address-cells = <1>; #size-cells = <1>; label = "netcp-pa2"; compatible = "ti,netcp-pa2"; reg = <0 0x100>, /* Mailbox */ <0x400 0x40>, /* RA bridge */ <0x500 0x80>, /* thread mapper */ <0x800 0x1000>, /* RA */ <0x6000 0x100>, /* Statistics regs */ <0x8000 0x100>, /* Statistics block */ <0x400000 0x900000>; /* cluster memory */ mac-lut-ranges = <0 43 56 63>; /* Static reservation in LUT-1 (outer IP) * used by driver to add IP rules for Rx checksum * offload. */ ip-lut-ranges = <61 63>; /* base queue, base flow. Should match with that * for netrx0 */ rx-route = <528 22>; tx-cmd-pool = <256 12>; /* rx command pool */ rx-cmd-rsp-pool = <256 12>; /* rx channel name for command response */ rx-cmd-rsp-chan = "pa-cmd-rsp"; rx-cmd-rsp-queue-depth = <128 32 0 0>; rx-cmd-rsp-buffer-size = <128 512 0 0>; /* rx channels get overridden for the interface * when PA is enabled */ interfaces { pa0: interface-0 { slave-port = <0>; rx-channel = "netrx0-pa"; }; pa1: interface-1 { slave-port = <1>; rx-channel = "netrx1-pa"; }; }; /* PA clusters that does packet processing */ clusters { #address-cells = <1>; #size-cells = <0>; cluster@0 { reg = <0>; tx-queue = <904>; tx-channel = "pa-cl0"; }; cluster@1 { reg = <1>; tx-queue = <905>; tx-channel = "pa-cl1"; }; cluster@6 { reg = <6>; tx-queue = <910>; tx-channel = "pa-cl6"; }; }; }; }; netcp-interfaces { interface-0 { rx-channel = "netrx0"; rx-pool = <1024 12>; tx-pool = <1024 12>; rx-queue-depth = <128 128 0 0>; rx-buffer-size = <1518 4096 0 0>; rx-queue = <528>; tx-completion-queue = <530>; efuse-mac = <1>; netcp-gbe = <&gbe0>; netcp-pa2 = <&pa0>; }; interface-1 { rx-channel = "netrx1"; rx-pool = <1024 12>; tx-pool = <1024 12>; rx-queue-depth = <128 128 0 0>; rx-buffer-size = <1518 4096 0 0>; rx-queue = <529>; tx-completion-queue = <531>; efuse-mac = <0>; local-mac-address = [02 18 31 7e 3e 7f]; netcp-gbe = <&gbe1>; netcp-pa2 = <&pa1>; }; }; };