On 9/9/2016, Sergei Shtylyov wrote:
> > sh_eth_private *mdp)  {
> >     if (sh_eth_is_rz_fast_ether(mdp)) {
> >             sh_eth_tsu_write(mdp, 0, TSU_TEN); /* Disable all CAM entry */
> > +           sh_eth_tsu_write(mdp, TSU_FWSLC_POSTENU | TSU_FWSLC_POSTENL,
> > +                            TSU_FWSLC);    /* Enable POST registers */
> >             return;
> >     }
> 
>     Wait, don't you also need to write 0s to the POST registers like done
> at the end of this function?

Nope.

The sh_eth_chip_reset() function will write to register ARSTR which will do a 
HW reset on the block and clear all the registers, including all the POST 
registers.

static struct sh_eth_cpu_data r7s72100_data = {
        .chip_reset     = sh_eth_chip_reset,


So, before sh_eth_tsu_init() is ever called, the hardware will always be reset.


        /* initialize first or needed device */
        if (!devno || pd->needs_init) {
                if (mdp->cd->chip_reset)
                        mdp->cd->chip_reset(ndev);

                if (mdp->cd->tsu) {
                        /* TSU init (Init only)*/
                        sh_eth_tsu_init(mdp);
                }
        }


Therefore there is no reason to set the POST registers back to 0 because they 
are already at 0 from the reset.


Chris


Reply via email to