#define IO_RANGE 0x100
-static long base = 0L;
-
/**
* m437_request_io: - reserve io or memory range for can board
* @candev: pointer to candevice/board which asks for io. Field @io_addr
return -ENODEV;
}
- if ( !( base = (long) ioremap( candev->io_addr, IO_RANGE ) ) ) {
+ if ( !( candev->dev_base_addr = ioremap( candev->io_addr, IO_RANGE ) ) ) {
CANMSG("Unable to access I/O memory at: 0x%lx\n", candev->io_addr);
can_release_mem_region(candev->io_addr,IO_RANGE);
return -ENODEV;
unsigned i;
/* disable IRQ generation */
- m437_write_register(iCTL_CCE, iCTL);
+ m437_write_register(iCTL_CCE, candev->dev_base_addr+iCTL);
/* clear all message objects */
for (i=1; i<=15; i++) {
RXIE_RES |
TXIE_RES |
MVAL_RES,
- i*0x10+iMSGCTL0);
+ candev->dev_base_addr+i*0x10+iMSGCTL0);
m437_write_register(
NEWD_RES |
MLST_RES |
CPUU_RES |
TXRQ_RES |
RMPD_RES,
- i*0x10+iMSGCTL1);
+ candev->dev_base_addr+i*0x10+iMSGCTL1);
}
/* power down i82527 */
- m437_write_register(iCPU_PWD, iCPU);
+ m437_write_register(iCPU_PWD, candev->dev_base_addr+iCPU);
/* release I/O memory mapping */
- iounmap((void*)base);
+ iounmap(candev->dev_base_addr);
can_release_mem_region(candev->io_addr,IO_RANGE);
int m437_init_chip_data(struct candevice_t *candev, int chipnr)
{
i82527_fill_chipspecops(candev->chip[chipnr]);
- candev->chip[chipnr]->chip_base_addr=candev->io_addr;
+ candev->chip[chipnr]->chip_base_addr=candev->dev_base_addr;
candev->chip[chipnr]->clock = 16000000;
candev->chip[chipnr]->int_cpu_reg = iCPU_DSC | iCPU_CEN;
candev->chip[chipnr]->int_clk_reg =
* Return Value: The function does not return a value
* File: src/m437.c
*/
-void m437_write_register(unsigned data, unsigned long address)
+void m437_write_register(unsigned data, can_ioptr_t address)
{
- writeb(data,base+address);
+ can_writeb(data,address);
}
/**
* Return Value: The function returns the value stored in @address
* File: src/m437.c
*/
-unsigned m437_read_register(unsigned long address)
+unsigned m437_read_register(can_ioptr_t address)
{
- return readb(base+address);
+ return can_readb(address);
}
/* !!! Don't change this function !!! */