]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - embedded/app/usbcan/can/main.h
Transmitting the bit timing constants to a driver has been done.
[lincan.git] / embedded / app / usbcan / can / main.h
index b7d2c59ba29444c7cb414d56039e9c3fcc2924a5..b9fae2655b7b963b94f1992c3c60bf24c9c1c928 100644 (file)
@@ -359,6 +359,8 @@ 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
  */
 struct chipspecops_t {
        int (*chip_config)(struct canchip_t *chip);
@@ -391,6 +393,8 @@ 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);
 };
 
 struct mem_addr {
@@ -425,7 +429,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 +438,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 +449,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 +458,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 +476,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 +491,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;