Access PFE MAC addresses via A53

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Access PFE MAC addresses via A53

Jump to solution
1,808 Views
aaronbaranoff
Contributor III

I am trying to talk to the PFE_MAC0 and 3 directly from the A53 (bare bones access). I was given the follow addresses and I am verifiying they are correct. The memory map in the reference manual seems to imply that they should be valid. I try to look at addresses via the debugger and before the MMU was enabled to verify I have the correct addresses.

PFE EMAC0 base - 0x460A0000

0x460A011C-0x460A0128

PFE EMAC1 base - 0x460A4000 

0x460A411C-0x460A4128

PFE EMAC2 base - 0x460A8000

0x460A811C-0x460A8128

aaronbaranoff_0-1754579681107.png

I get nothing back (not even 0s). So, is the address you gave me valid for the A53 or do I need to enable something first to get access. What am I missing? Enables? Clocks?  

0 Kudos
Reply
1 Solution
1,537 Views
aaronbaranoff
Contributor III

This sequence works to save the pain for the next person....

#define MAX_TRIES 100
void FSBL_pfe_init(void)
{
    /* Enable */
    /* Setup DMA coherency */

    volatile uint32_t tries;

    RDC.RD2_CTRL_REG.B.RD2_CTRL_UNLOCK = 1;
    RDC.RD2_CTRL_REG.B.RD2_INTERCONNECT_INTERFACE_DISABLE = 0;

    tries = 0;
    while (RDC.RD2_STAT_REG.B.RD2_INTERCONNECT_INTERFACE_DISABLE_REQ_ACK_STAT != 0 )
    {
        tries++;
        if (tries > MAX_TRIES)
        {
            break;
        }
    }

    tries = 0;
    while (RDC.RD2_STAT_REG.B.RD2_INTERCONNECT_INTERFACE_DISABLE_STAT != 0)
    {
        tries++;
        if (tries > MAX_TRIES)
        {
            break;
        }
    }

    /**((volatile unsigned int *)0x4007ca00) = 0x3f; */
    S32G_GPR.PFE_COH_EN.B.DDR = true;
    S32G_GPR.PFE_COH_EN.B.HIF0 = true;
    S32G_GPR.PFE_COH_EN.B.HIF1 = true;
    S32G_GPR.PFE_COH_EN.B.HIF2 = true;
    S32G_GPR.PFE_COH_EN.B.HIF3 = true;
    S32G_GPR.PFE_COH_EN.B.UTIL = true;
    /* Setup EMAC modes */
    /**((volatile unsigned int *)0x4007ca04) = 0x111;*/
    S32G_GPR.PFE_EMACX_INTF_SEL.B.EMAC0 = 1;
    S32G_GPR.PFE_EMACX_INTF_SEL.B.EMAC1 = 1;
    S32G_GPR.PFE_EMACX_INTF_SEL.B.EMAC2 = 1;
    /* Enable power for PFE */
    /**((volatile unsigned int *)0x4007ca20) = 0x0; */
    S32G_GPR.PFE_PWR_CTRL.B.PWRACK = 0;
    S32G_GPR.PFE_PWR_CTRL.B.PWRCLAMP = 0;
    S32G_GPR.PFE_PWR_CTRL.B.PWRDWN = 0;
    S32G_GPR.PFE_PWR_CTRL.B.PWRISO = 0;

    /* Put PFE in reset */
    /**((volatile unsigned int *)0x40078050) = 0x1; */
    MC_RGM.PRST_0[2].PRST_0.B.PERIPH_0_RST = 1;

    tries = 0;
    while (MC_RGM.PSTAT_0[2].PSTAT_0.B.PERIPH_0_STAT != 1)
    {
        tries++;
        if (tries > MAX_TRIES)
        {
            break;
        }
    }    

    /**((volatile unsigned int *)0x4007caE4) = 0x0; */
    S32G_GPR.GENCTRL1.B.CTRL = 0;

    /* Take the PFE out of reset */
    /**((volatile unsigned int *)0x40078050) = 0x0; */
    MC_RGM.PRST_0[2].PRST_0.B.PERIPH_0_RST = 0;

    MC_ME.PRTN2_PCONF.B.OSSE = 1;
    MC_ME.PRTN2_PCONF.B.PCE = 1;

    MC_ME.PRTN2_PUPD.B.OSSUD = 1;
    MC_ME.PRTN2_PUPD.B.PCUD = 1;
   
    /* Tell hardware to check above registers for changes */
    Write_Control_Key();
   
    tries = 0;
    while (MC_RGM.PSTAT_0[2].PSTAT_0.B.PERIPH_0_STAT != 0)
    {
        tries++;
        if (tries > MAX_TRIES)
        {
            break;
        }
    }

    /**((volatile unsigned int *)0x4007caE4) = 0x1; */
    S32G_GPR.GENCTRL1.B.CTRL = 1;
    /* Setup & Enable the PFE Sys Clock */
    /* See above clocking images */

    /* Setup and Enable the PFE PE Clock */
    /* *((volatile unsigned int *)0x4007ca44) = 0x0; */
    S32G_GPR.LLCE_CTRL.B.EXEVENT = 0;
    S32G_GPR.LLCE_CTRL.B.LINDIVSEL = 0;
    S32G_GPR.LLCE_CTRL.B.LLCE_HTM0_TRC_DIS = 0;
    S32G_GPR.LLCE_CTRL.B.LLCE_HTM1_TRC_DIS = 0;
    S32G_GPR.LLCE_CTRL.B.LLCE_LSPI_TRIG_IN = 0;
    S32G_GPR.LLCE_CTRL.B.PFE_2_LLCE_INT_HS_BP = 0;

    /* Take the PFE out of reset */
    /**((volatile unsigned int *)0x40078050) = 0x0; */
    MC_RGM.PRST_0[2].PRST_0.B.PERIPH_0_RST = 0;                  

    MC_ME.PRTN2_PCONF.B.OSSE = 1;
    MC_ME.PRTN2_PCONF.B.PCE = 1;

    MC_ME.PRTN2_PUPD.B.OSSUD = 1;
    MC_ME.PRTN2_PUPD.B.PCUD = 1;
   

    /* Tell hardware to check above registers for changes */
    Write_Control_Key();

    tries = 0;
    while (MC_RGM.PSTAT_0[2].PSTAT_0.B.PERIPH_0_STAT != 0)
    {
        tries++;
        if (tries > MAX_TRIES)
        {
            break;
        }

    }

    MC_ME.PRTN2_PCONF.B.OSSE = 0;
    MC_ME.PRTN2_PCONF.B.PCE = 1;

    MC_ME.PRTN2_PUPD.B.OSSUD = 1;
    MC_ME.PRTN2_PUPD.B.PCUD = 1;
   

    /* Tell hardware to check above registers for changes */
    Write_Control_Key();
   
    tries = 0;
    while (MC_RGM.PSTAT_0[2].PSTAT_0.B.PERIPH_0_STAT != 0)
    {
        tries++;
        if (tries > MAX_TRIES)
        {
            break;
        }        
    }
   
    /**((volatile unsigned int *)0x4007caE4) = 0x1; */
    S32G_GPR.GENCTRL1.B.CTRL = 1;
    /* Setup EMAC Tx/RX clocks */
    /* *((volatile unsigned int *)0x4007caE0) = 0x0; */
    S32G_GPR.GENCTRL0.B.ACCEL_FLXNC_RD0_IDLEREQ = 0; /* normal operation */
    S32G_GPR.GENCTRL0.B.ACCEL_FLXNC_REF_DIV = 0; /* Divide by 2 */
    S32G_GPR.GENCTRL0.B.USBPWRFLT = 0;    
}
 
After the above code is running I can read and write to all the PFE GMACs,,,

PFE EMAC0 base - 0x460A0000

0x460A011C-0x460A0128

PFE EMAC1 base - 0x460A4000 

0x460A411C-0x460A4128

PFE EMAC2 base - 0x460A8000

0x460A811C-0x460A8128

View solution in original post

0 Kudos
Reply
13 Replies
1,538 Views
aaronbaranoff
Contributor III

This sequence works to save the pain for the next person....

