主题 : 关于 DM9000 驱动两次 ioremap 的问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 110286
精华: 0
发帖: 12
金钱: 60 两
威望: 12 点
综合积分: 24 分
注册时间: 2014-11-20
最后登录: 2016-12-04
楼主  发表于: 2016-03-30 11:07

 关于 DM9000 驱动两次 ioremap 的问题

我想直接取出 DM9000 接收到的数据来用,很好奇,这里为什么需要两次 ioremap 呢?

...
    iosize = resource_size(db->addr_res);
    db->addr_req = request_mem_region(db->addr_res->start, iosize,
                      pdev->name);

    if (db->addr_req == NULL) {
        dev_err(db->dev, "cannot claim address reg area\n");
        ret = -EIO;
        goto out;
    }

    db->io_addr = ioremap(db->addr_res->start, iosize);

    if (db->io_addr == NULL) {
        dev_err(db->dev, "failed to ioremap address reg\n");
        ret = -EINVAL;
        goto out;
    }

    iosize = resource_size(db->data_res);
    db->data_req = request_mem_region(db->data_res->start, iosize,
                      pdev->name);

    if (db->data_req == NULL) {
        dev_err(db->dev, "cannot claim data reg area\n");
        ret = -EIO;
        goto out;
    }

    db->io_data = ioremap(db->data_res->start, iosize);

    if (db->io_data == NULL) {
        dev_err(db->dev, "failed to ioremap data reg\n");
        ret = -EINVAL;
        goto out;
    }
...
级别: 新手上路
UID: 110286
精华: 0
发帖: 12
金钱: 60 两
威望: 12 点
综合积分: 24 分
注册时间: 2014-11-20
最后登录: 2016-12-04
1楼  发表于: 2016-03-30 11:21
sorry, 看岔了,这里一个是 addr_res,一个是 data_res