26 static int rx8025_register(
struct st_device *dev,
char *param)
28 char *dev_name = (
char *)def_v_dev;
36 SYSERR_PRINT(
"Cannot open device \"%s\"\n", dev_name);
43 #define BCD2BIN(x) (((((x) & 0xf0)>>4) * 10) + ((x) & 0x0f)) 44 #define BIN2BCD(x) (((((x)/10) % 10)<<4) + ((x) % 10)) 49 unsigned char data[7];
51 data[0] = BIN2BCD(tp->
sec);
52 data[1] = BIN2BCD(tp->
min);
53 data[2] = BIN2BCD(tp->
hour);
55 data[4] = BIN2BCD(tp->
day);
56 data[5] = BIN2BCD(tp->
month);
57 if(tp->
year >= 2000) {
58 data[6] = BIN2BCD(tp->
year - 2000);
60 data[6] = BIN2BCD(tp->
year - 1900);
79 unsigned char data[7];
91 tp->
year = 2000 + BCD2BIN(data[6]);
92 tp->
month = BCD2BIN(data[5] & 0x1f);
93 tp->
day = BCD2BIN(data[4] & 0x3f);
95 tp->
hour = BCD2BIN(data[2] & 0x3f);
96 tp->
min = BCD2BIN(data[1] & 0x7f);
97 tp->
sec = BCD2BIN(data[0] & 0x7f);
103 static int rx8025_ioctl(
struct st_device *dev,
unsigned int com,
unsigned int arg,
void *param)
123 SYSERR_PRINT(
"Unknown ioctl(%08X)\n", com);
132 .explan =
"RX-8025 RTC(I2C)",
133 .register_dev = rx8025_register,
134 .ioctl = rx8025_ioctl,
#define IOCMD_I2C_MEMADDRSIZE
Memory Address Size 8bit or 16bit etc
struct st_device * open_device(char *name)
デバイスをオープンする
int write_device(struct st_device *dev, const void *buf, unsigned int count)
デバイスにデータを書き込む
int read_device(struct st_device *dev, void *buf, unsigned int count)
デバイスよりデータを読み出す
int seek_device(struct st_device *dev, int offset, int whence)
デバイスのアクセスポイントを設定する
#define IOCMD_RTC_GET
時刻を取得する
#define I2C_MEM_ADDR_SIZE_8BIT
I2Cスレーブデバイスメモリアドレスサイズは8ビット
int unlock_device(struct st_device *dev)
デバイスをアンロックする
#define IOCMD_RTC_SET
時刻を設定する
#define IOCMD_I2C_SLAVE_ADDR7
Set Save 7bit Address
#define DEF_DEV_NAME_I2C
標準I2Cコントローラデバイス名
char dayofweek
曜日 0:日曜日〜6:土曜日
#define DEF_DEV_NAME_RTC
標準リアルタイムクロックデバイス名
int ioctl_device(struct st_device *dev, unsigned int com, unsigned int arg, void *param)
デバイスを制御する
char name[MAX_DEVNAMELRN]
デバイス名文字列
int lock_device(struct st_device *dev, unsigned int timeout)
デバイスをロックする