daniel-santos / mcp2210-linux

MCP2210 driver for linux
http://danielthesantos.blogspot.com/search/label/mcp2210
51 stars 31 forks source link

More settings.h examples. #43

Closed milkylainen closed 1 year ago

milkylainen commented 4 years ago

I'm trying to get a spi mt25ql128 flash memory working under mcp2210 in linux. But it does not work. I load up the driver, force it off spidevs, set config 47 (everything sans key parameters). Board probe the device, I can see some spi data and chip select but the probe hangs. Am I missing something? No IRQ or CREEK, only GPIO and SPI support.

get config: offset = 4 state = 0x16010 struct mcp2210_state { .have_chip_settings = 1 .have_power_up_chip_settings = 1 .have_spi_settings = 1 .have_power_up_spi_settings = 1 .have_usb_key_params = 1 .chip_settings = 0x16011 struct mcp2210_chip_settings { .pin_mode { [0] = spi [1] = spi [2] = spi [3] = spi [4] = spi [5] = spi [6] = gpio [7] = gpio [8] = gpio } .gpio_value = 0x0000 .gpio_direction = 0x0100 .other_settings = 0x00 .nvram_access_control = 0x00 .password = 58060d89 a06cba61 } .power_up_chip_settings = 0x16028 struct mcp2210_chip_settings { .pin_mode { [0] = spi [1] = spi [2] = spi [3] = spi [4] = spi [5] = spi [6] = gpio [7] = gpio [8] = gpio } .gpio_value = 0x0000 .gpio_direction = 0x0100 .other_settings = 0x00 .nvram_access_control = 0x00 .password = 00030d89 a06cba61 } .spi_settings = 0x1603f struct mcp2210_spi_xfer_setting { .bitrate = 12000000 .idle_cs = 0x01ff .active_cs = 0x0000 .cs_to_data_delay = 0x0001 .last_byte_to_cs_delay = 0x0001 .delay_between_bytes = 0x0001 .bytes_per_trans = 0x0001 .mode = 0x03 } .power_up_spi_settings = 0x16050 struct mcp2210_spi_xfer_setting { .bitrate = 12000000 .idle_cs = 0x01ff .active_cs = 0x0000 .cs_to_data_delay = 0x0001 .last_byte_to_cs_delay = 0x0001 .delay_between_bytes = 0x0001 .bytes_per_trans = 0x0001 .mode = 0x03 } .usb_key_params = 0x16061 struct mcp2210_spi_xfer_setting { .vid = 0x04d8 .pid = 0x00de .chip_power_option = 0x80 .requested_power = 50 (100mA) } .cur_spi_config = 0 .idle_cs = 0x0000 .active_cs = 0x0000 .spi_delay_per_kb = 0 }

Pin config: static const struct mcp2210_board_config my_board_config = { .pins = { { .mode = MCP2210_PIN_SPI, .spi = { .max_speed_hz = MCP2210_MAX_SPEED, .min_speed_hz = 2000, .mode = SPI_MODE_3, .bits_per_word = 8, .cs_to_data_delay = 1, .last_byte_to_cs_delay = 1, .delay_between_bytes = 1, .delay_between_xfers = 1, }, /
.modalias = "m25p80",
.name = "eeprom0",
/ }, { .mode = MCP2210_PIN_SPI, .spi = { .max_speed_hz = MCP2210_MAX_SPEED, .min_speed_hz = 2000, .mode = SPI_MODE_3, .bits_per_word = 8, .cs_to_data_delay = 1, .last_byte_to_cs_delay = 1, .delay_between_bytes = 1, .delay_between_xfers = 1, }, /
.modalias = "m25p80",
.name = "eeprom1",
/ }, { .mode = MCP2210_PIN_SPI, .spi = { .max_speed_hz = MCP2210_MAX_SPEED, .min_speed_hz = 2000, .mode = SPI_MODE_3, .bits_per_word = 8, .cs_to_data_delay = 1, .last_byte_to_cs_delay = 1, .delay_between_bytes = 1, .delay_between_xfers = 1, }, /
.modalias = "spidev",
.name = "ltc2171",
/ }, { .mode = MCP2210_PIN_SPI, .spi = { .max_speed_hz = MCP2210_MAX_SPEED, .min_speed_hz = 2000, .mode = SPI_MODE_3, .bits_per_word = 8, .cs_to_data_delay = 1, .last_byte_to_cs_delay = 1, .delay_between_bytes = 1, .delay_between_xfers = 1, }, /
.modalias = "spidev",
.name = "dac7562",
/ }, { .mode = MCP2210_PIN_SPI, .spi = { .max_speed_hz = MCP2210_MAX_SPEED, .min_speed_hz = 2000, .mode = SPI_MODE_3, .bits_per_word = 8, .cs_to_data_delay = 1, .last_byte_to_cs_delay = 1, .delay_between_bytes = 1, .delay_between_xfers = 1, }, /
.modalias = "m25p80",
.name = "eeprom2",
/ }, { .mode = MCP2210_PIN_SPI, .spi = { .max_speed_hz = MCP2210_MAX_SPEED, .min_speed_hz = 2000, .mode = SPI_MODE_3, .bits_per_word = 8, .cs_to_data_delay = 1, .last_byte_to_cs_delay = 1, .delay_between_bytes = 1, .delay_between_xfers = 1, }, /
.modalias = "spidev",
.name = "tbd1",
/ }, { .mode = MCP2210_PIN_GPIO, .has_irq = 0, .irq = 0, .name = "fpga_flash_en", }, { .mode = MCP2210_PIN_GPIO, .has_irq = 0, .irq = 0, .name = "fpga_rst", }, { .mode = MCP2210_PIN_GPIO, .has_irq = 0, .irq = 0, .name = "fpga_done", } }, .poll_gpio_usecs = 0, / 40 Hz poll rate / .stale_gpio_usecs = 0, .poll_intr_usecs = 0, .stale_intr_usecs = 0, ._3wire_capable = 0, ._3wire_tx_enable_active_high = 0, ._3wire_tx_enable_pin = 0, .strings_size = 0, };