librfid: cherrypick patches from http://www.nixda.biz/librfid/
authorJeremy Lainé <jeremy.laine@m4x.org>
Mon, 22 Dec 2008 23:24:22 +0000 (00:24 +0100)
committerJeremy Lainé <jeremy.laine@m4x.org>
Mon, 22 Dec 2008 23:24:22 +0000 (00:24 +0100)
packages/librfid/files/010-rc632-definitions-fix.patch [new file with mode: 0644]
packages/librfid/files/011-rc632-define-fixes-followups.patch [new file with mode: 0644]
packages/librfid/files/012-rc632-error-reg-ro-2.patch [new file with mode: 0644]
packages/librfid/files/013-zero-UID.patch [new file with mode: 0644]
packages/librfid/files/015-no_segfault.patch [new file with mode: 0644]
packages/librfid/files/mifare_ul_timeout.patch [deleted file]
packages/librfid/files/soos01-set_clear_bits.patch [new file with mode: 0644]
packages/librfid/files/soos02-check-errors.patch [new file with mode: 0644]
packages/librfid/files/soos03-no_hang-openpcd.patch [new file with mode: 0644]
packages/librfid/librfid_svn.bb

diff --git a/packages/librfid/files/010-rc632-definitions-fix.patch b/packages/librfid/files/010-rc632-definitions-fix.patch
new file mode 100644 (file)
index 0000000..bfb7022
--- /dev/null
@@ -0,0 +1,15 @@
+Index: librfid-svn/src/rc632.h
+===================================================================
+--- librfid-svn.orig/src/rc632.h       2008-01-31 13:27:49.000000000 -0500
++++ librfid-svn/src/rc632.h    2008-02-23 19:18:51.000000000 -0500
+@@ -70,8 +70,8 @@
+ enum rc632_reg_status {
+       RC632_STAT_LOALERT              = 0x01,
+       RC632_STAT_HIALERT              = 0x02,
+-      RC632_STAT_IRQ                  = 0x04,
+-      RC632_STAT_ERR                  = 0x08,
++      RC632_STAT_ERR                  = 0x04,
++      RC632_STAT_IRQ                  = 0x08,
+ #define RC632_STAT_MODEM_MASK         0x70
+       RC632_STAT_MODEM_IDLE           = 0x00,
+       RC632_STAT_MODEM_TXSOF          = 0x10,
diff --git a/packages/librfid/files/011-rc632-define-fixes-followups.patch b/packages/librfid/files/011-rc632-define-fixes-followups.patch
new file mode 100644 (file)
index 0000000..633121d
--- /dev/null
@@ -0,0 +1,182 @@
+Index: librfid/include/librfid/rfid_asic_rc632.h
+===================================================================
+--- librfid.orig/include/librfid/rfid_asic_rc632.h     2008-04-21 19:13:06.000000000 +0200
++++ librfid/include/librfid/rfid_asic_rc632.h  2008-12-22 23:56:49.000000000 +0100
+@@ -60,7 +60,7 @@
+                                            const struct iso15693_anticol_cmd *acf,
+                                            unsigned int acf_len,
+                                            struct iso15693_anticol_resp *resp,
+-                                           unsigned int *rx_len, char *bit_of_col);
++                                           unsigned int *rx_len, unsigned char *bit_of_col);
+               } iso15693;
+               struct {
+                       int (*setkey)(struct rfid_asic_handle *h,
+@@ -143,8 +143,8 @@
+                               DEBUGPC(", mTXsof"); \
+             DEBUGPC("\n"); } while (0);
+-#define DEBUGP_INTERRUPT_FLAG(foo) do {\
+-                DEBUGP("interrupt_flag: 0x%0.2x",foo); \
++#define DEBUGP_INTERRUPT_FLAG(txt,foo) do {\
++                DEBUGP("%s: 0x%0.2x",txt,foo); \
+                 if (foo & RC632_INT_HIALERT) \
+                     DEBUGPC(", HiA"); \
+                 if (foo & RC632_INT_LOALERT) \
+Index: librfid/src/rfid_asic_rc632.c
+===================================================================
+--- librfid.orig/src/rfid_asic_rc632.c 2008-04-21 19:13:06.000000000 +0200
++++ librfid/src/rfid_asic_rc632.c      2008-12-22 23:57:21.000000000 +0100
+@@ -240,7 +240,7 @@
+               u_int64_t timeout)
+ {
+       int ret;
+-      u_int8_t prescaler, divisor;
++      u_int8_t prescaler, divisor, irq;
+       timeout *= TIMER_RELAX_FACTOR;
+@@ -255,7 +255,14 @@
+                             RC632_TMR_START_TX_END|RC632_TMR_STOP_RX_BEGIN);
+       /* clear timer irq bit */
+-      ret = rc632_set_bits(handle, RC632_REG_INTERRUPT_RQ, RC632_IRQ_TIMER);
++      /*FIXME: is this right? maybe use write function and set bit 8 to zero and timer_bit to 1 to clear*/
++      //ret = rc632_set_bits(handle, RC632_REG_INTERRUPT_RQ, RC632_IRQ_TIMER);
++      //ret = rc632_reg_write(handle, RC632_REG_INTERRUPT_RQ, RC632_IRQ_TIMER);
++      ret = rc632_clear_irqs(handle, RC632_IRQ_TIMER);
++
++      /* enable timer IRQ */
++      //ret |= rc632_set_bits(handle, RC632_REG_INTERRUPT_EN, RC632_IRQ_TIMER);
++      ret |= rc632_reg_write(handle, RC632_REG_INTERRUPT_EN, RC632_IRQ_SET | RC632_IRQ_TIMER);
+       ret |= rc632_reg_write(handle, RC632_REG_TIMER_RELOAD, divisor);
+@@ -268,6 +275,18 @@
+       int ret;
+       u_int8_t stat, irq, cmd;
++      ret = rc632_reg_read(handle, RC632_REG_INTERRUPT_EN, &irq);
++      if (ret < 0)
++              return ret;
++      DEBUGP_INTERRUPT_FLAG("irq_en",irq);
++
++      ret = rc632_reg_write(handle, RC632_REG_INTERRUPT_EN, RC632_IRQ_SET
++                              | RC632_IRQ_TIMER
++                              | RC632_IRQ_IDLE
++                              | RC632_IRQ_RX );
++      if (ret < 0)
++              return ret;
++
+       while (1) {
+               rc632_reg_read(handle, RC632_REG_PRIMARY_STATUS, &stat);
+               DEBUGP_STATUS_FLAG(stat);
+@@ -278,17 +297,20 @@
+                       if (err & (RC632_ERR_FLAG_COL_ERR |
+                                  RC632_ERR_FLAG_PARITY_ERR |
+                                  RC632_ERR_FLAG_FRAMING_ERR |
+-                                 RC632_ERR_FLAG_CRC_ERR))
++                              /*FIXME: why get we CRC errors in CL2 anticol at iso14443a operation with mifare UL? */
++                              /*   RC632_ERR_FLAG_CRC_ERR | */
++                                 0))
+                               return -EIO;
+               }
+               if (stat & RC632_STAT_IRQ) {
+                       ret = rc632_reg_read(handle, RC632_REG_INTERRUPT_RQ, &irq);
+                       if (ret < 0)
+                               return ret;
+-                      DEBUGP_INTERRUPT_FLAG(irq);
++                      DEBUGP_INTERRUPT_FLAG("irq_rq",irq);
+                       if (irq & RC632_IRQ_TIMER && !(irq & RC632_IRQ_RX)) {
+                               DEBUGP("timer expired before RX!!\n");
++                              rc632_clear_irqs(handle, RC632_IRQ_TIMER);
+                               return -ETIMEDOUT;
+                       }
+               }
+@@ -297,8 +319,10 @@
+               if (ret < 0)
+                       return ret;
+-              if (cmd == 0)
++              if (cmd == 0){
++                      rc632_clear_irqs(handle, RC632_IRQ_RX);
+                       return 0;
++              }
+               /* poll every millisecond */
+               usleep(1000);
+@@ -333,7 +357,7 @@
+                       /* check if IRQ has occurred (IRQ flag set)*/
+                       if (foo & RC632_STAT_IRQ) { 
+                               ret = rc632_reg_read(handle, RC632_REG_INTERRUPT_RQ, &foo);
+-                              DEBUGP_INTERRUPT_FLAG(foo);
++                              DEBUGP_INTERRUPT_FLAG("irq_rq",foo);
+                               /* clear all interrupts */
+                               rc632_clear_irqs(handle, 0xff);
+                       }
+@@ -1578,6 +1602,12 @@
+       }, {
+               .reg    = RC632_REG_CRC_PRESET_MSB,
+               .val    = 0xff,
++      /*}, {
++              .reg    = RC632_REG_INTERRUPT_EN,
++              .val    = RC632_INT_IDLE |
++                        RC632_INT_TIMER |
++                        RC632_INT_RX |
++                        RC632_INT_TX, */
+       }
+ };
+@@ -1732,7 +1762,7 @@
+                            const struct iso15693_anticol_cmd *acf,
+                            unsigned int acf_len,
+                            struct iso15693_anticol_resp *resp,
+-                           unsigned int *rx_len, char *bit_of_col)
++                           unsigned int *rx_len, unsigned char *bit_of_col)
+ {
+       u_int8_t error_flag, boc;
+       //u_int8_t rx_len;
+@@ -1757,12 +1787,15 @@
+               return ret;
+       DEBUGP_ERROR_FLAG(error_flag);
++      //FIXME: check for framing and crc errors...
+       if (error_flag & RC632_ERR_FLAG_COL_ERR) {
+               /* retrieve bit of collission */
+               ret = rc632_reg_read(handle, RC632_REG_COLL_POS, &boc);
+               if (ret < 0)
+                       return ret;
+               *bit_of_col = boc;
++      }else{
++              *bit_of_col = 0;
+       }
+       return 0;
+Index: librfid/src/rfid_layer2_iso14443a.c
+===================================================================
+--- librfid.orig/src/rfid_layer2_iso14443a.c   2008-02-18 19:28:59.000000000 +0100
++++ librfid/src/rfid_layer2_iso14443a.c        2008-12-22 23:57:42.000000000 +0100
+@@ -170,6 +170,7 @@
+       iso14443a_code_nvb_bits(&acf.nvb, 16);
+       ret = iso14443a_transceive_acf(handle, &acf, &bit_of_col);
++      DEBUGP("tran_acf->%d boc: %d\n",ret,bit_of_col);
+       if (ret < 0)
+               return ret;
+       
+@@ -198,6 +199,7 @@
+               switch (acf.sel_code) {
+               case ISO14443A_AC_SEL_CODE_CL1:
+                       /* cascading from CL1 to CL2 */
++                      DEBUGP("cascading from CL1 to CL2\n");
+                       if (acf.uid_bits[0] != 0x88) {
+                               DEBUGP("Cascade bit set, but UID0 != 0x88\n");
+                               return -1;
+@@ -208,6 +210,7 @@
+                       break;
+               case ISO14443A_AC_SEL_CODE_CL2:
+                       /* cascading from CL2 to CL3 */
++                      DEBUGP("cascading from CL2 to CL3\n");
+                       memcpy(&handle->uid[3], &acf.uid_bits[1], 3);
+                       acf.sel_code = ISO14443A_AC_SEL_CODE_CL3;
+                       h->level = ISO14443A_LEVEL_CL3;
diff --git a/packages/librfid/files/012-rc632-error-reg-ro-2.patch b/packages/librfid/files/012-rc632-error-reg-ro-2.patch
new file mode 100644 (file)
index 0000000..02920b8
--- /dev/null
@@ -0,0 +1,25 @@
+Index: librfid-svn/src/rfid_asic_rc632.c
+===================================================================
+--- librfid-svn.orig/src/rfid_asic_rc632.c     2008-02-26 10:18:00.000000000 -0500
++++ librfid-svn/src/rfid_asic_rc632.c  2008-02-26 10:26:10.000000000 -0500
+@@ -453,18 +453,15 @@
+               cur_tx_len = tx_len;
+-      ret = rc632_reg_write(handle, RC632_REG_COMMAND, 0x00);
++      ret = rc632_reg_write(handle, RC632_REG_COMMAND, RC632_CMD_IDLE);
+       /* clear all interrupts */
+-      ret = rc632_reg_write(handle, RC632_REG_INTERRUPT_RQ, 0x7f);
+-      ret = rc632_reg_write(handle, RC632_REG_ERROR_FLAG, 0xff);
++      ret = rc632_reg_write(handle, RC632_REG_INTERRUPT_RQ, 0x3f);
+       { u_int8_t tmp;
+       rc632_reg_read(handle, RC632_REG_PRIMARY_STATUS, &tmp);
+       DEBUGP_STATUS_FLAG(tmp);
+       rc632_reg_read(handle, RC632_REG_PRIMARY_STATUS, &tmp);
+       DEBUGP_STATUS_FLAG(tmp);
+-      rc632_reg_read(handle, RC632_REG_PRIMARY_STATUS, &tmp);
+-      DEBUGP_STATUS_FLAG(tmp);
+       rc632_reg_read(handle, RC632_REG_ERROR_FLAG, &tmp);
+       DEBUGP_ERROR_FLAG(tmp);
+       }
diff --git a/packages/librfid/files/013-zero-UID.patch b/packages/librfid/files/013-zero-UID.patch
new file mode 100644 (file)
index 0000000..30e0909
--- /dev/null
@@ -0,0 +1,31 @@
+Index: librfid-svn/src/rfid_asic_rc632.c
+===================================================================
+--- librfid-svn.orig/src/rfid_asic_rc632.c     2008-02-27 16:47:21.000000000 -0500
++++ librfid-svn/src/rfid_asic_rc632.c  2008-02-28 12:56:31.000000000 -0500
+@@ -529,7 +529,7 @@
+               rc632_reg_read(handle, RC632_REG_CHANNEL_REDUNDANCY, &tmp);
+               //return 0;
+-              return -1;
++              return -EIO;
+       }
+       return rc632_fifo_read(handle, *rx_len, rx_buf);
+@@ -1777,7 +1777,7 @@
+       ret = rc632_transceive(handle, (u_int8_t *)acf, acf_len,
+                              (u_int8_t *) resp, rx_len, 
+                              iso15693_timing[rate][ISO15693_T1], 0);
+-      if (ret == -ETIMEDOUT)
++      if (ret == -ETIMEDOUT || ret == -EIO)
+               return ret;
+       /* determine whether there was a collission */
+@@ -1795,6 +1795,8 @@
+               *bit_of_col = boc;
+       }else{
+               *bit_of_col = 0;
++              if (error_flag & RC632_ERR_FLAG_CRC_ERR)
++                      return -EIO;
+       }
+       return 0;
diff --git a/packages/librfid/files/015-no_segfault.patch b/packages/librfid/files/015-no_segfault.patch
new file mode 100644 (file)
index 0000000..3df1c96
--- /dev/null
@@ -0,0 +1,16 @@
+Index: utils/librfid-tool.c
+===================================================================
+--- x/utils/librfid-tool.c     (revision 2089)
++++ x/utils/librfid-tool.c     (working copy)
+@@ -456,6 +456,10 @@
+       if (rh->reader->l2_supported & (1 << layer2)) {
+               l2h = rfid_layer2_init(rh, layer2);
++              if (!l2h) {
++                      printf("error during layer2(%d)_init (0=14a,1=14b,3=15)\n",layer2);
++                      return;
++              }
+               printf("Layer2 init ok\n");
+               rc = rfid_layer2_open(l2h);
+       } else {
+
diff --git a/packages/librfid/files/mifare_ul_timeout.patch b/packages/librfid/files/mifare_ul_timeout.patch
deleted file mode 100644 (file)
index 846aa8d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
---- librfid.orig/src/rfid_proto_mifare_ul.c    (revision 2085)
-+++ librfid/src/rfid_proto_mifare_ul.c (working copy)
-@@ -34,8 +34,8 @@
- /* FIXME */
--#define MIFARE_UL_READ_FWT    100
--#define MIFARE_UL_WRITE_FWT   100
-+#define MIFARE_UL_READ_FWT    200
-+#define MIFARE_UL_WRITE_FWT   800
- static int
- mful_read(struct rfid_protocol_handle *ph, unsigned int page,
diff --git a/packages/librfid/files/soos01-set_clear_bits.patch b/packages/librfid/files/soos01-set_clear_bits.patch
new file mode 100644 (file)
index 0000000..31cf37b
--- /dev/null
@@ -0,0 +1,119 @@
+Index: librfid-svn/src/rfid_asic_rc632.c
+===================================================================
+--- librfid-svn.orig/src/rfid_asic_rc632.c     2008-03-12 13:02:52.000000000 +0100
++++ librfid-svn/src/rfid_asic_rc632.c  2008-03-12 15:15:34.000000000 +0100
+@@ -149,9 +149,15 @@
+ }
+ static int
+-rc632_clear_irqs(struct rfid_asic_handle *handle, u_int8_t bits)
++rc632_clear_spec_bits(struct rfid_asic_handle *handle, u_int8_t reg, u_int8_t bits)
+ {
+-      return rc632_reg_write(handle, RC632_REG_INTERRUPT_RQ, (~RC632_INT_SET)&bits);
++      return rc632_reg_write(handle, reg, (0x3f)&bits);
++}
++
++static int
++rc632_set_spec_bits(struct rfid_asic_handle *handle, u_int8_t reg, u_int8_t bits)
++{
++      return rc632_reg_write(handle, reg, (0x80)|bits);
+ }
+ static int 
+@@ -258,13 +264,10 @@
+       /* clear timer irq bit */
+       /*FIXME: is this right? maybe use write function and set bit 8 to zero and timer_bit to 1 to clear*/
+-      //ret = rc632_set_bits(handle, RC632_REG_INTERRUPT_RQ, RC632_IRQ_TIMER);
+-      //ret = rc632_reg_write(handle, RC632_REG_INTERRUPT_RQ, RC632_IRQ_TIMER);
+-      ret = rc632_clear_irqs(handle, RC632_IRQ_TIMER);
++      ret = rc632_clear_spec_bits(handle, RC632_REG_INTERRUPT_RQ, RC632_IRQ_TIMER);
+       /* enable timer IRQ */
+-      //ret |= rc632_set_bits(handle, RC632_REG_INTERRUPT_EN, RC632_IRQ_TIMER);
+-      ret |= rc632_reg_write(handle, RC632_REG_INTERRUPT_EN, RC632_IRQ_SET | RC632_IRQ_TIMER);
++      ret |= rc632_set_spec_bits(handle, RC632_REG_INTERRUPT_EN, RC632_IRQ_TIMER);
+       ret |= rc632_reg_write(handle, RC632_REG_TIMER_RELOAD, divisor);
+@@ -282,10 +285,10 @@
+               return ret;
+       DEBUGP_INTERRUPT_FLAG("irq_en",irq);
+-      ret = rc632_reg_write(handle, RC632_REG_INTERRUPT_EN, RC632_IRQ_SET
+-                              | RC632_IRQ_TIMER
++      ret = rc632_set_spec_bits(handle, RC632_REG_INTERRUPT_EN, RC632_IRQ_TIMER
+                               | RC632_IRQ_IDLE
+-                              | RC632_IRQ_RX );
++                              | RC632_IRQ_RX
++                               );
+       if (ret < 0)
+               return ret;
+@@ -312,7 +315,7 @@
+                       if (irq & RC632_IRQ_TIMER && !(irq & RC632_IRQ_RX)) {
+                               DEBUGP("timer expired before RX!!\n");
+-                              rc632_clear_irqs(handle, RC632_IRQ_TIMER);
++                              rc632_clear_spec_bits(handle, RC632_REG_INTERRUPT_RQ, RC632_IRQ_TIMER);
+                               return -ETIMEDOUT;
+                       }
+               }
+@@ -322,7 +325,7 @@
+                       return ret;
+               if (cmd == 0){
+-                      rc632_clear_irqs(handle, RC632_IRQ_RX);
++                      rc632_clear_spec_bits(handle, RC632_REG_INTERRUPT_RQ, RC632_IRQ_RX);
+                       return 0;
+               }
+@@ -361,7 +364,7 @@
+                               ret = rc632_reg_read(handle, RC632_REG_INTERRUPT_RQ, &foo);
+                               DEBUGP_INTERRUPT_FLAG("irq_rq",foo);
+                               /* clear all interrupts */
+-                              rc632_clear_irqs(handle, 0xff);
++                              rc632_clear_spec_bits(handle, RC632_REG_INTERRUPT_RQ, RC632_IRQ_ALL);
+                       }
+               }
+               if (cmd == 0) {
+@@ -455,7 +458,7 @@
+       ret = rc632_reg_write(handle, RC632_REG_COMMAND, RC632_CMD_IDLE);
+       /* clear all interrupts */
+-      ret = rc632_reg_write(handle, RC632_REG_INTERRUPT_RQ, 0x3f);
++      rc632_clear_spec_bits(handle, RC632_REG_INTERRUPT_RQ, RC632_INT_ALL);
+       { u_int8_t tmp;
+       rc632_reg_read(handle, RC632_REG_PRIMARY_STATUS, &tmp);
+@@ -549,7 +552,7 @@
+       DEBUGP("timeout=%u, rx_len=%u\n", timer, *rx_len);
+       ret = rc632_reg_write(handle, RC632_REG_COMMAND, 0x00); /* IDLE */
+       /* clear all interrupts */
+-      ret = rc632_reg_write(handle, RC632_REG_INTERRUPT_RQ, 0x7f);
++      rc632_clear_spec_bits(handle, RC632_REG_INTERRUPT_RQ, RC632_INT_ALL);
+       ret = rc632_timer_set(handle, timer);
+       if (ret < 0)
+Index: librfid-svn/src/rfid_asic_rc632.h
+===================================================================
+--- librfid-svn.orig/src/rc632.h       2008-03-12 13:01:43.000000000 +0100
++++ librfid-svn/src/rc632.h    2008-03-12 12:42:59.000000000 +0100
+@@ -106,6 +106,8 @@
+       RC632_INT_RX                    = 0x08,
+       RC632_INT_TX                    = 0x10,
+       RC632_INT_TIMER                 = 0x20,
++      RC632_INT_ALL                   = 0x3f,
++
+       RC632_INT_SET                   = 0x80,
+ };
+@@ -261,6 +263,7 @@
+       RC632_IRQ_RX                    = 0x08,
+       RC632_IRQ_TX                    = 0x10,
+       RC632_IRQ_TIMER                 = 0x20,
++      RC632_IRQ_ALL                   = 0x3f,
+       RC632_IRQ_SET                   = 0x80,
+ };
+
diff --git a/packages/librfid/files/soos02-check-errors.patch b/packages/librfid/files/soos02-check-errors.patch
new file mode 100644 (file)
index 0000000..6c40516
--- /dev/null
@@ -0,0 +1,36 @@
+diff --git a/src/rfid_asic_rc632.c b/src/rfid_asic_rc632.c
+index b9b1aff..f0948c6 100644
+--- a/src/rfid_asic_rc632.c
++++ b/src/rfid_asic_rc632.c
+@@ -297,7 +297,9 @@ static int rc632_wait_idle_timer(struct rfid_asic_handle *handle)
+               DEBUGP_STATUS_FLAG(stat);
+               if (stat & RC632_STAT_ERR) {
+                       u_int8_t err;
+-                      rc632_reg_read(handle, RC632_REG_ERROR_FLAG, &err);
++                      ret = rc632_reg_read(handle, RC632_REG_ERROR_FLAG, &err);
++                      if (ret < 0) 
++                              return ret;
+                       DEBUGP_ERROR_FLAG(err);
+                       if (err & (RC632_ERR_FLAG_COL_ERR |
+                                  RC632_ERR_FLAG_PARITY_ERR |
+@@ -457,14 +459,16 @@ rc632_transceive(struct rfid_asic_handle *handle,
+       ret = rc632_reg_write(handle, RC632_REG_COMMAND, RC632_CMD_IDLE);
++      if (ret < 0)
++              return ret;
+       /* clear all interrupts */
+-      rc632_clear_spec_bits(handle, RC632_REG_INTERRUPT_RQ, RC632_INT_ALL);
++      ret = rc632_clear_spec_bits(handle, RC632_REG_INTERRUPT_RQ, RC632_INT_ALL);
++      if (ret < 0)
++              return ret;
+       { u_int8_t tmp;
+       rc632_reg_read(handle, RC632_REG_PRIMARY_STATUS, &tmp);
+       DEBUGP_STATUS_FLAG(tmp);
+-      rc632_reg_read(handle, RC632_REG_PRIMARY_STATUS, &tmp);
+-      DEBUGP_STATUS_FLAG(tmp);
+       rc632_reg_read(handle, RC632_REG_ERROR_FLAG, &tmp);
+       DEBUGP_ERROR_FLAG(tmp);
+       }
+
diff --git a/packages/librfid/files/soos03-no_hang-openpcd.patch b/packages/librfid/files/soos03-no_hang-openpcd.patch
new file mode 100644 (file)
index 0000000..cfe5d02
--- /dev/null
@@ -0,0 +1,19 @@
+diff --git a/src/rfid_asic_rc632.c b/src/rfid_asic_rc632.c
+index f0948c6..fbc4c2a 100644
+--- a/src/rfid_asic_rc632.c
++++ b/src/rfid_asic_rc632.c
+@@ -285,13 +285,6 @@ static int rc632_wait_idle_timer(struct rfid_asic_handle *handle)
+               return ret;
+       DEBUGP_INTERRUPT_FLAG("irq_en",irq);
+-      ret = rc632_set_spec_bits(handle, RC632_REG_INTERRUPT_EN, RC632_IRQ_TIMER
+-                              | RC632_IRQ_IDLE
+-                              | RC632_IRQ_RX
+-                               );
+-      if (ret < 0)
+-              return ret;
+-
+       while (1) {
+               rc632_reg_read(handle, RC632_REG_PRIMARY_STATUS, &stat);
+               DEBUGP_STATUS_FLAG(stat);
+
index 49f9a95..78800de 100644 (file)
@@ -6,10 +6,17 @@ DEPENDS = "libusb"
 SRCNAME = "librfid"
 
 PV = "0.2.0+svnr${SRCREV}"
-PR = "r4"
+PR = "r5"
 
 SRC_URI = "svn://svn.gnumonks.org/trunk;module=${SRCNAME};proto=http \
-           file://mifare_ul_timeout.patch;patch=1 \
+           file://010-rc632-definitions-fix.patch;patch=1 \
+           file://011-rc632-define-fixes-followups.patch;patch=1 \
+           file://012-rc632-error-reg-ro-2.patch;patch=1 \
+           file://013-zero-UID.patch;patch=1 \
+           file://015-no_segfault.patch;patch=1 \
+           file://soos01-set_clear_bits.patch;patch=1 \
+           file://soos02-check-errors.patch;patch=1 \
+           file://soos03-no_hang-openpcd.patch;patch=1 \
            file://librfid.rules \
           "