T507的板子,在sunxi-gamc.c文件中,网卡获取到随机的mac地址后,我想写入到i2c挂载的eeprom中,一直有问题,显示写入和读取成功,但是读出来一直是FF。
这个是驱动里面操作读写的地方。
static void geth_check_addr(struct net_device *ndev, unsigned char *mac)
{
    int i;
    int ret;
    char *p = mac;
    struct i2c_adapter *adapter = NULL;
    struct i2c_client client;
    u8 write_data[ETH_ALEN];
    u8 read_data[ETH_ALEN];
    struct i2c_msg msgs[2];  // 修改为两个I2C消息
    if (!is_valid_ether_addr(ndev->dev_addr)) {
        for (i = 0; i < ETH_ALEN; i++, p++) {
            ndev->dev_addr[i] = simple_strtoul(p, &p, 16);
        }
        if (!is_valid_ether_addr(ndev->dev_addr)) {
            random_ether_addr(ndev->dev_addr);
            printk("%s: Use random MAC address\n", ndev->name);
            adapter = i2c_get_adapter(0);
            if (!adapter) {
                pr_err("Failed to get I2C adapter\n");
                return;
            }
            /* 设置 i2c 设备地址和组件信息 */
            client.addr = 0x0050;  
            client.adapter = adapter;
            client.flags = 0;
            //.driver = NULL,
            client.dev.platform_data = NULL;
            /* 将 MAC 地址数据写入 I2C 设备 */
            memcpy(write_data, ndev->dev_addr, ETH_ALEN);
            msgs[0].addr = client.addr;
            msgs[0].flags = 0;
            msgs[0].len = ETH_ALEN;
            msgs[0].buf = write_data;
            ret = i2c_transfer(client.adapter, msgs, 1);
            if (ret != 1) {
                pr_err("Failed to write MAC address to I2C device\n");
            } else {
                printk("Succeeded to write MAC address to I2C device\n");
				print_mac_address(write_data);
    			printk("\n");
            }
            /* 从 I2C 设备读取 MAC 地址数据 */
            msgs[1].addr = client.addr;
            msgs[1].flags = I2C_M_RD;
            msgs[1].len = ETH_ALEN;
            msgs[1].buf = read_data;
            ret = i2c_transfer(client.adapter, msgs + 1, 1);
            if (ret != 1) {
                pr_err("Failed to read MAC address from I2C device\n");
            } else {
                printk("Succeeded to read MAC address from I2C device\n");
            	print_mac_address(read_data);
				}
        }
    }
    if (adapter)
        i2c_put_adapter(adapter);
}
日志显示的读写一直不一致

这个问题一直没有解决思路和办法,想请教一下
 
 
