Changed data size from byte to unsigned for write_register indirect call
authorppisa <ppisa>
Sun, 6 Jun 2004 10:17:11 +0000 (10:17 +0000)
committerppisa <ppisa>
Sun, 6 Jun 2004 10:17:11 +0000 (10:17 +0000)
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:
lincan/include/aim104.h
lincan/include/c_can.h
lincan/include/cc_can104.h
lincan/include/hms30c7202_can.h
lincan/include/m437.h
lincan/include/main.h
lincan/include/msmcan.h
lincan/include/nsi.h
lincan/include/pc-i03.h
lincan/include/pccan.h
lincan/include/pcccan.h
lincan/include/pcm3680.h
lincan/include/pikronisa.h
lincan/include/pip.h
lincan/include/smartcan.h
lincan/include/ssv.h
lincan/include/template.h
lincan/src/aim104.c
lincan/src/bfadcan.c
lincan/src/cc_can104.c
lincan/src/ems_cpcpci.c
lincan/src/hms30c7202_can.c
lincan/src/kv_pcican.c
lincan/src/m437.c
lincan/src/msmcan.c
lincan/src/nsi.c
lincan/src/pc_i03.c
lincan/src/pccan.c
lincan/src/pcccan.c
lincan/src/pcm3680.c
lincan/src/pikronisa.c
lincan/src/pip.c
lincan/src/smartcan.c
lincan/src/ssv.c
lincan/src/template.c

index c269114..b8d2366 100644 (file)
@@ -13,7 +13,7 @@ int aim104_reset(struct candevice_t *candev);
 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);
 
index 4955d86..8e72da4 100644 (file)
@@ -9,41 +9,28 @@
  * 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;
+    #ifndef CONFIG_OC_LINCAN_DYNAMICIO
        writew(data,address);
+    #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;
+    #ifndef CONFIG_OC_LINCAN_DYNAMICIO
        return readw(address);
+    #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
index c557f5c..ccfb840 100644 (file)
@@ -13,7 +13,7 @@ int cc104_reset(struct candevice_t *candev);
 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);
 
index 25ce632..5f113ff 100644 (file)
@@ -17,8 +17,8 @@ int hms30c7202_init_chip_data(struct candevice_t *candev, int chipnr);
 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
 \r
 \r
 \r
index 2c77bd3..c2edd18 100644 (file)
@@ -15,7 +15,7 @@ int m437_reset(struct candevice_t *candev);
 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);
index cc426b4..30ae627 100644 (file)
@@ -158,7 +158,7 @@ struct chip_t {
        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;
@@ -297,7 +297,7 @@ struct hwspecops_t {
        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);
 };
 
index 632acac..1d7bd33 100644 (file)
@@ -13,7 +13,7 @@ int msmcan_reset(struct candevice_t *candev);
 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);
 
index ec6db23..8f00ae0 100644 (file)
@@ -13,7 +13,7 @@ int nsi_reset(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);
-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);
 
index 9b34ca3..2245e4e 100644 (file)
@@ -13,7 +13,7 @@ int pci03_reset(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);
-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);
 
index d47804c..45b18be 100644 (file)
@@ -19,7 +19,7 @@ int pccanq_reset(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);
-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);
 
index cf98553..2e5b55b 100644 (file)
@@ -13,7 +13,7 @@ int pcccan_reset(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);
-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);
 
index 324854e..c0c5b6f 100644 (file)
@@ -13,7 +13,7 @@ int pcm3680_reset(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);
-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);
 
index 360cc08..1b8f4eb 100644 (file)
@@ -17,6 +17,6 @@ int pikronisa_init_hw_data(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);
 
index c32b2b5..cc4891f 100644 (file)
@@ -13,7 +13,7 @@ int pip5_reset(struct candevice_t *candev);
 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);
 
index 74fa2aa..047ab4b 100644 (file)
@@ -13,6 +13,6 @@ int smartcan_reset(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);
-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);
 
index 9371487..547308e 100644 (file)
@@ -11,7 +11,7 @@ int ssv_reset(struct candevice_t *candev);
 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);
 
index f61e31f..ef4b443 100644 (file)
@@ -13,7 +13,7 @@ int template_reset(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);
-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);
 
index cc24806..1119d61 100644 (file)
@@ -224,7 +224,7 @@ int aim104_program_irq(struct candevice_t *candev)
  * 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)
 {
        outb(data,address);
 }
