/** * Atmel HLCDC Layer registers layout structure * * Each HLCDC layer has its own register organization and a given register * can be placed differently on 2 different layers depending on its * capabilities. * This structure stores common registers layout for a given layer and is * used by HLCDC layer code to choose the appropriate register to write to * or to read from. * * For all fields, a value of zero means "unsupported". * * See Atmel's datasheet for a detailled description of these registers. * * @xstride: xstride registers * @pstride: pstride registers * @pos: position register * @size: displayed size register * @memsize: memory size register * @default_color: default color register * @chroma_key: chroma key register * @chroma_key_mask: chroma key mask register * @general_config: general layer config register * @sacler_config: scaler factors register * @phicoeffs: X/Y PHI coefficient registers * @disc_pos: discard area position register * @disc_size: discard area size register * @csc: color space conversion register * @vxs_config: vertical scalar filter taps control register * @hxs_config: horizontal scalar filter taps control register
*/ struct atmel_hlcdc_layer_cfg_layout { int xstride[ATMEL_HLCDC_LAYER_MAX_PLANES]; int pstride[ATMEL_HLCDC_LAYER_MAX_PLANES]; int pos; int size; int memsize; int default_color; int chroma_key; int chroma_key_mask; int general_config; int scaler_config; struct { int x; int y;
} phicoeffs; int disc_pos; int disc_size; int csc; int vxs_config; int hxs_config;
};
/** * Atmel HLCDC DMA descriptor structure * * This structure is used by the HLCDC DMA engine to schedule a DMA transfer. * * The structure fields must remain in this specific order, because they're * used by the HLCDC DMA engine, which expect them in this order. * HLCDC DMA descriptors must be aligned on 64 bits. * * @addr: buffer DMA address * @ctrl: DMA transfer options * @next: next DMA descriptor to fetch * @self: descriptor DMA address
*/ struct atmel_hlcdc_dma_channel_dscr {
dma_addr_t addr;
u32 ctrl;
dma_addr_t next;
dma_addr_t self;
} __aligned(sizeof(u64));
/** * Atmel HLCDC Supported formats structure * * This structure list all the formats supported by a given layer. * * @nformats: number of supported formats * @formats: supported formats
*/ struct atmel_hlcdc_formats { int nformats;
u32 *formats;
};
/** * Atmel HLCDC Layer description structure * * This structure describes the capabilities provided by a given layer. * * @name: layer name * @type: layer type * @id: layer id * @regs_offset: offset of the layer registers from the HLCDC registers base * @cfgs_offset: CFGX registers offset from the layer registers base * @formats: supported formats * @layout: config registers layout * @max_width: maximum width supported by this layer (0 means unlimited) * @max_height: maximum height supported by this layer (0 means unlimited)
*/ struct atmel_hlcdc_layer_desc { constchar *name; enum atmel_hlcdc_layer_type type; int id; int regs_offset; int cfgs_offset; int clut_offset; struct atmel_hlcdc_formats *formats; struct atmel_hlcdc_layer_cfg_layout layout; int max_width; int max_height;
};
/** * Atmel HLCDC Layer. * * A layer can be a DRM plane of a post processing layer used to render * HLCDC composition into memory. * * @desc: layer description * @regmap: pointer to the HLCDC regmap
*/ struct atmel_hlcdc_layer { conststruct atmel_hlcdc_layer_desc *desc; struct regmap *regmap;
};
/** * Atmel HLCDC Display Controller description structure. * * This structure describes the HLCDC IP capabilities and depends on the * HLCDC IP version (or Atmel SoC family). * * @min_width: minimum width supported by the Display Controller * @min_height: minimum height supported by the Display Controller * @max_width: maximum width supported by the Display Controller * @max_height: maximum height supported by the Display Controller * @max_spw: maximum vertical/horizontal pulse width * @max_vpw: maximum vertical back/front porch width * @max_hpw: maximum horizontal back/front porch width * @conflicting_output_formats: true if RGBXXX output formats conflict with * each other. * @fixed_clksrc: true if clock source is fixed * @is_xlcdc: true if XLCDC IP is supported * @layers: a layer description table describing available layers * @nlayers: layer description table size * @ops: atmel lcdc dc ops
*/ struct atmel_hlcdc_dc_desc { int min_width; int min_height; int max_width; int max_height; int max_spw; int max_vpw; int max_hpw; bool conflicting_output_formats; bool fixed_clksrc; bool is_xlcdc; conststruct atmel_hlcdc_layer_desc *layers; int nlayers; conststruct atmel_lcdc_dc_ops *ops;
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.