]> git.kernelconcepts.de Git - karo-tx-redboot.git/blobdiff - packages/devs/can/loop/v2_0/src/loop_can.c
unified MX27, MX25, MX37 trees
[karo-tx-redboot.git] / packages / devs / can / loop / v2_0 / src / loop_can.c
index c47c0d763fbda44f95a7a701cf9a3f59dd50ef74..7869400993d7eb7f5c6b439696593d6f1ce101b9 100644 (file)
@@ -56,7 +56,7 @@
 
 #include <pkgconf/hal.h>
 #include <pkgconf/io_can.h>
-#include <pkgconf/io_can_loop.h>
+#include <pkgconf/devs_can_loop.h>
 #include <cyg/hal/hal_io.h>
 
 #include <cyg/io/io.h>
@@ -65,7 +65,7 @@
 #include <cyg/hal/hal_intr.h>
 #include <cyg/kernel/kapi.h>
 
-#ifdef CYGPKG_IO_CAN_LOOP
+#ifdef CYGPKG_DEVS_CAN_LOOP
 
 //-------------------------------------------------------------------------
 
@@ -82,6 +82,8 @@ static Cyg_ErrNo loop_can_lookup(struct cyg_devtab_entry **tab,
 static bool loop_can_getevent(can_channel *priv, cyg_can_event *pevent, void *pdata);
 static Cyg_ErrNo loop_can_set_config(can_channel *chan, cyg_uint32 key,
                                      const void *xbuf, cyg_uint32 *len);
+static Cyg_ErrNo loop_can_get_config(can_channel *chan, cyg_uint32 key, 
+                                     const void*  buf,  cyg_uint32* len);
 static void loop_can_start_xmit(can_channel *chan);
 static void loop_can_stop_xmit(can_channel *chan);
 
@@ -98,7 +100,7 @@ static cyg_handle_t alarm_handle;
 //-------------------------------------------------------------------------
 // Transfer FIFOs
 
-#define FIFO_SIZE 16
+#define FIFO_SIZE 33
 
 struct fifo
 {
@@ -129,6 +131,7 @@ typedef struct loop_can_info {
 CAN_LOWLEVEL_FUNS(loop_can_lowlevel_funs,
                   loop_can_putmsg,
                   loop_can_getevent,
+                  loop_can_get_config,
                   loop_can_set_config,
                   loop_can_start_xmit,
                   loop_can_stop_xmit
@@ -137,7 +140,7 @@ CAN_LOWLEVEL_FUNS(loop_can_lowlevel_funs,
 //-------------------------------------------------------------------------
 // Hardware info for each serial line
 
-#ifdef CYGPKG_IO_CAN_LOOP_CAN0
+#ifdef CYGPKG_DEVS_CAN_LOOP_CAN0
 static loop_can_info loop_can_info0 = {
     &fifo0,
     &fifo1
@@ -147,7 +150,7 @@ static cyg_can_message  loop_can_txbuf0[CYGNUM_DEVS_CAN_LOOP_CAN0_QUEUESIZE_TX];
 static cyg_can_event    loop_can_rxbuf0[CYGNUM_DEVS_CAN_LOOP_CAN0_QUEUESIZE_RX];
 #endif // CYGPKG_IO_SERIAL_LOOP_SERIAL0
 
-#ifdef CYGPKG_IO_CAN_LOOP_CAN1
+#ifdef CYGPKG_DEVS_CAN_LOOP_CAN1
 static loop_can_info loop_can_info1 = {
     &fifo1,
     &fifo0
@@ -162,7 +165,7 @@ static cyg_can_event    loop_can_rxbuf1[CYGNUM_DEVS_CAN_LOOP_CAN1_QUEUESIZE_RX];
 //-------------------------------------------------------------------------
 // Channel descriptions:
 //
-#ifdef CYGPKG_IO_CAN_LOOP_CAN0
+#ifdef CYGPKG_DEVS_CAN_LOOP_CAN0
 CAN_CHANNEL_USING_INTERRUPTS(loop_can0_chan,
                              loop_can_lowlevel_funs,
                              loop_can_info0,
@@ -170,9 +173,9 @@ CAN_CHANNEL_USING_INTERRUPTS(loop_can0_chan,
                              loop_can_txbuf0, CYGNUM_DEVS_CAN_LOOP_CAN0_QUEUESIZE_TX,
                              loop_can_rxbuf0, CYGNUM_DEVS_CAN_LOOP_CAN0_QUEUESIZE_RX
     );
-#endif // CYGPKG_IO_CAN_LOOP_CAN1
+#endif // CYGPKG_DEVS_CAN_LOOP_CAN1
     
-#ifdef CYGPKG_IO_CAN_LOOP_CAN1
+#ifdef CYGPKG_DEVS_CAN_LOOP_CAN1
 CAN_CHANNEL_USING_INTERRUPTS(loop_can1_chan,
                              loop_can_lowlevel_funs,
                              loop_can_info1,
@@ -180,14 +183,14 @@ CAN_CHANNEL_USING_INTERRUPTS(loop_can1_chan,
                              loop_can_txbuf1, CYGNUM_DEVS_CAN_LOOP_CAN1_QUEUESIZE_TX,
                              loop_can_rxbuf1, CYGNUM_DEVS_CAN_LOOP_CAN1_QUEUESIZE_RX
     );
-#endif // CYGPKG_IO_CAN_LOOP_CAN1
+#endif // CYGPKG_DEVS_CAN_LOOP_CAN1
  
  
   
 //-------------------------------------------------------------------------
 // And finally, the device table entries:
 //
-#ifdef CYGPKG_IO_CAN_LOOP_CAN0
+#ifdef CYGPKG_DEVS_CAN_LOOP_CAN0
 DEVTAB_ENTRY(loop_can_io0, 
              CYGDAT_DEVS_CAN_LOOP_CAN0_NAME,
              0,                     // Does not depend on a lower level interface
@@ -196,9 +199,9 @@ DEVTAB_ENTRY(loop_can_io0,
              loop_can_lookup,        // CAN driver may need initializing
              &loop_can0_chan
     );
-#endif // CYGPKG_IO_CAN_LOOP_CAN0
+#endif // CYGPKG_DEVS_CAN_LOOP_CAN0
 
-#ifdef CYGPKG_IO_CAN_LOOP_CAN1
+#ifdef CYGPKG_DEVS_CAN_LOOP_CAN1
 DEVTAB_ENTRY(loop_can_io1, 
              CYGDAT_DEVS_CAN_LOOP_CAN1_NAME,
              0,                     // Does not depend on a lower level interface
@@ -207,7 +210,7 @@ DEVTAB_ENTRY(loop_can_io1,
              loop_can_lookup,        // CAN driver may need initializing
              &loop_can1_chan
     );
-#endif // CYGPKG_IO_CAN_LOOP_CAN1
+#endif // CYGPKG_DEVS_CAN_LOOP_CAN1
 
 //-------------------------------------------------------------------------
 
@@ -266,7 +269,9 @@ loop_can_putmsg(can_channel *chan, cyg_can_message *pmsg, void *pdata)
     loop_can_info *loop_chan = (loop_can_info *)chan->dev_priv;
 
     struct fifo *fwr = loop_chan->write_fifo;
+#ifdef CYGOPT_IO_CAN_TX_EVENT_SUPPORT 
     struct fifo *frd = loop_chan->read_fifo;
+#endif
 
     if( fwr->num == FIFO_SIZE )
     {
@@ -333,6 +338,16 @@ loop_can_set_config(can_channel *chan, cyg_uint32 key,
     return ENOERR;
 }
 
+//-------------------------------------------------------------------------
+// Query device configuration
+
+static Cyg_ErrNo 
+loop_can_get_config(can_channel *chan, cyg_uint32 key, 
+                    const void*  buf,  cyg_uint32* len)
+{
+       return ENOERR;
+}
+
 
 //-------------------------------------------------------------------------
 // Enable the transmitter on the device