X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/9152514c81ee47c7941fc64204a3eaace518acbd..4b51897df818c0cef960dbfab815c7e69586c654:/embedded/app/usbcan/can/main.h diff --git a/embedded/app/usbcan/can/main.h b/embedded/app/usbcan/can/main.h index b7d2c59..cd5fd51 100644 --- a/embedded/app/usbcan/can/main.h +++ b/embedded/app/usbcan/can/main.h @@ -40,6 +40,7 @@ #include "./ul_listbase.h" #include "./can_sysdep.h" #include "./can_queue.h" +#include "./can_bittiming.h" #include "./errno.h" #ifdef CAN_DEBUG @@ -359,6 +360,9 @@ struct hwspecops_t { * @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 + * @get_bittiming_const: get chip specific constants for bittiming computation */ struct chipspecops_t { int (*chip_config)(struct canchip_t *chip); @@ -391,6 +395,9 @@ struct chipspecops_t { 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); + int (*get_bittiming_const)(struct canchip_t *chip, struct can_bittiming_const *btc); }; struct mem_addr { @@ -425,7 +432,7 @@ extern struct mem_addr *mem_head; #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); } @@ -434,7 +441,7 @@ extern inline unsigned can_read_reg(const struct canchip_t *chip, unsigned reg_o 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); } @@ -445,7 +452,7 @@ extern inline unsigned canobj_read_reg(const struct canchip_t *chip, const struc } #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); } @@ -454,7 +461,7 @@ extern inline unsigned can_read_reg(const struct canchip_t *chip, unsigned reg_o 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); } @@ -472,7 +479,7 @@ extern inline unsigned canobj_read_reg(const struct canchip_t *chip, const struc /* 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; @@ -487,7 +494,7 @@ extern inline unsigned can_read_reg(const struct canchip_t *chip, unsigned reg_o } 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;