HI,
I new to linux device drivers.
I am developing HDLC driver.
I dont know how to read and write data in memory mapped address.
Please help.
/*code*/
#define REG_MAP_ADDR 0x50400000
/* Registers */
typedef struct {
u16 MOD;
u16 STATUS;
u16 TBASE;
u16 Tx;
u16 TxBD;
u16 RBASE;
u16 MAX_BUFF_LEN;
u16 Rx;
u16 RxBD;
}reg_map_1ch_t;
typedef struct {
reg_map_1ch_t reg_ch[16];
}reg_map_t;
reg_map_t *reg_map;
unsigned short data=0;
volatile unsigned short *base_addr;
reg_map = ioremap_nocache(REG_MAP_ADDR, sizeof(reg_map_t));
/*now i have to read and write the data of memory mapped address.
Give me idea. I did as follows */
base_addr = (volatile unsigned short *)reg_map;
data = (unsigned short)(*(base_addr));
printk(KERN_ALERT "Before Write Read Data: %d\n", data);
data = 1;
base_addr[0] = data;
data = (unsigned short)(*(base_addr));
printk(KERN_ALERT "After Write Read Data: %d\n", data);
I did Above code in init module, when i am inserting the module, system will reboot.
Whats the error.
i am not getting error, just reboots the system.