#define MAX_TRIES 100
void FSBL_pfe_init(void)
{
    /* Enable */
    /* Setup DMA coherency */

    volatile uint32_t tries;

    RDC.RD2_CTRL_REG.B.RD2_CTRL_UNLOCK = 1;
    RDC.RD2_CTRL_REG.B.RD2_INTERCONNECT_INTERFACE_DISABLE = 0;

    tries = 0;
    while (RDC.RD2_STAT_REG.B.RD2_INTERCONNECT_INTERFACE_DISABLE_REQ_ACK_STAT != 0 )
    {
        tries++;
        if (tries > MAX_TRIES)
        {
            break;
        }
    }

    tries = 0;
    while (RDC.RD2_STAT_REG.B.RD2_INTERCONNECT_INTERFACE_DISABLE_STAT != 0)
    {
        tries++;
        if (tries > MAX_TRIES)
        {
            break;
        }
    }

    /**((volatile unsigned int *)0x4007ca00) = 0x3f; */
    S32G_GPR.PFE_COH_EN.B.DDR = true;
    S32G_GPR.PFE_COH_EN.B.HIF0 = true;
    S32G_GPR.PFE_COH_EN.B.HIF1 = true;
    S32G_GPR.PFE_COH_EN.B.HIF2 = true;
    S32G_GPR.PFE_COH_EN.B.HIF3 = true;
    S32G_GPR.PFE_COH_EN.B.UTIL = true;
    /* Setup EMAC modes */
    /**((volatile unsigned int *)0x4007ca04) = 0x111;*/
    S32G_GPR.PFE_EMACX_INTF_SEL.B.EMAC0 = 1;
    S32G_GPR.PFE_EMACX_INTF_SEL.B.EMAC1 = 1;
    S32G_GPR.PFE_EMACX_INTF_SEL.B.EMAC2 = 1;
    /* Enable power for PFE */
    /**((volatile unsigned int *)0x4007ca20) = 0x0; */
    S32G_GPR.PFE_PWR_CTRL.B.PWRACK = 0;
    S32G_GPR.PFE_PWR_CTRL.B.PWRCLAMP = 0;
    S32G_GPR.PFE_PWR_CTRL.B.PWRDWN = 0;
    S32G_GPR.PFE_PWR_CTRL.B.PWRISO = 0;

    /* Put PFE in reset */
    /**((volatile unsigned int *)0x40078050) = 0x1; */
    MC_RGM.PRST_0[2].PRST_0.B.PERIPH_0_RST = 1;

    tries = 0;
    while (MC_RGM.PSTAT_0[2].PSTAT_0.B.PERIPH_0_STAT != 1)
    {
        tries++;
        if (tries > MAX_TRIES)
        {
            break;
        }
    }    

    /**((volatile unsigned int *)0x4007caE4) = 0x0; */
    S32G_GPR.GENCTRL1.B.CTRL = 0;

    /* Take the PFE out of reset */
    /**((volatile unsigned int *)0x40078050) = 0x0; */
    MC_RGM.PRST_0[2].PRST_0.B.PERIPH_0_RST = 0;

    MC_ME.PRTN2_PCONF.B.OSSE = 1;
    MC_ME.PRTN2_PCONF.B.PCE = 1;

    MC_ME.PRTN2_PUPD.B.OSSUD = 1;
    MC_ME.PRTN2_PUPD.B.PCUD = 1;
   
    /* Tell hardware to check above registers for changes */
    Write_Control_Key();
   
    tries = 0;
    while (MC_RGM.PSTAT_0[2].PSTAT_0.B.PERIPH_0_STAT != 0)
    {
        tries++;
        if (tries > MAX_TRIES)
        {
            break;
        }
    }

    /**((volatile unsigned int *)0x4007caE4) = 0x1; */
    S32G_GPR.GENCTRL1.B.CTRL = 1;
    /* Setup & Enable the PFE Sys Clock */
    /* See above clocking images */

    /* Setup and Enable the PFE PE Clock */
    /* *((volatile unsigned int *)0x4007ca44) = 0x0; */
    S32G_GPR.LLCE_CTRL.B.EXEVENT = 0;
    S32G_GPR.LLCE_CTRL.B.LINDIVSEL = 0;
    S32G_GPR.LLCE_CTRL.B.LLCE_HTM0_TRC_DIS = 0;
    S32G_GPR.LLCE_CTRL.B.LLCE_HTM1_TRC_DIS = 0;
    S32G_GPR.LLCE_CTRL.B.LLCE_LSPI_TRIG_IN = 0;
    S32G_GPR.LLCE_CTRL.B.PFE_2_LLCE_INT_HS_BP = 0;

    /* Take the PFE out of reset */
    /**((volatile unsigned int *)0x40078050) = 0x0; */
    MC_RGM.PRST_0[2].PRST_0.B.PERIPH_0_RST = 0;                  

    MC_ME.PRTN2_PCONF.B.OSSE = 1;
    MC_ME.PRTN2_PCONF.B.PCE = 1;

    MC_ME.PRTN2_PUPD.B.OSSUD = 1;
    MC_ME.PRTN2_PUPD.B.PCUD = 1;
   

    /* Tell hardware to check above registers for changes */
    Write_Control_Key();

    tries = 0;
    while (MC_RGM.PSTAT_0[2].PSTAT_0.B.PERIPH_0_STAT != 0)
    {
        tries++;
        if (tries > MAX_TRIES)
        {
            break;
        }

    }

    MC_ME.PRTN2_PCONF.B.OSSE = 0;
    MC_ME.PRTN2_PCONF.B.PCE = 1;

    MC_ME.PRTN2_PUPD.B.OSSUD = 1;
    MC_ME.PRTN2_PUPD.B.PCUD = 1;
   

    /* Tell hardware to check above registers for changes */
    Write_Control_Key();
   
    tries = 0;
    while (MC_RGM.PSTAT_0[2].PSTAT_0.B.PERIPH_0_STAT != 0)
    {
        tries++;
        if (tries > MAX_TRIES)
        {
            break;
        }        
    }
   
    /**((volatile unsigned int *)0x4007caE4) = 0x1; */
    S32G_GPR.GENCTRL1.B.CTRL = 1;
    /* Setup EMAC Tx/RX clocks */
    /* *((volatile unsigned int *)0x4007caE0) = 0x0; */
    S32G_GPR.GENCTRL0.B.ACCEL_FLXNC_RD0_IDLEREQ = 0; /* normal operation */
    S32G_GPR.GENCTRL0.B.ACCEL_FLXNC_REF_DIV = 0; /* Divide by 2 */
    S32G_GPR.GENCTRL0.B.USBPWRFLT = 0;    
}
 
After the above code is running I can read and write to all the PFE GMACs,,,

PFE EMAC0 base - 0x460A0000

0x460A011C-0x460A0128

PFE EMAC1 base - 0x460A4000 

0x460A411C-0x460A4128

PFE EMAC2 base - 0x460A8000

0x460A811C-0x460A8128

0 Kudos
Reply
1,531 Views
alejandro_e
NXP TechSupport
NXP TechSupport

Hello @aaronbaranoff,

Thanks a lot for sharing your solution. I have received information from the internal team, please check the following sections of the S32G2 reference manual [S32G2 Reference Manual, Rev. 8, February 2024]:

  • 28.12.4 Software reset partition turn-on flowchart
  • 28.12.7 PFE software reset partition turn-on flowchart
  • 23.1.2.7 Other clocks
    • 23.1.2.7.1 PFE_MAC_0 clocking overview
    • 23.1.2.7.2 PFE_MAC_1 clocking overview
    • 23.1.2.7.3 PFE_MAC_2 clocking overview

I apologize for the late solution, I was not aware of that information in the reference manual.

 

Since you already selected an answer as a solution, if you have more questions please create a new post in this community.

 

Thanks

0 Kudos
Reply
1,693 Views
aaronbaranoff
Contributor III

Here is a specific question address 0x40078050 after I have taken it out of reset read 0x1fe (lsb is 0 as expected). But 0x40078150 the status is 0x1ff (lsb is showing the PFE is still in reset). So the Peripheral Reset show it is out of reset but the status shows it is still in reset. Why? 

My clocks for the PFE are at defaults.

0 Kudos
Reply
1,674 Views
alejandro_e
NXP TechSupport
NXP TechSupport

Hello @aaronbaranoff,

I checked the code of pfeng, Linux and PFE MCAL and I have found nothing relevant regarding your problem. I will share this topic with the internal team for better support, this may take a while depending on their workload. If possible during that time, please check the examples I mentioned in the FCI manual and monitor these registers.

Is this causing any other problem? this is, any functional problem? other than interfering with the logic of your implementation.

 

Thanks in advance for your patience.

0 Kudos
Reply
1,708 Views
aaronbaranoff
Contributor III

