/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Kontron PLD driver definitions
*
* Copyright (c) 2010-2012 Kontron Europe GmbH
* Author: Michael Brunner <michael.brunner@kontron.com>
*/
#ifndef _LINUX_MFD_KEMPLD_H_
#define _LINUX_MFD_KEMPLD_H_
/* kempld register definitions */
#define KEMPLD_IOINDEX 0 xa80
#define KEMPLD_IODATA 0 xa81
#define KEMPLD_MUTEX_KEY 0 x80
#define KEMPLD_VERSION 0 x00
#define KEMPLD_VERSION_LSB 0 x00
#define KEMPLD_VERSION_MSB 0 x01
#define KEMPLD_VERSION_GET_MINOR(x) (x & 0 x1f)
#define KEMPLD_VERSION_GET_MAJOR(x) ((x >> 5 ) & 0 x1f)
#define KEMPLD_VERSION_GET_NUMBER(x) ((x >> 10 ) & 0 xf)
#define KEMPLD_VERSION_GET_TYPE(x) ((x >> 14 ) & 0 x3)
#define KEMPLD_BUILDNR 0 x02
#define KEMPLD_BUILDNR_LSB 0 x02
#define KEMPLD_BUILDNR_MSB 0 x03
#define KEMPLD_FEATURE 0 x04
#define KEMPLD_FEATURE_LSB 0 x04
#define KEMPLD_FEATURE_MSB 0 x05
#define KEMPLD_FEATURE_BIT_I2C (1 << 0 )
#define KEMPLD_FEATURE_BIT_WATCHDOG (1 << 1 )
#define KEMPLD_FEATURE_BIT_GPIO (1 << 2 )
#define KEMPLD_FEATURE_MASK_UART (7 << 3 )
#define KEMPLD_FEATURE_BIT_NMI (1 << 8 )
#define KEMPLD_FEATURE_BIT_SMI (1 << 9 )
#define KEMPLD_FEATURE_BIT_SCI (1 << 10 )
#define KEMPLD_SPEC 0 x06
#define KEMPLD_SPEC_GET_MINOR(x) (x & 0 x0f)
#define KEMPLD_SPEC_GET_MAJOR(x) ((x >> 4 ) & 0 x0f)
#define KEMPLD_IRQ_GPIO 0 x35
#define KEMPLD_IRQ_I2C 0 x36
#define KEMPLD_CFG 0 x37
#define KEMPLD_CFG_GPIO_I2C_MUX (1 << 0 )
#define KEMPLD_CFG_BIOS_WP (1 << 7 )
#define KEMPLD_CLK 33333333
#define KEMPLD_TYPE_RELEASE 0 x0
#define KEMPLD_TYPE_DEBUG 0 x1
#define KEMPLD_TYPE_CUSTOM 0 x2
#define KEMPLD_VERSION_LEN 10
/**
* struct kempld_info - PLD device information structure
* @major: PLD major revision
* @minor: PLD minor revision
* @buildnr: PLD build number
* @number: PLD board specific index
* @type: PLD type
* @spec_major: PLD FW specification major revision
* @spec_minor: PLD FW specification minor revision
* @version: PLD version string
*/
struct kempld_info {
unsigned int major;
unsigned int minor;
unsigned int buildnr;
unsigned int number;
unsigned int type;
unsigned int spec_major;
unsigned int spec_minor;
char version[KEMPLD_VERSION_LEN];
};
/**
* struct kempld_device_data - Internal representation of the PLD device
* @io_base: Pointer to the IO memory
* @io_index: Pointer to the IO index register
* @io_data: Pointer to the IO data register
* @pld_clock: PLD clock frequency
* @feature_mask: PLD feature mask
* @dev: Pointer to kernel device structure
* @info: KEMPLD info structure
* @lock: PLD mutex
*/
struct kempld_device_data {
void __iomem *io_base;
void __iomem *io_index;
void __iomem *io_data;
u32 pld_clock;
u32 feature_mask;
struct device *dev;
struct kempld_info info;
struct mutex lock;
};
/**
* struct kempld_platform_data - PLD hardware configuration structure
* @pld_clock: PLD clock frequency
* @gpio_base GPIO base pin number
* @ioresource: IO addresses of the PLD
* @get_mutex: PLD specific get_mutex callback
* @release_mutex: PLD specific release_mutex callback
* @get_info: PLD specific get_info callback
* @register_cells: PLD specific register_cells callback
*/
struct kempld_platform_data {
u32 pld_clock;
int gpio_base;
struct resource *ioresource;
void (*get_hardware_mutex) (struct kempld_device_data *);
void (*release_hardware_mutex) (struct kempld_device_data *);
int (*get_info) (struct kempld_device_data *);
int (*register_cells) (struct kempld_device_data *);
};
extern void kempld_get_mutex(struct kempld_device_data *pld);
extern void kempld_release_mutex(struct kempld_device_data *pld);
extern u8 kempld_read8(struct kempld_device_data *pld, u8 index);
extern void kempld_write8(struct kempld_device_data *pld, u8 index, u8 data);
extern u16 kempld_read16(struct kempld_device_data *pld, u8 index);
extern void kempld_write16(struct kempld_device_data *pld, u8 index, u16 data);
extern u32 kempld_read32(struct kempld_device_data *pld, u8 index);
extern void kempld_write32(struct kempld_device_data *pld, u8 index, u32 data);
#endif /* _LINUX_MFD_KEMPLD_H_ */
Messung V0.5 in Prozent C=90 H=97 G=93
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland