174 lines · 4.0 KB · C
RawDownload
/* SPDX-License-Identifier: GPL-2.0-only *//* * Copyright (C) 2008 * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de> * * Copyright (C) 2005-2007 Freescale Semiconductor, Inc. */ #ifndef __LINUX_DMA_IPU_DMA_H#define __LINUX_DMA_IPU_DMA_H #include <linux/types.h>#include <linux/dmaengine.h> /* IPU DMA Controller channel definitions. */enum ipu_channel {	IDMAC_IC_0 = 0,		/* IC (encoding task) to memory */	IDMAC_IC_1 = 1,		/* IC (viewfinder task) to memory */	IDMAC_ADC_0 = 1,	IDMAC_IC_2 = 2,	IDMAC_ADC_1 = 2,	IDMAC_IC_3 = 3,	IDMAC_IC_4 = 4,	IDMAC_IC_5 = 5,	IDMAC_IC_6 = 6,	IDMAC_IC_7 = 7,		/* IC (sensor data) to memory */	IDMAC_IC_8 = 8,	IDMAC_IC_9 = 9,	IDMAC_IC_10 = 10,	IDMAC_IC_11 = 11,	IDMAC_IC_12 = 12,	IDMAC_IC_13 = 13,	IDMAC_SDC_0 = 14,	/* Background synchronous display data */	IDMAC_SDC_1 = 15,	/* Foreground data (overlay) */	IDMAC_SDC_2 = 16,	IDMAC_SDC_3 = 17,	IDMAC_ADC_2 = 18,	IDMAC_ADC_3 = 19,	IDMAC_ADC_4 = 20,	IDMAC_ADC_5 = 21,	IDMAC_ADC_6 = 22,	IDMAC_ADC_7 = 23,	IDMAC_PF_0 = 24,	IDMAC_PF_1 = 25,	IDMAC_PF_2 = 26,	IDMAC_PF_3 = 27,	IDMAC_PF_4 = 28,	IDMAC_PF_5 = 29,	IDMAC_PF_6 = 30,	IDMAC_PF_7 = 31,}; /* Order significant! */enum ipu_channel_status {	IPU_CHANNEL_FREE,	IPU_CHANNEL_INITIALIZED,	IPU_CHANNEL_READY,	IPU_CHANNEL_ENABLED,}; #define IPU_CHANNELS_NUM 32 enum pixel_fmt {	/* 1 byte */	IPU_PIX_FMT_GENERIC,	IPU_PIX_FMT_RGB332,	IPU_PIX_FMT_YUV420P,	IPU_PIX_FMT_YUV422P,	IPU_PIX_FMT_YUV420P2,	IPU_PIX_FMT_YVU422P,	/* 2 bytes */	IPU_PIX_FMT_RGB565,	IPU_PIX_FMT_RGB666,	IPU_PIX_FMT_BGR666,	IPU_PIX_FMT_YUYV,	IPU_PIX_FMT_UYVY,	/* 3 bytes */	IPU_PIX_FMT_RGB24,	IPU_PIX_FMT_BGR24,	/* 4 bytes */	IPU_PIX_FMT_GENERIC_32,	IPU_PIX_FMT_RGB32,	IPU_PIX_FMT_BGR32,	IPU_PIX_FMT_ABGR32,	IPU_PIX_FMT_BGRA32,	IPU_PIX_FMT_RGBA32,}; enum ipu_color_space {	IPU_COLORSPACE_RGB,	IPU_COLORSPACE_YCBCR,	IPU_COLORSPACE_YUV}; /* * Enumeration of IPU rotation modes */enum ipu_rotate_mode {	/* Note the enum values correspond to BAM value */	IPU_ROTATE_NONE = 0,	IPU_ROTATE_VERT_FLIP = 1,	IPU_ROTATE_HORIZ_FLIP = 2,	IPU_ROTATE_180 = 3,	IPU_ROTATE_90_RIGHT = 4,	IPU_ROTATE_90_RIGHT_VFLIP = 5,	IPU_ROTATE_90_RIGHT_HFLIP = 6,	IPU_ROTATE_90_LEFT = 7,}; /* * Enumeration of DI ports for ADC. */enum display_port {	DISP0,	DISP1,	DISP2,	DISP3}; struct idmac_video_param {	unsigned short		in_width;	unsigned short		in_height;	uint32_t		in_pixel_fmt;	unsigned short		out_width;	unsigned short		out_height;	uint32_t		out_pixel_fmt;	unsigned short		out_stride;	bool			graphics_combine_en;	bool			global_alpha_en;	bool			key_color_en;	enum display_port	disp;	unsigned short		out_left;	unsigned short		out_top;}; /* * Union of initialization parameters for a logical channel. So far only video * parameters are used. */union ipu_channel_param {	struct idmac_video_param video;}; struct idmac_tx_desc {	struct dma_async_tx_descriptor	txd;	struct scatterlist		*sg;	/* scatterlist for this */	unsigned int			sg_len;	/* tx-descriptor. */	struct list_head		list;}; struct idmac_channel {	struct dma_chan		dma_chan;	dma_cookie_t		completed;	/* last completed cookie	   */	union ipu_channel_param	params;	enum ipu_channel	link;	/* input channel, linked to the output	   */	enum ipu_channel_status	status;	void			*client;	/* Only one client per channel	   */	unsigned int		n_tx_desc;	struct idmac_tx_desc	*desc;		/* allocated tx-descriptors	   */	struct scatterlist	*sg[2];	/* scatterlist elements in buffer-0 and -1 */	struct list_head	free_list;	/* free tx-descriptors		   */	struct list_head	queue;		/* queued tx-descriptors	   */	spinlock_t		lock;		/* protects sg[0,1], queue	   */	struct mutex		chan_mutex; /* protects status, cookie, free_list  */	bool			sec_chan_en;	int			active_buffer;	unsigned int		eof_irq;	char			eof_name[16];	/* EOF IRQ name for request_irq()  */}; #define to_tx_desc(tx) container_of(tx, struct idmac_tx_desc, txd)#define to_idmac_chan(c) container_of(c, struct idmac_channel, dma_chan) #endif /* __LINUX_DMA_IPU_DMA_H */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t