This is my latest sequence (does not work yet) but, I think I am close. Please take a look and see if I am missing anything...

 

    /* Setup DMA coherency */

    /**((volatile unsigned int *)0x4007ca00) = 0x3f; */

    S32G_GPR.PFE_COH_EN.B.DDR = true;

    S32G_GPR.PFE_COH_EN.B.HIF0 = true;

    S32G_GPR.PFE_COH_EN.B.HIF1 = true;

    S32G_GPR.PFE_COH_EN.B.HIF2 = true;

    S32G_GPR.PFE_COH_EN.B.HIF3 = true;

    S32G_GPR.PFE_COH_EN.B.UTIL = true;

    /* Setup EMAC modes */

    /**((volatile unsigned int *)0x4007ca04) = 0x111;*/

    S32G_GPR.PFE_EMACX_INTF_SEL.B.EMAC0 = 1;

    S32G_GPR.PFE_EMACX_INTF_SEL.B.EMAC1 = 1;

    S32G_GPR.PFE_EMACX_INTF_SEL.B.EMAC2 = 1;

    /* Enable power for PFE */

    /**((volatile unsigned int *)0x4007ca20) = 0x0; */

    S32G_GPR.PFE_PWR_CTRL.B.PWRACK = 0;

    S32G_GPR.PFE_PWR_CTRL.B.PWRCLAMP = 0;

    S32G_GPR.PFE_PWR_CTRL.B.PWRDWN = 0;

    S32G_GPR.PFE_PWR_CTRL.B.PWRISO = 0;

 

    /* Put PFE in reset */

    /**((volatile unsigned int *)0x40078050) = 0x1; */

    MC_RGM.PRST_0[2].PRST_0.B.PERIPH_0_RST = 1;

    /**((volatile unsigned int *)0x4007caE4) = 0x0; */

    S32G_GPR.GENCTRL1.B.CTRL = 0;

    /* Take the PFE out of reset */

    /**((volatile unsigned int *)0x40078050) = 0x0; */

    MC_RGM.PRST_0[2].PRST_0.B.PERIPH_0_RST = 0;

    /**((volatile unsigned int *)0x4007caE4) = 0x1; */

    S32G_GPR.GENCTRL1.B.CTRL = 1;

    /* Setup & Enable the PFE Sys Clock */

    /* See above clocking images */

 

    /* Setup and Enable the PFE PE Clock */

    /* *((volatile unsigned int *)0x4007ca44) = 0x0; */

    S32G_GPR.LLCE_CTRL.B.EXEVENT = 0;

    S32G_GPR.LLCE_CTRL.B.LINDIVSEL = 0;

    S32G_GPR.LLCE_CTRL.B.LLCE_HTM0_TRC_DIS = 0;

    S32G_GPR.LLCE_CTRL.B.LLCE_HTM1_TRC_DIS = 0;

    S32G_GPR.LLCE_CTRL.B.LLCE_LSPI_TRIG_IN = 0;

    S32G_GPR.LLCE_CTRL.B.PFE_2_LLCE_INT_HS_BP = 0;

 

    /* Take the PFE out of reset */

    /**((volatile unsigned int *)0x40078050) = 0x0; */

    MC_RGM.PRST_0[2].PRST_0.B.PERIPH_0_RST = 0;

    /**((volatile unsigned int *)0x4007caE4) = 0x1; */

    S32G_GPR.GENCTRL1.B.CTRL = 1;

    /* Setup EMAC Tx/RX clocks */

    /* *((volatile unsigned int *)0x4007caE0) = 0x0; */

    S32G_GPR.GENCTRL0.B.ACCEL_FLXNC_RD0_IDLEREQ = 0; /* normal operation */

    S32G_GPR.GENCTRL0.B.ACCEL_FLXNC_REF_DIV = 0; /* Divide by 2 */

    S32G_GPR.GENCTRL0.B.USBPWRFLT = 0;    

Verifying this is correct while trying to read the addresses below.

 

After that read memory…

PFE EMAC0 base - 0x460A0000

0x460A011C-0x460A0128

PFE EMAC1 base - 0x460A4000 

0x460A411C-0x460A4128

PFE EMAC2 base - 0x460A8000

0x460A811C-0x460A8128

0 Kudos
Reply
1,705 Views
alejandro_e
NXP TechSupport
NXP TechSupport

Hello @aaronbaranoff,

Sorry for the late reply. Although I can help you with specific problem you may encounter during your development process, it is outside of the scope of the support we to guide you in your own implementation. As you already know we already offer some implementation, from my perspective the best is to use the FCI (Fast Control Interface), you can get the document from the PFE MCAL package I helped you get in previous tickets.

The FCI API Reference includes many examples on how to implement different use cases, such as: demo feature physical interface, demo feature L2 bridge vlandemo feature router simple, and many more, please check section 18 Examples. Although it is in a somewhat inconvenient format, you just need to copy and paste the C code in the pdf into a .c file and it should work. You can get the init sequence from any of the demos.

You will need to check the following sections for all the details on the API:

  • 12 Commands
  • 13 Events
  • 14 Functions
  • 15 Structs
  • 16 Enums
  • 17 Miscellaneous symbols

All the code in those sections is already in header or source files in the PFE MCAL package.

To get the best support I would not recommend using PFE in a entirely bare-metal project, using the FCI API, in particular in the A53, should not cause a noticeable overhead and it comes with the advantage that it is a tested API.

 

Please let me know if you encounter any problem when using the examples

 

0 Kudos
Reply
1,724 Views
aaronbaranoff
Contributor III

This is my latest...

Clocking needs (not all instantly but eventually).

aaronbaranoff_0-1755021811115.png

 

aaronbaranoff_1-1755021811139.png

 

#define PFE_CLK_SYS_RATE 300000000

Therefore PFE_PE_CLK should be 600000000

From my continuing efforts... 

  • Setup DMA coherency
    *((volatile uint32 *)0x4007ca00) = 0x3f;
  • Setup EMAC modes
    *((volatile uint32 *)0x4007ca04) = 0x111;
  • Enable power for PFE
    *((volatile uint32 *)0x4007ca20) = 0x0;
  • Put PFE in reset
    *((volatile uint32 *)0x40078150) = 0x1;
    *((volatile uint32 *)0x4007caE4) = 0x0;
  • Take the PFE out of reset
    *((volatile uint32 *)0x40078150) = 0x0;
    *((volatile uint32 *)0x4007caE4) = 0x1;
  • Setup & Enable the PFE Sys Clock
    See above clocking images
  • Setup the PFE PE Clock
    *((volatile uint32 *)0x4007ca44) = 0x0;
  • Enable the PFE PE Clock
    *((volatile uint32 *)0x4007ca44) = 0x0;
  • Take the PFE out of reset
    *((volatile uint32 *)0x40078150) = 0x0;
    *((volatile uint32 *)0x4007caE4) = 0x1;
  • Setup EMAC Tx/RX clocks
    *((volatile uint32 *)0x4007caE0) = 0x0;
  • Setup PFE PTP clock (not needed I believe)

Does this look correct? The PFE Sys I am not sure of the registers needed to setup the clock yet and I am not sure I am making the correct choices for the reset control and if the PTP clock is even needed in our mode. Any missing steps or order? This is all before I can talk to the PFE GMAC registers, correct?

 

 

0 Kudos
Reply
1,729 Views
aaronbaranoff
Contributor III

One more update...

Clocking needs (not all instantly but eventually).

aaronbaranoff_0-1755012958197.png

 

aaronbaranoff_1-1755012958198.png

 

#define PFE_CLK_SYS_RATE 300000000

Therefore PFE_PE_CLK should be 600000000

From my continuing efforts... 

  • Setup DMA coherency
    *((volatile uint32 *)0x4007ca00) = 0x3f;
  • Setup EMAC modes
    *((volatile uint32 *)0x4007ca04) = 0x111;
  • Enable power for PFE
    *((volatile uint32 *)0x4007ca20) = 0x0;
  • Put PFE in reset
    *((volatile uint32 *)0x4007caE4) = 0x1;
  • Take the PFE out of reset
    *((volatile uint32 *)0x4007caE4) = 0x0;
  • Setup & Enable the PFE Sys Clock
    See above clocking images
  • Setup the PFE PE Clock
    *((volatile uint32 *)0x4007ca44) = 0x0;
  • Enable the PFE PE Clock
    *((volatile uint32 *)0x4007ca44) = 0x0;
  • Take the PFE out of reset
    *((volatile uint32 *)0x4007caE4) = 0x1;
  • Setup EMAC Tx/RX clocks
    *((volatile uint32 *)0x4007caE0) = 0x0;
  • Setup PFE PTP clock (not needed I believe)

Does this look correct? The PFE Sys I am not sure of the registers needed to setup the clock yet and I am not sure I am making the correct choices for the reset control and if the PTP clock is even needed in our mode, Any missing steps or order? This is all before I can talk to the PFE GMAC registers correct?

0 Kudos
Reply
1,792 Views
alejandro_e
NXP TechSupport
NXP TechSupport

Hello @aaronbaranoff

Thanks for contacting us again and sorry for the late reply.

Regarding your problem, do you mena that you cannot read any of the address space for the three PFE EMACs? this is, from 0x00 to 0x136C for all three base addresses. 

 

if you are not performing any kind of initialization nor clock configuration you can check how it is done in the Linux library we offer, you can start where the driver gets probed pfeng-drv.c#L359.

 

You can also flash one of the precompiled Linux BSP we offer (since they include the PFE FW), stop the boot in u-boot and then dump the memory for the interested ranges with the md command, this way you can check the statuses of the registers after the initialization of the PFE emacs.

Please also check the BSP user manual and PFE documentation available in the same FlexNet page in which you can download the binaries.

 

Let me know if you have more questions.

0 Kudos
Reply
1,772 Views
aaronbaranoff
Contributor III

I need the devicetree for linux for be to follow the code. Where can I find that?

Looks like I need to take out of reset and power up the interface and setup the clock (although problay not for the register interface). However to determine the addresses I need the devicetree that defines the reset and power up addresses.
 
I don't seem to have the devicetree for the S32G2. Remember we are not using u-boot or linix so, I just using them as a guide.
 
Simply, I might dump the registers if I knew which ones to dump. But, the linux driver refers to the devicetree that I pretty sure I don't have I can't find 
"pfe_sys"
"pfe_part"
"pfe_pe"
...
 
Even better, would be If there was a register definition and sequence documented for the PFE GMAC bring ups.
 
Aaron
 
 

 

0 Kudos
Reply
1,768 Views
alejandro_e
NXP TechSupport
NXP TechSupport

Hello @aaronbaranoff,

I apologize but the PFE documentation is not public and I have no control over that decision.

