summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2012-08-01 01:18:36 +0000
committerimp <imp@FreeBSD.org>2012-08-01 01:18:36 +0000
commita66041e632f6b1461daed52fa6d4242156114088 (patch)
tree37fb05a2251e50d42a24808fa0dd22e3e218ffae
parent7f137631a106c55e1c56771b29ef5f86c434176c (diff)
downloadFreeBSD-src-a66041e632f6b1461daed52fa6d4242156114088.zip
FreeBSD-src-a66041e632f6b1461daed52fa6d4242156114088.tar.gz
Add the chip select glue.
-rw-r--r--sys/dev/spibus/spi.h3
-rw-r--r--sys/dev/spibus/spibus.c3
2 files changed, 6 insertions, 0 deletions
diff --git a/sys/dev/spibus/spi.h b/sys/dev/spibus/spi.h
index 663f5ff..4f89e94 100644
--- a/sys/dev/spibus/spi.h
+++ b/sys/dev/spibus/spi.h
@@ -1,6 +1,7 @@
/* $FreeBSD$ */
struct spi_command {
+ int cs;
void *tx_cmd;
uint32_t tx_cmd_sz;
void *rx_cmd;
@@ -10,3 +11,5 @@ struct spi_command {
void *rx_data;
uint32_t rx_data_sz;
};
+
+#define SPI_CHIP_SELECT_HIGH 0x1 /* Chip select high (else low) */
diff --git a/sys/dev/spibus/spibus.c b/sys/dev/spibus/spibus.c
index 43b4e7e..0f8e359 100644
--- a/sys/dev/spibus/spibus.c
+++ b/sys/dev/spibus/spibus.c
@@ -158,6 +158,9 @@ spibus_hinted_child(device_t bus, const char *dname, int dunit)
static int
spibus_transfer_impl(device_t dev, device_t child, struct spi_command *cmd)
{
+ /* Maybe set flags too? spi mode? */
+ spibus_get_cs(dev, &cmd->cs);
+
return (SPIBUS_TRANSFER(device_get_parent(dev), child, cmd));
}
OpenPOWER on IntegriCloud