mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 04:31:19 +00:00 
			
		
		
		
	 59fc7f5289
			
		
	
	
		59fc7f5289
		
	
	
	
	
		
			
			Adds more osd mode switching information. Corrects some information regarding mode selection & local alpha operation for 16 bit modes. Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk> Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
		
			
				
	
	
		
			351 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			351 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| OSD firmware API description
 | |
| ============================
 | |
| 
 | |
| Note: this API is part of the decoder firmware, so it's cx23415 only.
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_GET_FRAMEBUFFER
 | |
| Enum 	65/0x41
 | |
| Description
 | |
| 	Return base and length of contiguous OSD memory.
 | |
| Result[0]
 | |
| 	OSD base address
 | |
| Result[1]
 | |
| 	OSD length
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_GET_PIXEL_FORMAT
 | |
| Enum 	66/0x42
 | |
| Description
 | |
| 	Query OSD format
 | |
| Result[0]
 | |
| 	0=8bit index
 | |
| 	1=16bit RGB 5:6:5
 | |
| 	2=16bit ARGB 1:5:5:5
 | |
| 	3=16bit ARGB 1:4:4:4
 | |
| 	4=32bit ARGB 8:8:8:8
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_SET_PIXEL_FORMAT
 | |
| Enum 	67/0x43
 | |
| Description
 | |
| 	Assign pixel format
 | |
| Param[0]
 | |
| 	0=8bit index
 | |
| 	1=16bit RGB 5:6:5
 | |
| 	2=16bit ARGB 1:5:5:5
 | |
| 	3=16bit ARGB 1:4:4:4
 | |
| 	4=32bit ARGB 8:8:8:8
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_GET_STATE
 | |
| Enum 	68/0x44
 | |
| Description
 | |
| 	Query OSD state
 | |
| Result[0]
 | |
| 	Bit  0   0=off, 1=on
 | |
| 	Bits 1:2 alpha control
 | |
| 	Bits 3:5 pixel format
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_SET_STATE
 | |
| Enum 	69/0x45
 | |
| Description
 | |
| 	OSD switch
 | |
| Param[0]
 | |
| 	0=off, 1=on
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_GET_OSD_COORDS
 | |
| Enum 	70/0x46
 | |
| Description
 | |
| 	Retrieve coordinates of OSD area blended with video
 | |
| Result[0]
 | |
| 	OSD buffer address
 | |
| Result[1]
 | |
| 	Stride in pixels
 | |
| Result[2]
 | |
| 	Lines in OSD buffer
 | |
| Result[3]
 | |
| 	Horizontal offset in buffer
 | |
| Result[4]
 | |
| 	Vertical offset in buffer
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_SET_OSD_COORDS
 | |
| Enum 	71/0x47
 | |
| Description
 | |
| 	Assign the coordinates of the OSD area to blend with video
 | |
| Param[0]
 | |
| 	buffer address
 | |
| Param[1]
 | |
| 	buffer stride in pixels
 | |
| Param[2]
 | |
| 	lines in buffer
 | |
| Param[3]
 | |
| 	horizontal offset
 | |
| Param[4]
 | |
| 	vertical offset
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_GET_SCREEN_COORDS
 | |
| Enum 	72/0x48
 | |
| Description
 | |
| 	Retrieve OSD screen area coordinates
 | |
| Result[0]
 | |
| 	top left horizontal offset
 | |
| Result[1]
 | |
| 	top left vertical offset
 | |
| Result[2]
 | |
| 	bottom right horizontal offset
 | |
| Result[3]
 | |
| 	bottom right vertical offset
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_SET_SCREEN_COORDS
 | |
| Enum 	73/0x49
 | |
| Description
 | |
| 	Assign the coordinates of the screen area to blend with video
 | |
| Param[0]
 | |
| 	top left horizontal offset
 | |
| Param[1]
 | |
| 	top left vertical offset
 | |
| Param[2]
 | |
| 	bottom left horizontal offset
 | |
| Param[3]
 | |
| 	bottom left vertical offset
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_GET_GLOBAL_ALPHA
 | |
| Enum 	74/0x4A
 | |
| Description
 | |
| 	Retrieve OSD global alpha
 | |
| Result[0]
 | |
| 	global alpha: 0=off, 1=on
 | |
| Result[1]
 | |
| 	bits 0:7 global alpha
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_SET_GLOBAL_ALPHA
 | |
| Enum 	75/0x4B
 | |
| Description
 | |
| 	Update global alpha
 | |
| Param[0]
 | |
| 	global alpha: 0=off, 1=on
 | |
| Param[1]
 | |
| 	global alpha (8 bits)
 | |
| Param[2]
 | |
| 	local alpha: 0=on, 1=off
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_SET_BLEND_COORDS
 | |
| Enum 	78/0x4C
 | |
| Description
 | |
| 	Move start of blending area within display buffer
 | |
| Param[0]
 | |
| 	horizontal offset in buffer
 | |
| Param[1]
 | |
| 	vertical offset in buffer
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_GET_FLICKER_STATE
 | |
| Enum 	79/0x4F
 | |
| Description
 | |
| 	Retrieve flicker reduction module state
 | |
| Result[0]
 | |
| 	flicker state: 0=off, 1=on
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_SET_FLICKER_STATE
 | |
| Enum 	80/0x50
 | |
| Description
 | |
| 	Set flicker reduction module state
 | |
| Param[0]
 | |
| 	State: 0=off, 1=on
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_BLT_COPY
 | |
| Enum 	82/0x52
 | |
| Description
 | |
| 	BLT copy
 | |
| Param[0]
 | |
| '0000'  zero
 | |
| '0001' ~destination AND ~source
 | |
| '0010' ~destination AND  source
 | |
