/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __MCB_INTERNAL
#define __MCB_INTERNAL
#include <linux/types.h>
#define PCI_VENDOR_ID_MEN 0 x1a88
#define PCI_DEVICE_ID_MEN_CHAMELEON 0 x4d45
#define CHAMELEONV2_MAGIC 0 xabce
#define CHAM_HEADER_SIZE 0 x200
enum chameleon_descriptor_type {
CHAMELEON_DTYPE_GENERAL = 0 x0,
CHAMELEON_DTYPE_BRIDGE = 0 x1,
CHAMELEON_DTYPE_CPU = 0 x2,
CHAMELEON_DTYPE_BAR = 0 x3,
CHAMELEON_DTYPE_END = 0 xf,
};
enum chameleon_bus_type {
CHAMELEON_BUS_WISHBONE,
CHAMELEON_BUS_AVALON,
CHAMELEON_BUS_LPC,
CHAMELEON_BUS_ISA,
};
/**
* struct chameleon_fpga_header
*
* @ revision : Revison of Chameleon table in FPGA
* @ model : Chameleon table model ASCII char
* @ minor : Revision minor
* @ bus_type : Bus type ( usually % CHAMELEON_BUS_WISHBONE )
* @ magic : Chameleon header magic number ( 0 xabce for version 2 )
* @ reserved : Reserved
* @ filename : Filename of FPGA bitstream
*/
struct chameleon_fpga_header {
u8 revision;
char model;
u8 minor;
u8 bus_type;
u16 magic;
u16 reserved;
/* This one has no '\0' at the end!!! */
char filename[CHAMELEON_FILENAME_LEN];
} __packed;
#define HEADER_MAGIC_OFFSET 0 x4
/**
* struct chameleon_gdd - Chameleon General Device Descriptor
*
* @ irq : the position in the FPGA ' s IRQ controller vector
* @ rev : the revision of the variant ' s implementation
* @ var : the variant of the IP core
* @ dev : the device the IP core is
* @ dtype : device descriptor type
* @ bar : BAR offset that must be added to module offset
* @ inst : the instance number of the device , 0 is first instance
* @ group : the group the device belongs to ( 0 = no group )
* @ reserved : reserved
* @ offset : beginning of the address window of desired module
* @ size : size of the module ' s address window
*/
struct chameleon_gdd {
__le32 reg1;
__le32 reg2;
__le32 offset;
__le32 size;
} __packed;
/* GDD Register 1 fields */
#define GDD_IRQ(x) ((x) & 0 x1f)
#define GDD_REV(x) (((x) >> 5 ) & 0 x3f)
#define GDD_VAR(x) (((x) >> 11 ) & 0 x3f)
#define GDD_DEV(x) (((x) >> 18 ) & 0 x3ff)
#define GDD_DTY(x) (((x) >> 28 ) & 0 xf)
/* GDD Register 2 fields */
#define GDD_BAR(x) ((x) & 0 x7)
#define GDD_INS(x) (((x) >> 3 ) & 0 x3f)
#define GDD_GRP(x) (((x) >> 9 ) & 0 x3f)
/**
* struct chameleon_bdd - Chameleon Bridge Device Descriptor
*
* @ irq : the position in the FPGA ' s IRQ controller vector
* @ rev : the revision of the variant ' s implementation
* @ var : the variant of the IP core
* @ dev : the device the IP core is
* @ dtype : device descriptor type
* @ bar : BAR offset that must be added to module offset
* @ inst : the instance number of the device , 0 is first instance
* @ dbar : destination bar from the bus _ behind_ the bridge
* @ chamoff : offset within the BAR of the source bus
* @ offset :
* @ size :
*/
struct chameleon_bdd {
unsigned int irq:6 ;
unsigned int rev:6 ;
unsigned int var:6 ;
unsigned int dev:10 ;
unsigned int dtype:4 ;
unsigned int bar:3 ;
unsigned int inst:6 ;
unsigned int dbar:3 ;
unsigned int group:6 ;
unsigned int reserved:14 ;
u32 chamoff;
u32 offset;
u32 size;
} __packed;
struct chameleon_bar {
u32 addr;
u32 size;
};
#define BAR_CNT(x) ((x) & 0 x07)
#define CHAMELEON_BAR_MAX 6
#define BAR_DESC_SIZE(x) ((x) * sizeof (struct chameleon_bar) + sizeof (__le32))
int chameleon_parse_cells(struct mcb_bus *bus, phys_addr_t mapbase,
void __iomem *base);
#endif
Messung V0.5 in Prozent C=95 H=100 G=97
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-09-29)
¤
*© Formatika GbR, Deutschland