* @stop_chip: stops chip message processing
* @irq_handler: interrupt service routine
* @irq_accept: optional fast irq accept routine responsible for blocking further interrupts
+ *
+ * @set_bittiming: set bittiming parameters
*/
struct chipspecops_t {
int (*chip_config)(struct canchip_t *chip);
int (*stop_chip)(struct canchip_t *chip);
int (*irq_handler)(int irq, struct canchip_t *chip);
int (*irq_accept)(int irq, struct canchip_t *chip);
+
+ int (*set_bittiming)(struct canchip_t *chip, int brp, int sjw, int tseg1, int tseg2);
};
struct mem_addr {
#if defined(CONFIG_OC_LINCAN_PORTIO_ONLY)
-extern inline void can_write_reg(const struct canchip_t *chip, unsigned char data, unsigned reg_offs)
+extern inline void can_write_reg(const struct canchip_t *chip, unsigned data, unsigned reg_offs)
{
can_outb(data, chip->chip_base_addr+reg_offs);
}
return can_inb(chip->chip_base_addr+reg_offs);
}
extern inline void canobj_write_reg(const struct canchip_t *chip, const struct msgobj_t *obj,
- unsigned char data, unsigned reg_offs)
+ unsigned data, unsigned reg_offs)
{
can_outb(data, obj->obj_base_addr+reg_offs);
}
}
#elif defined(CONFIG_OC_LINCAN_MEMIO_ONLY)
-extern inline void can_write_reg(const struct canchip_t *chip, unsigned char data, unsigned reg_offs)
+extern inline void can_write_reg(const struct canchip_t *chip, unsigned data, unsigned reg_offs)
{
can_writeb(data, chip->chip_base_addr+reg_offs);
}
return can_readb(chip->chip_base_addr+reg_offs);
}
extern inline void canobj_write_reg(const struct canchip_t *chip, const struct msgobj_t *obj,
- unsigned char data, unsigned reg_offs)
+ unsigned data, unsigned reg_offs)
{
can_writeb(data, obj->obj_base_addr+reg_offs);
}
/* Inline function to write to the hardware registers. The argument reg_offs is
* relative to the memory map of the chip and not the absolute memory reg_offs.
*/
-extern inline void can_write_reg(const struct canchip_t *chip, unsigned char data, unsigned reg_offs)
+extern inline void can_write_reg(const struct canchip_t *chip, unsigned data, unsigned reg_offs)
{
can_ioptr_t address_to_write;
address_to_write = chip->chip_base_addr+reg_offs;
}
extern inline void canobj_write_reg(const struct canchip_t *chip, const struct msgobj_t *obj,
- unsigned char data, unsigned reg_offs)
+ unsigned data, unsigned reg_offs)
{
can_ioptr_t address_to_write;
address_to_write = obj->obj_base_addr+reg_offs;