mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-18 22:14:16 +00:00 
			
		
		
		
	[media] OMAP_VOUT: CLEANUP: Move generic functions and macros to common files
Move the inline functions rotate_90_or_270(), rotation_enabled(), and calc_rotation() from omap_vout.c to omap_voutdef.h. Move the independent functions omap_vout_alloc_buffer() and omap_vout_free_buffer() to omap_voutlib.c. Remove extern identifier from function definitions in omap_voutlib.h Add static identifier to functions that are used locally in omap_vout.c Signed-off-by: Archit Taneja <archit@ti.com> Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
		
							parent
							
								
									e213e438ce
								
							
						
					
					
						commit
						a137ac870b
					
				
					 4 changed files with 119 additions and 118 deletions
				
			
		|  | @ -35,17 +35,14 @@ | |||
| #include <linux/sched.h> | ||||
| #include <linux/types.h> | ||||
| #include <linux/platform_device.h> | ||||
| #include <linux/dma-mapping.h> | ||||
| #include <linux/irq.h> | ||||
| #include <linux/videodev2.h> | ||||
| #include <linux/slab.h> | ||||
| 
 | ||||
| #include <media/videobuf-dma-contig.h> | ||||
| #include <media/v4l2-device.h> | ||||
| #include <media/v4l2-ioctl.h> | ||||
| 
 | ||||
| #include <plat/dma.h> | ||||
| #include <plat/vram.h> | ||||
| #include <plat/vrfb.h> | ||||
| #include <video/omapdss.h> | ||||
| 
 | ||||
|  | @ -56,7 +53,6 @@ MODULE_AUTHOR("Texas Instruments"); | |||
| MODULE_DESCRIPTION("OMAP Video for Linux Video out driver"); | ||||
| MODULE_LICENSE("GPL"); | ||||
| 
 | ||||
| 
 | ||||
| /* Driver Configuration macros */ | ||||
| #define VOUT_NAME		"omap_vout" | ||||
| 
 | ||||
|  | @ -65,31 +61,6 @@ enum omap_vout_channels { | |||
| 	OMAP_VIDEO2, | ||||
| }; | ||||
| 
 | ||||
| enum dma_channel_state { | ||||
| 	DMA_CHAN_NOT_ALLOTED, | ||||
| 	DMA_CHAN_ALLOTED, | ||||
| }; | ||||
| 
 | ||||
| #define QQVGA_WIDTH		160 | ||||
| #define QQVGA_HEIGHT		120 | ||||
| 
 | ||||
| /* Max Resolution supported by the driver */ | ||||
| #define VID_MAX_WIDTH		1280	/* Largest width */ | ||||
| #define VID_MAX_HEIGHT		720	/* Largest height */ | ||||
| 
 | ||||
| /* Mimimum requirement is 2x2 for DSS */ | ||||
| #define VID_MIN_WIDTH		2 | ||||
| #define VID_MIN_HEIGHT		2 | ||||
| 
 | ||||
| /* 2048 x 2048 is max res supported by OMAP display controller */ | ||||
| #define MAX_PIXELS_PER_LINE     2048 | ||||
| 
 | ||||
| #define VRFB_TX_TIMEOUT         1000 | ||||
| #define VRFB_NUM_BUFS		4 | ||||
| 
 | ||||
| /* Max buffer size tobe allocated during init */ | ||||
| #define OMAP_VOUT_MAX_BUF_SIZE (VID_MAX_WIDTH*VID_MAX_HEIGHT*4) | ||||
| 
 | ||||
