Message ID | 1317764683-29426-1-git-send-email-timur@freescale.com |
---|---|
State | Accepted |
Commit | 30381716284b688cb1b4e315aa6b8ef7422fa172 |
Delegated to: | Kumar Gala |
Headers | show |
On Oct 4, 2011, at 4:44 PM, Timur Tabi wrote: > Function dtsec_configure_serdes() needs to know where the TBI PHY registers > are in order to configure SGMII for proper SerDes operation. > > During SGMII initialzation, fm_eth_init_mac() passing NULL for 'phyregs' when > it called init_dtsec(), because it was believed that phyregs was not used. > In fact, it is used by dtsec_configure_serdes() to configure the TBI PHY > registers. > > We also need to define the PHY registers in struct fm_mdio. > > Signed-off-by: Timur Tabi <timur@freescale.com> > --- > > Note: I'm not sure of my change to struct fm_mdio. It works, but it doesn't > smell right. What exactly is the concern? - k
Kumar Gala wrote: >> > Note: I'm not sure of my change to struct fm_mdio. It works, but it doesn't >> > smell right. > What exactly is the concern? Nothing specific, just a gut feeling.
On Oct 4, 2011, at 4:44 PM, Timur Tabi wrote: > Function dtsec_configure_serdes() needs to know where the TBI PHY registers > are in order to configure SGMII for proper SerDes operation. > > During SGMII initialzation, fm_eth_init_mac() passing NULL for 'phyregs' when > it called init_dtsec(), because it was believed that phyregs was not used. > In fact, it is used by dtsec_configure_serdes() to configure the TBI PHY > registers. > > We also need to define the PHY registers in struct fm_mdio. > > Signed-off-by: Timur Tabi <timur@freescale.com> > --- > > Note: I'm not sure of my change to struct fm_mdio. It works, but it doesn't > smell right. > > arch/powerpc/include/asm/fsl_fman.h | 9 ++++++++- > drivers/net/fm/dtsec.c | 2 +- > drivers/net/fm/eth.c | 3 ++- > 3 files changed, 11 insertions(+), 3 deletions(-) applied to 85xx - k
diff --git a/arch/powerpc/include/asm/fsl_fman.h b/arch/powerpc/include/asm/fsl_fman.h index fddc0cc..2c0c9bc 100644 --- a/arch/powerpc/include/asm/fsl_fman.h +++ b/arch/powerpc/include/asm/fsl_fman.h @@ -405,7 +405,14 @@ typedef struct fm_dtesc { } fm_dtsec_t; typedef struct fm_mdio { - u8 res[4*1024]; + u8 res0[0x120]; + u32 miimcfg; /* MII management configuration reg */ + u32 miimcom; /* MII management command reg */ + u32 miimadd; /* MII management address reg */ + u32 miimcon; /* MII management control reg */ + u32 miimstat; /* MII management status reg */ + u32 miimind; /* MII management indication reg */ + u8 res1[0x1000 - 0x138]; } fm_mdio_t; typedef struct fm_10gec { diff --git a/drivers/net/fm/dtsec.c b/drivers/net/fm/dtsec.c index a77ee20..7dd78f2 100644 --- a/drivers/net/fm/dtsec.c +++ b/drivers/net/fm/dtsec.c @@ -171,7 +171,7 @@ void init_dtsec(struct fsl_enet_mac *mac, void *base, void *phyregs, int max_rx_len) { mac->base = base; - mac->phyregs = NULL; + mac->phyregs = phyregs; mac->max_rx_len = max_rx_len; mac->init_mac = dtsec_init_mac; mac->enable_mac = dtsec_enable_mac; diff --git a/drivers/net/fm/eth.c b/drivers/net/fm/eth.c index 308d610..f7ed850 100644 --- a/drivers/net/fm/eth.c +++ b/drivers/net/fm/eth.c @@ -537,6 +537,7 @@ static int fm_eth_init_mac(struct fm_eth *fm_eth, struct ccsr_fman *reg) /* Get the mac registers base address */ if (fm_eth->type == FM_ETH_1G_E) { base = ®->mac_1g[num].fm_dtesc; + phyregs = ®->mac_1g[num].fm_mdio.miimcfg; } else { base = ®->mac_10g[num].fm_10gec; phyregs = ®->mac_10g[num].fm_10gec_mdio; @@ -552,7 +553,7 @@ static int fm_eth_init_mac(struct fm_eth *fm_eth, struct ccsr_fman *reg) fm_eth->mac = mac; if (fm_eth->type == FM_ETH_1G_E) - init_dtsec(mac, base, NULL, MAX_RXBUF_LEN); + init_dtsec(mac, base, phyregs, MAX_RXBUF_LEN); else init_tgec(mac, base, phyregs, MAX_RXBUF_LEN);
Function dtsec_configure_serdes() needs to know where the TBI PHY registers are in order to configure SGMII for proper SerDes operation. During SGMII initialzation, fm_eth_init_mac() passing NULL for 'phyregs' when it called init_dtsec(), because it was believed that phyregs was not used. In fact, it is used by dtsec_configure_serdes() to configure the TBI PHY registers. We also need to define the PHY registers in struct fm_mdio. Signed-off-by: Timur Tabi <timur@freescale.com> --- Note: I'm not sure of my change to struct fm_mdio. It works, but it doesn't smell right. arch/powerpc/include/asm/fsl_fman.h | 9 ++++++++- drivers/net/fm/dtsec.c | 2 +- drivers/net/fm/eth.c | 3 ++- 3 files changed, 11 insertions(+), 3 deletions(-)