From: Kaiwan N Billimoria <kaiwan@designergraphix.com>
To: lm-sensors@vger.kernel.org
Subject: Re: [lm-sensors] [PATCH] SPI lm70: Code streamlining and cleanup
Date: Wed, 12 Nov 2008 08:30:30 +0000 [thread overview]
Message-ID: <1226477910.18411.41.camel@kaiwan-1> (raw)
In-Reply-To: <1226474799.18411.21.camel@kaiwan-1>
[-- Attachment #1: Type: text/plain, Size: 475 bytes --]
On Tue, 2008-11-11 at 23:59 -0800, David Brownell wrote:
> On Tuesday 11 November 2008, Kaiwan N Billimoria wrote:
> > +As a real (in-tree) example of this "logical SPI protocol driver"
> > interfacing
> > +with a "physical SPI master controller" driver, see
> > drivers/spi/spi_lm70llp
> > +and it's associated documentation.
>
> This patch arrived badly word wrapped. Could you resend?
> Attachment is OK.
Sigh. sorry..
Pl find the patch attached.
Regards,
-kaiwan.
[-- Attachment #2: spi_lm70.nov08.patch --]
[-- Type: text/x-patch, Size: 6012 bytes --]
diff -uprN -X a/Documentation/dontdiff a/Documentation/hwmon/lm70 b/Documentation/hwmon/lm70
--- a/Documentation/hwmon/lm70 2008-10-10 03:43:53.000000000 +0530
+++ b/Documentation/hwmon/lm70 2008-11-12 12:17:21.000000000 +0530
@@ -25,6 +25,10 @@ complement digital temperature (sent via
driver for interpretation. This driver makes use of the kernel's in-core
SPI support.
+As a real (in-tree) example of this "logical SPI protocol driver" interfacing
+with a "physical SPI master controller" driver, see drivers/spi/spi_lm70llp
+and it's associated documentation.
+
Thanks to
---------
Jean Delvare <khali@linux-fr.org> for mentoring the hwmon-side driver
diff -uprN -X a/Documentation/dontdiff a/Documentation/spi/spi-lm70llp b/Documentation/spi/spi-lm70llp
--- a/Documentation/spi/spi-lm70llp 2008-10-10 03:43:53.000000000 +0530
+++ b/Documentation/spi/spi-lm70llp 2008-11-12 12:13:50.000000000 +0530
@@ -13,10 +13,19 @@ Description
This driver provides glue code connecting a National Semiconductor LM70 LLP
temperature sensor evaluation board to the kernel's SPI core subsystem.
+This is an SPI master controller driver. It can be used in conjunction with
+(layered under) the LM70 logical driver (an "SPI protocol driver").
In effect, this driver turns the parallel port interface on the eval board
into a SPI bus with a single device, which will be driven by the generic
LM70 driver (drivers/hwmon/lm70.c).
+
+Hardware Interfacing
+--------------------
+The schematic for this particular board (the LM70LLP eval board) is
+available (on page 4) here:
+http://www.designergraphix.com/pull/spi_lm70/LM70LLPEVALmanual.pdf
+
The hardware interfacing on the LM70 LLP eval board is as follows:
Parallel LM70 LLP
@@ -67,3 +76,4 @@ Thanks to
o David Brownell for mentoring the SPI-side driver development.
o Dr.Craig Hollabaugh for the (early) "manual" bitbanging driver version.
o Nadir Billimoria for help interpreting the circuit schematic.
+
diff -uprN -X a/Documentation/dontdiff a/drivers/hwmon/lm70.c b/drivers/hwmon/lm70.c
--- a/drivers/hwmon/lm70.c 2008-10-10 03:43:53.000000000 +0530
+++ b/drivers/hwmon/lm70.c 2008-11-12 12:18:34.000000000 +0530
@@ -65,10 +65,9 @@ static ssize_t lm70_sense_temp(struct de
"spi_write_then_read failed with status %d\n", status);
goto out;
}
- dev_dbg(dev, "rxbuf[1] : 0x%x rxbuf[0] : 0x%x\n", rxbuf[1], rxbuf[0]);
-
- raw = (rxbuf[1] << 8) + rxbuf[0];
- dev_dbg(dev, "raw=0x%x\n", raw);
+ raw = (rxbuf[0] << 8) + rxbuf[1];
+ dev_dbg(dev, "rxbuf[0] : 0x%x rxbuf[1] : 0x%x raw=0x%08x\n",
+ rxbuf[0], rxbuf[1], raw);
/*
* The "raw" temperature read into rxbuf[] is a 16-bit signed 2's
diff -uprN -X a/Documentation/dontdiff a/drivers/spi/spi_lm70llp.c b/drivers/spi/spi_lm70llp.c
--- a/drivers/spi/spi_lm70llp.c 2008-10-10 03:43:53.000000000 +0530
+++ b/drivers/spi/spi_lm70llp.c 2008-11-12 12:12:16.000000000 +0530
@@ -1,5 +1,5 @@
/*
- * spi_lm70llp.c - driver for lm70llp eval board for the LM70 sensor
+ * spi_lm70llp.c - driver for LM70LLP eval board for the LM70 sensor
*
* Copyright (C) 2006 Kaiwan N Billimoria <kaiwan@designergraphix.com>
*
@@ -27,11 +27,9 @@
#include <linux/sysfs.h>
#include <linux/workqueue.h>
-
#include <linux/spi/spi.h>
#include <linux/spi/spi_bitbang.h>
-
/*
* The LM70 communicates with a host processor using a 3-wire variant of
* the SPI/Microwire bus interface. This driver specifically supports an
@@ -40,8 +38,14 @@
* master controller driver. The hwmon/lm70 driver is a "SPI protocol
* driver", layered on top of this one and usable without the lm70llp.
*
+ * Datasheet and Schematic:
* The LM70 is a temperature sensor chip from National Semiconductor; its
* datasheet is available at http://www.national.com/pf/LM/LM70.html
+ * You can also find it here:
+ * http://www.designergraphix.com/pull/spi_lm70/LM70.pdf
+ * The schematic for this particular board (the LM70LLP eval board) is
+ * available (on page 4) here:
+ * http://www.designergraphix.com/pull/spi_lm70/LM70LLPEVALmanual.pdf
*
* Also see Documentation/spi/spi-lm70llp. The SPI<->parport code here is
* (heavily) based on spi-butterfly by David Brownell.
@@ -64,7 +68,7 @@
*
* Note that parport pin 13 actually gets inverted by the transistor
* arrangement which lets either the parport or the LM70 drive the
- * SI/SO signal.
+ * SI/SO signal (see the schematic for details).
*/
#define DRVNAME "spi-lm70llp"
@@ -106,12 +110,14 @@ static inline struct spi_lm70llp *spidev
static inline void deassertCS(struct spi_lm70llp *pp)
{
u8 data = parport_read_data(pp->port);
+ data &= ~0x80; /* keep D9 low while de-asserted */
parport_write_data(pp->port, data | nCS);
}
static inline void assertCS(struct spi_lm70llp *pp)
{
u8 data = parport_read_data(pp->port);
+ data |= 0x80; /* keep D9 high while asserted */
parport_write_data(pp->port, data & ~nCS);
}
@@ -184,22 +190,7 @@ static void lm70_chipselect(struct spi_d
*/
static u32 lm70_txrx(struct spi_device *spi, unsigned nsecs, u32 word, u8 bits)
{
- static u32 sio=0;
- static int first_time=1;
-
- /* First time: perform SPI bitbang and return the LSB of
- * the result of the SPI call.
- */
- if (first_time) {
- sio = bitbang_txrx_be_cpha0(spi, nsecs, 0, word, bits);
- first_time=0;
- return (sio & 0x00ff);
- }
- /* Return the MSB of the result of the SPI call */
- else {
- first_time=1;
- return (sio >> 8);
- }
+ return bitbang_txrx_be_cpha0(spi, nsecs, 0, word, bits);
}
static void spi_lm70llp_attach(struct parport *p)
@@ -293,10 +284,9 @@ static void spi_lm70llp_attach(struct pa
status = -ENODEV;
goto out_bitbang_stop;
}
- pp->spidev_lm70->bits_per_word = 16;
+ pp->spidev_lm70->bits_per_word = 8;
lm70llp = pp;
-
return;
out_bitbang_stop:
@@ -326,7 +316,6 @@ static void spi_lm70llp_detach(struct pa
/* power down */
parport_write_data(pp->port, 0);
- msleep(10);
parport_release(pp->pd);
parport_unregister_device(pp->pd);
[-- Attachment #3: Type: text/plain, Size: 153 bytes --]
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
next prev parent reply other threads:[~2008-11-12 8:30 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-12 7:38 [lm-sensors] [PATCH] SPI lm70: Code streamlining and cleanup Kaiwan N Billimoria
2008-11-12 7:59 ` David Brownell
2008-11-12 8:30 ` Kaiwan N Billimoria [this message]
2008-11-12 13:25 ` Jean Delvare
2008-11-13 5:35 ` Kaiwan N Billimoria
2008-11-13 8:53 ` David Brownell
2008-11-13 9:34 ` Jean Delvare
2008-11-13 9:55 ` Jean Delvare
2008-11-13 11:52 ` Kaiwan N Billimoria
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1226477910.18411.41.camel@kaiwan-1 \
--to=kaiwan@designergraphix.com \
--cc=lm-sensors@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.