S5P4418:RTC 芯片 HYM8563 驱动移植

1. 前言

限于作者能力水平,本文可能存在的谬误,因此而给读者带来的损失,作者不做任何承诺。

2. 背景

移植 RTC 芯片HYM8563驱动移植到 S5P4418 + Linux 3.4.y 系统。

3. 适配和测试

3.1 适配

(1) 拷贝rtc-HYM8563.c, rtc-HYM8563.h到目录drivers/rtc

(2) 修改文件drivers/rtc/Kconfig,增加如下内容:

if I2C
	...
	
config RTC_DRV_HYM8563
   tristate "H&M SEMI RTC HYM8563"

endif # I2C

(3) 修改文件drivers/rtc/Makefile,增加如下内容:

obj-$(CONFIG_RTC_DRV_HYM8563) += rtc-HYM8563.o

(4) 运行 make menuconfig 修改内核配置,使能 rtc hym8563 驱动:

Device Drivers
    -> Real Time Clock
         -> <*> H&M SEMI RTC HYM8563

同时,关闭 SoC RTC

Device Drivers
   -> Real Time Clock
       -> <> SLsiAP RTC

(5) 修改文件arch/arm/plat-s5p4418/nanopi2/device.c,注册HYM8563 I2C设备到I2C总线:

#if defined(CONFIG_RTC_DRV_HYM8563)
#define HYM8563_I2C_BUS (1)

static struct i2c_board_info __initdata hym8563_i2c_bdi = {
       I2C_BOARD_INFO("rtc_hym8563", 0x51),
       .irq    = -1/*PB_PIO_IRQ(CFG_IO_RTC_INT)*/,
};
#endif

void __init nxp_board_devices_register(void)
{
	...
#if defined(CONFIG_RTC_DRV_HYM8563)
	printk("plat: add hym8563 device\n");
    i2c_register_board_info(HYM8563_I2C_BUS, &hym8563_i2c_bdi, 1);
#endif
	...
}

(6) 修改文件arch/arm/plat-s5p4418/nanopi2/include/cfg_gpio.h,适配 HYM8563 中断引脚:

/* RTC_INT gpio, RTC_INT IRQ number. */
#define CFG_RTC_IRQ                         (IRQ_GPIO_C_START + 25)
#define CFG_IO_RTC_INT                      (PAD_GPIO_C + 25)

3.2 测试

hwclockdate 命令测试 RTC 的:

date -s 2017.06.13-15:12  # 设置系统时钟
hwclock -w                  # 把系统时间写回 rtc 芯片

之后就可以重启或重新上电系统,然后查看时间或 rtc 芯片时间,看 rtc 有没有正常工作

hwclock -r
date
posted @ 2025-04-08 09:06  JiMoKuangXiangQu  阅读(43)  评论(0)    收藏  举报