Create an empty DPL file, content.dts. For example:
/dts-v1/;
/ {
dpl-version = <0x0000000a>;
containers {
dprc@1 {
compatible = "fsl,dprc";
parent = "none";
options = "DPRC_CFG_OPT_SPAWN_ALLOWED", "DPRC_CFG_OPT_ALLOC_ALLOWED", "DPRC_CFG_OPT_IRQ_CFG_ALLOWED";
objects {
obj_set@dpmcp {
type = "dpmcp";
ids = <0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa 0xb 0xc 0xd>;
};
};
};
};
objects {
dpmcp@1 {
compatible = "fsl,dpmcp";
};
dpmcp@2 {
compatible = "fsl,dpmcp";
};
dpmcp@3 {
compatible = "fsl,dpmcp";
};
dpmcp@4 {
compatible = "fsl,dpmcp";
};
dpmcp@5 {
compatible = "fsl,dpmcp";
};
dpmcp@6 {
compatible = "fsl,dpmcp";
};
dpmcp@7 {
compatible = "fsl,dpmcp";
};
dpmcp@8 {
compatible = "fsl,dpmcp";
};
dpmcp@9 {
compatible = "fsl,dpmcp";
};
dpmcp@10 {
compatible = "fsl,dpmcp";
};
dpmcp@11 {
compatible = "fsl,dpmcp";
};
dpmcp@12 {
compatible = "fsl,dpmcp";
};
dpmcp@13 {
compatible = "fsl,dpmcp";
};
dpmcp@14 {
compatible = "fsl,dpmcp";
};
dpmcp@15 {
compatible = "fsl,dpmcp";
};
dpmcp@16 {
compatible = "fsl,dpmcp";
};
dpmcp@17 {
compatible = "fsl,dpmcp";
};
dpmcp@18 {
compatible = "fsl,dpmcp";
};
dpmcp@19 {
compatible = "fsl,dpmcp";
};
};
};
Note: There is no network object capable of receiving Ethernet frames in the DPL file. You can create more dpmcps if the number of objects that will be created dynamically is high.
Generate the DPL file using content.dts.dtc -I dts -O dtb -o dpl.dtb content.dts
Flash the DPL file, dpl.dtb to the alternate bank. tftp 0x80000000 dpl.dtb; i2c mw 66 50 20;sf probe; sf erase 0x00D00000 +$filesize && sf write 0x80000000 0x00D00000 $filesize
Boot the board. After the board boots, create a dpmac. (Make sure you create a DPMAC that is valid based on the selected SERDES protocol configured by the RCW).restool dpmac create --mac-id=3
Probe the dpmac driver.restool dprc assign dprc.1 --object=dpmac.3 --plugged=1