blob: 14a52b0ae93b6a4fb52dfe63522027dc2f852c67 [file] [log] [blame]
/*
* Copyright (c) 2024 Vogl Electronic GmbH
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/kernel.h>
#include <zephyr/drivers/spi.h>
#include <zephyr/drivers/spi/rtio.h>
#include <zephyr/sys/byteorder.h>
#include <zephyr/sys_clock.h>
#include "spi_context.h"
#include <soc.h>
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;
}
}