| '0011' ~destination
 | |
| '0100'  destination AND ~source
 | |
| '0101'                  ~source
 | |
| '0110'  destination XOR  source
 | |
| '0111' ~destination OR  ~source
 | |
| '1000' ~destination AND ~source
 | |
| '1001'  destination XNOR source
 | |
| '1010'                   source
 | |
| '1011' ~destination OR   source
 | |
| '1100'  destination
 | |
| '1101'  destination OR  ~source
 | |
| '1110'  destination OR   source
 | |
| '1111'  one
 | |
| 
 | |
| Param[1]
 | |
| 	Resulting alpha blending
 | |
| 	    '01' source_alpha
 | |
| 	    '10' destination_alpha
 | |
| 	    '11' source_alpha*destination_alpha+1
 | |
| 		 (zero if both source and destination alpha are zero)
 | |
| Param[2]
 | |
| 	'00' output_pixel = source_pixel
 | |
| 
 | |
| 	'01' if source_alpha=0:
 | |
| 		 output_pixel = destination_pixel
 | |
| 	     if 256 > source_alpha > 1:
 | |
| 		 output_pixel = ((source_alpha + 1)*source_pixel +
 | |
| 				 (255 - source_alpha)*destination_pixel)/256
 | |
| 
 | |
| 	'10' if destination_alpha=0:
 | |
| 		 output_pixel = source_pixel
 | |
| 	      if 255 > destination_alpha > 0:
 | |
| 		 output_pixel = ((255 - destination_alpha)*source_pixel +
 | |
| 				 (destination_alpha + 1)*destination_pixel)/256
 | |
| 
 | |
| 	'11' if source_alpha=0:
 | |
| 		 source_temp = 0
 | |
| 	     if source_alpha=255:
 | |
| 		 source_temp = source_pixel*256
 | |
| 	     if 255 > source_alpha > 0:
 | |
| 		 source_temp = source_pixel*(source_alpha + 1)
 | |
| 	     if destination_alpha=0:
 | |
| 		 destination_temp = 0
 | |
| 	     if destination_alpha=255:
 | |
| 		 destination_temp = destination_pixel*256
 | |
| 	     if 255 > destination_alpha > 0:
 | |
| 		 destination_temp = destination_pixel*(destination_alpha + 1)
 | |
| 	     output_pixel = (source_temp + destination_temp)/256
 | |
| Param[3]
 | |
| 	width
 | |
| Param[4]
 | |
| 	height
 | |
| Param[5]
 | |
| 	destination pixel mask
 | |
| Param[6]
 | |
| 	destination rectangle start address
 | |
| Param[7]
 | |
| 	destination stride in dwords
 | |
| Param[8]
 | |
| 	source stride in dwords
 | |
| Param[9]
 | |
| 	source rectangle start address
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_BLT_FILL
 | |
| Enum 	83/0x53
 | |
| Description
 | |
| 	BLT fill color
 | |
| Param[0]
 | |
| 	Same as Param[0] on API 0x52
 | |
| Param[1]
 | |
| 	Same as Param[1] on API 0x52
 | |
| Param[2]
 | |
| 	Same as Param[2] on API 0x52
 | |
| Param[3]
 | |
| 	width
 | |
| Param[4]
 | |
| 	height
 | |
| Param[5]
 | |
| 	destination pixel mask
 | |
| Param[6]
 | |
| 	destination rectangle start address
 | |
| Param[7]
 | |
| 	destination stride in dwords
 | |
| Param[8]
 | |
| 	color fill value
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_BLT_TEXT
 | |
| Enum 	84/0x54
 | |
| Description
 | |
| 	BLT for 8 bit alpha text source
 | |
| Param[0]
 | |
| 	Same as Param[0] on API 0x52
 | |
| Param[1]
 | |
| 	Same as Param[1] on API 0x52
 | |
| Param[2]
 | |
| 	Same as Param[2] on API 0x52
 | |
| Param[3]
 | |
| 	width
 | |
| Param[4]
 | |
| 	height
 | |
| Param[5]
 | |
| 	destination pixel mask
 | |
| Param[6]
 | |
| 	destination rectangle start address
 | |
| Param[7]
 | |
| 	destination stride in dwords
 | |
| Param[8]
 | |
| 	source stride in dwords
 | |
| Param[9]
 | |
| 	source rectangle start address
 | |
| Param[10]
 | |
| 	color fill value
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_SET_FRAMEBUFFER_WINDOW
 | |
| Enum 	86/0x56
 | |
| Description
 | |
| 	Positions the main output window on the screen. The coordinates must be
 | |
| 	such that the entire window fits on the screen.
 | |
| Param[0]
 | |
| 	window width
 | |
| Param[1]
 | |
| 	window height
 | |
| Param[2]
 | |
| 	top left window corner horizontal offset
 | |
| Param[3]
 | |
| 	top left window corner vertical offset
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_SET_CHROMA_KEY
 | |
| Enum 	96/0x60
 | |
| Description
 | |
| 	Chroma key switch and color
 | |
| Param[0]
 | |
| 	state: 0=off, 1=on
 | |
| Param[1]
 | |
| 	color
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_GET_ALPHA_CONTENT_INDEX
 | |
| Enum 	97/0x61
 | |
| Description
 | |
| 	Retrieve alpha content index
 | |
| Result[0]
 | |
| 	alpha content index, Range 0:15
 | |
| 
 | |
| -------------------------------------------------------------------------------
 | |
| 
 | |
| Name 	CX2341X_OSD_SET_ALPHA_CONTENT_INDEX
 | |
| Enum 	98/0x62
 | |
| Description
 | |
| 	Assign alpha content index
 | |
| Param[0]
 | |
| 	alpha content index, range 0:15
 |