diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/dma/ipu-dma.h | 177 | ||||
| -rw-r--r-- | include/linux/platform_data/asoc-imx-ssi.h | 2 | ||||
| -rw-r--r-- | include/linux/platform_data/dma-imx.h | 4 | ||||
| -rw-r--r-- | include/linux/platform_data/dmtimer-omap.h | 31 | ||||
| -rw-r--r-- | include/linux/platform_data/omap-wd-timer.h | 38 | ||||
| -rw-r--r-- | include/linux/tegra-ahb.h | 19 | 
6 files changed, 270 insertions, 1 deletions
diff --git a/include/linux/dma/ipu-dma.h b/include/linux/dma/ipu-dma.h new file mode 100644 index 00000000000..18031115c66 --- /dev/null +++ b/include/linux/dma/ipu-dma.h @@ -0,0 +1,177 @@ +/* + * Copyright (C) 2008 + * Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de> + * + * Copyright (C) 2005-2007 Freescale Semiconductor, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#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 */ diff --git a/include/linux/platform_data/asoc-imx-ssi.h b/include/linux/platform_data/asoc-imx-ssi.h index 63f3c280423..92c7fd72f63 100644 --- a/include/linux/platform_data/asoc-imx-ssi.h +++ b/include/linux/platform_data/asoc-imx-ssi.h @@ -17,5 +17,7 @@ struct imx_ssi_platform_data {  	void (*ac97_warm_reset)(struct snd_ac97 *ac97);  }; +extern int mxc_set_irq_fiq(unsigned int irq, unsigned int type); +  #endif /* __MACH_SSI_H */ diff --git a/include/linux/platform_data/dma-imx.h b/include/linux/platform_data/dma-imx.h index 1b9080385b4..f6d30cc1cb7 100644 --- a/include/linux/platform_data/dma-imx.h +++ b/include/linux/platform_data/dma-imx.h @@ -61,7 +61,9 @@ static inline int imx_dma_is_ipu(struct dma_chan *chan)  static inline int imx_dma_is_general_purpose(struct dma_chan *chan)  {  	return strstr(dev_name(chan->device->dev), "sdma") || -		!strcmp(dev_name(chan->device->dev), "imx-dma"); +		!strcmp(dev_name(chan->device->dev), "imx1-dma") || +		!strcmp(dev_name(chan->device->dev), "imx21-dma") || +		!strcmp(dev_name(chan->device->dev), "imx27-dma");  }  #endif diff --git a/include/linux/platform_data/dmtimer-omap.h b/include/linux/platform_data/dmtimer-omap.h new file mode 100644 index 00000000000..a19b78d826e --- /dev/null +++ b/include/linux/platform_data/dmtimer-omap.h @@ -0,0 +1,31 @@ +/* + * DMTIMER platform data for TI OMAP platforms + * + * Copyright (C) 2012 Texas Instruments + * Author: Jon Hunter <jon-hunter@ti.com> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program.  If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef __PLATFORM_DATA_DMTIMER_OMAP_H__ +#define __PLATFORM_DATA_DMTIMER_OMAP_H__ + +struct dmtimer_platform_data { +	/* set_timer_src - Only used for OMAP1 devices */ +	int (*set_timer_src)(struct platform_device *pdev, int source); +	u32 timer_capability; +	u32 timer_errata; +	int (*get_context_loss_count)(struct device *); +}; + +#endif /* __PLATFORM_DATA_DMTIMER_OMAP_H__ */ diff --git a/include/linux/platform_data/omap-wd-timer.h b/include/linux/platform_data/omap-wd-timer.h new file mode 100644 index 00000000000..d75f5f802d9 --- /dev/null +++ b/include/linux/platform_data/omap-wd-timer.h @@ -0,0 +1,38 @@ +/* + * OMAP2+ WDTIMER-specific function prototypes + * + * Copyright (C) 2012 Texas Instruments, Inc. + * Paul Walmsley + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#ifndef __LINUX_PLATFORM_DATA_OMAP_WD_TIMER_H +#define __LINUX_PLATFORM_DATA_OMAP_WD_TIMER_H + +#include <linux/types.h> + +/* + * Standardized OMAP reset source bits + * + * This is a subset of the ones listed in arch/arm/mach-omap2/prm.h + * and are the only ones needed in the watchdog driver. + */ +#define OMAP_MPU_WD_RST_SRC_ID_SHIFT				3 + +/** + * struct omap_wd_timer_platform_data - WDTIMER integration to the host SoC + * @read_reset_sources - fn ptr for the SoC to indicate the last reset cause + * + * The function pointed to by @read_reset_sources must return its data + * in a standard format - search for RST_SRC_ID_SHIFT in + * arch/arm/mach-omap2 + */ +struct omap_wd_timer_platform_data { +	u32 (*read_reset_sources)(void); +}; + +#endif diff --git a/include/linux/tegra-ahb.h b/include/linux/tegra-ahb.h new file mode 100644 index 00000000000..f1cd075ceee --- /dev/null +++ b/include/linux/tegra-ahb.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2012, NVIDIA CORPORATION.  All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for + * more details. + */ + +#ifndef __LINUX_AHB_H__ +#define __LINUX_AHB_H__ + +extern int tegra_ahb_enable_smmu(struct device_node *ahb); + +#endif	/* __LINUX_AHB_H__ */  |