mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.4 KiB
49 lines
1.4 KiB
/* 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
|
|
|