* Rewritten for new CAN queues by Pavel Pisa - OCERA team member
* email:pisa@cmp.felk.cvut.cz
* This software is released under the GPL-License.
- * Version lincan-0.2 9 Jul 2003
+ * Version lincan-0.3 17 Jun 2004
*/
-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
can_irqreturn_t c_can_irq_handler(int irq, void *dev_id, struct pt_regs *regs);
+int c_can_fill_chipspecops(struct chip_t *chip);
+
/* BasicCAN mode address map */
#define CCCR 0x0000 /* Control Register */
#define CCSR 0x0004 /* Status Register */