MYD-Y6ULX开发板
修改RTC芯片,使用rx_8025T
现象:
date -s "2022-1-2 3:4:5"
hwclock -w 能够写,
hwclock -r 能够读:2022-1-2 3:4:5
但是断电重启,date打印 1970-1-1
不断电重启,时间是对的。
查看系统输出信息为读写寄存器失败:
rx8025 will be probe
rx8025 will be init
rx8025 0-0032: Unable to read registers #14..#15
i2c i2c-0: probing for rx8025 failed
rx8025: probe of 0-0032 failed with error -110
snvs_rtc 20cc000.snvs:snvs-rtc-lp: rtc core: registered 20cc000.snvs:snvs-r as rtc0
i2c /dev entries driver
下面内容是我这里本机的配置内容:
硬件配置引脚为:
设备树配置是:
&i2c1 {
status = "okay";
rtc: rtc@32 {
// compatible = "espon,rx8025";
compatible = "rx8025";
reg = <0x32>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_rx8025_irq>;
};
};
其中i2c1引脚配置:
Device Driver ---->
Real Time Clock ---->
<*> Epson RX-8025A/NB
make menuconfig:
Device Driver ----> Real Time Clock ----> <*> Epson RX-8025A/NB
rtc-rx8025.c文件配置修改
static int rx8025_read_reg(struct i2c_client *client, int number, u8 *value)
{
// int ret = i2c_smbus_read_byte_data(client, (number << 4) | 0x08);
int ret = i2c_smbus_read_byte_data(client, number );
.....
}
static int rx8025_read_regs(struct i2c_client *client,
int number, u8 length, u8 *values)
{
// int ret = i2c_smbus_read_i2c_block_data(client, (number << 4) | 0x08,
// length, values);
int ret = i2c_smbus_read_i2c_block_data(client, number ,
length, values);
....
}
static int rx8025_write_reg(struct i2c_client *client, int number, u8 value)
{
// int ret = i2c_smbus_write_byte_data(client, number << 4, value);
int ret = i2c_smbus_write_byte_data(client, number , value);
....
}
static int rx8025_write_regs(struct i2c_client *client,
int number, u8 length, u8 *values)
{
// int ret = i2c_smbus_write_i2c_block_data(client, (number << 4) | 0x08,
// length, values);
int ret = i2c_smbus_write_i2c_block_data(client, number ,
length, values);
....
}
static struct i2c_driver rx8025_driver = {
.driver = {
// .name = "rtc-rx8025",
.name = "rx8025",
.owner = THIS_MODULE,
},
.probe = rx8025_probe,
.remove = rx8025_remove,
.id_table = rx8025_id,
};
module_i2c_driver(rx8025_driver);
MODULE_AUTHOR("Wolfgang Grandegger <wg@grandegger.com>");
//MODULE_DESCRIPTION("RX-8025 SA/NB RTC driver");
MODULE_DESCRIPTION("RX-8025T RTC driver");
MODULE_LICENSE("GPL");