/*
 * Copyright (c) 2019 Western Digital Corporation or its affiliates
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include "spi_context.h"

#define SPI_OC_SIMPLE_DATA(dev) \
	((struct spi_oc_simple_data *) ((dev)->data))

#define SPI_OC_SIMPLE_REG(info, offset) \
	((mem_addr_t) (info->base + \
		       (offset * CONFIG_SPI_OC_SIMPLE_BUS_WIDTH / 8)))

#define SPI_OC_SIMPLE_SPCR(dev) SPI_OC_SIMPLE_REG(dev, 0x0)
#define SPI_OC_SIMPLE_SPSR(dev) SPI_OC_SIMPLE_REG(dev, 0x1)
#define SPI_OC_SIMPLE_SPDR(dev) SPI_OC_SIMPLE_REG(dev, 0x2)
#define SPI_OC_SIMPLE_SPER(dev) SPI_OC_SIMPLE_REG(dev, 0x3)
#define SPI_OC_SIMPLE_SPSS(dev) SPI_OC_SIMPLE_REG(dev, 0x4)

#define SPI_OC_SIMPLE_SPCR_SPE  BIT(6)
#define SPI_OC_SIMPLE_SPCR_CPOL BIT(3)
#define SPI_OC_SIMPLE_SPCR_CPHA BIT(2)

struct spi_oc_simple_cfg {
	uint32_t base;
	uint32_t f_sys;
};

struct spi_oc_simple_data {
	struct spi_context ctx;
};
