Update the include/linux directory. It's the same that has passed yet,
but for the other directory.
Is this still necessary? I lost it a bit.

Signed-off-by: Kurt Van Dijck <[email protected]>
---
Index: include/linux/can/error.h
===================================================================
--- include/linux/can/error.h   (revision 1069)
+++ include/linux/can/error.h   (working copy)
@@ -28,6 +28,7 @@
 #define CAN_ERR_BUSOFF       0x00000040U /* bus off */
 #define CAN_ERR_BUSERROR     0x00000080U /* bus error (may flood!) */
 #define CAN_ERR_RESTARTED    0x00000100U /* controller restarted */
+#define CAN_ERR_TRANSCEIVER  0x00000200U /* transceiver alert */
 
 /* arbitration lost in bit ... / data[0] */
 #define CAN_ERR_LOSTARB_UNSPEC   0x00 /* unspecified */
@@ -78,18 +79,20 @@
 #define CAN_ERR_PROT_LOC_INTERM  0x12 /* intermission */
 
 /* error status of CAN-transceiver / data[4] */
-/*                                             CANH CANL */
+/*                                             CANL CANH */
 #define CAN_ERR_TRX_UNSPEC             0x00 /* 0000 0000 */
 #define CAN_ERR_TRX_CANH_NO_WIRE       0x04 /* 0000 0100 */
 #define CAN_ERR_TRX_CANH_SHORT_TO_BAT  0x05 /* 0000 0101 */
 #define CAN_ERR_TRX_CANH_SHORT_TO_VCC  0x06 /* 0000 0110 */
 #define CAN_ERR_TRX_CANH_SHORT_TO_GND  0x07 /* 0000 0111 */
+#define CAN_ERR_TRX_CANL_SHORT_TO_CANH 0x08 /* 0000 1000 */
 #define CAN_ERR_TRX_CANL_NO_WIRE       0x40 /* 0100 0000 */
 #define CAN_ERR_TRX_CANL_SHORT_TO_BAT  0x50 /* 0101 0000 */
 #define CAN_ERR_TRX_CANL_SHORT_TO_VCC  0x60 /* 0110 0000 */
 #define CAN_ERR_TRX_CANL_SHORT_TO_GND  0x70 /* 0111 0000 */
-#define CAN_ERR_TRX_CANL_SHORT_TO_CANH 0x80 /* 1000 0000 */
 
+#define CAN_ERR_TRX_UNKNOWN_ERROR      0xF0
+
 /* controller specific additional information / data[5..7] */
 
 #endif /* CAN_ERROR_H */
Index: include/linux/can/dev.h
===================================================================
--- include/linux/can/dev.h     (revision 1069)
+++ include/linux/can/dev.h     (working copy)
@@ -55,6 +55,7 @@
 
        unsigned int echo_skb_max;
        struct sk_buff **echo_skb;
