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