现在用am 3359 - ar8035 做以太口。 在3359侧是用的rgmii2 接口配置成rgmii模式
修改了 mode :
__raw_writel(0x2B, MAC_MII_SEL);
pinmux 部分
static struct module_pin_mux rgmii1_pin_mux[] = {
{OFFSET(gpmc_a0), MODE(2)}, /* RGMII2_TCTL */
{OFFSET(gpmc_a1), MODE(2) | RXACTIVE}, /* RGMII2_RCTL */
{OFFSET(gpmc_a2), MODE(2)}, /* RGMII2_TD3 */
{OFFSET(gpmc_a3), MODE(2)}, /* RGMII2_TD2 */
{OFFSET(gpmc_a4), MODE(2)}, /* RGMII2_TD1 */
{OFFSET(gpmc_a5), MODE(2)}, /* RGMII2_TD0 */
{OFFSET(gpmc_a6), MODE(2)}, /* RGMII2_TCLK */
{OFFSET(gpmc_a7), MODE(2) | RXACTIVE}, /* RGMII2_RCLK */
{OFFSET(gpmc_a8), MODE(2) | RXACTIVE}, /* RGMII2_RD3 */
{OFFSET(gpmc_a9), MODE(2) | RXACTIVE}, /* RGMII2_RD2 */
{OFFSET(gpmc_a10), MODE(2) | RXACTIVE}, /* RGMII2_RD1 */
{OFFSET(gpmc_a11), MODE(2) | RXACTIVE}, /* RGMII2_RD0 */
{OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN}, /* MDIO_DATA */
{OFFSET(mdio_clk), MODE(0) | PULLUP_EN}, /* MDIO_CLK */
{-1},
};
port设置:
static struct cpsw_slave_data cpsw_slaves[] = {
{
.slave_reg_ofs = 0x308,
.sliver_reg_ofs = 0xdc0,
.phy_id = 4,//phy 地址
}, //port1
};
static struct cpsw_platform_data cpsw_data = {
.mdio_base = AM335X_CPSW_MDIO_BASE,
.cpsw_base = AM335X_CPSW_BASE,
.mdio_div = 0xff,
.channels = 8,
.cpdma_reg_ofs = 0x800,
.slaves = 1,//只支持1个
。。。。
};
现在的问题是:
1.在tx_en脚上一直低电平,rx clk txclk都是正常的。
2.发送或收后,读CPSW_STATS Registers 时,值全为0。
打印方式如下:
printf("cpsw status :\n");
#define CPSW_STATS_BASE 0x4A100900
for(i=0;i<=0x8c;)
{
value = __raw_readl(CPSW_STATS_BASE+i);
printf("offset:0x%02x value:0x%08x \n",i,value);
i=i+4;
}
printf("---------------------------------------\n");
用同样的方式 ,可以打印CPSW_WR Registers 里的值。
请高手指点一下呢。