* 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
*/
#include "./can.h"
#include "./constants.h"
#include "./can_sysdep.h"
#include "./can_queue.h"
-#include "lincan_config.h"
#ifdef CAN_DEBUG
#define DEBUGMSG(fmt,args...) can_printk(KERN_ERR "can.o (debug): " fmt,\
struct canhardware_t *hosthardware_p;
union {
+ void *anydev;
#ifdef CAN_ENABLE_PCI_SUPPORT
struct pci_dev *pcidev;
#endif /*CAN_ENABLE_PCI_SUPPORT*/
* %CHIP_SEGMENTED .. access to the chip is segmented (mainly for i82527 chips)
* @clock: chip base clock frequency in Hz
* @baudrate: selected chip baudrate in Hz
- * @write_register: write chip register function copy -
+ * @write_register: write chip register function copy
* @read_register: read chip register function copy
+ * @chip_data: pointer for optional chip specific data extension
* @sja_cdr_reg: SJA specific register -
* holds hardware specific options for the Clock Divider
* register. Options defined in the sja1000.h file:
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;
+
unsigned short sja_cdr_reg; /* sja1000 only! */
unsigned short sja_ocr_reg; /* sja1000 only! */
unsigned short int_cpu_reg; /* intel 82527 only! */
* %MSGOBJ_TX_REQUEST .. the message object requests TX activation
* %MSGOBJ_TX_LOCK .. some IRQ routine or callback on some CPU
* is running inside TX activation processing code
+ * @rx_preconfig_id: place to store RX message identifier for some chip types
+ * that reuse same object for TX
*/
struct msgobj_t {
unsigned long obj_base_addr;
struct canmsg_t rx_msg;
struct chip_t *hostchip;
+
+ unsigned long rx_preconfig_id;
atomic_t obj_used;
struct list_head obj_users;
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);
};
* @remote_request: configures message object and asks for RTR message
* @check_tx_stat: checks state of transmission engine
* @wakeup_tx: wakeup TX processing
- * @set_filter: if
+ * @filtch_rq: optional routine for propagation of outgoing edges filters to HW
* @enable_configuration: enable chip configuration mode
* @disable_configuration: disable chip configuration mode
* @set_btregs: configures bitrate registers
const struct boardtype_t* boardtype_find(const char *str);
+int can_check_dev_taken(void *anydev);
+
#ifdef CAN_WITH_RTL
extern int can_rtl_priority;
#endif /*CAN_WITH_RTL*/