Lines Matching refs:host
86 static inline bool is_valid_host(spi_host_device_t host) in is_valid_host() argument
89 return host >= SPI1_HOST && host <= SPI2_HOST; in is_valid_host()
91 return host >= SPI1_HOST && host <= SPI3_HOST; in is_valid_host()
97 bool spicommon_periph_claim(spi_host_device_t host, const char* source) in spicommon_periph_claim() argument
100 bool ret = atomic_compare_exchange_strong(&spi_periph_claimed[host], &false_var, true); in spicommon_periph_claim()
102 spi_claiming_func[host] = source; in spicommon_periph_claim()
103 periph_module_enable(spi_periph_signal[host].module); in spicommon_periph_claim()
105 ESP_EARLY_LOGE(SPI_TAG, "SPI%d already claimed by %s.", host+1, spi_claiming_func[host]); in spicommon_periph_claim()
110 bool spicommon_periph_in_use(spi_host_device_t host) in spicommon_periph_in_use() argument
112 return atomic_load(&spi_periph_claimed[host]); in spicommon_periph_in_use()
116 bool spicommon_periph_free(spi_host_device_t host) in spicommon_periph_free() argument
119 bool ret = atomic_compare_exchange_strong(&spi_periph_claimed[host], &true_var, false); in spicommon_periph_free()
120 if (ret) periph_module_disable(spi_periph_signal[host].module); in spicommon_periph_free()
124 int spicommon_irqsource_for_host(spi_host_device_t host) in spicommon_irqsource_for_host() argument
126 return spi_periph_signal[host].irq; in spicommon_irqsource_for_host()
129 int spicommon_irqdma_source_for_host(spi_host_device_t host) in spicommon_irqdma_source_for_host() argument
131 return spi_periph_signal[host].irq_dma; in spicommon_irqdma_source_for_host()
169 static void connect_spi_and_dma(spi_host_device_t host, int dma_chan) in connect_spi_and_dma() argument
172 DPORT_SET_PERI_REG_BITS(DPORT_SPI_DMA_CHAN_SEL_REG, 3, dma_chan, (host * 2)); in connect_spi_and_dma()
365 static bool check_iomux_pins_oct(spi_host_device_t host, const spi_bus_config_t* bus_config) in check_iomux_pins_oct() argument
367 if (host != SPI2_HOST) { in check_iomux_pins_oct()
383 static bool check_iomux_pins_quad(spi_host_device_t host, const spi_bus_config_t* bus_config) in check_iomux_pins_quad() argument
386 bus_config->sclk_io_num != spi_periph_signal[host].spiclk_iomux_pin) { in check_iomux_pins_quad()
390 bus_config->quadwp_io_num != spi_periph_signal[host].spiwp_iomux_pin) { in check_iomux_pins_quad()
394 bus_config->quadhd_io_num != spi_periph_signal[host].spihd_iomux_pin) { in check_iomux_pins_quad()
398 bus_config->mosi_io_num != spi_periph_signal[host].spid_iomux_pin) { in check_iomux_pins_quad()
402 bus_config->miso_io_num != spi_periph_signal[host].spiq_iomux_pin) { in check_iomux_pins_quad()
408 static bool bus_uses_iomux_pins(spi_host_device_t host, const spi_bus_config_t* bus_config) in bus_uses_iomux_pins() argument
414 return check_iomux_pins_oct(host, bus_config); in bus_uses_iomux_pins()
417 return check_iomux_pins_quad(host, bus_config); in bus_uses_iomux_pins()
421 static void bus_iomux_pins_set_oct(spi_host_device_t host, const spi_bus_config_t* bus_config) in bus_iomux_pins_set_oct() argument
423 assert(host == SPI2_HOST); in bus_iomux_pins_set_oct()
426 …int io_signals[] = {spi_periph_signal[host].spid_in, spi_periph_signal[host].spiq_in, spi_periph_s… in bus_iomux_pins_set_oct()
427 …spi_periph_signal[host].spihd_in,spi_periph_signal[host].spiclk_in, spi_periph_signal[host].spid4_… in bus_iomux_pins_set_oct()
428 …spi_periph_signal[host].spid5_out, spi_periph_signal[host].spid6_out, spi_periph_signal[host].spid… in bus_iomux_pins_set_oct()
439 static void bus_iomux_pins_set_quad(spi_host_device_t host, const spi_bus_config_t* bus_config) in bus_iomux_pins_set_quad() argument
442 gpio_iomux_in(bus_config->mosi_io_num, spi_periph_signal[host].spid_in); in bus_iomux_pins_set_quad()
443 gpio_iomux_out(bus_config->mosi_io_num, spi_periph_signal[host].func, false); in bus_iomux_pins_set_quad()
446 gpio_iomux_in(bus_config->miso_io_num, spi_periph_signal[host].spiq_in); in bus_iomux_pins_set_quad()
447 gpio_iomux_out(bus_config->miso_io_num, spi_periph_signal[host].func, false); in bus_iomux_pins_set_quad()
450 gpio_iomux_in(bus_config->quadwp_io_num, spi_periph_signal[host].spiwp_in); in bus_iomux_pins_set_quad()
451 gpio_iomux_out(bus_config->quadwp_io_num, spi_periph_signal[host].func, false); in bus_iomux_pins_set_quad()
454 gpio_iomux_in(bus_config->quadhd_io_num, spi_periph_signal[host].spihd_in); in bus_iomux_pins_set_quad()
455 gpio_iomux_out(bus_config->quadhd_io_num, spi_periph_signal[host].func, false); in bus_iomux_pins_set_quad()
458 gpio_iomux_in(bus_config->sclk_io_num, spi_periph_signal[host].spiclk_in); in bus_iomux_pins_set_quad()
459 gpio_iomux_out(bus_config->sclk_io_num, spi_periph_signal[host].func, false); in bus_iomux_pins_set_quad()
463 static void bus_iomux_pins_set(spi_host_device_t host, const spi_bus_config_t* bus_config) in bus_iomux_pins_set() argument
467 bus_iomux_pins_set_oct(host, bus_config); in bus_iomux_pins_set()
471 bus_iomux_pins_set_quad(host, bus_config); in bus_iomux_pins_set()
479 esp_err_t spicommon_bus_initialize_io(spi_host_device_t host, const spi_bus_config_t *bus_config, u… in spicommon_bus_initialize_io() argument
489 …SPI_CHECK(host == SPI2_HOST || !((flags & SPICOMMON_BUSFLAG_OCTAL) == SPICOMMON_BUSFLAG_OCTAL), "O… in spicommon_bus_initialize_io()
563 … bool use_iomux = !(flags & SPICOMMON_BUSFLAG_GPIO_PINS) && bus_uses_iomux_pins(host, bus_config); in spicommon_bus_initialize_io()
604 ESP_LOGD(SPI_TAG, "SPI%d use iomux pins.", host+1); in spicommon_bus_initialize_io()
605 bus_iomux_pins_set(host, bus_config); in spicommon_bus_initialize_io()
608 ESP_LOGD(SPI_TAG, "SPI%d use gpio matrix.", host+1); in spicommon_bus_initialize_io()
612 …esp_rom_gpio_connect_out_signal(bus_config->mosi_io_num, spi_periph_signal[host].spid_out, false, … in spicommon_bus_initialize_io()
616 … esp_rom_gpio_connect_in_signal(bus_config->mosi_io_num, spi_periph_signal[host].spid_in, false); in spicommon_bus_initialize_io()
625 …esp_rom_gpio_connect_out_signal(bus_config->miso_io_num, spi_periph_signal[host].spiq_out, false, … in spicommon_bus_initialize_io()
629 … esp_rom_gpio_connect_in_signal(bus_config->miso_io_num, spi_periph_signal[host].spiq_in, false); in spicommon_bus_initialize_io()
637 …esp_rom_gpio_connect_out_signal(bus_config->quadwp_io_num, spi_periph_signal[host].spiwp_out, fals… in spicommon_bus_initialize_io()
638 …esp_rom_gpio_connect_in_signal(bus_config->quadwp_io_num, spi_periph_signal[host].spiwp_in, false); in spicommon_bus_initialize_io()
646 …esp_rom_gpio_connect_out_signal(bus_config->quadhd_io_num, spi_periph_signal[host].spihd_out, fals… in spicommon_bus_initialize_io()
647 …esp_rom_gpio_connect_in_signal(bus_config->quadhd_io_num, spi_periph_signal[host].spihd_in, false); in spicommon_bus_initialize_io()
656 …esp_rom_gpio_connect_out_signal(bus_config->sclk_io_num, spi_periph_signal[host].spiclk_out, false… in spicommon_bus_initialize_io()
660 … esp_rom_gpio_connect_in_signal(bus_config->sclk_io_num, spi_periph_signal[host].spiclk_in, false); in spicommon_bus_initialize_io()
669 … uint8_t io_signals[4][2] = {{spi_periph_signal[host].spid4_out, spi_periph_signal[host].spid4_in}, in spicommon_bus_initialize_io()
670 … {spi_periph_signal[host].spid5_out, spi_periph_signal[host].spid5_in}, in spicommon_bus_initialize_io()
671 … {spi_periph_signal[host].spid6_out, spi_periph_signal[host].spid6_in}, in spicommon_bus_initialize_io()
672 … {spi_periph_signal[host].spid7_out, spi_periph_signal[host].spid7_in}}; in spicommon_bus_initialize_io()
710 void spicommon_cs_initialize(spi_host_device_t host, int cs_io_num, int cs_num, int force_gpio_matr… in spicommon_cs_initialize() argument
712 … if (!force_gpio_matrix && cs_io_num == spi_periph_signal[host].spics0_iomux_pin && cs_num == 0) { in spicommon_cs_initialize()
714 gpio_iomux_in(cs_io_num, spi_periph_signal[host].spics_in); in spicommon_cs_initialize()
715 gpio_iomux_out(cs_io_num, spi_periph_signal[host].func, false); in spicommon_cs_initialize()
720 …esp_rom_gpio_connect_out_signal(cs_io_num, spi_periph_signal[host].spics_out[cs_num], false, false… in spicommon_cs_initialize()
724 …if (cs_num == 0) esp_rom_gpio_connect_in_signal(cs_io_num, spi_periph_signal[host].spics_in, false… in spicommon_cs_initialize()
736 bool spicommon_bus_using_iomux(spi_host_device_t host) in spicommon_bus_using_iomux() argument
740 CHECK_IOMUX_PIN(host, spid); in spicommon_bus_using_iomux()
741 CHECK_IOMUX_PIN(host, spiq); in spicommon_bus_using_iomux()
742 CHECK_IOMUX_PIN(host, spiwp); in spicommon_bus_using_iomux()
743 CHECK_IOMUX_PIN(host, spihd); in spicommon_bus_using_iomux()