/* * Copyright (c) 2024 Vogl Electronic GmbH * * SPDX-License-Identifier: Apache-2.0 */ #include #include #include #include #include "spi_context.h" #include static inline uint8_t get_dfs_value(const struct spi_config *config) { switch (SPI_WORD_SIZE_GET(config->operation)) { case 8: return 1; case 16: return 2; case 24: return 3; case 32: return 4; default: return 1; } } static inline void litex_spi_tx_put(uint8_t len, uint32_t *txd, const uint8_t *tx_buf) { switch (len) { case 4: *txd = sys_get_be32(tx_buf); break; case 3: *txd = sys_get_be24(tx_buf); break; case 2: *txd = sys_get_be16(tx_buf); break; default: *txd = *tx_buf; break; } } static inline void litex_spi_rx_put(uint8_t len, uint32_t *rxd, uint8_t *rx_buf) { switch (len) { case 4: sys_put_be32(*rxd, rx_buf); break; case 3: sys_put_be24(*rxd, rx_buf); break; case 2: sys_put_be16(*rxd, rx_buf); break; default: *rx_buf = *rxd; break; } }