Other Parts Discussed in Thread: SK-AM64B
Tool/software:
Hi,
I have a requirement to interface the KSZ9477 ethernel switch IC to the AM642x . The SDK version am using is 9.02.01.10
The inetrface between the PRU of Am642x and the KSZ switch is MII. So below are the k3-am642-sk.dts file changes in the kernel.
kszpruicssg0miigrt1_pins_default: kszpruicssg0miigrt1-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x01f0, PIN_INPUT, 1) /* (AA4) PRG0_PRU1_GPO16.PR0_MII_MT1_CLK */ AM64X_IOPAD(0x01ec, PIN_OUTPUT, 0) /* (U5) PRG0_PRU1_GPO15.PR0_MII1_TXEN */ AM64X_IOPAD(0x01e8, PIN_OUTPUT, 0) /* (U6) PRG0_PRU1_GPO14.PR0_MII1_TXD3 */ AM64X_IOPAD(0x01e4, PIN_OUTPUT, 0) /* (T6) PRG0_PRU1_GPO13.PR0_MII1_TXD2 */ AM64X_IOPAD(0x01e0, PIN_OUTPUT, 0) /* (Y4) PRG0_PRU1_GPO12.PR0_MII1_TXD1 */ AM64X_IOPAD(0x01dc, PIN_OUTPUT, 0) /* (W4) PRG0_PRU1_GPO11.PR0_MII1_TXD0 */ AM64X_IOPAD(0x01c0, PIN_INPUT, 1) /* (W3) PRG0_PRU1_GPO4.PR0_MII1_RXDV */ AM64X_IOPAD(0x01c8, PIN_INPUT, 1) /* (R5) PRG0_PRU1_GPO6.PR0_MII_MR1_CLK */ AM64X_IOPAD(0x01bc, PIN_INPUT, 1) /* (T4) PRG0_PRU1_GPO3.PR0_MII1_RXD3 */ AM64X_IOPAD(0x01b8, PIN_INPUT, 1) /* (V3) PRG0_PRU1_GPO2.PR0_MII1_RXD2 */ AM64X_IOPAD(0x01c4, PIN_INPUT, 1) /* (P4) PRG0_PRU1_GPO5.PR0_MII1_RXER */ AM64X_IOPAD(0x01b4, PIN_INPUT, 1) /* (W2) PRG0_PRU1_GPO1.PR0_MII1_RXD1 */ AM64X_IOPAD(0x01b0, PIN_INPUT, 1) /* (Y2) PRG0_PRU1_GPO0.PR0_MII1_RXD0 */ AM64X_IOPAD(0x01d0, PIN_INPUT, 1) /* (R1) PRG0_PRU1_GPO8.PR0_MII1_RXLINK */ >; }; icssg1_eth: icssg1-eth { compatible = "ti,am642-icssg-prueth"; pinctrl-names = "default"; pinctrl-0 = <&kszpruicssg0miigrt1_pins_default>; sram = <&oc_sram>; ti,prus = <&pru1_0>, <&rtu1_0>, <&tx_pru1_0>, <&pru1_1>, <&rtu1_1>, <&tx_pru1_1>; firmware-name = "ti-pruss/am65x-sr2-pru0-prueth-fw.elf", "ti-pruss/am65x-sr2-rtu0-prueth-fw.elf", "ti-pruss/am65x-sr2-txpru0-prueth-fw.elf", "ti-pruss/am65x-sr2-pru1-prueth-fw.elf", "ti-pruss/am65x-sr2-rtu1-prueth-fw.elf", "ti-pruss/am65x-sr2-txpru1-prueth-fw.elf"; ti,pruss-gp-mux-sel = <2>, /* MII mode */ <2>, <2>, <2>, /* MII mode */ <2>, <2>; ti,mii-g-rt = <&icssg1_mii_g_rt>; ti,mii-rt = <&icssg1_mii_rt>; ti,pa-stats = <&icssg1_pa_stats>; iep = <&icssg1_iep0>, <&icssg1_iep1>; interrupt-parent = <&icssg1_intc>; interrupts = <24 0 2>, <25 1 3>; interrupt-names = "tx_ts0", "tx_ts1"; dmas = <&main_pktdma 0xc200 15>, /* egress slice 0 */ <&main_pktdma 0xc201 15>, /* egress slice 0 */ <&main_pktdma 0xc202 15>, /* egress slice 0 */ <&main_pktdma 0xc203 15>, /* egress slice 0 */ <&main_pktdma 0xc204 15>, /* egress slice 1 */ <&main_pktdma 0xc205 15>, /* egress slice 1 */ <&main_pktdma 0xc206 15>, /* egress slice 1 */ <&main_pktdma 0xc207 15>, /* egress slice 1 */ <&main_pktdma 0x4200 15>, /* ingress slice 0 */ <&main_pktdma 0x4201 15>, /* ingress slice 1 */ <&main_pktdma 0x4202 0>, /* mgmnt rsp slice 0 */ <&main_pktdma 0x4203 0>; /* mgmnt rsp slice 1 */ dma-names = "tx0-0", "tx0-1", "tx0-2", "tx0-3", "tx1-0", "tx1-1", "tx1-2", "tx1-3", "rx0", "rx1"; ethernet-ports { #address-cells = <1>; #size-cells = <0>; icssg1_emac0: port@0 { reg = <0>; phy-handle = <&icssg1_phy1>; phy-mode = "rgmii-id"; ti,syscon-rgmii-delay = <&main_conf 0x4110>; /* Filled in by bootloader */ local-mac-address = [00 00 00 00 00 00]; }; icssg1_emac1: port@1 { reg = <1>; ti,syscon-rgmii-delay = <&main_conf 0x4114>; /* Filled in by bootloader */ local-mac-address = [00 00 00 00 00 00]; status = "disabled"; }; }; }; &icssg1_eth { pinctrl-0 = <&kszpruicssg0miigrt1_pins_default>; status = "okay"; }; &icssg1_emac0 { phy-mode = "mii"; }; &icssg1_emac1 { status = "okay"; phy-handle = <&icssg1_phy2>; phy-mode = "mii"; };
This is just the changes related to the ICSSG PRU . My requirement is load the pru firmware that resides in /lib/firmware/pru/ti-prus automatically during the kernel boot .
As per my understnding, there are 2 methods to load the firmware:
Method 1 : through UBoot
Method 2 : via kernel booting.
Pls correct me if my undrstanding is correct.
But am trying Method 2. So pls let me know if any changes is needed in the dts , as am not able load the firmaware automatically during the kernel booting. Not able to see any kernel log messages for the same. I have also enabled the kernel confis related to ICSSG pru as per this link : PRU_ICSSG ethernel
Also below are the complete dts file for ur reference. Kindly could u suggest me on this.
Regards,
Ankush