| /* SPDX-License-Identifier: GPL-2.0 OR MIT */ | |
| /* Copyright 2021, 2022 Innovative Advantage Inc. */ | |
| #ifndef _MFD_OCELOT_H | |
| #define _MFD_OCELOT_H | |
| #include <linux/kconfig.h> | |
| struct device; | |
| struct regmap; | |
| struct resource; | |
| /** | |
| * struct ocelot_ddata - Private data for an external Ocelot chip | |
| * @gcb_regmap: General Configuration Block regmap. Used for | |
| * operations like chip reset. | |
| * @cpuorg_regmap: CPU Device Origin Block regmap. Used for operations | |
| * like SPI bus configuration. | |
| * @spi_padding_bytes: Number of padding bytes that must be thrown out before | |
| * read data gets returned. This is calculated during | |
| * initialization based on bus speed. | |
| * @dummy_buf: Zero-filled buffer of spi_padding_bytes size. The dummy | |
| * bytes that will be sent out between the address and | |
| * data of a SPI read operation. | |
| */ | |
| struct ocelot_ddata { | |
| struct regmap *gcb_regmap; | |
| struct regmap *cpuorg_regmap; | |
| int spi_padding_bytes; | |
| void *dummy_buf; | |
| }; | |
| int ocelot_chip_reset(struct device *dev); | |
| int ocelot_core_init(struct device *dev); | |
| /* SPI-specific routines that won't be necessary for other interfaces */ | |
| struct regmap *ocelot_spi_init_regmap(struct device *dev, | |
| const struct resource *res); | |
| #define OCELOT_SPI_BYTE_ORDER_LE 0x00000000 | |
| #define OCELOT_SPI_BYTE_ORDER_BE 0x81818181 | |
| #ifdef __LITTLE_ENDIAN | |
| #define OCELOT_SPI_BYTE_ORDER OCELOT_SPI_BYTE_ORDER_LE | |
| #else | |
| #define OCELOT_SPI_BYTE_ORDER OCELOT_SPI_BYTE_ORDER_BE | |
| #endif | |
| #endif |