|  | /* 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 |