29 #define MAX_I2C_DATA 256 33 static char *dev_name = (
char *)def_dev_name;
34 static unsigned char reg_data[MAX_I2C_DATA];
39 static int check_devaddr(
unsigned int addr)
42 unsigned char data = 0;
59 static int detect(
int argc,
uchar *argv[]);
67 .usage_str =
"[i2c_device_name]" 70 static int detect(
int argc,
uchar *argv[])
75 dev_name = (
char *)argv[1];
82 tprintf(
"Cannot open device \"%s\"\n", dev_name);
87 for(i=0; i<0x10; i++) {
91 #if 0 // デバイスアドレス 0 は試さない 93 for(i=1; i<0x80; i++) {
95 for(i=0; i<0x80; i++) {
101 if(check_devaddr(i) > 0) {
116 static int dump(
int argc,
uchar *argv[]);
124 .usage_str =
"<device_address>" 127 static int dump(
int argc,
uchar *argv[])
130 unsigned int dev_addr;
131 unsigned int size = MAX_I2C_DATA;
135 print_command_usage(&com_i2c_dump);
139 dev_addr =
hstou(argv[1]);
142 size =
dstou(argv[2]);
143 if(size > MAX_I2C_DATA) {
150 tprintf(
"Cannot open device \"%s\"\n", dev_name);
165 for(j=0; j<size; j+=16) {
168 tprintf(
"%02X ", (
int)reg_data[j+i]);
171 for(i=8; i<16; i++) {
172 tprintf(
"%02X ", (
int)reg_data[j+i]);
182 static int get(
int argc,
uchar *argv[]);
190 .usage_str =
"<device_addr> <reg_addr> [size]" 193 static int get(
int argc,
uchar *argv[])
196 unsigned int dev_addr;
197 unsigned int size = 1;
202 print_command_usage(&com_i2c_get);
206 dev_addr =
hstou(argv[1]);
207 reg_addr =
hstoi(argv[2]);
210 size =
dstou(argv[3]);
211 if(size > MAX_I2C_DATA) {
218 tprintf(
"Cannot open device \"%s\"\n", dev_name);
233 tprintf(
"DEV-ADDR %02X - %02X :", dev_addr, reg_addr);
234 for(i=0; i<size; i++) {
235 tprintf(
" %02X", (
int)reg_data[i]);
243 static int put(
int argc,
uchar *argv[]);
251 .usage_str =
"<device_addr> <reg_addr> <val>" 254 static int put(
int argc,
uchar *argv[])
257 unsigned int dev_addr;
262 print_command_usage(&com_i2c_put);
266 dev_addr =
hstou(argv[1]);
267 reg_addr =
hstou(argv[2]);
268 data =
hstou(argv[3]);
272 tprintf(
"Cannot open device \"%s\"\n", dev_name);
301 .manual_str =
"I2C operation commands",
302 .sublist = com_i2c_list
static const struct st_shell_command com_i2c_put
I2Cデバイスのレジスタに1バイト書き込む
unsigned char uchar
GadgetSeedの文字(列)は unsigned char 型となる
#define IOCMD_I2C_MEMADDRSIZE
Memory Address Size 8bit or 16bit etc
static const struct st_shell_command com_i2c_get
I2Cデバイスのレジスタを1バイト読み出し表示する
struct st_device * open_device(char *name)
デバイスをオープンする
int read_device(struct st_device *dev, void *buf, unsigned int count)
デバイスよりデータを読み出す
static const struct st_shell_command com_i2c_dump
I2Cデバイスのレジスタをダンプ表示する
int seek_device(struct st_device *dev, int offset, int whence)
デバイスのアクセスポイントを設定する
unsigned int dstou(uchar *str)
10進数文字列 unsigned int 変換
#define I2C_MEM_ADDR_SIZE_8BIT
I2Cスレーブデバイスメモリアドレスサイズは8ビット
unsigned int hstou(uchar *str)
16進数文字列 unsigned int 変換
int unlock_device(struct st_device *dev)
デバイスをアンロックする
int putc_device(struct st_device *dev, unsigned char data)
デバイスにデータを1バイト書き込む
#define IOCMD_I2C_SLAVE_ADDR7
Set Save 7bit Address
int tprintf(const char *fmt,...)
簡易printf
#define DEF_DEV_NAME_I2C
標準I2Cコントローラデバイス名
int hstoi(uchar *str)
16進数文字列 int 変換
int close_device(struct st_device *dev)
デバイスをクローズする
int ioctl_device(struct st_device *dev, unsigned int com, unsigned int arg, void *param)
デバイスを制御する
static const struct st_shell_command com_i2c_detect
I2Cデバイスを検出する
int lock_device(struct st_device *dev, unsigned int timeout)
デバイスをロックする