From 31dab2299f9fadb9ef61e796556fb93e3ed4d4ab Mon Sep 17 00:00:00 2001 From: Frank Mori Hess Date: Mon, 17 Nov 2008 21:36:45 +0000 Subject: [PATCH] --- yaml --- r: 141457 b: refs/heads/master c: f8db88ef1f173bfc81afe244f4e6ff00d3e025e4 h: refs/heads/master i: 141455: b56469e8998af4cb5ef248f5286065fe314fe1ad v: v3 --- [refs] | 2 +- trunk/drivers/staging/comedi/drivers/ni_pcimio.c | 12 +++++++++++- trunk/drivers/staging/comedi/drivers/ni_stc.h | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 4256974bb621..78d0eb48b37e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 75c794f0d2ebafd0ed86232b361762dc5d837131 +refs/heads/master: f8db88ef1f173bfc81afe244f4e6ff00d3e025e4 diff --git a/trunk/drivers/staging/comedi/drivers/ni_pcimio.c b/trunk/drivers/staging/comedi/drivers/ni_pcimio.c index 85ceac36a0e2..4a657d3c1803 100644 --- a/trunk/drivers/staging/comedi/drivers/ni_pcimio.c +++ b/trunk/drivers/staging/comedi/drivers/ni_pcimio.c @@ -111,6 +111,7 @@ SCXI is probably broken for m-series boards. #include "../comedidev.h" +#include #include #include "ni_stc.h" @@ -1526,6 +1527,8 @@ static void m_series_init_eeprom_buffer(comedi_device * dev) { static const int Start_Cal_EEPROM = 0x400; static const unsigned window_size = 10; + static const int serial_number_eeprom_offset = 0x4; + static const int serial_number_eeprom_length = 0x4; unsigned old_iodwbsr_bits; unsigned old_iodwbsr1_bits; unsigned old_iodwcr1_bits; @@ -1537,9 +1540,16 @@ static void m_series_init_eeprom_buffer(comedi_device * dev) writel(0x0, devpriv->mite->mite_io_addr + MITE_IODWBSR); writel(((0x80 | window_size) | devpriv->mite->daq_phys_addr), devpriv->mite->mite_io_addr + MITE_IODWBSR_1); - writel(0x0, devpriv->mite->mite_io_addr + MITE_IODWCR_1); + writel(0x1 | old_iodwcr1_bits, devpriv->mite->mite_io_addr + MITE_IODWCR_1); writel(0xf, devpriv->mite->mite_io_addr + 0x30); + BUG_ON(serial_number_eeprom_length > sizeof(devpriv->serial_number)); + for (i = 0; i < serial_number_eeprom_length; ++i) { + char *byte_ptr = (char*)&devpriv->serial_number + i; + *byte_ptr = ni_readb(serial_number_eeprom_offset + i); + } + devpriv->serial_number = be32_to_cpu(devpriv->serial_number); + for (i = 0; i < M_SERIES_EEPROM_SIZE; ++i) { devpriv->eeprom_buffer[i] = ni_readb(Start_Cal_EEPROM + i); } diff --git a/trunk/drivers/staging/comedi/drivers/ni_stc.h b/trunk/drivers/staging/comedi/drivers/ni_stc.h index 040dda29efc3..0c869ada3062 100644 --- a/trunk/drivers/staging/comedi/drivers/ni_stc.h +++ b/trunk/drivers/staging/comedi/drivers/ni_stc.h @@ -1484,6 +1484,7 @@ typedef struct ni_board_struct { \ sampl_t ai_fifo_buffer[0x2000]; \ uint8_t eeprom_buffer[M_SERIES_EEPROM_SIZE]; \ + uint32_t serial_number; \ \ struct mite_struct *mite; \ struct mite_channel *ai_mite_chan; \