ESP-IDF
spihost
is only used within ESP-IDF.
Symbol previews are coming soon...
Symbols
loading...
Files
loading...
Summary
Syntax
Examples
References
Call Tree
Data Use
Class Tree
Override Tree
Implementations
Instances
Lifecycle
SourceVu
ESP-IDF Framework and Examples
ESP-IDF
spihost
spihost variable
Syntax
Show:
Summary
Declaration
from
spi_slave.c:81
static
spi_slave_t
*
spihost
[
SOC_SPI_PERIPH_NUM
]
;
Examples
References
from
examples
Code
Location
Referrer
static
spi_slave_t
*
spihost
[
SOC_SPI_PERIPH_NUM
]
;
spi_slave.c:81
spihost
[
host
]
=
malloc
(
sizeof
(
spi_slave_t
)
)
;
spi_slave.c:159
spi_slave_initialize()
if
(
spihost
[
host
]
==
NULL
)
{
spi_slave.c:160
spi_slave_initialize()
memset
(
spihost
[
host
]
,
0
,
sizeof
(
spi_slave_t
)
)
;
spi_slave.c:164
spi_slave_initialize()
memcpy
(
&
spihost
[
host
]
->
cfg
,
slave_config
,
sizeof
(
spi_slave_interface_config_t
)
)
;
spi_slave.c:165
spi_slave_initialize()
memcpy
(
&
spihost
[
host
]
->
bus_config
,
bus_config
,
sizeof
(
spi_bus_config_t
)
)
;
spi_slave.c:166
spi_slave_initialize()
spihost
[
host
]
->
id
=
host
;
spi_slave.c:167
spi_slave_initialize()
spi_slave_hal_context_t
*
hal
=
&
spihost
[
host
]
->
hal
;
spi_slave.c:168
spi_slave_initialize()
spihost
[
host
]
->
dma_enabled
=
(
dma_chan
!=
SPI_DMA_DISABLED
)
;
spi_slave.c:170
spi_slave_initialize()
if
(
spihost
[
host
]
->
dma_enabled
)
{
spi_slave.c:171
spi_slave_initialize()
ret
=
spicommon_dma_chan_alloc
(
host
,
dma_chan
,
&
spihost
[
host
]
->
dma_ctx
)
;
spi_slave.c:172
spi_slave_initialize()
ret
=
spicommon_dma_desc_alloc
(
spihost
[
host
]
->
dma_ctx
,
bus_config
->
max_transfer_sz
,
&
spihost
[
host
]
->
max_transfer_sz
)
;
spi_slave.c:176
spi_slave_initialize()
hal
->
dmadesc_tx
=
spihost
[
host
]
->
dma_ctx
->
dmadesc_tx
;
spi_slave.c:181
spi_slave_initialize()
hal
->
dmadesc_rx
=
spihost
[
host
]
->
dma_ctx
->
dmadesc_rx
;
spi_slave.c:182
spi_slave_initialize()
hal
->
dmadesc_n
=
spihost
[
host
]
->
dma_ctx
->
dma_desc_num
;
spi_slave.c:183
spi_slave_initialize()
spihost
[
host
]
->
internal_mem_align_size
=
4
;
spi_slave.c:190
spi_slave_initialize()
spihost
[
host
]
->
max_transfer_sz
=
SOC_SPI_MAXIMUM_BUFFER_SIZE
;
spi_slave.c:194
spi_slave_initialize()
err
=
spicommon_bus_initialize_io
(
host
,
bus_config
,
SPICOMMON_BUSFLAG_SLAVE
|
bus_config
->
flags
,
&
spihost
[
host
]
->
flags
)
;
spi_slave.c:197
spi_slave_initialize()
spicommon_cs_initialize
(
host
,
slave_config
->
spics_io_num
,
0
,
!
bus_is_iomux
(
spihost
[
host
]
)
)
;
spi_slave.c:203
spi_slave_initialize()
spihost
[
host
]
->
cs_iomux
=
(
slave_config
->
spics_io_num
==
spi_periph_signal
[
host
]
.
spics0_iomux_pin
)
&&
bus_is_iomux
(
spihost
[
host
]
)
;
spi_slave.c:205
spi_slave_initialize()
spihost
[
host
]
->
cs_in_signal
=
spi_periph_signal
[
host
]
.
spics_in
;
spi_slave.c:206
spi_slave_initialize()
if
(
spihost
[
host
]
->
dma_enabled
)
{
spi_slave.c:210
spi_slave_initialize()
freeze_cs
(
spihost
[
host
]
)
;
spi_slave.c:211
spi_slave_initialize()
&
spihost
[
host
]
->
pm_lock
)
;
spi_slave.c:216
spi_slave_initialize()
esp_pm_lock_acquire
(
spihost
[
host
]
->
pm_lock
)
;
spi_slave.c:222
spi_slave_initialize()
spihost
[
host
]
->
trans_queue
=
xQueueCreate
(
slave_config
->
queue_size
,
sizeof
(
spi_slave_trans_priv_t
)
)
;
spi_slave.c:226
spi_slave_initialize()
if
(
!
spihost
[
host
]
->
trans_queue
)
{
spi_slave.c:227
spi_slave_initialize()
spihost
[
host
]
->
ret_queue
=
xQueueCreate
(
slave_config
->
queue_size
,
sizeof
(
spi_slave_trans_priv_t
)
)
;
spi_slave.c:232
spi_slave_initialize()
if
(
!
spihost
[
host
]
->
ret_queue
)
{
spi_slave.c:233
spi_slave_initialize()
spihost
[
host
]
->
intr_flags
=
bus_config
->
intr_flags
;
spi_slave.c:241
spi_slave_initialize()
.
host
=
spihost
[
host
]
,
spi_slave.c:244
spi_slave_initialize()
err
=
esp_intr_alloc
(
spicommon_irqsource_for_host
(
host
)
,
bus_config
->
intr_flags
|
ESP_INTR_FLAG_INTRDISABLED
,
spi_intr
,
(
void
*
)
spihost
[
host
]
,
&
spihost
[
host
]
->
intr
)
;
spi_slave.c:251
spi_slave_initialize()
hal
->
use_dma
=
spihost
[
host
]
->
dma_enabled
;
spi_slave.c:267
spi_slave_initialize()
SPI_CHECK
(
spihost
[
host
]
,
"host not slave"
,
ESP_ERR_INVALID_ARG
)
;
spi_slave.c:279
spi_slave_free()
if
(
spihost
[
host
]
->
trans_queue
)
{
spi_slave.c:280
spi_slave_free()
vQueueDelete
(
spihost
[
host
]
->
trans_queue
)
;
spi_slave.c:281
spi_slave_free()
if
(
spihost
[
host
]
->
ret_queue
)
{
spi_slave.c:283
spi_slave_free()
vQueueDelete
(
spihost
[
host
]
->
ret_queue
)
;
spi_slave.c:284
spi_slave_free()
if
(
spihost
[
host
]
->
dma_enabled
)
{
spi_slave.c:286
spi_slave_free()
free
(
spihost
[
host
]
->
dma_ctx
->
dmadesc_tx
)
;
spi_slave.c:287
spi_slave_free()
free
(
spihost
[
host
]
->
dma_ctx
->
dmadesc_rx
)
;
spi_slave.c:288
spi_slave_free()
spicommon_dma_chan_free
(
spihost
[
host
]
->
dma_ctx
)
;
spi_slave.c:289
spi_slave_free()
spicommon_bus_free_io_cfg
(
&
spihost
[
host
]
->
bus_config
)
;
spi_slave.c:291
spi_slave_free()
esp_intr_free
(
spihost
[
host
]
->
intr
)
;
spi_slave.c:292
spi_slave_free()
if
(
spihost
[
host
]
->
pm_lock
)
{
spi_slave.c:294
spi_slave_free()
esp_pm_lock_release
(
spihost
[
host
]
->
pm_lock
)
;
spi_slave.c:295
spi_slave_free()
esp_pm_lock_delete
(
spihost
[
host
]
->
pm_lock
)
;
spi_slave.c:296
spi_slave_free()
free
(
spihost
[
host
]
)
;
spi_slave.c:299
spi_slave_free()
spihost
[
host
]
=
NULL
;
spi_slave.c:300
spi_slave_free()
SPI_CHECK
(
spihost
[
host
]
,
"host not slave"
,
ESP_ERR_INVALID_ARG
)
;
spi_slave.c:373
spi_slave_queue_trans()
SPI_CHECK
(
spihost
[
host
]
->
dma_enabled
==
0
||
trans_desc
->
tx_buffer
==
NULL
||
esp_ptr_dma_capable
(
trans_desc
->
tx_buffer
)
,
spi_slave.c:374
spi_slave_queue_trans()
SPI_CHECK
(
spihost
[
host
]
->
dma_enabled
==
0
||
trans_desc
->
rx_buffer
==
NULL
||
spi_slave.c:382
spi_slave_queue_trans()
SPI_CHECK
(
trans_desc
->
length
<=
spihost
[
host
]
->
max_transfer_sz
*
8
,
"data transfer > host maximum"
,
ESP_ERR_INVALID_ARG
)
;
spi_slave.c:387
spi_slave_queue_trans()
r
=
xQueueSend
(
spihost
[
host
]
->
trans_queue
,
(
void
*
)
&
priv_trans
,
ticks_to_wait
)
;
spi_slave.c:392
spi_slave_queue_trans()
esp_intr_enable
(
spihost
[
host
]
->
intr
)
;
spi_slave.c:396
spi_slave_queue_trans()
SPI_CHECK
(
spihost
[
host
]
,
"host not slave"
,
ESP_ERR_INVALID_ARG
)
;
spi_slave.c:418
spi_slave_queue_reset()
esp_intr_disable
(
spihost
[
host
]
->
intr
)
;
spi_slave.c:420
spi_slave_queue_reset()
spi_ll_set_int_stat
(
spihost
[
host
]
->
hal
.
hw
)
;
spi_slave.c:421
spi_slave_queue_reset()
while
(
uxQueueMessagesWaiting
(
spihost
[
host
]
->
trans_queue
)
)
{
spi_slave.c:424
spi_slave_queue_reset()
xQueueReceive
(
spihost
[
host
]
->
trans_queue
,
&
trans
,
0
)
;
spi_slave.c:425
spi_slave_queue_reset()
spihost
[
host
]
->
cur_trans
.
trans
=
NULL
;
spi_slave.c:428
spi_slave_queue_reset()
ESP_RETURN_ON_FALSE_ISR
(
spihost
[
host
]
,
ESP_ERR_INVALID_ARG
,
SPI_TAG
,
"host not slave"
)
;
spi_slave.c:438
spi_slave_queue_trans_isr()
ESP_RETURN_ON_FALSE_ISR
(
trans_desc
->
length
<=
spihost
[
host
]
->
max_transfer_sz
*
8
,
ESP_ERR_INVALID_ARG
,
SPI_TAG
,
"data transfer > host maximum"
)
;
spi_slave.c:439
spi_slave_queue_trans_isr()
if
(
spihost
[
host
]
->
dma_enabled
)
{
spi_slave.c:440
spi_slave_queue_trans_isr()
uint16_t
alignment
=
spihost
[
host
]
->
internal_mem_align_size
;
spi_slave.c:441
spi_slave_queue_trans_isr()
r
=
xQueueSendFromISR
(
spihost
[
host
]
->
trans_queue
,
(
void
*
)
&
priv_trans
,
&
do_yield
)
;
spi_slave.c:463
spi_slave_queue_trans_isr()
ESP_RETURN_ON_FALSE_ISR
(
spihost
[
host
]
,
ESP_ERR_INVALID_ARG
,
SPI_TAG
,
"host not slave"
)
;
spi_slave.c:476
spi_slave_queue_reset_isr()
while
(
pdFALSE
==
xQueueIsQueueEmptyFromISR
(
spihost
[
host
]
->
trans_queue
)
)
{
spi_slave.c:480
spi_slave_queue_reset_isr()
xQueueReceiveFromISR
(
spihost
[
host
]
->
trans_queue
,
&
trans
,
&
do_yield
)
;
spi_slave.c:481
spi_slave_queue_reset_isr()
spihost
[
host
]
->
cur_trans
.
trans
=
NULL
;
spi_slave.c:488
spi_slave_queue_reset_isr()
SPI_CHECK
(
spihost
[
host
]
,
"host not slave"
,
ESP_ERR_INVALID_ARG
)
;
spi_slave.c:496
spi_slave_get_trans_result()
SPI_CHECK
(
!
(
spihost
[
host
]
->
cfg
.
flags
&
SPI_SLAVE_NO_RETURN_RESULT
)
,
"API not Supported!"
,
ESP_ERR_NOT_SUPPORTED
)
;
spi_slave.c:498
spi_slave_get_trans_result()
r
=
xQueueReceive
(
spihost
[
host
]
->
ret_queue
,
(
void
*
)
&
priv_trans
,
ticks_to_wait
)
;
spi_slave.c:501
spi_slave_get_trans_result()
Call Tree
from
examples
All items filtered out
All items filtered out
Data Use
from
examples
spihost
is read by 7 functions:
All items filtered out
spihost
spi_slave_initialize()
spi_slave_free()
spi_slave_queue_trans()
spi_slave_queue_reset()
spi_slave_queue_trans_isr()
spi_slave_queue_reset_isr()
spi_slave_get_trans_result()
All items filtered out
Class Tree
from
examples
All items filtered out
All items filtered out
Override Tree
from
examples
All items filtered out
All items filtered out
Implementations
from
examples
All items filtered out
All items filtered out
Instances
from
examples
Lifecycle
from
examples
All items filtered out
All items filtered out