index c2c9ce7..3fc3064 100644 (file)
@@ -44,7 +44,7 @@ static can_spinlock_t bfadcan_win_lock=SPIN_LOCK_UNLOCKED;
 #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);
 
 
 /**
@@ -270,7 +270,7 @@ int bfadcan_program_irq(struct candevice_t *candev)
  * 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;
index 1197bcf..9f621fd 100644 (file)
@@ -204,7 +204,7 @@ int cc104_program_irq(struct candevice_t *candev)
  * 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)
 {
        outb(data,address);
 }
index 69d855f..ce8927e 100644 (file)
@@ -123,7 +123,7 @@ int ems_cpcpci_release_io(struct candevice_t *candev)
 }
 
 
-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));
index 2bf38aa..fc13043 100644 (file)
@@ -94,7 +94,7 @@ int hms30c7202_release_io(struct candevice_t *candev)
        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);
        
@@ -155,7 +155,7 @@ int hms30c7202_reset(  struct candevice_t *candev)
        
        /* 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)) {
                udelay(20000);
                i++;
        }
@@ -273,14 +273,6 @@ int hms30c7202_init_hw_data(struct candevice_t *candev)
        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;*/
-
        return 0;
 }
 
@@ -359,17 +351,16 @@ int hms30c7202_init_obj_data(struct chip_t *chip, int objnr)
  * 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;
+       int i;
        //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);
        //udelay( usecs );
-   for (i=0; i<5; i++);
+       for (i=0; i<5; i++);
 }
 
 /**
@@ -382,23 +373,21 @@ void hms30c7202_write_reg_w(const struct chip_t *pchip, u16 data, unsigned reg)
  * 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);
        //udelay( usecs );
-   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;
 
 }
 
@@ -427,9 +416,8 @@ int hms30c7202_register(struct hwspecops_t *hwspecops)
        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;
 }
index e7f36e3..2b9893e 100644 (file)
@@ -121,7 +121,7 @@ int kv_pcican_release_io(struct candevice_t *candev)
 }
 
 
-void kv_pcican_write_register(unsigned char data, unsigned long address)
+void kv_pcican_write_register(unsigned data, unsigned long address)
 {
        outb(data,address); 
 }
index 37308b2..eb6a330 100644 (file)
@@ -261,7 +261,7 @@ int m437_program_irq(struct candevice_t *candev)
  * 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);
 }
index 1d6fb51..0cdb07d 100644 (file)
@@ -173,7 +173,7 @@ int msmcan_program_irq(struct candevice_t *candev)
  * 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;
index 03ba230..1ac0793 100644 (file)
@@ -170,7 +170,7 @@ int nsi_program_irq(struct candevice_t *candev)
  * 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 */
 
index d926e33..c7b3863 100644 (file)
@@ -231,7 +231,7 @@ int pci03_program_irq(struct candevice_t *candev)
  * 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;
index 6e32610..57dcd3c 100644 (file)
@@ -338,7 +338,7 @@ int pccan_program_irq(struct candevice_t *candev)
        return 0;
 }
 
-inline void pccan_write_register(unsigned char data, unsigned long address)
+inline void pccan_write_register(unsigned data, unsigned long address)
 {
        outb(data,address); 
 }
index ebf315c..b940731 100644 (file)
@@ -253,7 +253,7 @@ int pcccan_program_irq(struct candevice_t *candev)
  * 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);
index 2d17861..43b58f6 100644 (file)
@@ -237,7 +237,7 @@ int pcm3680_program_irq(struct candevice_t *candev)
  * 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);
 }
index 5778875..a102ab0 100644 (file)
@@ -243,7 +243,7 @@ int pikronisa_program_irq(struct candevice_t *candev)
  * 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);*/
index 16c0098..f031a73 100644 (file)
@@ -197,7 +197,7 @@ int pip6_program_irq(struct candevice_t *candev)
        return 0;
 }
 
-void pip_write_register(unsigned char data, unsigned long address)
+void pip_write_register(unsigned data, unsigned long address)
 {
        outb(data,address);
 }
index 4d638f9..4abbc9c 100644 (file)
@@ -100,7 +100,7 @@ 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)
 {
        can_spin_irqflags_t flags;
        can_spin_lock_irqsave(&smartcan_port_lock,flags);
index 802aee7..6f1b585 100644 (file)
@@ -185,7 +185,7 @@ int ssv_program_irq(struct candevice_t *candev)
  * 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 */
 
index f530228..6f49e8d 100644 (file)
@@ -214,7 +214,7 @@ int template_program_irq(struct candevice_t *candev)
  * 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)
 {
        outb(data,address);
 }