+       struct can_transceiver *cantr;
 };
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21)
Index: include/linux/can/platform/tja1041.h
===================================================================
--- include/linux/can/platform/tja1041.h        (revision 0)
+++ include/linux/can/platform/tja1041.h        (revision 0)
@@ -0,0 +1,18 @@
+#ifndef CAN_TRANSCEIVER_TJA1041_H
+#define CAN_TRANSCEIVER_TJA1041_H
+
+/*
+ * TJA1041 interface
+ * only available as platform device (name 'tja1041')
+ */
+struct tja1041_platform_data {
+       /* gpio's */
+       int stb;
+       int en;
+       int err;
+
+       const char *match;
+};
+
+#endif /* CAN_TRANSCEIVER_TJA1041_H */
+
Index: include/linux/can/platform/pca82c251.h
===================================================================
--- include/linux/can/platform/pca82c251.h      (revision 0)
+++ include/linux/can/platform/pca82c251.h      (revision 0)
@@ -0,0 +1,22 @@
+#ifndef CAN_TRANSCEIVER_PCA82C251_H
+#define CAN_TRANSCEIVER_PCA82C251_H
+
+/*
+ * PCA82C251 interface
+ * to make it available from outside platform_driver ('pca82c251')
+ */
+struct pca82c251_platform_data {
+       int gpio;
+       unsigned long slope_resistor;
+       const char *match;
+};
+
+/*
+ * some kind of 'manual' interface
+ */
+extern struct can_transceiver *pca82c251_create(
+       struct device *parent, const struct pca82c251_platform_data *pdata);
+extern void pca82c251_destroy(struct can_transceiver *cantr);
+
+#endif /* CAN_TRANSCEIVER_PCA82C251_H */
+
Index: include/linux/can/transceiver.h
===================================================================
--- include/linux/can/transceiver.h     (revision 0)
+++ include/linux/can/transceiver.h     (revision 0)
@@ -0,0 +1,96 @@
+/*
+ * linux/can/transceiver.h
+ *
+ * Definitions for the CAN transceiver class device interface
+ *
+ * Copyright (C) 2009 Kurt Van Dijck <[email protected]>
+ *
+ * Send feedback to <[email protected]>
+ */
+
+#include <linux/device.h>
+#include <linux/netdevice.h>
+
+#ifndef CAN_TRANSCEIVER_H
+#define CAN_TRANSCEIVER_H
+
+/*
+ * CAN transceiver modes
+ */
+#define CANTR_MODE_OFF 0
+#define CANTR_MODE_ON  1
+
+/*
+ * CAN transceiver class device
+ */
+struct can_transceiver {
+       int id;
+       struct device dev;
+       int (*get_max_bitrate)(struct can_transceiver *);
+       int (*get_state)(struct can_transceiver *);
+       int (*set_mode)(struct can_transceiver *, int mode);
+       int mode;
+       char ifname[IFNAMSIZ];
+       struct mutex lock; /* protects netdev & mode */
+       struct net_device *netdev;
+};
+#define to_can_transceiver(d) (container_of((d), struct can_transceiver, dev))
+
+static inline void cantr_set_drvdata(struct can_transceiver *cantr, void *p)
+{
+       dev_set_drvdata(&cantr->dev, p);
+}
+static inline void *cantr_get_drvdata(struct can_transceiver *cantr)
+{
+       return dev_get_drvdata(&cantr->dev);
+}
+
+/**
+ * can_transceiver_register - register w/ can_tranceiver class
+ * @cantr: the device to register
+ * @parent: the parent device
+ *
+ * Returns 0 on success
+ */
+extern int can_transceiver_register(struct can_transceiver *);
+
+/**
+ * can_transceiver_unregister - removes the can transceiver
+ *
+ * @cantr: the can transceiver class device to remove
+ */
+extern void can_transceiver_unregister(struct can_transceiver *);
+
+/**
+ * can_transceiver_set_match_name
+ * @cantr: the CAN transceiver to detach
+ * @name: the new name. may be 0.
+ *
+ * This function changes the name that the transceiver uses to match
+ * a net_device. Calling this function may change the associated
+ * net_device
+ */
+extern void can_transceiver_set_match_name(struct can_transceiver *,
+               const char *name);
+
+/*
+ * alert from can transceiver.
+ * the can transceiver core should do something with it
+ */
+extern void can_transceiver_alert(struct can_transceiver *cantr, int state);
+/*
+ * utility functions
+ */
+extern int can_transceiver_set_mode(struct can_transceiver *cantr, int mode);
+extern int can_transceiver_get_mode(struct can_transceiver *cantr);
+extern int can_transceiver_get_max_bitrate(struct can_transceiver *cantr);
+/**
+ * can_transceiver_get_state - get the current state of the transceiver
+ * @cantr: the can transceiver
+ *
+ * Returns: 0 for ready, -error for software failure, +num for hardware failure
+ */
+extern int can_transceiver_get_state(struct can_transceiver *cantr);
+
+
+#endif /* CAN_TRANSCEIVER_H */
_______________________________________________
Socketcan-core mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/socketcan-core

Reply via email to