| static struct videobuf_queue_ops video_vbq_ops; | ||||
| /* Variables configurable through module params*/ | ||||
| static u32 video1_numbuffers = 3; | ||||
|  | @ -171,49 +142,6 @@ static const struct v4l2_fmtdesc omap_formats[] = { | |||
| 
 | ||||
| #define NUM_OUTPUT_FORMATS (ARRAY_SIZE(omap_formats)) | ||||
| 
 | ||||
| /*
 | ||||
|  * Allocate buffers | ||||
|  */ | ||||
| static unsigned long omap_vout_alloc_buffer(u32 buf_size, u32 *phys_addr) | ||||
| { | ||||
| 	u32 order, size; | ||||
| 	unsigned long virt_addr, addr; | ||||
| 
 | ||||
| 	size = PAGE_ALIGN(buf_size); | ||||
| 	order = get_order(size); | ||||
| 	virt_addr = __get_free_pages(GFP_KERNEL, order); | ||||
| 	addr = virt_addr; | ||||
| 
 | ||||
| 	if (virt_addr) { | ||||
| 		while (size > 0) { | ||||
| 			SetPageReserved(virt_to_page(addr)); | ||||
| 			addr += PAGE_SIZE; | ||||
| 			size -= PAGE_SIZE; | ||||
| 		} | ||||
| 	} | ||||
| 	*phys_addr = (u32) virt_to_phys((void *) virt_addr); | ||||
| 	return virt_addr; | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * Free buffers | ||||
|  */ | ||||
| static void omap_vout_free_buffer(unsigned long virtaddr, u32 buf_size) | ||||
| { | ||||
| 	u32 order, size; | ||||
| 	unsigned long addr = virtaddr; | ||||
| 
 | ||||
| 	size = PAGE_ALIGN(buf_size); | ||||
| 	order = get_order(size); | ||||
| 
 | ||||
| 	while (size > 0) { | ||||
| 		ClearPageReserved(virt_to_page(addr)); | ||||
| 		addr += PAGE_SIZE; | ||||
| 		size -= PAGE_SIZE; | ||||
| 	} | ||||
| 	free_pages((unsigned long) virtaddr, order); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * Function for allocating video buffers | ||||
|  */ | ||||
|  | @ -368,43 +296,6 @@ static void omap_vout_release_vrfb(struct omap_vout_device *vout) | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * Return true if rotation is 90 or 270 | ||||
|  */ | ||||
| static inline int rotate_90_or_270(const struct omap_vout_device *vout) | ||||
| { | ||||
| 	return (vout->rotation == dss_rotation_90_degree || | ||||
| 			vout->rotation == dss_rotation_270_degree); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * Return true if rotation is enabled | ||||
|  */ | ||||
| static inline int rotation_enabled(const struct omap_vout_device *vout) | ||||
| { | ||||
| 	return vout->rotation || vout->mirror; | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * Reverse the rotation degree if mirroring is enabled | ||||
|  */ | ||||
| static inline int calc_rotation(const struct omap_vout_device *vout) | ||||
| { | ||||
| 	if (!vout->mirror) | ||||
| 		return vout->rotation; | ||||
| 
 | ||||
| 	switch (vout->rotation) { | ||||
| 	case dss_rotation_90_degree: | ||||
| 		return dss_rotation_270_degree; | ||||
| 	case dss_rotation_270_degree: | ||||
| 		return dss_rotation_90_degree; | ||||
| 	case dss_rotation_180_degree: | ||||
| 		return dss_rotation_0_degree; | ||||
| 	default: | ||||
| 		return dss_rotation_180_degree; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * Free the V4L2 buffers | ||||
|  */ | ||||
|  | @ -664,7 +555,7 @@ static int video_mode_to_dss_mode(struct omap_vout_device *vout) | |||
| /*
 | ||||
|  * Setup the overlay | ||||
|  */ | ||||
| int omapvid_setup_overlay(struct omap_vout_device *vout, | ||||
| static int omapvid_setup_overlay(struct omap_vout_device *vout, | ||||
| 		struct omap_overlay *ovl, int posx, int posy, int outw, | ||||
| 		int outh, u32 addr) | ||||
| { | ||||
|  | @ -744,7 +635,7 @@ setup_ovl_err: | |||
| /*
 | ||||
|  * Initialize the overlay structure | ||||
|  */ | ||||
| int omapvid_init(struct omap_vout_device *vout, u32 addr) | ||||
| static int omapvid_init(struct omap_vout_device *vout, u32 addr) | ||||
| { | ||||
| 	int ret = 0, i; | ||||
| 	struct v4l2_window *win; | ||||
|  | @ -809,7 +700,7 @@ omapvid_init_err: | |||
| /*
 | ||||
|  * Apply the changes set the go bit of DSS | ||||
|  */ | ||||
| int omapvid_apply_changes(struct omap_vout_device *vout) | ||||
| static int omapvid_apply_changes(struct omap_vout_device *vout) | ||||
| { | ||||
| 	int i; | ||||
| 	struct omap_overlay *ovl; | ||||
|  | @ -825,7 +716,7 @@ int omapvid_apply_changes(struct omap_vout_device *vout) | |||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| void omap_vout_isr(void *arg, unsigned int irqstatus) | ||||
| static void omap_vout_isr(void *arg, unsigned int irqstatus) | ||||
| { | ||||
| 	int ret; | ||||
| 	u32 addr, fid; | ||||
|  |  | |||
|  | @ -27,6 +27,31 @@ | |||
| #define MAX_DISPLAYS	3 | ||||
| #define MAX_MANAGERS	3 | ||||
| 
 | ||||
| #define QQVGA_WIDTH		160 | ||||
| #define QQVGA_HEIGHT		120 | ||||
| 
 | ||||
| /* Max Resolution supported by the driver */ | ||||
| #define VID_MAX_WIDTH		1280	/* Largest width */ | ||||
| #define VID_MAX_HEIGHT		720	/* Largest height */ | ||||
| 
 | ||||
| /* Mimimum requirement is 2x2 for DSS */ | ||||
| #define VID_MIN_WIDTH		2 | ||||
| #define VID_MIN_HEIGHT		2 | ||||
| 
 | ||||
| /* 2048 x 2048 is max res supported by OMAP display controller */ | ||||
| #define MAX_PIXELS_PER_LINE     2048 | ||||
| 
 | ||||
| #define VRFB_TX_TIMEOUT         1000 | ||||
| #define VRFB_NUM_BUFS		4 | ||||
| 
 | ||||
| /* Max buffer size tobe allocated during init */ | ||||
| #define OMAP_VOUT_MAX_BUF_SIZE (VID_MAX_WIDTH*VID_MAX_HEIGHT*4) | ||||
| 
 | ||||
| enum dma_channel_state { | ||||
| 	DMA_CHAN_NOT_ALLOTED, | ||||
| 	DMA_CHAN_ALLOTED, | ||||
| }; | ||||
| 
 | ||||
| /* Enum for Rotation
 | ||||
|  * DSS understands rotation in 0, 1, 2, 3 context | ||||
|  * while V4L2 driver understands it as 0, 90, 180, 270 | ||||
|  | @ -144,4 +169,41 @@ struct omap_vout_device { | |||
| 	int io_allowed; | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
|  * Return true if rotation is 90 or 270 | ||||
|  */ | ||||
| static inline int rotate_90_or_270(const struct omap_vout_device *vout) | ||||
| { | ||||
| 	return (vout->rotation == dss_rotation_90_degree || | ||||
| 			vout->rotation == dss_rotation_270_degree); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * Return true if rotation is enabled | ||||
|  */ | ||||
| static inline int rotation_enabled(const struct omap_vout_device *vout) | ||||
| { | ||||
| 	return vout->rotation || vout->mirror; | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * Reverse the rotation degree if mirroring is enabled | ||||
|  */ | ||||
| static inline int calc_rotation(const struct omap_vout_device *vout) | ||||
| { | ||||
| 	if (!vout->mirror) | ||||
| 		return vout->rotation; | ||||
| 
 | ||||
| 	switch (vout->rotation) { | ||||
| 	case dss_rotation_90_degree: | ||||
| 		return dss_rotation_270_degree; | ||||
| 	case dss_rotation_270_degree: | ||||
| 		return dss_rotation_90_degree; | ||||
| 	case dss_rotation_180_degree: | ||||
| 		return dss_rotation_0_degree; | ||||
| 	default: | ||||
| 		return dss_rotation_180_degree; | ||||
| 	} | ||||
| } | ||||
| #endif	/* ifndef OMAP_VOUTDEF_H */ | ||||
|  |  | |||
|  | @ -24,8 +24,12 @@ | |||
| #include <linux/types.h> | ||||
| #include <linux/videodev2.h> | ||||
| 
 | ||||
| #include <linux/dma-mapping.h> | ||||
| 
 | ||||
| #include <plat/cpu.h> | ||||
| 
 | ||||
| #include "omap_voutlib.h" | ||||
| 
 | ||||
| MODULE_AUTHOR("Texas Instruments"); | ||||
| MODULE_DESCRIPTION("OMAP Video library"); | ||||
| MODULE_LICENSE("GPL"); | ||||
|  | @ -291,3 +295,45 @@ void omap_vout_new_format(struct v4l2_pix_format *pix, | |||
| } | ||||
| EXPORT_SYMBOL_GPL(omap_vout_new_format); | ||||
| 
 | ||||
| /*
 | ||||
|  * Allocate buffers | ||||
|  */ | ||||
| unsigned long omap_vout_alloc_buffer(u32 buf_size, u32 *phys_addr) | ||||
| { | ||||
| 	u32 order, size; | ||||
| 	unsigned long virt_addr, addr; | ||||
| 
 | ||||
| 	size = PAGE_ALIGN(buf_size); | ||||
| 	order = get_order(size); | ||||
| 	virt_addr = __get_free_pages(GFP_KERNEL, order); | ||||
| 	addr = virt_addr; | ||||
| 
 | ||||
| 	if (virt_addr) { | ||||
| 		while (size > 0) { | ||||
| 			SetPageReserved(virt_to_page(addr)); | ||||
| 			addr += PAGE_SIZE; | ||||
| 			size -= PAGE_SIZE; | ||||
| 		} | ||||
| 	} | ||||
| 	*phys_addr = (u32) virt_to_phys((void *) virt_addr); | ||||
| 	return virt_addr; | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * Free buffers | ||||
|  */ | ||||
| void omap_vout_free_buffer(unsigned long virtaddr, u32 buf_size) | ||||
| { | ||||
| 	u32 order, size; | ||||
| 	unsigned long addr = virtaddr; | ||||
| 
 | ||||
| 	size = PAGE_ALIGN(buf_size); | ||||
| 	order = get_order(size); | ||||
| 
 | ||||
| 	while (size > 0) { | ||||
| 		ClearPageReserved(virt_to_page(addr)); | ||||
| 		addr += PAGE_SIZE; | ||||
| 		size -= PAGE_SIZE; | ||||
| 	} | ||||
| 	free_pages((unsigned long) virtaddr, order); | ||||
| } | ||||
|  |  | |||
|  | @ -12,23 +12,25 @@ | |||
| #ifndef OMAP_VOUTLIB_H | ||||
| #define OMAP_VOUTLIB_H | ||||
| 
 | ||||
| extern void omap_vout_default_crop(struct v4l2_pix_format *pix, | ||||
| void omap_vout_default_crop(struct v4l2_pix_format *pix, | ||||
| 		struct v4l2_framebuffer *fbuf, struct v4l2_rect *crop); | ||||
| 
 | ||||
| extern int omap_vout_new_crop(struct v4l2_pix_format *pix, | ||||
| int omap_vout_new_crop(struct v4l2_pix_format *pix, | ||||
| 		struct v4l2_rect *crop, struct v4l2_window *win, | ||||
| 		struct v4l2_framebuffer *fbuf, | ||||
| 		const struct v4l2_rect *new_crop); | ||||
| 
 | ||||
| extern int omap_vout_try_window(struct v4l2_framebuffer *fbuf, | ||||
| int omap_vout_try_window(struct v4l2_framebuffer *fbuf, | ||||
| 		struct v4l2_window *new_win); | ||||
| 
 | ||||
| extern int omap_vout_new_window(struct v4l2_rect *crop, | ||||
| int omap_vout_new_window(struct v4l2_rect *crop, | ||||
| 		struct v4l2_window *win, struct v4l2_framebuffer *fbuf, | ||||
| 		struct v4l2_window *new_win); | ||||
| 
 | ||||
| extern void omap_vout_new_format(struct v4l2_pix_format *pix, | ||||
| void omap_vout_new_format(struct v4l2_pix_format *pix, | ||||
| 		struct v4l2_framebuffer *fbuf, struct v4l2_rect *crop, | ||||
| 		struct v4l2_window *win); | ||||
| unsigned long omap_vout_alloc_buffer(u32 buf_size, u32 *phys_addr); | ||||
| void omap_vout_free_buffer(unsigned long virtaddr, u32 buf_size); | ||||
| #endif	/* #ifndef OMAP_VOUTLIB_H */ | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 archit taneja
						archit taneja