Page MenuHomeFreeBSD

D8614.1775198164.diff
No OneTemporary

Size
1 KB
Referenced Files
None
Subscribers
None

D8614.1775198164.diff

Index: sys/dev/spibus/ofw_spibus.c
===================================================================
--- sys/dev/spibus/ofw_spibus.c
+++ sys/dev/spibus/ofw_spibus.c
@@ -80,6 +80,7 @@
phandle_t child;
pcell_t clock, paddr;
device_t childdev;
+ uint32_t mode = SPIBUS_MODE_NONE;
sc->dev = dev;
@@ -103,6 +104,24 @@
}
/*
+ * Try to get the cpol/cpha mode
+ */
+ if (OF_hasprop(child, "spi-cpol"))
+ mode = SPIBUS_MODE_CPOL;
+ if (OF_hasprop(child, "spi-cpha")) {
+ if (mode == SPIBUS_MODE_CPOL)
+ mode = SPIBUS_MODE_CPOL_CPHA;
+ else
+ mode = SPIBUS_MODE_CPHA;
+ }
+
+ /*
+ * Try to get the CS polarity
+ */
+ if (OF_hasprop(child, "spi-cs-high"))
+ paddr |= SPIBUS_CS_HIGH;
+
+ /*
* Get the maximum clock frequency for device, zero means
* use the default bus speed.
*/
@@ -120,6 +139,7 @@
continue;
dinfo->opd_dinfo.cs = paddr;
dinfo->opd_dinfo.clock = clock;
+ dinfo->opd_dinfo.mode = mode;
if (ofw_bus_gen_setup_devinfo(&dinfo->opd_obdinfo, child) !=
0) {
free(dinfo, M_DEVBUF);
Index: sys/dev/spibus/spibusvar.h
===================================================================
--- sys/dev/spibus/spibusvar.h
+++ sys/dev/spibus/spibusvar.h
@@ -46,6 +46,8 @@
uint32_t clock;
};
+#define SPIBUS_CS_HIGH (1 << 32);
+
enum {
SPIBUS_IVAR_CS, /* chip select that we're on */
SPIBUS_IVAR_MODE, /* SPI mode (0-3) */

File Metadata

Mime Type
text/plain
Expires
Fri, Apr 3, 6:36 AM (11 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28251192
Default Alt Text
D8614.1775198164.diff (1 KB)

Event Timeline