This is required for the support of the cards connected to the wider
bus architecture. This should not have negative impact, because
char has been propagated to int by C call convention anyway.
The global inline canobj_write_reg function has been left intact
(byte only), because it could better optimize for static call case.
35 files changed:
int aim104_init_hw_data(struct candevice_t *candev);
int aim104_init_chip_data(struct candevice_t *candev, int chipnr);
int aim104_init_obj_data(struct chip_t *chip, int objnr);
int aim104_init_hw_data(struct candevice_t *candev);
int aim104_init_chip_data(struct candevice_t *candev, int chipnr);
int aim104_init_obj_data(struct chip_t *chip, int objnr);
-void aim104_write_register(unsigned char data, unsigned long address);
+void aim104_write_register(unsigned data, unsigned long address);
unsigned aim104_read_register(unsigned long address);
int aim104_program_irq(struct candevice_t *candev);
unsigned aim104_read_register(unsigned long address);
int aim104_program_irq(struct candevice_t *candev);
* Version lincan-0.2 9 Jul 2003
*/
* Version lincan-0.2 9 Jul 2003
*/
-void hms30c7202_write_reg_w(const struct chip_t *pchip, u16 data, unsigned reg);
-
-u16 hms30c7202_read_reg_w(const struct chip_t *pchip, unsigned reg);
-
-#ifndef CONFIG_OC_LINCAN_DYNAMICIO
/*
* optimized inline version, may it be, that it can be too fast for the chip
*/
extern inline void c_can_write_reg_w(const struct chip_t *pchip, u16 data, unsigned reg)
{
u32 address = pchip->chip_base_addr + reg;
/*
* optimized inline version, may it be, that it can be too fast for the chip
*/
extern inline void c_can_write_reg_w(const struct chip_t *pchip, u16 data, unsigned reg)
{
u32 address = pchip->chip_base_addr + reg;
+ #ifndef CONFIG_OC_LINCAN_DYNAMICIO
+ #else /*CONFIG_OC_LINCAN_DYNAMICIO*/
+ pchip->write_register(data, address);
+ #endif /*CONFIG_OC_LINCAN_DYNAMICIO*/
}
extern inline u16 c_can_read_reg_w(const struct chip_t *pchip, unsigned reg)
{
u32 address = pchip->chip_base_addr + reg;
}
extern inline u16 c_can_read_reg_w(const struct chip_t *pchip, unsigned reg)
{
u32 address = pchip->chip_base_addr + reg;
+ #ifndef CONFIG_OC_LINCAN_DYNAMICIO
+ #else /*CONFIG_OC_LINCAN_DYNAMICIO*/
+ return pchip->read_register(address);
+ #endif /*CONFIG_OC_LINCAN_DYNAMICIO*/
-#else /*CONFIG_OC_LINCAN_DYNAMICIO*/
-/*
- * the standard routines for register access cannot be used,
- * because they work only with 8-bit peripherals
- */
-
-extern inline void c_can_write_reg_w(const struct chip_t *pchip, u16 data, unsigned reg)
-{
- hms30c7202_write_reg_w(pchip, data, reg);
-}
-
-extern inline u16 c_can_read_reg_w(const struct chip_t *pchip, unsigned reg)
-{
- return hms30c7202_read_reg_w(pchip, reg);
-}
-#endif /*CONFIG_OC_LINCAN_DYNAMICIO*/
extern can_spinlock_t c_can_spwlock; // Spin lock for write operations
extern can_spinlock_t c_can_sprlock; // Spin lock for read operations
extern can_spinlock_t c_can_spwlock; // Spin lock for write operations
extern can_spinlock_t c_can_sprlock; // Spin lock for read operations
int cc104_init_hw_data(struct candevice_t *candev);
int cc104_init_chip_data(struct candevice_t *candev, int chipnr);
int cc104_init_obj_data(struct chip_t *chip, int objnr);
int cc104_init_hw_data(struct candevice_t *candev);
int cc104_init_chip_data(struct candevice_t *candev, int chipnr);
int cc104_init_obj_data(struct chip_t *chip, int objnr);
-void cc104_write_register(unsigned char data, unsigned long address);
+void cc104_write_register(unsigned data, unsigned long address);
unsigned cc104_read_register(unsigned long address);
int cc104_program_irq(struct candevice_t *candev);
unsigned cc104_read_register(unsigned long address);
int cc104_program_irq(struct candevice_t *candev);
int hms30c7202_request_io(struct candevice_t *candev);\r
int hms30c7202_release_io(struct candevice_t *candev);\r
int hms30c7202_reset( struct candevice_t *candev);\r
int hms30c7202_request_io(struct candevice_t *candev);\r
int hms30c7202_release_io(struct candevice_t *candev);\r
int hms30c7202_reset( struct candevice_t *candev);\r
-void hms30c7202_write_reg_w(const struct chip_t *pchip, u16 data, unsigned reg);\r
-u16 hms30c7202_read_reg_w(const struct chip_t *pchip, unsigned reg);\r
+void hms30c7202_write_register(unsigned data, unsigned long address);\r
+unsigned hms30c7202_read_register(unsigned long address);\r
int m437_init_hw_data(struct candevice_t *candev);
int m437_init_chip_data(struct candevice_t *candev, int chipnr);
int m437_init_obj_data(struct chip_t *chip, int objnr);
int m437_init_hw_data(struct candevice_t *candev);
int m437_init_chip_data(struct candevice_t *candev, int chipnr);
int m437_init_obj_data(struct chip_t *chip, int objnr);
-void m437_write_register(unsigned char data, unsigned long address);
+void m437_write_register(unsigned data, unsigned long address);
unsigned m437_read_register(unsigned long address);
int m437_program_irq(struct candevice_t *candev);
int m437_register(struct hwspecops_t *hwspecops);
unsigned m437_read_register(unsigned long address);
int m437_program_irq(struct candevice_t *candev);
int m437_register(struct hwspecops_t *hwspecops);
long clock; /* Chip clock in Hz */
long baudrate;
long clock; /* Chip clock in Hz */
long baudrate;
- void (*write_register)(unsigned char data,unsigned long address);
+ void (*write_register)(unsigned data,unsigned long address);
unsigned (*read_register)(unsigned long address);
void *chip_data;
unsigned (*read_register)(unsigned long address);
void *chip_data;
int (*init_chip_data)(struct candevice_t *candev, int chipnr);
int (*init_obj_data)(struct chip_t *chip, int objnr);
int (*program_irq)(struct candevice_t *candev);
int (*init_chip_data)(struct candevice_t *candev, int chipnr);
int (*init_obj_data)(struct chip_t *chip, int objnr);
int (*program_irq)(struct candevice_t *candev);
- void (*write_register)(unsigned char data,unsigned long address);
+ void (*write_register)(unsigned data,unsigned long address);
unsigned (*read_register)(unsigned long address);
};
unsigned (*read_register)(unsigned long address);
};
int msmcan_init_hw_data(struct candevice_t *candev);
int msmcan_init_chip_data(struct candevice_t *candev, int chipnr);
int msmcan_init_obj_data(struct chip_t *chip, int objnr);
int msmcan_init_hw_data(struct candevice_t *candev);
int msmcan_init_chip_data(struct candevice_t *candev, int chipnr);
int msmcan_init_obj_data(struct chip_t *chip, int objnr);
-void msmcan_write_register(unsigned char data, unsigned long address);
+void msmcan_write_register(unsigned data, unsigned long address);
unsigned msmcan_read_register(unsigned long address);
int msmcan_program_irq(struct candevice_t *candev);
unsigned msmcan_read_register(unsigned long address);
int msmcan_program_irq(struct candevice_t *candev);
int nsi_init_hw_data(struct candevice_t *candev);
int nsi_init_chip_data(struct candevice_t *candev, int chipnr);
int nsi_init_obj_data(struct chip_t *chip, int objnr);
int nsi_init_hw_data(struct candevice_t *candev);
int nsi_init_chip_data(struct candevice_t *candev, int chipnr);
int nsi_init_obj_data(struct chip_t *chip, int objnr);
-void nsi_write_register(unsigned char data, unsigned long address);
+void nsi_write_register(unsigned data, unsigned long address);
unsigned nsi_read_register(unsigned long address);
int nsi_program_irq(struct candevice_t *candev);
unsigned nsi_read_register(unsigned long address);
int nsi_program_irq(struct candevice_t *candev);
int pci03_init_hw_data(struct candevice_t *candev);
int pci03_init_chip_data(struct candevice_t *candev, int chipnr);
int pci03_init_obj_data(struct chip_t *chip, int objnr);
int pci03_init_hw_data(struct candevice_t *candev);
int pci03_init_chip_data(struct candevice_t *candev, int chipnr);
int pci03_init_obj_data(struct chip_t *chip, int objnr);
-void pci03_write_register(unsigned char data, unsigned long address);
+void pci03_write_register(unsigned data, unsigned long address);
unsigned pci03_read_register(unsigned long address);
int pci03_program_irq(struct candevice_t *candev);
unsigned pci03_read_register(unsigned long address);
int pci03_program_irq(struct candevice_t *candev);
int pccan_init_hw_data(struct candevice_t *candev);
int pccan_init_chip_data(struct candevice_t *candev, int chipnr);
int pccan_init_obj_data(struct chip_t *chip, int objnr);
int pccan_init_hw_data(struct candevice_t *candev);
int pccan_init_chip_data(struct candevice_t *candev, int chipnr);
int pccan_init_obj_data(struct chip_t *chip, int objnr);
-void pccan_write_register(unsigned char data, unsigned long address);
+void pccan_write_register(unsigned data, unsigned long address);
unsigned pccan_read_register(unsigned long address);
int pccan_program_irq(struct candevice_t *candev);
unsigned pccan_read_register(unsigned long address);
int pccan_program_irq(struct candevice_t *candev);
int pcccan_init_hw_data(struct candevice_t *candev);
int pcccan_init_chip_data(struct candevice_t *candev, int chipnr);
int pcccan_init_obj_data(struct chip_t *chip, int objnr);
int pcccan_init_hw_data(struct candevice_t *candev);
int pcccan_init_chip_data(struct candevice_t *candev, int chipnr);
int pcccan_init_obj_data(struct chip_t *chip, int objnr);
-void pcccan_write_register(unsigned char data, unsigned long address);
+void pcccan_write_register(unsigned data, unsigned long address);
unsigned pcccan_read_register(unsigned long address);
int pcccan_program_irq(struct candevice_t *candev);
unsigned pcccan_read_register(unsigned long address);
int pcccan_program_irq(struct candevice_t *candev);
int pcm3680_init_hw_data(struct candevice_t *candev);
int pcm3680_init_chip_data(struct candevice_t *candev, int chipnr);
int pcm3680_init_obj_data(struct chip_t *chip, int objnr);
int pcm3680_init_hw_data(struct candevice_t *candev);
int pcm3680_init_chip_data(struct candevice_t *candev, int chipnr);
int pcm3680_init_obj_data(struct chip_t *chip, int objnr);
-void pcm3680_write_register(unsigned char data, unsigned long address);
+void pcm3680_write_register(unsigned data, unsigned long address);
unsigned pcm3680_read_register(unsigned long address);
int pcm3680_program_irq(struct candevice_t *candev);
unsigned pcm3680_read_register(unsigned long address);
int pcm3680_program_irq(struct candevice_t *candev);
int pikronisa_init_chip_data(struct candevice_t *candev, int chipnr);
int pikronisa_init_obj_data(struct chip_t *chip, int objnr);
int pikronisa_program_irq(struct candevice_t *candev);
int pikronisa_init_chip_data(struct candevice_t *candev, int chipnr);
int pikronisa_init_obj_data(struct chip_t *chip, int objnr);
int pikronisa_program_irq(struct candevice_t *candev);
-void pikronisa_write_register(unsigned char data, unsigned long address);
+void pikronisa_write_register(unsigned data, unsigned long address);
unsigned pikronisa_read_register(unsigned long address);
unsigned pikronisa_read_register(unsigned long address);
int pip5_init_hw_data(struct candevice_t *candev);
int pip5_init_chip_data(struct candevice_t *candev, int chipnr);
int pip5_init_obj_data(struct chip_t *chip, int objnr);
int pip5_init_hw_data(struct candevice_t *candev);
int pip5_init_chip_data(struct candevice_t *candev, int chipnr);
int pip5_init_obj_data(struct chip_t *chip, int objnr);
-void pip5_write_register(unsigned char data, unsigned long address);
+void pip5_write_register(unsigned data, unsigned long address);
unsigned pip5_read_register(unsigned long address);
int pip5_program_irq(struct candevice_t *candev);
unsigned pip5_read_register(unsigned long address);
int pip5_program_irq(struct candevice_t *candev);
int smartcan_init_hw_data(struct candevice_t *candev);
int smartcan_init_chip_data(struct candevice_t *candev, int chipnr);
int smartcan_init_obj_data(struct chip_t *chip, int objnr);
int smartcan_init_hw_data(struct candevice_t *candev);
int smartcan_init_chip_data(struct candevice_t *candev, int chipnr);
int smartcan_init_obj_data(struct chip_t *chip, int objnr);
-void smartcan_write_register(unsigned char data, unsigned long address);
+void smartcan_write_register(unsigned data, unsigned long address);
unsigned smartcan_read_register(unsigned long address);
unsigned smartcan_read_register(unsigned long address);
int ssv_init_hw_data(struct candevice_t *candev);
int ssv_init_chip_data(struct candevice_t *candev, int chipnr);
int ssv_init_obj_data(struct chip_t *chip, int objnr);
int ssv_init_hw_data(struct candevice_t *candev);
int ssv_init_chip_data(struct candevice_t *candev, int chipnr);
int ssv_init_obj_data(struct chip_t *chip, int objnr);
-void ssv_write_register(unsigned char data, unsigned long address);
+void ssv_write_register(unsigned data, unsigned long address);
unsigned ssv_read_register(unsigned long address);
int ssv_program_irq(struct candevice_t *candev);
unsigned ssv_read_register(unsigned long address);
int ssv_program_irq(struct candevice_t *candev);
int template_init_hw_data(struct candevice_t *candev);
int template_init_chip_data(struct candevice_t *candev, int chipnr);
int template_init_obj_data(struct chip_t *chip, int objnr);
int template_init_hw_data(struct candevice_t *candev);
int template_init_chip_data(struct candevice_t *candev, int chipnr);
int template_init_obj_data(struct chip_t *chip, int objnr);
-void template_write_register(unsigned char data, unsigned long address);
+void template_write_register(unsigned data, unsigned long address);
unsigned template_read_register(unsigned long address);
int template_program_irq(struct candevice_t *candev);
unsigned template_read_register(unsigned long address);
int template_program_irq(struct candevice_t *candev);
* Return Value: The function does not return a value
* File: src/template.c
*/
* Return Value: The function does not return a value
* File: src/template.c
*/
-void aim104_write_register(unsigned char data, unsigned long address)
+void aim104_write_register(unsigned data, unsigned long address)
#endif
unsigned bfadcan_read_register(unsigned long address);
#endif
unsigned bfadcan_read_register(unsigned long address);
-void bfadcan_write_register(unsigned char data, unsigned long address);
+void bfadcan_write_register(unsigned data, unsigned long address);
* Return Value: The function does not return a value
* File: src/bfadcan.c
*/
* Return Value: The function does not return a value
* File: src/bfadcan.c
*/
-void bfadcan_write_register(unsigned char data, unsigned long address)
+void bfadcan_write_register(unsigned data, unsigned long address)
{
#ifdef WINDOWED_ACCESS
can_spin_irqflags_t flags;
{
#ifdef WINDOWED_ACCESS
can_spin_irqflags_t flags;
* Return Value: The function does not return a value
* File: src/template.c
*/
* Return Value: The function does not return a value
* File: src/template.c
*/
-void cc104_write_register(unsigned char data, unsigned long address)
+void cc104_write_register(unsigned data, unsigned long address)
-void ems_cpcpci_write_register(unsigned char data, unsigned long address)
+void ems_cpcpci_write_register(unsigned data, unsigned long address)
{
address += ((address&(EMS_CPCPCI_BYTES_PER_CIRCUIT-1))
*(EMS_CPCPCI_BYTES_PER_REG-1));
{
address += ((address&(EMS_CPCPCI_BYTES_PER_CIRCUIT-1))
*(EMS_CPCPCI_BYTES_PER_REG-1));
u16 tempReg;
//disable IRQ generation
u16 tempReg;
//disable IRQ generation
- tempReg = hms30c7202_read_reg_w(candev->chip[0], CCCR);
+ tempReg = c_can_read_reg_w(candev->chip[0], CCCR);
c_can_config_irqs(candev->chip[0], 0);
c_can_config_irqs(candev->chip[0], 0);
/* Check busoff status */
/* Check busoff status */
- while ( (hms30c7202_read_reg_w(pchip, CCSR) & SR_BOFF) && (i<=15)) {
+ while ( (c_can_read_reg_w(pchip, CCSR) & SR_BOFF) && (i<=15)) {
candev->nr_sja1000_chips=0;
candev->nr_all_chips=NR_C_CAN;
candev->nr_sja1000_chips=0;
candev->nr_all_chips=NR_C_CAN;
- // Register hardware operations
- candev->hwspecops->request_io = hms30c7202_request_io;
- candev->hwspecops->release_io = hms30c7202_release_io;
- candev->hwspecops->reset = hms30c7202_reset;
- /* private register read and write routines used */
- candev->hwspecops->write_register = NULL; /*hms30c7202_write_register;*/
- candev->hwspecops->read_register = NULL; /*hms30c7202_read_register;*/
-
* File: src/template.c
*/
* File: src/template.c
*/
-void hms30c7202_write_reg_w(const struct chip_t *pchip, u16 data, unsigned reg)
+void hms30c7202_write_register(unsigned data, unsigned long address)
- int i;
- u32 address = pchip->chip_base_addr + reg;
//unsigned long usecs = 1;
//unsigned long usecs = 1;
-
- //DEBUGMSG("Trying to write 0x%u16x to address 0x%lx\n",data,address);
-
- writew(data,address);
+
+ //DEBUGMSG("Trying to write 0x%u16x to address 0x%lx\n",data,address);
+
+ writew(data,address);
* Return Value: The function returns the value stored in @address
* File: src/template.c
*/
* Return Value: The function returns the value stored in @address
* File: src/template.c
*/
-u16 hms30c7202_read_reg_w(const struct chip_t *pchip, unsigned reg)
+unsigned hms30c7202_read_register(unsigned long address)
- u16 value, i;
- u32 address = pchip->chip_base_addr + reg;
- //unsigned long usecs = 1;
-
- //DEBUGMSG("Trying to read from address 0x%lx :",address);
-
- value = readw(address);
- //udelay( usecs );
- for (i=0;i<5;i++);
- value = readw(address);
+ u16 value, i;
+
+ //DEBUGMSG("Trying to read from address 0x%lx :",address);
+
+ value = readw(address);
- for (i=0;i<5;i++);
-
- //DEBUGMSG("0x%u16x\n",value);
- return value;
+ for (i=0;i<5;i++);
+ value = readw(address);
+ //udelay( usecs );
+ for (i=0;i<5;i++);
+
+ //DEBUGMSG("0x%u16x\n",value);
+ return value;
hwspecops->init_hw_data = hms30c7202_init_hw_data;
hwspecops->init_chip_data = hms30c7202_init_chip_data;
hwspecops->init_obj_data = hms30c7202_init_obj_data;
hwspecops->init_hw_data = hms30c7202_init_hw_data;
hwspecops->init_chip_data = hms30c7202_init_chip_data;
hwspecops->init_obj_data = hms30c7202_init_obj_data;
- /* private register read and write routines used */
- hwspecops->write_register = NULL; /*hms30c7202_write_register;*/
- hwspecops->read_register = NULL; /*hms30c7202_read_register;*/
+ hwspecops->write_register = hms30c7202_write_register;
+ hwspecops->read_register = hms30c7202_read_register;
hwspecops->program_irq = hms30c7202_program_irq;
return 0;
}
hwspecops->program_irq = hms30c7202_program_irq;
return 0;
}
-void kv_pcican_write_register(unsigned char data, unsigned long address)
+void kv_pcican_write_register(unsigned data, unsigned long address)
* Return Value: The function does not return a value
* File: src/m437.c
*/
* Return Value: The function does not return a value
* File: src/m437.c
*/
-void m437_write_register(unsigned char data, unsigned long address)
+void m437_write_register(unsigned data, unsigned long address)
{
writeb(data,base+address);
}
{
writeb(data,base+address);
}
* on the CAN chip. You should only have to edit this function if your hardware
* uses some specific write process.
*/
* on the CAN chip. You should only have to edit this function if your hardware
* uses some specific write process.
*/
-void msmcan_write_register(unsigned char data, unsigned long address)
+void msmcan_write_register(unsigned data, unsigned long address)
{
/* address is combination of base address shifted left by 16 and index */
can_spin_irqflags_t flags;
{
/* address is combination of base address shifted left by 16 and index */
can_spin_irqflags_t flags;
* on the CAN chip. You should only have to edit this function if your hardware
* uses some specific write process.
*/
* on the CAN chip. You should only have to edit this function if your hardware
* uses some specific write process.
*/
-void nsi_write_register(unsigned char data, unsigned long address)
+void nsi_write_register(unsigned data, unsigned long address)
{
/* address is an absolute address */
{
/* address is an absolute address */
* Return Value: The function does not return a value
* File: src/pc-i03.c
*/
* Return Value: The function does not return a value
* File: src/pc-i03.c
*/
-void pci03_write_register(unsigned char data, unsigned long address)
+void pci03_write_register(unsigned data, unsigned long address)
{
unsigned int *pci03_base_ptr;
unsigned short address_to_write;
{
unsigned int *pci03_base_ptr;
unsigned short address_to_write;
-inline void pccan_write_register(unsigned char data, unsigned long address)
+inline void pccan_write_register(unsigned data, unsigned long address)
* Return Value: The function does not return a value
* File: src/pcccan.c
*/
* Return Value: The function does not return a value
* File: src/pcccan.c
*/
-void pcccan_write_register(unsigned char data, unsigned long address)
+void pcccan_write_register(unsigned data, unsigned long address)
{
can_spin_irqflags_t flags;
can_spin_lock_irqsave(&pcccan_port_lock,flags);
{
can_spin_irqflags_t flags;
can_spin_lock_irqsave(&pcccan_port_lock,flags);
* Return Value: The function does not return a value
* File: src/template.c
*/
* Return Value: The function does not return a value
* File: src/template.c
*/
-void pcm3680_write_register(unsigned char data, unsigned long address)
+void pcm3680_write_register(unsigned data, unsigned long address)
{
writeb(data,address);
}
{
writeb(data,address);
}
* Return Value: The function does not return a value
* File: src/pikronisa.c
*/
* Return Value: The function does not return a value
* File: src/pikronisa.c
*/
-void pikronisa_write_register(unsigned char data, unsigned long address)
+void pikronisa_write_register(unsigned data, unsigned long address)
{
/*DEBUGMSG("pikronisa_write_register: addr=0x%lx data=0x%x",
address,data);*/
{
/*DEBUGMSG("pikronisa_write_register: addr=0x%lx data=0x%x",
address,data);*/
-void pip_write_register(unsigned char data, unsigned long address)
+void pip_write_register(unsigned data, unsigned long address)
-void smartcan_write_register(unsigned char data, unsigned long address)
+void smartcan_write_register(unsigned data, unsigned long address)
{
can_spin_irqflags_t flags;
can_spin_lock_irqsave(&smartcan_port_lock,flags);
{
can_spin_irqflags_t flags;
can_spin_lock_irqsave(&smartcan_port_lock,flags);
* on the CAN chip. You should only have to edit this function if your hardware
* uses some specific write process.
*/
* on the CAN chip. You should only have to edit this function if your hardware
* uses some specific write process.
*/
-void ssv_write_register(unsigned char data, unsigned long address)
+void ssv_write_register(unsigned data, unsigned long address)
{
/* address is an absolute address */
{
/* address is an absolute address */
* Return Value: The function does not return a value
* File: src/template.c
*/
* Return Value: The function does not return a value
* File: src/template.c
*/
-void template_write_register(unsigned char data, unsigned long address)
+void template_write_register(unsigned data, unsigned long address)