You are correct, the device tree node is not present in the pfen repo, it is present in the Linux repo, here is the link: /arch/arm64/boot/dts/freescale/s32g-pfe.dtsi.

I am aware that your are not using Linux nor u-boot, however, I can only refer to those in my recommendations as that is what we officially support.

 

Let me know if you have more questions

0 Kudos
Reply
1,739 Views
aaronbaranoff
Contributor III

I realize it is not you personally. It just seems bizzare and bad choice and slows our progress that the documention is not public (or behind a simple NDA or similiar). Instead I have to extract it from linux source which is not always the most straight forward way to do things. I am thinking we are not the 1st to do this. I was hoping there was a better way or someone else has done this before.

Until then I have just pulled the sources linux down so can do this.

From the probe I have the following to do (after I reverse engineer the addresses and the bits)...

  • Enable power for PFE
  • Put PFE in reset 
  • Setup the PFE Sys Clock
  • Enable the PFE Sys Clock
  • Setup the PFE PE Clock
  • Enable the PFE PE Clock
  • Take the PFE out of reset
  • Setup  EMAC Tx/RX clocks
  • Setup PFE PTP clock

Does this look correct? Any missing steps or order?

The addresses seems they start at 0x46000000. I have written device tree info for linux but going from a device tree back the other direction is an ugly process. 

By the way we do have NDAs with NXP if that helps. 

Aaron 

0 Kudos
Reply
1,737 Views
aaronbaranoff
Contributor III

From my continuing efforts... 

  • Setup DMA coherency
    *((volatile uint32 *)0x4007ca00) = 0x3f;
  • Setup EMAC modes
    *((volatile uint32 *)0x4007ca04) = 0x111;
  • Enable power for PFE
    *((volatile uint32 *)0x4007ca20) = 0x0;
  • Put PFE in reset 
    *((volatile uint32 *)0x4007caE4) = 0x0;
  • Take the PFE out of reset
    *((volatile uint32 *)0x4007caE4) = 0x1;
  • Setup the PFE Sys Clock
  • Enable the PFE Sys Clock
  • Setup the PFE PE Clock

*((volatile uint32 *)0x4007ca44) = 0x0;

  • Enable the PFE PE Clock

*((volatile uint32 *)0x4007ca44) = 0x0;

  • Take the PFE out of reset

*((volatile uint32 *)0x4007caE4) = 0x1;

  • Setup  EMAC Tx/RX clocks

*((volatile uint32 *)0x4007caE0) = 0x0;

  • Setup PFE PTP clock

Does this look correct? The PFE Sys I am not sure of the registers needed to setup the clock yet and I am not sure I am making the correct choices for the reset control and if the PTP clock is even needed in our mode, Any missing steps or order? This is all before I can talk to the PFE GMAC registers correct?

