diff options
Diffstat (limited to 'drivers/staging/cpc-usb')
-rw-r--r-- | drivers/staging/cpc-usb/TODO | 1 | ||||
-rw-r--r-- | drivers/staging/cpc-usb/cpc-usb_drv.c | 1 | ||||
-rw-r--r-- | drivers/staging/cpc-usb/cpc.h | 519 | ||||
-rw-r--r-- | drivers/staging/cpc-usb/cpc_int.h | 8 | ||||
-rw-r--r-- | drivers/staging/cpc-usb/cpcusb.h | 2 |
5 files changed, 254 insertions, 277 deletions
diff --git a/drivers/staging/cpc-usb/TODO b/drivers/staging/cpc-usb/TODO index 000e8bb..9b1752f 100644 --- a/drivers/staging/cpc-usb/TODO +++ b/drivers/staging/cpc-usb/TODO @@ -5,5 +5,6 @@ kernel: - remove proc code - tie into CAN socket interfaces if possible - figure out sane userspace api + - use linux's error codes Send patches to Greg Kroah-Hartman <greg@kroah.com> diff --git a/drivers/staging/cpc-usb/cpc-usb_drv.c b/drivers/staging/cpc-usb/cpc-usb_drv.c index 9bf3f98..c5eca46 100644 --- a/drivers/staging/cpc-usb/cpc-usb_drv.c +++ b/drivers/staging/cpc-usb/cpc-usb_drv.c @@ -28,7 +28,6 @@ #include <asm/uaccess.h> #include <linux/usb.h> -#include <linux/version.h> #include <linux/proc_fs.h> diff --git a/drivers/staging/cpc-usb/cpc.h b/drivers/staging/cpc-usb/cpc.h index ed8cb34..b2fda5d 100644 --- a/drivers/staging/cpc-usb/cpc.h +++ b/drivers/staging/cpc-usb/cpc.h @@ -10,243 +10,223 @@ #ifndef CPC_HEADER #define CPC_HEADER -// the maximum length of the union members within a CPC_MSG -// this value can be defined by the customer, but has to be -// >= 64 bytes -// however, if not defined before, we set a length of 64 byte +/* + * the maximum length of the union members within a CPC_MSG + * this value can be defined by the customer, but has to be + * >= 64 bytes + * however, if not defined before, we set a length of 64 byte + */ #if !defined(CPC_MSG_LEN) || (CPC_MSG_LEN < 64) #undef CPC_MSG_LEN #define CPC_MSG_LEN 64 #endif -// check the operating system used -#ifdef _WIN32 // running a Windows OS - -// define basic types on Windows platforms -#ifdef _MSC_VER // Visual Studio - typedef unsigned __int8 u8; - typedef unsigned __int16 u16; - typedef unsigned __int32 u32; -#else // Borland Compiler - typedef unsigned char u8; - typedef unsigned short u16; - typedef unsigned int u32; -#endif - // on Windows OS we use a byte alignment of 1 - #pragma pack(push, 1) - - // set the calling conventions for the library function calls - #define CALL_CONV __stdcall -#else - // Kernel headers already define this types - #ifndef __KERNEL__ - // define basic types - typedef unsigned char u8; - typedef unsigned short u16; - typedef unsigned int u32; - #endif - - // Linux does not use this calling convention - #define CALL_CONV -#endif - -// Transmission of events from CPC interfaces to PC can be individually -// controlled per event type. Default state is: don't transmit -// Control values are constructed by bit-or of Subject and Action -// and passed to CPC_Control() +/* + * Transmission of events from CPC interfaces to PC can be individually + * controlled per event type. Default state is: don't transmit + * Control values are constructed by bit-or of Subject and Action + * and passed to CPC_Control() + */ -// Control-Values for CPC_Control() Command Subject Selection +/* Control-Values for CPC_Control() Command Subject Selection */ #define CONTR_CAN_Message 0x04 #define CONTR_Busload 0x08 #define CONTR_CAN_State 0x0C #define CONTR_SendAck 0x10 #define CONTR_Filter 0x14 -#define CONTR_CmdQueue 0x18 // reserved, do not use +#define CONTR_CmdQueue 0x18 /* reserved, do not use */ #define CONTR_BusError 0x1C -// Control Command Actions +/* Control Command Actions */ #define CONTR_CONT_OFF 0 #define CONTR_CONT_ON 1 #define CONTR_SING_ON 2 -// CONTR_SING_ON doesn't change CONTR_CONT_ON state, so it should be -// read as: transmit at least once +/* + * CONTR_SING_ON doesn't change CONTR_CONT_ON state, so it should be + * read as: transmit at least once + */ -// defines for confirmed request +/* defines for confirmed request */ #define DO_NOT_CONFIRM 0 #define DO_CONFIRM 1 -// event flags +/* event flags */ #define EVENT_READ 0x01 #define EVENT_WRITE 0x02 -// Messages from CPC to PC contain a message object type field. -// The following message types are sent by CPC and can be used in -// handlers, others should be ignored. -#define CPC_MSG_T_RESYNC 0 // Normally to be ignored -#define CPC_MSG_T_CAN 1 // CAN data frame -#define CPC_MSG_T_BUSLOAD 2 // Busload message -#define CPC_MSG_T_STRING 3 // Normally to be ignored -#define CPC_MSG_T_CONTI 4 // Normally to be ignored -#define CPC_MSG_T_MEM 7 // Normally not to be handled -#define CPC_MSG_T_RTR 8 // CAN remote frame -#define CPC_MSG_T_TXACK 9 // Send acknowledge -#define CPC_MSG_T_POWERUP 10 // Power-up message -#define CPC_MSG_T_CMD_NO 11 // Normally to be ignored -#define CPC_MSG_T_CAN_PRMS 12 // Actual CAN parameters -#define CPC_MSG_T_ABORTED 13 // Command aborted message -#define CPC_MSG_T_CANSTATE 14 // CAN state message -#define CPC_MSG_T_RESET 15 // used to reset CAN-Controller -#define CPC_MSG_T_XCAN 16 // XCAN data frame -#define CPC_MSG_T_XRTR 17 // XCAN remote frame -#define CPC_MSG_T_INFO 18 // information strings -#define CPC_MSG_T_CONTROL 19 // used for control of interface/driver behaviour -#define CPC_MSG_T_CONFIRM 20 // response type for confirmed requests -#define CPC_MSG_T_OVERRUN 21 // response type for overrun conditions -#define CPC_MSG_T_KEEPALIVE 22 // response type for keep alive conditions -#define CPC_MSG_T_CANERROR 23 // response type for bus error conditions -#define CPC_MSG_T_DISCONNECTED 24 // response type for a disconnected interface -#define CPC_MSG_T_ERR_COUNTER 25 // RX/TX error counter of CAN controller - -#define CPC_MSG_T_FIRMWARE 100 // response type for USB firmware download - -// Messages from the PC to the CPC interface contain a command field -// Most of the command types are wrapped by the library functions and have therefore -// normally not to be used. -// However, programmers who wish to circumvent the library and talk directly -// to the drivers (mainly Linux programmers) can use the following -// command types: - -#define CPC_CMD_T_CAN 1 // CAN data frame -#define CPC_CMD_T_CONTROL 3 // used for control of interface/driver behaviour -#define CPC_CMD_T_CAN_PRMS 6 // set CAN parameters -#define CPC_CMD_T_CLEARBUF 8 // clears input queue; this is depricated, use CPC_CMD_T_CLEAR_MSG_QUEUE instead -#define CPC_CMD_T_INQ_CAN_PARMS 11 // inquire actual CAN parameters -#define CPC_CMD_T_FILTER_PRMS 12 // set filter parameter -#define CPC_CMD_T_RTR 13 // CAN remote frame -#define CPC_CMD_T_CANSTATE 14 // CAN state message -#define CPC_CMD_T_XCAN 15 // XCAN data frame -#define CPC_CMD_T_XRTR 16 // XCAN remote frame -#define CPC_CMD_T_RESET 17 // used to reset CAN-Controller -#define CPC_CMD_T_INQ_INFO 18 // miscellanous information strings -#define CPC_CMD_T_OPEN_CHAN 19 // open a channel -#define CPC_CMD_T_CLOSE_CHAN 20 // close a channel -#define CPC_CMD_T_CNTBUF 21 // this is depricated, use CPC_CMD_T_INQ_MSG_QUEUE_CNT instead -#define CPC_CMD_T_CAN_EXIT 200 // exit the CAN (disable interrupts; reset bootrate; reset output_cntr; mode = 1) - -#define CPC_CMD_T_INQ_MSG_QUEUE_CNT CPC_CMD_T_CNTBUF // inquires the count of elements in the message queue -#define CPC_CMD_T_INQ_ERR_COUNTER 25 // request the CAN controllers error counter -#define CPC_CMD_T_CLEAR_MSG_QUEUE CPC_CMD_T_CLEARBUF // clear CPC_MSG queue -#define CPC_CMD_T_CLEAR_CMD_QUEUE 28 // clear CPC_CMD queue -#define CPC_CMD_T_FIRMWARE 100 // reserved, must not be used -#define CPC_CMD_T_USB_RESET 101 // reserved, must not be used -#define CPC_CMD_T_WAIT_NOTIFY 102 // reserved, must not be used -#define CPC_CMD_T_WAIT_SETUP 103 // reserved, must not be used -#define CPC_CMD_T_ABORT 255 // Normally not to be used - -// definitions for CPC_MSG_T_INFO -// information sources +/* + * Messages from CPC to PC contain a message object type field. + * The following message types are sent by CPC and can be used in + * handlers, others should be ignored. + */ +#define CPC_MSG_T_RESYNC 0 /* Normally to be ignored */ +#define CPC_MSG_T_CAN 1 /* CAN data frame */ +#define CPC_MSG_T_BUSLOAD 2 /* Busload message */ +#define CPC_MSG_T_STRING 3 /* Normally to be ignored */ +#define CPC_MSG_T_CONTI 4 /* Normally to be ignored */ +#define CPC_MSG_T_MEM 7 /* Normally not to be handled */ +#define CPC_MSG_T_RTR 8 /* CAN remote frame */ +#define CPC_MSG_T_TXACK 9 /* Send acknowledge */ +#define CPC_MSG_T_POWERUP 10 /* Power-up message */ +#define CPC_MSG_T_CMD_NO 11 /* Normally to be ignored */ +#define CPC_MSG_T_CAN_PRMS 12 /* Actual CAN parameters */ +#define CPC_MSG_T_ABORTED 13 /* Command aborted message */ +#define CPC_MSG_T_CANSTATE 14 /* CAN state message */ +#define CPC_MSG_T_RESET 15 /* used to reset CAN-Controller */ +#define CPC_MSG_T_XCAN 16 /* XCAN data frame */ +#define CPC_MSG_T_XRTR 17 /* XCAN remote frame */ +#define CPC_MSG_T_INFO 18 /* information strings */ +#define CPC_MSG_T_CONTROL 19 /* used for control of interface/driver behaviour */ +#define CPC_MSG_T_CONFIRM 20 /* response type for confirmed requests */ +#define CPC_MSG_T_OVERRUN 21 /* response type for overrun conditions */ +#define CPC_MSG_T_KEEPALIVE 22 /* response type for keep alive conditions */ +#define CPC_MSG_T_CANERROR 23 /* response type for bus error conditions */ +#define CPC_MSG_T_DISCONNECTED 24 /* response type for a disconnected interface */ +#define CPC_MSG_T_ERR_COUNTER 25 /* RX/TX error counter of CAN controller */ + +#define CPC_MSG_T_FIRMWARE 100 /* response type for USB firmware download */ + +/* + * Messages from the PC to the CPC interface contain a command field + * Most of the command types are wrapped by the library functions and have therefore + * normally not to be used. + * However, programmers who wish to circumvent the library and talk directly + * to the drivers (mainly Linux programmers) can use the following + * command types: + */ +#define CPC_CMD_T_CAN 1 /* CAN data frame */ +#define CPC_CMD_T_CONTROL 3 /* used for control of interface/driver behaviour */ +#define CPC_CMD_T_CAN_PRMS 6 /* set CAN parameters */ +#define CPC_CMD_T_CLEARBUF 8 /* clears input queue; this is depricated, use CPC_CMD_T_CLEAR_MSG_QUEUE instead */ +#define CPC_CMD_T_INQ_CAN_PARMS 11 /* inquire actual CAN parameters */ +#define CPC_CMD_T_FILTER_PRMS 12 /* set filter parameter */ +#define CPC_CMD_T_RTR 13 /* CAN remote frame */ +#define CPC_CMD_T_CANSTATE 14 /* CAN state message */ +#define CPC_CMD_T_XCAN 15 /* XCAN data frame */ +#define CPC_CMD_T_XRTR 16 /* XCAN remote frame */ +#define CPC_CMD_T_RESET 17 /* used to reset CAN-Controller */ +#define CPC_CMD_T_INQ_INFO 18 /* miscellanous information strings */ +#define CPC_CMD_T_OPEN_CHAN 19 /* open a channel */ +#define CPC_CMD_T_CLOSE_CHAN 20 /* close a channel */ +#define CPC_CMD_T_CNTBUF 21 /* this is depricated, use CPC_CMD_T_INQ_MSG_QUEUE_CNT instead */ +#define CPC_CMD_T_CAN_EXIT 200 /* exit the CAN (disable interrupts; reset bootrate; reset output_cntr; mode = 1) */ + +#define CPC_CMD_T_INQ_MSG_QUEUE_CNT CPC_CMD_T_CNTBUF /* inquires the count of elements in the message queue */ +#define CPC_CMD_T_INQ_ERR_COUNTER 25 /* request the CAN controllers error counter */ +#define CPC_CMD_T_CLEAR_MSG_QUEUE CPC_CMD_T_CLEARBUF /* clear CPC_MSG queue */ +#define CPC_CMD_T_CLEAR_CMD_QUEUE 28 /* clear CPC_CMD queue */ +#define CPC_CMD_T_FIRMWARE 100 /* reserved, must not be used */ +#define CPC_CMD_T_USB_RESET 101 /* reserved, must not be used */ +#define CPC_CMD_T_WAIT_NOTIFY 102 /* reserved, must not be used */ +#define CPC_CMD_T_WAIT_SETUP 103 /* reserved, must not be used */ +#define CPC_CMD_T_ABORT 255 /* Normally not to be used */ + +/* definitions for CPC_MSG_T_INFO information sources */ #define CPC_INFOMSG_T_UNKNOWN_SOURCE 0 #define CPC_INFOMSG_T_INTERFACE 1 #define CPC_INFOMSG_T_DRIVER 2 #define CPC_INFOMSG_T_LIBRARY 3 -// information types +/* information types */ #define CPC_INFOMSG_T_UNKNOWN_TYPE 0 #define CPC_INFOMSG_T_VERSION 1 #define CPC_INFOMSG_T_SERIAL 2 -// definitions for controller types -#define PCA82C200 1 // Philips basic CAN controller, replaced by SJA1000 -#define SJA1000 2 // Philips basic CAN controller -#define AN82527 3 // Intel full CAN controller -#define M16C_BASIC 4 // M16C controller running in basic CAN (not full CAN) mode - -// channel open error codes -#define CPC_ERR_NO_FREE_CHANNEL -1 // no more free space within the channel array -#define CPC_ERR_CHANNEL_ALREADY_OPEN -2 // the channel is already open -#define CPC_ERR_CHANNEL_NOT_ACTIVE -3 // access to a channel not active failed -#define CPC_ERR_NO_DRIVER_PRESENT -4 // no driver at the location searched by the library -#define CPC_ERR_NO_INIFILE_PRESENT -5 // the library could not find the inifile -#define CPC_ERR_WRONG_PARAMETERS -6 // wrong parameters in the inifile -#define CPC_ERR_NO_INTERFACE_PRESENT -7 // 1. The specified interface is not connected - // 2. The interface (mostly CPC-USB) was disconnected upon operation -#define CPC_ERR_NO_MATCHING_CHANNEL -8 // the driver couldn't find a matching channel -#define CPC_ERR_NO_BUFFER_AVAILABLE -9 // the driver couldn't allocate buffer for messages -#define CPC_ERR_NO_INTERRUPT -10 // the requested interrupt couldn't be claimed -#define CPC_ERR_NO_MATCHING_INTERFACE -11 // no interface type related to this channel was found -#define CPC_ERR_NO_RESOURCES -12 // the requested resources could not be claimed -#define CPC_ERR_SOCKET -13 // error concerning TCP sockets - -// init error codes -#define CPC_ERR_WRONG_CONTROLLER_TYPE -14 // wrong CAN controller type within initialization -#define CPC_ERR_NO_RESET_MODE -15 // the controller could not be set into reset mode -#define CPC_ERR_NO_CAN_ACCESS -16 // the CAN controller could not be accessed - -// transmit error codes -#define CPC_ERR_CAN_WRONG_ID -20 // the provided CAN id is too big -#define CPC_ERR_CAN_WRONG_LENGTH -21 // the provided CAN length is too long -#define CPC_ERR_CAN_NO_TRANSMIT_BUF -22 // the transmit buffer was occupied -#define CPC_ERR_CAN_TRANSMIT_TIMEOUT -23 // The message could not be sent within a - // specified time - -// other error codes -#define CPC_ERR_SERVICE_NOT_SUPPORTED -30 // the requested service is not supported by the interface -#define CPC_ERR_IO_TRANSFER -31 // a transmission error down to the driver occurred -#define CPC_ERR_TRANSMISSION_FAILED -32 // a transmission error down to the interface occurred -#define CPC_ERR_TRANSMISSION_TIMEOUT -33 // a timeout occurred within transmission to the interface -#define CPC_ERR_OP_SYS_NOT_SUPPORTED -35 // the operating system is not supported -#define CPC_ERR_UNKNOWN -40 // an unknown error ocurred (mostly IOCTL errors) - -#define CPC_ERR_LOADING_DLL -50 // the library 'cpcwin.dll' could not be loaded -#define CPC_ERR_ASSIGNING_FUNCTION -51 // the specified function could not be assigned -#define CPC_ERR_DLL_INITIALIZATION -52 // the DLL was not initialized correctly -#define CPC_ERR_MISSING_LICFILE -55 // the file containing the licenses does not exist -#define CPC_ERR_MISSING_LICENSE -56 // a required license was not found - -// CAN state bit values. Ignore any bits not listed +/* definitions for controller types */ +#define PCA82C200 1 /* Philips basic CAN controller, replaced by SJA1000 */ +#define SJA1000 2 /* Philips basic CAN controller */ +#define AN82527 3 /* Intel full CAN controller */ +#define M16C_BASIC 4 /* M16C controller running in basic CAN (not full CAN) mode */ + +/* channel open error codes */ +#define CPC_ERR_NO_FREE_CHANNEL -1 /* no more free space within the channel array */ +#define CPC_ERR_CHANNEL_ALREADY_OPEN -2 /* the channel is already open */ +#define CPC_ERR_CHANNEL_NOT_ACTIVE -3 /* access to a channel not active failed */ +#define CPC_ERR_NO_DRIVER_PRESENT -4 /* no driver at the location searched by the library */ +#define CPC_ERR_NO_INIFILE_PRESENT -5 /* the library could not find the inifile */ +#define CPC_ERR_WRONG_PARAMETERS -6 /* wrong parameters in the inifile */ +#define CPC_ERR_NO_INTERFACE_PRESENT -7 /* 1. The specified interface is not connected */ + /* 2. The interface (mostly CPC-USB) was disconnected upon operation */ +#define CPC_ERR_NO_MATCHING_CHANNEL -8 /* the driver couldn't find a matching channel */ +#define CPC_ERR_NO_BUFFER_AVAILABLE -9 /* the driver couldn't allocate buffer for messages */ +#define CPC_ERR_NO_INTERRUPT -10 /* the requested interrupt couldn't be claimed */ +#define CPC_ERR_NO_MATCHING_INTERFACE -11 /* no interface type related to this channel was found */ +#define CPC_ERR_NO_RESOURCES -12 /* the requested resources could not be claimed */ +#define CPC_ERR_SOCKET -13 /* error concerning TCP sockets */ + +/* init error codes */ +#define CPC_ERR_WRONG_CONTROLLER_TYPE -14 /* wrong CAN controller type within initialization */ +#define CPC_ERR_NO_RESET_MODE -15 /* the controller could not be set into reset mode */ +#define CPC_ERR_NO_CAN_ACCESS -16 /* the CAN controller could not be accessed */ + +/* transmit error codes */ +#define CPC_ERR_CAN_WRONG_ID -20 /* the provided CAN id is too big */ +#define CPC_ERR_CAN_WRONG_LENGTH -21 /* the provided CAN length is too long */ +#define CPC_ERR_CAN_NO_TRANSMIT_BUF -22 /* the transmit buffer was occupied */ +#define CPC_ERR_CAN_TRANSMIT_TIMEOUT -23 /* The message could not be sent within a */ + /* specified time */ + +/* other error codes */ +#define CPC_ERR_SERVICE_NOT_SUPPORTED -30 /* the requested service is not supported by the interface */ +#define CPC_ERR_IO_TRANSFER -31 /* a transmission error down to the driver occurred */ +#define CPC_ERR_TRANSMISSION_FAILED -32 /* a transmission error down to the interface occurred */ +#define CPC_ERR_TRANSMISSION_TIMEOUT -33 /* a timeout occurred within transmission to the interface */ +#define CPC_ERR_OP_SYS_NOT_SUPPORTED -35 /* the operating system is not supported */ +#define CPC_ERR_UNKNOWN -40 /* an unknown error ocurred (mostly IOCTL errors) */ + +#define CPC_ERR_LOADING_DLL -50 /* the library 'cpcwin.dll' could not be loaded */ +#define CPC_ERR_ASSIGNING_FUNCTION -51 /* the specified function could not be assigned */ +#define CPC_ERR_DLL_INITIALIZATION -52 /* the DLL was not initialized correctly */ +#define CPC_ERR_MISSING_LICFILE -55 /* the file containing the licenses does not exist */ +#define CPC_ERR_MISSING_LICENSE -56 /* a required license was not found */ + +/* CAN state bit values. Ignore any bits not listed */ #define CPC_CAN_STATE_BUSOFF 0x80 #define CPC_CAN_STATE_ERROR 0x40 -// Mask to help ignore undefined bits +/* Mask to help ignore undefined bits */ #define CPC_CAN_STATE_MASK 0xc0 -// CAN-Message representation in a CPC_MSG -// Message object type is CPC_MSG_T_CAN or CPC_MSG_T_RTR -// or CPC_MSG_T_XCAN or CPC_MSG_T_XRTR +/* + * CAN-Message representation in a CPC_MS + * Message object type is CPC_MSG_T_CAN or CPC_MSG_T_RTR + * or CPC_MSG_T_XCAN or CPC_MSG_T_XRTR + */ typedef struct CPC_CAN_MSG { u32 id; u8 length; u8 msg[8]; } CPC_CAN_MSG_T; - -// representation of the CAN parameters for the PCA82C200 controller +/* representation of the CAN parameters for the PCA82C200 controller */ typedef struct CPC_PCA82C200_PARAMS { - u8 acc_code; // Acceptance-code for receive, Standard: 0 - u8 acc_mask; // Acceptance-mask for receive, Standard: 0xff (everything) - u8 btr0; // Bus-timing register 0 - u8 btr1; // Bus-timing register 1 - u8 outp_contr; // Output-control register + u8 acc_code; /* Acceptance-code for receive, Standard: 0 */ + u8 acc_mask; /* Acceptance-mask for receive, Standard: 0xff (everything) */ + u8 btr0; /* Bus-timing register 0 */ + u8 btr1; /* Bus-timing register 1 */ + u8 outp_contr; /* Output-control register */ } CPC_PCA82C200_PARAMS_T; -// representation of the CAN parameters for the SJA1000 controller +/* representation of the CAN parameters for the SJA1000 controller */ typedef struct CPC_SJA1000_PARAMS { - u8 mode; // enables single or dual acceptance filtering - u8 acc_code0; // Acceptance-code for receive, Standard: 0 + u8 mode; /* enables single or dual acceptance filtering */ + u8 acc_code0; /* Acceptance-code for receive, Standard: 0 */ u8 acc_code1; u8 acc_code2; u8 acc_code3; - u8 acc_mask0; // Acceptance-mask for receive, Standard: 0xff (everything) + u8 acc_mask0; /* Acceptance-mask for receive, Standard: 0xff (everything) */ u8 acc_mask1; u8 acc_mask2; u8 acc_mask3; - u8 btr0; // Bus-timing register 0 - u8 btr1; // Bus-timing register 1 - u8 outp_contr; // Output-control register + u8 btr0; /* Bus-timing register 0 */ + u8 btr1; /* Bus-timing register 1 */ + u8 outp_contr; /* Output-control register */ } CPC_SJA1000_PARAMS_T; -// representation of the CAN parameters for the M16C controller -// in basic CAN mode (means no full CAN) +/* + * representation of the CAN parameters for the M16C controller + * in basic CAN mode (means no full CAN) + */ typedef struct CPC_M16C_BASIC_PARAMS { u8 con0; u8 con1; @@ -267,9 +247,9 @@ typedef struct CPC_M16C_BASIC_PARAMS { u8 acc_ext_mask3; } CPC_M16C_BASIC_PARAMS_T; -// CAN params message representation +/* CAN params message representation */ typedef struct CPC_CAN_PARAMS { - u8 cc_type; // represents the controller type + u8 cc_type; /* represents the controller type */ union { CPC_M16C_BASIC_PARAMS_T m16c_basic; CPC_SJA1000_PARAMS_T sja1000; @@ -277,111 +257,108 @@ typedef struct CPC_CAN_PARAMS { } cc_params; } CPC_CAN_PARAMS_T; -// the following structures are slightly different for Windows and Linux -// To be able to use the 'Select' mechanism with Linux the application -// needs to know the devices file desciptor. -// This mechanism is not implemented within Windows and the file descriptor -// is therefore not needed -#ifdef _WIN32 - -// CAN init params message representation -typedef struct CPC_INIT_PARAMS { - CPC_CAN_PARAMS_T canparams; -} CPC_INIT_PARAMS_T; - -#else// Linux - -// CHAN init params representation +/* CHAN init params representation */ typedef struct CPC_CHAN_PARAMS { int fd; } CPC_CHAN_PARAMS_T; -// CAN init params message representation +/* CAN init params message representation */ typedef struct CPC_INIT_PARAMS { CPC_CHAN_PARAMS_T chanparams; CPC_CAN_PARAMS_T canparams; } CPC_INIT_PARAMS_T; -#endif - -// structure for confirmed message handling +/* structure for confirmed message handling */ typedef struct CPC_CONFIRM { - u8 result; // error code + u8 result; /* error code */ } CPC_CONFIRM_T; -// structure for information requests +/* structure for information requests */ typedef struct CPC_INFO { - u8 source; // interface, driver or library - u8 type; // version or serial number - char msg[CPC_MSG_LEN - 2]; // string holding the requested information + u8 source; /* interface, driver or library */ + u8 type; /* version or serial number */ + char msg[CPC_MSG_LEN - 2]; /* string holding the requested information */ } CPC_INFO_T; -// OVERRUN /////////////////////////////////////// -// In general two types of overrun may occur. -// A hardware overrun, where the CAN controller -// lost a message, because the interrupt was -// not handled before the next messgae comes in. -// Or a software overrun, where i.e. a received -// message could not be stored in the CPC_MSG -// buffer. - -// After a software overrun has occurred -// we wait until we have CPC_OVR_GAP slots -// free in the CPC_MSG buffer. +/* + * OVERRUN + * In general two types of overrun may occur. + * A hardware overrun, where the CAN controller + * lost a message, because the interrupt was + * not handled before the next messgae comes in. + * Or a software overrun, where i.e. a received + * message could not be stored in the CPC_MSG + * buffer. + */ + +/* After a software overrun has occurred + * we wait until we have CPC_OVR_GAP slots + * free in the CPC_MSG buffer. + */ #define CPC_OVR_GAP 10 -// Two types of software overrun may occur. -// A received CAN message or a CAN state event -// can cause an overrun. -// Note: A CPC_CMD which would normally store -// its result immediately in the CPC_MSG -// queue may fail, because the message queue is full. -// This will not generate an overrun message, but -// will halt command execution, until this command -// is able to store its message in the message queue. +/* + * Two types of software overrun may occur. + * A received CAN message or a CAN state event + * can cause an overrun. + * Note: A CPC_CMD which would normally store + * its result immediately in the CPC_MSG + * queue may fail, because the message queue is full. + * This will not generate an overrun message, but + * will halt command execution, until this command + * is able to store its message in the message queue. + */ #define CPC_OVR_EVENT_CAN 0x01 #define CPC_OVR_EVENT_CANSTATE 0x02 #define CPC_OVR_EVENT_BUSERROR 0x04 -// If the CAN controller lost a message -// we indicate it with the highest bit -// set in the count field. +/* + * If the CAN controller lost a message + * we indicate it with the highest bit + * set in the count field. + */ #define CPC_OVR_HW 0x80 -// structure for overrun conditions +/* structure for overrun conditions */ typedef struct { u8 event; u8 count; } CPC_OVERRUN_T; -// CAN errors //////////////////////////////////// -// Each CAN controller type has different -// registers to record errors. -// Therefor a structure containing the specific -// errors is set up for each controller here +/* + * CAN errors + * Each CAN controller type has different + * registers to record errors. + * Therefor a structure containing the specific + * errors is set up for each controller here + */ -// SJA1000 error structure -// see the SJA1000 datasheet for detailed -// explanation of the registers +/* + * SJA1000 error structure + * see the SJA1000 datasheet for detailed + * explanation of the registers + */ typedef struct CPC_SJA1000_CAN_ERROR { - u8 ecc; // error capture code register - u8 rxerr; // RX error counter register - u8 txerr; // TX error counter register + u8 ecc; /* error capture code register */ + u8 rxerr; /* RX error counter register */ + u8 txerr; /* TX error counter register */ } CPC_SJA1000_CAN_ERROR_T; -// M16C error structure -// see the M16C datasheet for detailed -// explanation of the registers +/* + * M16C error structure + * see the M16C datasheet for detailed + * explanation of the registers + */ typedef struct CPC_M16C_CAN_ERROR { - u8 tbd; // to be defined + u8 tbd; /* to be defined */ } CPC_M16C_CAN_ERROR_T; -// structure for CAN error conditions +/* structure for CAN error conditions */ #define CPC_CAN_ECODE_ERRFRAME 0x01 typedef struct CPC_CAN_ERROR { u8 ecode; struct { - u8 cc_type; // CAN controller type + u8 cc_type; /* CAN controller type */ union { CPC_SJA1000_CAN_ERROR_T sja1000; CPC_M16C_CAN_ERROR_T m16c; @@ -389,36 +366,40 @@ typedef struct CPC_CAN_ERROR { } cc; } CPC_CAN_ERROR_T; -// Structure containing RX/TX error counter. -// This structure is used to request the -// values of the CAN controllers TX and RX -// error counter. +/* + * Structure containing RX/TX error counter. + * This structure is used to request the + * values of the CAN controllers TX and RX + * error counter. + */ typedef struct CPC_CAN_ERR_COUNTER { u8 rx; u8 tx; } CPC_CAN_ERR_COUNTER_T; -// If this flag is set, transmissions from PC to CPC are protected against loss +/* If this flag is set, transmissions from PC to CPC are protected against loss */ #define CPC_SECURE_TO_CPC 0x01 -// If this flag is set, transmissions from CPC to PC are protected against loss +/* If this flag is set, transmissions from CPC to PC are protected against loss */ #define CPC_SECURE_TO_PC 0x02 -// If this flag is set, the CAN-transmit buffer is checked to be free before sending a message +/* If this flag is set, the CAN-transmit buffer is checked to be free before sending a message */ #define CPC_SECURE_SEND 0x04 -// If this flag is set, the transmission complete flag is checked -// after sending a message -// THIS IS CURRENTLY ONLY IMPLEMENTED IN THE PASSIVE INTERFACE DRIVERS +/* + * If this flag is set, the transmission complete flag is checked + * after sending a message + * THIS IS CURRENTLY ONLY IMPLEMENTED IN THE PASSIVE INTERFACE DRIVERS + */ #define CPC_SECURE_TRANSMIT 0x08 -// main message type used between library and application +/* main message type used between library and application */ typedef struct CPC_MSG { - u8 type; // type of message - u8 length; // length of data within union 'msg' - u8 msgid; // confirmation handle - u32 ts_sec; // timestamp in seconds - u32 ts_nsec; // timestamp in nano seconds + u8 type; /* type of message */ + u8 length; /* length of data within union 'msg' */ + u8 msgid; /* confirmation handle */ + u32 ts_sec; /* timestamp in seconds */ + u32 ts_nsec; /* timestamp in nano seconds */ union { u8 generic[CPC_MSG_LEN]; CPC_CAN_MSG_T canmsg; @@ -433,8 +414,4 @@ typedef struct CPC_MSG { } msg; } CPC_MSG_T; -#ifdef _WIN32 -#pragma pack(pop) // reset the byte alignment -#endif - -#endif // CPC_HEADER +#endif /* CPC_HEADER */ diff --git a/drivers/staging/cpc-usb/cpc_int.h b/drivers/staging/cpc-usb/cpc_int.h index a0d60c0..38674e9 100644 --- a/drivers/staging/cpc-usb/cpc_int.h +++ b/drivers/staging/cpc-usb/cpc_int.h @@ -39,10 +39,10 @@ typedef void (*chan_write_byte_t) (void *chan, unsigned int reg, typedef unsigned char (*chan_read_byte_t) (void *chan, unsigned int reg); typedef struct CPC_CHAN { - void __iomem * canBase; // base address of SJA1000 - chan_read_byte_t read_byte; // CAN controller read access routine - chan_write_byte_t write_byte; // CAN controller write access routine - CPC_MSG_T *buf; // buffer for CPC msg + void __iomem * canBase; /* base address of SJA1000 */ + chan_read_byte_t read_byte; /* CAN controller read access routine */ + chan_write_byte_t write_byte; /* CAN controller write access routine */ + CPC_MSG_T *buf; /* buffer for CPC msg */ unsigned int iidx; unsigned int oidx; unsigned int WnR; diff --git a/drivers/staging/cpc-usb/cpcusb.h b/drivers/staging/cpc-usb/cpcusb.h index e5273dd..6bdf30b 100644 --- a/drivers/staging/cpc-usb/cpcusb.h +++ b/drivers/staging/cpc-usb/cpcusb.h @@ -75,7 +75,7 @@ typedef struct CPC_USB { #define CPC_DRIVER_VERSION "0.724" #define CPC_DRIVER_SERIAL "not applicable" -#define OBUF_SIZE 255 // 4096 +#define OBUF_SIZE 255 /* 4096 */ /* read timeouts -- RD_NAK_TIMEOUT * RD_EXPIRE = Number of seconds */ #define RD_NAK_TIMEOUT (10*HZ) /* Default number of X seconds to wait */ |