dts/bindings: Add a dedicated property for duplex mode on SPI device

Users will have to include dt-bindings/spi/spi.h in order to use the
relevant flags fol this property. For instance:

    ...
    duplex = <SPI_HALF_DUPLEX>;
    ....

By default all SPI device are configured to be full duplex so the
property is optional. This property makes sense only for devices that
can be configured on either modes. Which, in such case, it will need to
use DT_INST_PROP(<instance number>, duplex) macro call to retrieve the
property value. Others can fully ignore it.

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
This commit is contained in:
Tomasz Bursztyka 2021-11-10 18:51:48 +01:00 committed by Carles Cufí
commit 4bd5935302
3 changed files with 43 additions and 9 deletions

View file

@ -16,3 +16,16 @@ properties:
description: Maximum clock frequency of device's SPI interface in Hz description: Maximum clock frequency of device's SPI interface in Hz
label: label:
required: true required: true
duplex:
type: int
required: false
description: |
Duplex mode, full or half. By default it's always full duplex thus 0
as this is, by far, the most common mode.
Use the macros not the actual enum value, here is the concordance
list (see dt-bindings/spi/spi.h)
0 SPI_FULL_DUPLEX
2048 SPI_HALF_DUPLEX
enum:
- 0
- 2048

View file

@ -22,6 +22,7 @@
#include <zephyr/types.h> #include <zephyr/types.h>
#include <stddef.h> #include <stddef.h>
#include <device.h> #include <device.h>
#include <dt-bindings/spi/spi.h>
#include <drivers/gpio.h> #include <drivers/gpio.h>
#ifdef __cplusplus #ifdef __cplusplus
@ -84,15 +85,6 @@ extern "C" {
#define SPI_WORD_SET(_word_size_) \ #define SPI_WORD_SET(_word_size_) \
((_word_size_) << SPI_WORD_SIZE_SHIFT) ((_word_size_) << SPI_WORD_SIZE_SHIFT)
/**
* @brief SPI duplex modes
*
* Some controllers support half duplex transfer, which results in 3-wire usage.
* By default, full duplex will prevail.
*/
#define SPI_FULL_DUPLEX (0U << 11)
#define SPI_HALF_DUPLEX (1U << 11)
/** /**
* @brief Specific SPI devices control bits * @brief Specific SPI devices control bits
*/ */

View file

@ -0,0 +1,29 @@
/*
* Copyright (c) 2021 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_SPI_SPI_H_
#define ZEPHYR_INCLUDE_DT_BINDINGS_SPI_SPI_H_
/**
* @brief SPI Interface
* @defgroup spi_interface SPI Interface
* @ingroup io_interfaces
* @{
*/
/**
* @brief SPI duplex mode
*
* Some controllers support half duplex transfer, which results in 3-wire usage.
* By default, full duplex will prevail.
*/
#define SPI_FULL_DUPLEX (0U << 11)
#define SPI_HALF_DUPLEX (1U << 11)
/**
* @}
*/
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_SPI_SPI_H_ */