天嵌 ARM开发社区

 找回密码
 注册
查看: 2333|回复: 1

请教用DM9000接外部PHY问题

[复制链接]
guethh 发表于 2012-1-5 22:01:03 | 显示全部楼层 |阅读模式
期待各位高人指点,问题:
1、可以在应用程序上对DM9000的寄存器、内部PHY寄存器进行读写操作吗?如果可以,怎么实现?
2、怎么实现对外部PHY寄存器进行读写?在DM9000驱动初始化函数里,可以选择外部PHY,如下红色标记,如何实现对db->flags进行设置,可以在应用程序进行设置吗?
static void
dm9000_init_dm9000(struct net_device *dev)
{
        board_info_t *db = netdev_priv(dev);
        unsigned int imr;

        dm9000_dbg(db, 1, "entering %s\n", __func__);

        /* I/O mode */
        db->io_mode = ior(db, DM9000_ISR) >> 6;        /* ISR bit7:6 keeps I/O mode */

        /* GPIO0 on pre-activate PHY */
        iow(db, DM9000_GPR, 0);        /* REG_1F bit0 activate phyxcer */
        iow(db, DM9000_GPCR, GPCR_GEP_CNTL);        /* Let GPIO0 output */
        iow(db, DM9000_GPR, 0);        /* Enable PHY */

        if (db->flags & DM9000_PLATF_EXT_PHY)
                iow(db, DM9000_NCR, NCR_EXT_PHY);

        /* Program operating register */
        iow(db, DM9000_TCR, 0);                /* TX Polling clear */
        iow(db, DM9000_BPTR, 0x3f);        /* Less 3Kb, 200us */
        iow(db, DM9000_FCR, 0xff);        /* Flow Control */
        iow(db, DM9000_SMCR, 0);        /* Special Mode */
        /* clear TX status */
        iow(db, DM9000_NSR, NSR_WAKEST | NSR_TX2END | NSR_TX1END);
        iow(db, DM9000_ISR, ISR_CLR_STATUS); /* Clear interrupt status */

        /* Set address filter table */
        dm9000_hash_table(dev);

        imr = IMR_PAR | IMR_PTM | IMR_PRM;
        if (db->type != TYPE_DM9000E)
                imr |= IMR_LNKCHNG;

        db->imr_all = imr;

        /* Enable TX/RX interrupt mask */
        iow(db, DM9000_IMR, imr);

        /* Init Driver variable */
        db->tx_pkt_cnt = 0;
        db->queue_pkt_len = 0;
        dev->trans_start = 0;
}
亚瑟王 发表于 2012-1-6 11:48:02 | 显示全部楼层
亲,应该需要在驱动里面的读、写或者ioctl函数里面专门添加一个对它的处理才行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-22 04:13 , Processed in 2.044128 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表