0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2148554%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EAccess%20PFE%20MAC%20addresses%20via%20A53%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2148554%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EI%20am%20trying%20to%20talk%20to%20the%20PFE_MAC0%20and%203%20directly%20from%20the%20A53%20(bare%20bones%20access).%20I%20was%20given%20the%20follow%20addresses%20and%20I%20am%20verifiying%20they%20are%20correct.%20The%20memory%20map%20in%20the%20reference%20manual%20seems%20to%20imply%20that%20they%20should%20be%20valid.%20I%20try%20to%20look%20at%20addresses%20via%20the%20debugger%20and%20before%20the%20MMU%20was%20enabled%20to%20verify%20I%20have%20the%20correct%20addresses.%3C%2FP%3E%3CP%3EPFE%20EMAC0%20base%20-%200x460A0000%3C%2FP%3E%3CP%3E0x460A011C-0x460A0128%3C%2FP%3E%3CP%3EPFE%20EMAC1%20base%20-%200x460A4000%26nbsp%3B%3C%2FP%3E%3CP%3E0x460A411C-0x460A4128%3C%2FP%3E%3CP%3EPFE%20EMAC2%20base%20-%200x460A8000%3C%2FP%3E%3CP%3E0x460A811C-0x460A8128%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22aaronbaranoff_0-1754579681107.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22aaronbaranoff_0-1754579681107.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F351429i67CFACCA21E7EB93%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22aaronbaranoff_0-1754579681107.png%22%20alt%3D%22aaronbaranoff_0-1754579681107.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3EI%20get%20nothing%20back%20(not%20even%200s).%20So%2C%20is%20the%20address%20you%20gave%20me%20valid%20for%20the%20A53%20or%20do%20I%20need%20to%20enable%20something%20first%20to%20get%20access.%20What%20am%20I%20missing%3F%20Enables%3F%20Clocks%3F%26nbsp%3B%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2153809%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Access%20PFE%20MAC%20addresses%20via%20A53%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2153809%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F246004%22%20target%3D%22_blank%22%3E%40aaronbaranoff%3C%2FA%3E%2C%3C%2FP%3E%0A%3CP%3EThanks%20a%20lot%20for%20sharing%20your%20solution.%20I%20have%20received%20information%20from%20the%20internal%20team%2C%20please%20check%20the%20following%20sections%20of%20the%20S32G2%20reference%20manual%20%5BS32G2%20Reference%20Manual%2C%20Rev.%208%2C%20February%202024%5D%3A%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E28.12.4%20Software%20reset%20partition%20turn-on%20flowchart%3C%2FLI%3E%0A%3CLI%3E28.12.7%20PFE%20software%20reset%20partition%20turn-on%20flowchart%3C%2FLI%3E%0A%3CLI%3E23.1.2.7%20Other%20clocks%0A%3CUL%3E%0A%3CLI%3E23.1.2.7.1%20PFE_MAC_0%20clocking%20overview%3C%2FLI%3E%0A%3CLI%3E23.1.2.7.2%20PFE_MAC_1%20clocking%20overview%3C%2FLI%3E%0A%3CLI%3E23.1.2.7.3%20PFE_MAC_2%20clocking%20overview%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3EI%20apologize%20for%20the%20late%20solution%2C%20I%20was%20not%20aware%20of%20that%20information%20in%20the%20reference%20manual.%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3ESince%20you%20already%20selected%20an%20answer%20as%20a%20solution%2C%20if%20you%20have%20more%20questions%20please%20create%20a%20new%20post%20in%20this%20community.%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3EThanks%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2153782%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Access%20PFE%20MAC%20addresses%20via%20A53%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2153782%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EThis%20sequence%20works%20to%20save%20the%20pain%20for%20the%20next%20person....%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CDIV%3E%3CDIV%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3EMAX_TRIES%3C%2FSPAN%3E%20%3CSPAN%3E100%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3EFSBL_pfe_init%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Enable%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Setup%20DMA%20coherency%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Evolatile%3C%2FSPAN%3E%20%3CSPAN%3Euint32_t%3C%2FSPAN%3E%20%3CSPAN%3Etries%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ERDC%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ERD2_CTRL_REG%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ERD2_CTRL_UNLOCK%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ERDC%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ERD2_CTRL_REG%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ERD2_INTERCONNECT_INTERFACE_DISABLE%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3ERDC%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ERD2_STAT_REG%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ERD2_INTERCONNECT_INTERFACE_DISABLE_REQ_ACK_STAT%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%20)%20%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%3CSPAN%3E%2B%2B%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%20%3CSPAN%3E%26gt%3B%3C%2FSPAN%3E%20%3CSPAN%3EMAX_TRIES%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ebreak%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3ERDC%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ERD2_STAT_REG%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ERD2_INTERCONNECT_INTERFACE_DISABLE_STAT%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E)%20%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%3CSPAN%3E%2B%2B%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%20%3CSPAN%3E%26gt%3B%3C%2FSPAN%3E%20%3CSPAN%3EMAX_TRIES%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ebreak%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x4007ca00)%20%3D%200x3f%3B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPFE_COH_EN%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EDDR%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPFE_COH_EN%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EHIF0%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPFE_COH_EN%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EHIF1%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPFE_COH_EN%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EHIF2%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPFE_COH_EN%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EHIF3%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPFE_COH_EN%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EUTIL%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Setup%20EMAC%20modes%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x4007ca04)%20%3D%200x111%3B*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPFE_EMACX_INTF_SEL%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EEMAC0%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPFE_EMACX_INTF_SEL%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EEMAC1%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPFE_EMACX_INTF_SEL%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EEMAC2%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Enable%20power%20for%20PFE%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x4007ca20)%20%3D%200x0%3B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPFE_PWR_CTRL%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPWRACK%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPFE_PWR_CTRL%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPWRCLAMP%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPFE_PWR_CTRL%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPWRDWN%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPFE_PWR_CTRL%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPWRISO%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Put%20PFE%20in%20reset%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x40078050)%20%3D%200x1%3B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EMC_RGM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPRST_0%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3E2%3C%2FSPAN%3E%3CSPAN%3E%5D.%3C%2FSPAN%3E%3CSPAN%3EPRST_0%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPERIPH_0_RST%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3EMC_RGM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPSTAT_0%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3E2%3C%2FSPAN%3E%3CSPAN%3E%5D.%3C%2FSPAN%3E%3CSPAN%3EPSTAT_0%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPERIPH_0_STAT%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%3CSPAN%3E%2B%2B%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%20%3CSPAN%3E%26gt%3B%3C%2FSPAN%3E%20%3CSPAN%3EMAX_TRIES%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ebreak%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7D%20%26nbsp%3B%20%26nbsp%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x4007caE4)%20%3D%200x0%3B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EGENCTRL1%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ECTRL%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Take%20the%20PFE%20out%20of%20reset%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x40078050)%20%3D%200x0%3B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EMC_RGM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPRST_0%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3E2%3C%2FSPAN%3E%3CSPAN%3E%5D.%3C%2FSPAN%3E%3CSPAN%3EPRST_0%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPERIPH_0_RST%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EMC_ME%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPRTN2_PCONF%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EOSSE%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EMC_ME%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPRTN2_PCONF%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPCE%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EMC_ME%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPRTN2_PUPD%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EOSSUD%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EMC_ME%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPRTN2_PUPD%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPCUD%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Tell%20hardware%20to%20check%20above%20registers%20for%20changes%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EWrite_Control_Key%3C%2FSPAN%3E%3CSPAN%3E()%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3EMC_RGM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPSTAT_0%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3E2%3C%2FSPAN%3E%3CSPAN%3E%5D.%3C%2FSPAN%3E%3CSPAN%3EPSTAT_0%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPERIPH_0_STAT%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%3CSPAN%3E%2B%2B%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%20%3CSPAN%3E%26gt%3B%3C%2FSPAN%3E%20%3CSPAN%3EMAX_TRIES%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ebreak%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7D%20%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x4007caE4)%20%3D%200x1%3B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EGENCTRL1%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ECTRL%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Setup%20%26amp%3B%20Enable%20the%20PFE%20Sys%20Clock%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20See%20above%20clocking%20images%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Setup%20and%20Enable%20the%20PFE%20PE%20Clock%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20*((volatile%20unsigned%20int%20*)0x4007ca44)%20%3D%200x0%3B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ELLCE_CTRL%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EEXEVENT%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ELLCE_CTRL%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ELINDIVSEL%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ELLCE_CTRL%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ELLCE_HTM0_TRC_DIS%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ELLCE_CTRL%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ELLCE_HTM1_TRC_DIS%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ELLCE_CTRL%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ELLCE_LSPI_TRIG_IN%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ELLCE_CTRL%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPFE_2_LLCE_INT_HS_BP%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Take%20the%20PFE%20out%20of%20reset%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x40078050)%20%3D%200x0%3B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EMC_RGM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPRST_0%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3E2%3C%2FSPAN%3E%3CSPAN%3E%5D.%3C%2FSPAN%3E%3CSPAN%3EPRST_0%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPERIPH_0_RST%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EMC_ME%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPRTN2_PCONF%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EOSSE%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EMC_ME%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPRTN2_PCONF%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPCE%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EMC_ME%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPRTN2_PUPD%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EOSSUD%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EMC_ME%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPRTN2_PUPD%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPCUD%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Tell%20hardware%20to%20check%20above%20registers%20for%20changes%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EWrite_Control_Key%3C%2FSPAN%3E%3CSPAN%3E()%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3EMC_RGM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPSTAT_0%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3E2%3C%2FSPAN%3E%3CSPAN%3E%5D.%3C%2FSPAN%3E%3CSPAN%3EPSTAT_0%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPERIPH_0_STAT%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%3CSPAN%3E%2B%2B%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%20%3CSPAN%3E%26gt%3B%3C%2FSPAN%3E%20%3CSPAN%3EMAX_TRIES%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ebreak%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EMC_ME%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPRTN2_PCONF%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EOSSE%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EMC_ME%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPRTN2_PCONF%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPCE%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EMC_ME%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPRTN2_PUPD%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EOSSUD%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EMC_ME%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPRTN2_PUPD%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPCUD%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Tell%20hardware%20to%20check%20above%20registers%20for%20changes%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EWrite_Control_Key%3C%2FSPAN%3E%3CSPAN%3E()%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ewhile%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3EMC_RGM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPSTAT_0%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3E2%3C%2FSPAN%3E%3CSPAN%3E%5D.%3C%2FSPAN%3E%3CSPAN%3EPSTAT_0%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EPERIPH_0_STAT%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%3CSPAN%3E%2B%2B%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3Etries%3C%2FSPAN%3E%20%3CSPAN%3E%26gt%3B%3C%2FSPAN%3E%20%3CSPAN%3EMAX_TRIES%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ebreak%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x4007caE4)%20%3D%200x1%3B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EGENCTRL1%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ECTRL%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Setup%20EMAC%20Tx%2FRX%20clocks%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20*((volatile%20unsigned%20int%20*)0x4007caE0)%20%3D%200x0%3B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EGENCTRL0%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EACCEL_FLXNC_RD0_IDLEREQ%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CSPAN%3E%20%2F*%20normal%20operation%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EGENCTRL0%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EACCEL_FLXNC_REF_DIV%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CSPAN%3E%20%2F*%20Divide%20by%202%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ES32G_GPR%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EGENCTRL0%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EB%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EUSBPWRFLT%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%20%26nbsp%3B%20%26nbsp%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%3CSPAN%3EAfter%20the%20above%20code%20is%20running%20I%20can%20read%20and%20write%20to%20all%20the%20PFE%20GMACs%2C%2C%2C%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CP%3EPFE%20EMAC0%20base%20-%200x460A0000%3C%2FP%3E%3CP%3E0x460A011C-0x460A0128%3C%2FP%3E%3CP%3EPFE%20EMAC1%20base%20-%200x460A4000%26nbsp%3B%3C%2FP%3E%3CP%3E0x460A411C-0x460A4128%3C%2FP%3E%3CP%3EPFE%20EMAC2%20base%20-%200x460A8000%3C%2FP%3E%3CP%3E0x460A811C-0x460A8128%3C%2FP%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2152565%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Access%20PFE%20MAC%20addresses%20via%20A53%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2152565%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F246004%22%20target%3D%22_blank%22%3E%40aaronbaranoff%3C%2FA%3E%2C%3C%2FP%3E%0A%3CP%3EI%20checked%20the%20code%20of%20pfeng%2C%20Linux%20and%20PFE%20MCAL%20and%20I%20have%20found%20nothing%20relevant%20regarding%20your%20problem.%20I%20will%20share%20this%20topic%20with%20the%20internal%20team%20for%20better%20support%2C%20this%20may%20take%20a%20while%20depending%20on%20their%20workload.%20If%20possible%20during%20that%20time%2C%20please%20check%20the%20examples%20I%20mentioned%20in%20the%20FCI%20manual%20and%20monitor%20these%20registers.%3C%2FP%3E%0A%3CP%3EIs%20this%20causing%20any%20other%20problem%3F%20this%20is%2C%20any%20functional%20problem%3F%20other%20than%20interfering%20with%20the%20logic%20of%20your%20implementation.%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3EThanks%20in%20advance%20for%20your%20patience.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2152364%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Access%20PFE%20MAC%20addresses%20via%20A53%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2152364%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHere%20is%20a%20specific%20question%20address%200x40078050%20after%20I%20have%20taken%20it%20out%20of%20reset%20read%200x1fe%20(lsb%20is%200%20as%20expected).%20But%200x40078150%20the%20status%20is%200x1ff%20(lsb%20is%20showing%20the%20PFE%20is%20still%20in%20reset).%20So%20the%20Peripheral%20Reset%20show%20it%20is%20out%20of%20reset%20but%20the%20status%20shows%20it%20is%20still%20in%20reset.%20Why%3F%26nbsp%3B%3C%2FP%3E%3CP%3EMy%20clocks%20for%20the%20PFE%20are%20at%20defaults.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2151859%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Access%20PFE%20MAC%20addresses%20via%20A53%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2151859%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F246004%22%20target%3D%22_blank%22%3E%40aaronbaranoff%3C%2FA%3E%2C%3C%2FP%3E%0A%3CP%3ESorry%20for%20the%20late%20reply.%20Although%20I%20can%20help%20you%20with%20specific%20problem%20you%20may%20encounter%20during%20your%20development%20process%2C%20it%20is%20outside%20of%20the%20scope%20of%20the%20support%20we%20to%20guide%20you%20in%20your%20own%20implementation.%20As%20you%20already%20know%20we%20already%20offer%20some%20implementation%2C%20from%20my%20perspective%20the%20best%20is%20to%20use%20the%20FCI%20(Fast%20Control%20Interface)%2C%20you%20can%20get%20the%20document%20from%20the%20PFE%20MCAL%20package%20I%20helped%20you%20get%20in%20previous%20tickets.%3C%2FP%3E%0A%3CP%3EThe%20FCI%20API%20Reference%20includes%20many%20examples%20on%20how%20to%20implement%20different%20use%20cases%2C%20such%20as%3A%20%3CEM%3Edemo%20feature%20physical%20interface%3C%2FEM%3E%2C%20%3CEM%3Edemo%20feature%20L2%20bridge%20vlan%3C%2FEM%3E%2C%26nbsp%3B%3CEM%3Edemo%20feature%20router%20simple%3C%2FEM%3E%2C%20and%20many%20more%2C%20please%20check%20section%26nbsp%3B%3CSTRONG%3E18%20Examples%3C%2FSTRONG%3E.%20Although%20it%20is%20in%20a%20somewhat%20inconvenient%20format%2C%20you%20just%20need%20to%20copy%20and%20paste%20the%20C%20code%20in%20the%20pdf%20into%20a%20.c%20file%20and%20it%20should%20work.%20You%20can%20get%20the%20init%20sequence%20from%20any%20of%20the%20demos.%3C%2FP%3E%0A%3CP%3EYou%20will%20need%20to%20check%20the%20following%20sections%20for%20all%20the%20details%20on%20the%20API%3A%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%3CFONT%20size%3D%224%22%3E12%20Commands%3C%2FFONT%3E%3C%2FLI%3E%0A%3CLI%3E%3CFONT%20size%3D%224%22%3E13%20Events%3C%2FFONT%3E%3C%2FLI%3E%0A%3CLI%3E%3CFONT%20size%3D%224%22%3E14%20Functions%3C%2FFONT%3E%3C%2FLI%3E%0A%3CLI%3E%3CFONT%20size%3D%224%22%3E15%20Structs%3C%2FFONT%3E%3C%2FLI%3E%0A%3CLI%3E%3CFONT%20size%3D%224%22%3E16%20Enums%3C%2FFONT%3E%3C%2FLI%3E%0A%3CLI%3E%3CFONT%20size%3D%224%22%3E17%20Miscellaneous%20symbols%3C%2FFONT%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%3CFONT%20size%3D%224%22%3EAll%20the%20code%20in%20those%20sections%20is%20already%20in%20header%20or%20source%20files%20in%20the%20PFE%20MCAL%20package.%3C%2FFONT%3E%3C%2FP%3E%0A%3CP%3ETo%20get%20the%20best%20support%20I%20would%20not%20recommend%20using%20PFE%20in%20a%20entirely%20bare-metal%20project%2C%20using%20the%20FCI%20API%2C%20in%20particular%20in%20the%20A53%2C%20should%20not%20cause%20a%20noticeable%20overhead%20and%20it%20comes%20with%20the%20advantage%20that%20it%20is%20a%20tested%20API.%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3EPlease%20let%20me%20know%20if%20you%20encounter%20any%20problem%20when%20using%20the%20examples%3C%2FP%3E%0A%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2151802%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Access%20PFE%20MAC%20addresses%20via%20A53%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2151802%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EThis%20is%20my%20latest%20sequence%20(does%20not%20work%20yet)%20but%2C%20I%20think%20I%20am%20close.%20Please%20take%20a%20look%20and%20see%20if%20I%20am%20missing%20anything...%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Setup%20DMA%20coherency%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x4007ca00)%20%3D%200x3f%3B%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.PFE_COH_EN.B.DDR%20%3D%20true%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.PFE_COH_EN.B.HIF0%20%3D%20true%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.PFE_COH_EN.B.HIF1%20%3D%20true%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.PFE_COH_EN.B.HIF2%20%3D%20true%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.PFE_COH_EN.B.HIF3%20%3D%20true%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.PFE_COH_EN.B.UTIL%20%3D%20true%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Setup%20EMAC%20modes%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x4007ca04)%20%3D%200x111%3B*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.PFE_EMACX_INTF_SEL.B.EMAC0%20%3D%201%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.PFE_EMACX_INTF_SEL.B.EMAC1%20%3D%201%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.PFE_EMACX_INTF_SEL.B.EMAC2%20%3D%201%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Enable%20power%20for%20PFE%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x4007ca20)%20%3D%200x0%3B%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.PFE_PWR_CTRL.B.PWRACK%20%3D%200%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.PFE_PWR_CTRL.B.PWRCLAMP%20%3D%200%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.PFE_PWR_CTRL.B.PWRDWN%20%3D%200%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.PFE_PWR_CTRL.B.PWRISO%20%3D%200%3B%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Put%20PFE%20in%20reset%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x40078050)%20%3D%200x1%3B%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20MC_RGM.PRST_0%5B2%5D.PRST_0.B.PERIPH_0_RST%20%3D%201%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x4007caE4)%20%3D%200x0%3B%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.GENCTRL1.B.CTRL%20%3D%200%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Take%20the%20PFE%20out%20of%20reset%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x40078050)%20%3D%200x0%3B%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20MC_RGM.PRST_0%5B2%5D.PRST_0.B.PERIPH_0_RST%20%3D%200%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x4007caE4)%20%3D%200x1%3B%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.GENCTRL1.B.CTRL%20%3D%201%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Setup%20%26amp%3B%20Enable%20the%20PFE%20Sys%20Clock%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20See%20above%20clocking%20images%20*%2F%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Setup%20and%20Enable%20the%20PFE%20PE%20Clock%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20*((volatile%20unsigned%20int%20*)0x4007ca44)%20%3D%200x0%3B%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.LLCE_CTRL.B.EXEVENT%20%3D%200%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.LLCE_CTRL.B.LINDIVSEL%20%3D%200%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.LLCE_CTRL.B.LLCE_HTM0_TRC_DIS%20%3D%200%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.LLCE_CTRL.B.LLCE_HTM1_TRC_DIS%20%3D%200%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.LLCE_CTRL.B.LLCE_LSPI_TRIG_IN%20%3D%200%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.LLCE_CTRL.B.PFE_2_LLCE_INT_HS_BP%20%3D%200%3B%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Take%20the%20PFE%20out%20of%20reset%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x40078050)%20%3D%200x0%3B%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20MC_RGM.PRST_0%5B2%5D.PRST_0.B.PERIPH_0_RST%20%3D%200%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F**((volatile%20unsigned%20int%20*)0x4007caE4)%20%3D%200x1%3B%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.GENCTRL1.B.CTRL%20%3D%201%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Setup%20EMAC%20Tx%2FRX%20clocks%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20*((volatile%20unsigned%20int%20*)0x4007caE0)%20%3D%200x0%3B%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.GENCTRL0.B.ACCEL_FLXNC_RD0_IDLEREQ%20%3D%200%3B%20%2F*%20normal%20operation%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.GENCTRL0.B.ACCEL_FLXNC_REF_DIV%20%3D%200%3B%20%2F*%20Divide%20by%202%20*%2F%3C%2FP%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20S32G_GPR.GENCTRL0.B.USBPWRFLT%20%3D%200%3B%20%26nbsp%3B%20%26nbsp%3B%3C%2FP%3E%3CP%3EVerifying%20this%20is%20correct%20while%20trying%20to%20read%20the%20addresses%20below.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3EAfter%20that%20read%20memory%E2%80%A6%3C%2FP%3E%3CP%3EPFE%20EMAC0%20base%20-%200x460A0000%3C%2FP%3E%3CP%3E0x460A011C-0x460A0128%3C%2FP%3E%3CP%3EPFE%20EMAC1%20base%20-%200x460A4000%26nbsp%3B%3C%2FP%3E%3CP%3E0x460A411C-0x460A4128%3C%2FP%3E%3CP%3EPFE%20EMAC2%20base%20-%200x460A8000%3C%2FP%3E%3CP%3E0x460A811C-0x460A8128%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2151073%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Access%20PFE%20MAC%20addresses%20via%20A53%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2151073%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EThis%20is%20my%20latest...%3C%2FP%3E%3CP%3EClocking%20needs%20(not%20all%20instantly%20but%20eventually).%3C%2FP%3E%3CP%20class%3D%22lia-indent-padding-left-30px%22%20style%3D%22padding-left%20%3A%2030px%3B%22%20style%3D%22padding-left%20%3A%2030px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22aaronbaranoff_0-1755021811115.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22aaronbaranoff_0-1755021811115.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F352046i7000B1D443A1BDD9%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22aaronbaranoff_0-1755021811115.png%22%20alt%3D%22aaronbaranoff_0-1755021811115.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20class%3D%22lia-indent-padding-left-30px%22%20style%3D%22padding-left%20%3A%2030px%3B%22%20style%3D%22padding-left%20%3A%2030px%3B%22%3E%26nbsp%3B%3C%2FP%3E%3CP%20class%3D%22lia-indent-padding-left-30px%22%20style%3D%22padding-left%20%3A%2030px%3B%22%20style%3D%22padding-left%20%3A%2030px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22aaronbaranoff_1-1755021811139.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22aaronbaranoff_1-1755021811139.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F352047i3CB7444EDE0CA306%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22aaronbaranoff_1-1755021811139.png%22%20alt%3D%22aaronbaranoff_1-1755021811139.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20class%3D%22lia-indent-padding-left-30px%22%20style%3D%22padding-left%20%3A%2030px%3B%22%20style%3D%22padding-left%20%3A%2030px%3B%22%3E%26nbsp%3B%3C%2FP%3E%3CP%20class%3D%22lia-indent-padding-left-30px%22%20style%3D%22padding-left%20%3A%2030px%3B%22%20style%3D%22padding-left%20%3A%2030px%3B%22%3E%23define%20PFE_CLK_SYS_RATE%20300000000%3C%2FP%3E%3CP%20class%3D%22lia-indent-padding-left-30px%22%20style%3D%22padding-left%20%3A%2030px%3B%22%20style%3D%22padding-left%20%3A%2030px%3B%22%3ETherefore%20PFE_PE_CLK%20should%20be%20600000000%3C%2FP%3E%3CP%3EFrom%20my%20continuing%20efforts...%26nbsp%3B%3C%2FP%3E%3CUL%3E%3CLI%3ESetup%20DMA%20coherency%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007ca00)%20%3D%200x3f%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3ESetup%20EMAC%20modes%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007ca04)%20%3D%200x111%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3EEnable%20power%20for%20PFE%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007ca20)%20%3D%200x0%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3EPut%20PFE%20in%20reset%3CBR%20%2F%3E*((volatile%20uint32%20*)0x40078150)%20%3D%200x1%3B%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007caE4)%20%3D%200x0%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3ETake%20the%20PFE%20out%20of%20reset%3CBR%20%2F%3E*((volatile%20uint32%20*)0x40078150)%20%3D%200x0%3B%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007caE4)%20%3D%200x1%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3ESetup%20%26amp%3B%20Enable%20the%20PFE%20Sys%20Clock%3CBR%20%2F%3ESee%20above%20clocking%20images%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3ESetup%20the%20PFE%20PE%20Clock%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007ca44)%20%3D%200x0%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3EEnable%26nbsp%3Bthe%20PFE%20PE%20Clock%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007ca44)%20%3D%200x0%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3ETake%20the%20PFE%20out%20of%20reset%3CBR%20%2F%3E*((volatile%20uint32%20*)0x40078150)%20%3D%200x0%3B%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007caE4)%20%3D%200x1%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3ESetup%26nbsp%3BEMAC%20Tx%2FRX%20clocks%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007caE0)%20%3D%200x0%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3ESetup%20PFE%20PTP%20clock%20(not%20needed%20I%20believe)%3C%2FLI%3E%3C%2FUL%3E%3CP%3EDoes%20this%20look%20correct%3F%20The%20PFE%20Sys%20I%20am%20not%20sure%20of%20the%20registers%20needed%20to%20setup%20the%20clock%20yet%20and%20I%20am%20not%20sure%20I%20am%20making%20the%20correct%20choices%20for%20the%20reset%20control%20and%20if%20the%20PTP%20clock%20is%20even%20needed%20in%20our%20mode.%20Any%20missing%20steps%20or%20order%3F%20This%20is%20all%20before%20I%20can%20talk%20to%20the%20PFE%20GMAC%20registers%2C%20correct%3F%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2150991%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Access%20PFE%20MAC%20addresses%20via%20A53%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2150991%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EOne%20more%20update...%3C%2FP%3E%3CP%3EClocking%20needs%20(not%20all%20instantly%20but%20eventually).%3C%2FP%3E%3CP%20class%3D%22lia-indent-padding-left-30px%22%20style%3D%22padding-left%20%3A%2030px%3B%22%20style%3D%22padding-left%20%3A%2030px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22aaronbaranoff_0-1755012958197.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22aaronbaranoff_0-1755012958197.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F352025iEC526D0C4E4C38F7%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22aaronbaranoff_0-1755012958197.png%22%20alt%3D%22aaronbaranoff_0-1755012958197.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20class%3D%22lia-indent-padding-left-30px%22%20style%3D%22padding-left%20%3A%2030px%3B%22%20style%3D%22padding-left%20%3A%2030px%3B%22%3E%26nbsp%3B%3C%2FP%3E%3CP%20class%3D%22lia-indent-padding-left-30px%22%20style%3D%22padding-left%20%3A%2030px%3B%22%20style%3D%22padding-left%20%3A%2030px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22aaronbaranoff_1-1755012958198.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22aaronbaranoff_1-1755012958198.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F352026iA1F9AFD2E64EE34D%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22aaronbaranoff_1-1755012958198.png%22%20alt%3D%22aaronbaranoff_1-1755012958198.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%20class%3D%22lia-indent-padding-left-30px%22%20style%3D%22padding-left%20%3A%2030px%3B%22%20style%3D%22padding-left%20%3A%2030px%3B%22%3E%26nbsp%3B%3C%2FP%3E%3CP%20class%3D%22lia-indent-padding-left-30px%22%20style%3D%22padding-left%20%3A%2030px%3B%22%20style%3D%22padding-left%20%3A%2030px%3B%22%3E%23define%20PFE_CLK_SYS_RATE%20300000000%3C%2FP%3E%3CP%20class%3D%22lia-indent-padding-left-30px%22%20style%3D%22padding-left%20%3A%2030px%3B%22%20style%3D%22padding-left%20%3A%2030px%3B%22%3ETherefore%20PFE_PE_CLK%20should%20be%20600000000%3C%2FP%3E%3CP%3EFrom%20my%20continuing%20efforts...%26nbsp%3B%3C%2FP%3E%3CUL%3E%3CLI%3ESetup%20DMA%20coherency%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007ca00)%20%3D%200x3f%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3ESetup%20EMAC%20modes%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007ca04)%20%3D%200x111%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3EEnable%20power%20for%20PFE%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007ca20)%20%3D%200x0%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3EPut%20PFE%20in%20reset%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007caE4)%20%3D%200x1%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3ETake%20the%20PFE%20out%20of%20reset%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007caE4)%20%3D%200x0%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3ESetup%20%26amp%3B%20Enable%20the%20PFE%20Sys%20Clock%3CBR%20%2F%3ESee%20above%20clocking%20images%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3ESetup%20the%20PFE%20PE%20Clock%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007ca44)%20%3D%200x0%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3EEnable%26nbsp%3Bthe%20PFE%20PE%20Clock%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007ca44)%20%3D%200x0%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3ETake%20the%20PFE%20out%20of%20reset%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007caE4)%20%3D%200x1%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3ESetup%26nbsp%3BEMAC%20Tx%2FRX%20clocks%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007caE0)%20%3D%200x0%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3ESetup%20PFE%20PTP%20clock%20(not%20needed%20I%20believe)%3C%2FLI%3E%3C%2FUL%3E%3CP%3EDoes%20this%20look%20correct%3F%20The%20PFE%20Sys%20I%20am%20not%20sure%20of%20the%20registers%20needed%20to%20setup%20the%20clock%20yet%20and%20I%20am%20not%20sure%20I%20am%20making%20the%20correct%20choices%20for%20the%20reset%20control%20and%20if%20the%20PTP%20clock%20is%20even%20needed%20in%20our%20mode%2C%20Any%20missing%20steps%20or%20order%3F%20This%20is%20all%20before%20I%20can%20talk%20to%20the%20PFE%20GMAC%20registers%20correct%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2150962%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Access%20PFE%20MAC%20addresses%20via%20A53%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2150962%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EFrom%20my%20continuing%20efforts...%26nbsp%3B%3C%2FP%3E%3CUL%3E%3CLI%3ESetup%20DMA%20coherency%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007ca00)%20%3D%200x3f%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3ESetup%20EMAC%20modes%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007ca04)%20%3D%200x111%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3EEnable%20power%20for%20PFE%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007ca20)%20%3D%200x0%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3EPut%20PFE%20in%20reset%26nbsp%3B%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007caE4)%20%3D%200x0%3B%3C%2FLI%3E%3CLI%3ETake%20the%20PFE%20out%20of%20reset%3CBR%20%2F%3E*((volatile%20uint32%20*)0x4007caE4)%20%3D%200x1%3B%3C%2FLI%3E%3C%2FUL%3E%3CUL%3E%3CLI%3ESetup%20the%20PFE%20Sys%20Clock%3C%2FLI%3E%3CLI%3EEnable%26nbsp%3Bthe%20PFE%20Sys%20Clock%3C%2FLI%3E%3CLI%3ESetup%20the%20PFE%20PE%20Clock%3C%2FLI%3E%3C%2FUL%3E%3CP%20class%3D%22lia-indent-padding-left-30px%22%20style%3D%22padding-left%20%3A%2030px%3B%22%20style%3D%22padding-left%20%3A%2030px%3B%22%3E*((volatile%20uint32%20*)0x4007ca44)%20%3D%200x0%3B%3C%2FP%3E%3CUL%3E%3CLI%3EEnable%26nbsp%3Bthe%20PFE%20PE%20Clock%3C%2FLI%3E%3C%2FUL%3E%3CP%20class%3D%22lia-indent-padding-left-30px%22%20style%3D%22padding-left%20%3A%2030px%3B%22%20style%3D%22padding-left%20%3A%2030px%3B%22%3E*((volatile%20uint32%20*)0x4007ca44)%20%3D%200x0%3B%3C%2FP%3E%3CUL%3E%3CLI%3ETake%20the%20PFE%20out%20of%20reset%3C%2FLI%3E%3C%2FUL%3E%3CP%20class%3D%22lia-indent-padding-left-30px%22%20style%3D%22padding-left%20%3A%2030px%3B%22%20style%3D%22padding-left%20%3A%2030px%3B%22%3E*((volatile%20uint32%20*)0x4007caE4)%20%3D%200x1%3B%3C%2FP%3E%3CUL%3E%3CLI%3ESetup%26nbsp%3B%20EMAC%20Tx%2FRX%20clocks%3C%2FLI%3E%3C%2FUL%3E%3CP%20class%3D%22lia-indent-padding-left-30px%22%20style%3D%22padding-left%20%3A%2030px%3B%22%20style%3D%22padding-left%20%3A%2030px%3B%22%3E*((volatile%20uint32%20*)0x4007caE0)%20%3D%200x0%3B%3C%2FP%3E%3CUL%3E%3CLI%3ESetup%20PFE%20PTP%20clock%3C%2FLI%3E%3C%2FUL%3E%3CP%3EDoes%20this%20look%20correct%3F%20The%20PFE%20Sys%20I%20am%20not%20sure%20of%20the%20registers%20needed%20to%20setup%20the%20clock%20yet%20and%20I%20am%20not%20sure%20I%20am%20making%20the%20correct%20choices%20for%20the%20reset%20control%20and%20if%20the%20PTP%20clock%20is%20even%20needed%20in%20our%20mode%2C%20Any%20missing%20steps%20or%20order%3F%20This%20is%20all%20before%20I%20can%20talk%20to%20the%20PFE%20GMAC%20registers%20correct%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2150937%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Access%20PFE%20MAC%20addresses%20via%20A53%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2150937%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EI%20realize%20it%20is%20not%20you%20personally.%20It%20just%20seems%20bizzare%20and%20bad%20choice%20and%20slows%20our%20progress%20that%20the%20documention%20is%20not%20public%20(or%20behind%20a%20simple%20NDA%20or%20similiar).%20Instead%20I%20have%20to%20extract%20it%20from%20linux%20source%20which%20is%20not%20always%20the%20most%20straight%20forward%20way%20to%20do%20things.%20I%20am%20thinking%20we%20are%20not%20the%201st%20to%20do%20this.%20I%20was%20hoping%20there%20was%20a%20better%20way%20or%20someone%20else%20has%20done%20this%20before.%3C%2FP%3E%3CP%3EUntil%20then%20I%20have%20just%20pulled%20the%20sources%20linux%20down%20so%20can%20do%20this.%3C%2FP%3E%3CP%3EFrom%20the%20probe%20I%20have%20the%20following%20to%20do%20(after%20I%20reverse%20engineer%20the%20addresses%20and%20the%20bits)...%3C%2FP%3E%3CUL%3E%3CLI%3EEnable%20power%20for%20PFE%3C%2FLI%3E%3CLI%3EPut%20PFE%20in%20reset%26nbsp%3B%3C%2FLI%3E%3CLI%3ESetup%20the%20PFE%20Sys%20Clock%3C%2FLI%3E%3CLI%3EEnable%26nbsp%3Bthe%20PFE%20Sys%20Clock%3C%2FLI%3E%3CLI%3ESetup%20the%20PFE%20PE%20Clock%3C%2FLI%3E%3CLI%3EEnable%26nbsp%3Bthe%20PFE%20PE%20Clock%3C%2FLI%3E%3CLI%3ETake%20the%20PFE%20out%20of%20reset%3C%2FLI%3E%3CLI%3ESetup%26nbsp%3B%20EMAC%20Tx%2FRX%20clocks%3C%2FLI%3E%3CLI%3ESetup%20PFE%20PTP%20clock%3C%2FLI%3E%3C%2FUL%3E%3CP%3EDoes%20this%20look%20correct%3F%20Any%20missing%20steps%20or%20order%3F%3C%2FP%3E%3CP%3EThe%20addresses%20seems%20they%20start%20at%200x46000000.%20I%20have%20written%20device%20tree%20info%20for%20linux%20but%20going%20from%20a%20device%20tree%20back%20the%20other%20direction%20is%20an%20ugly%20process.%26nbsp%3B%3C%2FP%3E%3CP%3EBy%20the%20way%20we%20do%20have%20NDAs%20with%20NXP%20if%20that%20helps.%26nbsp%3B%3C%2FP%3E%3CP%3EAaron%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2150342%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Access%20PFE%20MAC%20addresses%20via%20A53%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2150342%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F246004%22%20target%3D%22_blank%22%3E%40aaronbaranoff%3C%2FA%3E%2C%3C%2FP%3E%0A%3CP%3EI%20apologize%20but%20the%20PFE%20documentation%20is%20not%20public%20and%20I%20have%20no%20control%20over%20that%20decision.%3C%2FP%3E%0A%3CP%3EYou%20are%20correct%2C%20the%20device%20tree%20node%20is%20not%20present%20in%20the%20pfen%20repo%2C%20it%20is%20present%20in%20the%20Linux%20repo%2C%20here%20is%20the%20link%3A%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fnxp-auto-linux%2Flinux%2Fblob%2F6e5d8144e59f34d8d173e01a2b1bc27a4eb2c78d%2Farch%2Farm64%2Fboot%2Fdts%2Ffreescale%2Fs32g-pfe.dtsi%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3E%2Farch%2Farm64%2Fboot%2Fdts%2Ffreescale%2Fs32g-pfe.dtsi%3C%2FA%3E.%3C%2FP%3E%0A%3CP%3EI%20am%20aware%20that%20your%20are%20not%20using%20Linux%20nor%20u-boot%2C%20however%2C%20I%20can%20only%20refer%20to%20those%20in%20my%20recommendations%20as%20that%20is%20what%20we%20officially%20support.%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3ELet%20me%20know%20if%20you%20have%20more%20questions%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2150062%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Access%20PFE%20MAC%20addresses%20via%20A53%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2150062%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EI%20need%20the%20devicetree%20for%20linux%20for%20be%20to%20follow%20the%20code.%20Where%20can%20I%20find%20that%3F%3C%2FP%3E%3CDIV%3E%3CDIV%3E%3CSPAN%3ELooks%20like%20I%20need%20to%20take%20out%20of%20reset%20and%20power%20up%20the%20interface%20and%20setup%20the%20clock%20(although%20problay%20not%20for%20the%20register%20interface).%20However%20to%20determine%20the%20addresses%20I%20need%20the%20devicetree%20that%20defines%20the%20reset%20and%20power%20up%20addresses.%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EI%20don't%20seem%20to%20have%20the%20devicetree%20for%20the%20S32G2.%20Remember%20we%20are%20not%20using%20u-boot%20or%20linix%20so%2C%20I%20just%20using%20them%20as%20a%20guide.%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%3CSPAN%3ESimply%2C%20I%20might%20dump%20the%20registers%20if%20I%20knew%20which%20ones%20to%20dump.%20But%2C%20the%20linux%20driver%20refers%20to%20the%20devicetree%20that%20I%20pretty%20sure%20I%20don't%20have%20I%20can't%20find%26nbsp%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%3CDIV%3E%3CSPAN%3E%3CSPAN%3E%22pfe_sys%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%22pfe_part%22%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CDIV%3E%3CDIV%3E%3CSPAN%3E%22pfe_pe%22%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E...%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EEven%20better%2C%20would%20be%20If%20there%20was%20a%20register%20definition%20and%20sequence%20documented%20for%20the%20PFE%20GMAC%20bring%20ups.%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EAaron%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2149372%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Access%20PFE%20MAC%20addresses%20via%20A53%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2149372%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F246004%22%20target%3D%22_blank%22%3E%40aaronbaranoff%3C%2FA%3E%2C%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThanks%20for%20contacting%20us%20again%20and%20sorry%20for%20the%20late%20reply.%3C%2FP%3E%0A%3CP%3ERegarding%20your%20problem%2C%20do%20you%20mena%20that%20you%20cannot%20read%20any%20of%20the%20address%20space%20for%20the%20three%20PFE%20EMACs%3F%20this%20is%2C%20from%200x00%20to%200x136C%20for%20all%20three%20base%20addresses.%26nbsp%3B%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3Eif%20you%20are%20not%20performing%20any%20kind%20of%20initialization%20nor%20clock%20configuration%20you%20can%20check%20how%20it%20is%20done%20in%20the%20Linux%20library%20we%20offer%2C%20you%20can%20start%20where%20the%20driver%20gets%20probed%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fnxp-auto-linux%2Fpfeng%2Fblob%2Ffedfb51726e1aaebffc49ab5871d09ec75a5b2b9%2Fsw%2Flinux-pfeng%2Fpfeng-drv.c%23L359%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Epfeng-drv.c%23L359%3C%2FA%3E.%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3EYou%20can%20also%20flash%20one%20of%20the%20precompiled%20Linux%20BSP%20we%20offer%20(since%20they%20include%20the%20PFE%20FW)%2C%20stop%20the%20boot%20in%20u-boot%20and%20then%20dump%20the%20memory%20for%20the%20interested%20ranges%20with%20the%20%3CA%20href%3D%22https%3A%2F%2Fdocs.u-boot.org%2Fen%2Flatest%2Fusage%2Fcmd%2Fmd.html%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Emd%3C%2FA%3E%26nbsp%3Bcommand%2C%20this%20way%20you%20can%20check%20the%20statuses%20of%20the%20registers%20after%20the%20initialization%20of%20the%20PFE%20emacs.%3C%2FP%3E%0A%3CP%3EPlease%20also%20check%20the%20BSP%20user%20manual%20and%20PFE%20documentation%20available%20in%20the%20same%20FlexNet%20page%20in%20which%20you%20can%20download%20the%20binaries.%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3ELet%20me%20know%20if%20you%20have%20more%20questions.%3C%2FP%3E%3C%2FLINGO-BODY%3E