EEPROM,AT24C16移植至OK6254平台

一、设备树:OK6254-C.dts

&main_i2c1 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&main_i2c1_pins_default>;
    clock-frequency = <400000>;

    24c16 {
        compatible = "atmel,24c16";
        status = "okay";
        reg = <0x51>;    
     };
 };

二、驱动:at24.c(平台自带)

设备树名称应与at24_ids[]保持一致。设备树中的compatib应与下列at24_of_match[]保持一致。

static const struct i2c_device_id at24_ids[] = {
    { "24c00",    (kernel_ulong_t)&at24_data_24c00 },
    { "24c01",    (kernel_ulong_t)&at24_data_24c01 },
    { "24cs01",    (kernel_ulong_t)&at24_data_24cs01 },
    { "24c02",    (kernel_ulong_t)&at24_data_24c02 },
    { "24cs02",    (kernel_ulong_t)&at24_data_24cs02 },
    { "24mac402",    (kernel_ulong_t)&at24_data_24mac402 },
    { "24mac602",    (kernel_ulong_t)&at24_data_24mac602 },
    { "spd",    (kernel_ulong_t)&at24_data_spd },
    { "24c02-vaio",    (kernel_ulong_t)&at24_data_24c02_vaio },
    { "24c04",    (kernel_ulong_t)&at24_data_24c04 },
    { "24cs04",    (kernel_ulong_t)&at24_data_24cs04 },
    { "24c08",    (kernel_ulong_t)&at24_data_24c08 },
    { "24cs08",    (kernel_ulong_t)&at24_data_24cs08 },
    { "24c16",    (kernel_ulong_t)&at24_data_24c16 },
    { "24cs16",    (kernel_ulong_t)&at24_data_24cs16 },
    { "24c32",    (kernel_ulong_t)&at24_data_24c32 },
    { "24cs32",    (kernel_ulong_t)&at24_data_24cs32 },
    { "24c64",    (kernel_ulong_t)&at24_data_24c64 },
    { "24cs64",    (kernel_ulong_t)&at24_data_24cs64 },
    { "24c128",    (kernel_ulong_t)&at24_data_24c128 },
    { "24c256",    (kernel_ulong_t)&at24_data_24c256 },
    { "24c512",    (kernel_ulong_t)&at24_data_24c512 },
    { "24c1024",    (kernel_ulong_t)&at24_data_24c1024 },
    { "24c2048",    (kernel_ulong_t)&at24_data_24c2048 },
    { "at24",    0 },
    { /* END OF LIST */ }
};

MODULE_DEVICE_TABLE(i2c, at24_ids);

static const struct of_device_id at24_of_match[] = {
    { .compatible = "atmel,24c00",        .data = &at24_data_24c00 },
    { .compatible = "atmel,24c01",        .data = &at24_data_24c01 },
    { .compatible = "atmel,24cs01",        .data = &at24_data_24cs01 },
    { .compatible = "atmel,24c02",        .data = &at24_data_24c02 },
    { .compatible = "atmel,24cs02",        .data = &at24_data_24cs02 },
    { .compatible = "atmel,24mac402",    .data = &at24_data_24mac402 },
    { .compatible = "atmel,24mac602",    .data = &at24_data_24mac602 },
    { .compatible = "atmel,spd",        .data = &at24_data_spd },
    { .compatible = "atmel,24c04",        .data = &at24_data_24c04 },
    { .compatible = "atmel,24cs04",        .data = &at24_data_24cs04 },
    { .compatible = "atmel,24c08",        .data = &at24_data_24c08 },
    { .compatible = "atmel,24cs08",        .data = &at24_data_24cs08 },
    { .compatible = "atmel,24c16",        .data = &at24_data_24c16 },
    { .compatible = "atmel,24cs16",        .data = &at24_data_24cs16 },
    { .compatible = "atmel,24c32",        .data = &at24_data_24c32 },
    { .compatible = "atmel,24cs32",        .data = &at24_data_24cs32 },
    { .compatible = "atmel,24c64",        .data = &at24_data_24c64 },
    { .compatible = "atmel,24cs64",        .data = &at24_data_24cs64 },
    { .compatible = "atmel,24c128",        .data = &at24_data_24c128 },
    { .compatible = "atmel,24c256",        .data = &at24_data_24c256 },
    { .compatible = "atmel,24c512",        .data = &at24_data_24c512 },
    { .compatible = "atmel,24c1024",    .data = &at24_data_24c1024 },
    { .compatible = "atmel,24c2048",    .data = &at24_data_24c2048 },
    { /* END OF LIST */ },
};

三、Makefile

# SPDX-License-Identifier: GPL-2.0
#obj-$(CONFIG_EEPROM_AT24)	+= at24.o
obj-y += at24.o  //驱动直接编译进内核
obj-$(CONFIG_EEPROM_AT25)	+= at25.o
obj-$(CONFIG_EEPROM_LEGACY)	+= eeprom.o
obj-$(CONFIG_EEPROM_MAX6875)	+= max6875.o
obj-$(CONFIG_EEPROM_93CX6)	+= eeprom_93cx6.o
obj-$(CONFIG_EEPROM_93XX46)	+= eeprom_93xx46.o
obj-$(CONFIG_EEPROM_DIGSY_MTC_CFG) += digsy_mtc_eeprom.o
obj-$(CONFIG_EEPROM_IDT_89HPESX) += idt_89hpesx.o
obj-$(CONFIG_EEPROM_EE1004)	+= ee1004.o

四、串口调试

[    2.001659] ************************at24_probe***************************
[    2.008659] at24 2-0051: supply vcc not found, using dummy regulator
[    2.038330] at24 2-0051: 2048 byte 24c16 EEPROM, writable, 1 bytes/write

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值