diff --git a/docs/grossetete.md b/docs/grossetete.md index 858fafa..80382eb 100644 --- a/docs/grossetete.md +++ b/docs/grossetete.md @@ -10,7 +10,28 @@ Tuchuck Interface notes --------------- -**SPI** Currently not working +**SPI** + +Two SPI buses are available, with one chipselect each. Pins listed are MRAA +numbered pins. Other chip selects are available if enabled in BIOS/EEPROM but +cannot be enabled as BIOS options. You will need the spidev kernel module +loaded, Ostro-XT does this by default. + +Bus 0 (32765) +MOSI = 2 +MISO = 4 +CS = 6 +CLK = 10 + +Bus 1 (32766) +MOSI = 67 +MISO = 69 +CS0 = 59 +CS1 = 61 +CLK = 65 + +(remove 40 from numbers to get pin header number for pins on low speed header +2) **UART** Some pins are labelled as UARTs but are not configured in BIOS as UART so only available UART is on the FTDI header @@ -24,15 +45,15 @@ LEDs are numbered from 100-103. | MRAA Number | Physical Pin | Function | |-------------|--------------|----------| | 1 | GPIO | GPIO | -| 2 | SPP1RX | GPIO | +| 2 | SPP1RX | GPIO SPI | | 3 | PMICRST | NONE | -| 4 | SPP1TX | GPIO | +| 4 | SPP1TX | GPIO SPI | | 5 | 19.2mhz | GPIO | -| 6 | SPP1FS0 | GPIO | +| 6 | SPP1FS0 | GPIO SPI | | 7 | UART0TX | GPIO | -| 8 | SPP1FS2 | GPIO | +| 8 | SPP1FS2 | GPIO SPI | | 9 | PWRGD | NONE | -| 10 | SPP1CLK | GPIO | +| 10 | SPP1CLK | GPIO SPI | | 11 | I2C0SDA | I2C | | 12 | I2S1SDI | GPIO | | 13 | I2C0SCL | I2C | @@ -81,17 +102,17 @@ LEDs are numbered from 100-103. | 56 | CAMERA | NONE | | 57 | PANEL | GPIO | | 58 | CAMERA | NONE | -| 59 | SPP0FS0 | GPIO | +| 59 | SPP0FS0 | GPIO SPI | | 60 | CAMERA | NONE | -| 61 | SPP0FS1 | GPIO | +| 61 | SPP0FS1 | GPIO SPI | | 62 | SPI_DAT | SPI | -| 63 | SPP0FS2 | GPIO | -| 64 | SPICLKB | GPIO SPI | -| 65 | SPP0FS3 | GPIO | -| 66 | SPICLKA | GPIO SPI | -| 67 | SPP0TX | GPIO | +| 63 | SPP0FS2 | GPIO SPI | +| 64 | SPICLKB | GPIO | +| 65 | SPP0FS3 | GPIO SPI | +| 66 | SPICLKA | GPIO | +| 67 | SPP0TX | GPIO SPI | | 68 | UART0RX | GPIO UART| -| 69 | SPP0RX | GPIO | +| 69 | SPP0RX | GPIO SPI | | 70 | UART0RT | GPIO UART| | 71 | I2C1SDA | GPIO I2C | | 72 | UART0CT | GPIO UART| diff --git a/src/x86/intel_gt_tuchuck.c b/src/x86/intel_gt_tuchuck.c index f2c83b4..19d86fb 100644 --- a/src/x86/intel_gt_tuchuck.c +++ b/src/x86/intel_gt_tuchuck.c @@ -81,22 +81,14 @@ mraa_gt_tuchuck_board() b->def_i2c_bus = b->i2c_bus[0].bus_id; -#if 0 - b->spi_bus_count = 6; + b->spi_bus_count = 3; b->def_spi_bus = 0; - b->spi_bus[0].bus_id = 32764; - b->spi_bus[0].slave_s = 1; - b->spi_bus[1].bus_id = 32764; - b->spi_bus[1].slave_s = 2; - b->spi_bus[2].bus_id = 32765; - b->spi_bus[2].slave_s = 0; - b->spi_bus[3].bus_id = 32765; - b->spi_bus[3].slave_s = 1; - b->spi_bus[4].bus_id = 32766; - b->spi_bus[4].slave_s = 0; - b->spi_bus[5].bus_id = 32766; - b->spi_bus[5].slave_s = 1; -#endif + b->spi_bus[0].bus_id = 32765; + b->spi_bus[0].slave_s = 0; + b->spi_bus[1].bus_id = 32766; + b->spi_bus[1].slave_s = 0; + b->spi_bus[2].bus_id = 32766; + b->spi_bus[2].slave_s = 1; int pos = 0; @@ -111,7 +103,7 @@ mraa_gt_tuchuck_board() pos++; strncpy(b->pins[pos].name, "SPP1RX", 8); - b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 }; + b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 }; b->pins[pos].gpio.pinmap = 421; b->pins[pos].gpio.mux_total = 0; pos++; @@ -124,7 +116,7 @@ mraa_gt_tuchuck_board() pos++; strncpy(b->pins[pos].name, "SPP1TX", 8); - b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 }; + b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 }; b->pins[pos].gpio.pinmap = 422; b->pins[pos].gpio.mux_total = 0; pos++; @@ -136,7 +128,7 @@ mraa_gt_tuchuck_board() pos++; strncpy(b->pins[pos].name, "SPP1FS0", 8); - b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 }; + b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 }; b->pins[pos].gpio.pinmap = 417; b->pins[pos].gpio.mux_total = 0; pos++; @@ -152,7 +144,7 @@ mraa_gt_tuchuck_board() pos++; strncpy(b->pins[pos].name, "SPP1FS2", 8); - b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 }; + b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 }; b->pins[pos].gpio.pinmap = 419; b->pins[pos].gpio.mux_total = 0; pos++; @@ -165,7 +157,7 @@ mraa_gt_tuchuck_board() pos++; strncpy(b->pins[pos].name, "SPP1CLK", 8); - b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 }; + b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 }; b->pins[pos].gpio.pinmap = 416; b->pins[pos].gpio.mux_total = 0; pos++; @@ -455,7 +447,7 @@ mraa_gt_tuchuck_board() pos++; strncpy(b->pins[pos].name, "SPP0FS0", 8); - b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 }; + b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 }; b->pins[pos].gpio.pinmap = 411; b->pins[pos].gpio.mux_total = 0; pos++; @@ -465,43 +457,43 @@ mraa_gt_tuchuck_board() pos++; strncpy(b->pins[pos].name, "SPP0FS1", 8); - b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 }; + b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 }; b->pins[pos].gpio.pinmap = 412; b->pins[pos].gpio.mux_total = 0; pos++; strncpy(b->pins[pos].name, "SPI_DAT", 8); - b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 0, 0, 0, 1, 0, 0, 0 }; + b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 }; b->pins[pos].gpio.pinmap = 385; b->pins[pos].gpio.mux_total = 0; pos++; strncpy(b->pins[pos].name, "SPP0FS2", 8); - b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 }; + b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 }; b->pins[pos].gpio.pinmap = 411; b->pins[pos].gpio.mux_total = 0; pos++; strncpy(b->pins[pos].name, "SPICLKB", 8); - b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 }; + b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 }; b->pins[pos].gpio.pinmap = 384; b->pins[pos].gpio.mux_total = 0; pos++; strncpy(b->pins[pos].name, "SPP0FS3", 8); - b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 }; + b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 }; b->pins[pos].gpio.pinmap = 410; b->pins[pos].gpio.mux_total = 0; pos++; strncpy(b->pins[pos].name, "SPICLKA", 8); - b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 }; + b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 }; b->pins[pos].gpio.pinmap = 383; b->pins[pos].gpio.mux_total = 0; pos++; strncpy(b->pins[pos].name, "SPP0TX", 8); - b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 }; + b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 }; b->pins[pos].gpio.pinmap = 414; b->pins[pos].gpio.mux_total = 0; pos++; @@ -516,7 +508,7 @@ mraa_gt_tuchuck_board() pos++; strncpy(b->pins[pos].name, "SPP0RX", 8); - b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 }; + b->pins[pos].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 1, 0, 0, 0 }; b->pins[pos].gpio.pinmap = 415; b->pins[pos].gpio.mux_total = 0; pos++;