Lines Matching full:list

3  * vsp1_dl.c  --  R-Car VSP1 Display List
41 * struct vsp1_dl_ext_header - Extended display list header
45 * @pre_ext_dl_plist: start address of pre-extended display list bodies
47 * @post_ext_dl_plist: start address of post-extended display list bodies
79 * struct vsp1_pre_ext_dl_body - Pre Extended Display List Body
80 * @opcode: Extended display list command operation code
93 * struct vsp1_dl_body - Display list body
94 * @list: entry in the display list list of bodies
95 * @free: entry in the pool free body list
105 struct list_head list; member
121 * struct vsp1_dl_body_pool - display list body pool
126 * @free: List of free DLB entries
127 * @lock: Protects the free list
145 * struct vsp1_cmd_pool - Display List commands pool
151 * @lock: Protects the free list
169 * struct vsp1_dl_list - Display list
170 * @list: entry in the display list manager lists
171 * @dlm: the display list manager
172 * @header: display list header
173 * @extension: extended display list header. NULL for normal lists
175 * @body0: first display list body
176 * @bodies: list of extra display list bodies
180 * @chain: entry in the display list partition chain
181 * @flags: display list flags, a combination of VSP1_DL_FRAME_END_*
184 struct list_head list; member
204 * struct vsp1_dl_manager - Display List manager
206 * @singleshot: execute the display list in single-shot mode
210 * @active: list currently being processed (loaded) by hardware
211 * @queued: list queued to the hardware (written to the DL registers)
212 * @pending: list waiting to be queued to the hardware
213 * @pool: body pool for the display list bodies
214 * @cmdpool: commands pool for extended display list
232 * Display List Body Management
242 * Allocate a pool of display list bodies each with enough memory to contain the
263 * extra memory for the display list header. We need only one header per in vsp1_dl_body_pool_create()
264 * display list, not per display list body, thus this allocation is in vsp1_dl_body_pool_create()
327 * Returns a display list body or NULL if there are none available.
349 * @dlb: The display list body
351 * Return a body back to the pool, and reset the num_entries to clear the list.
371 * vsp1_dl_body_write - Write a register to a display list body
376 * Write the given register and value to the display list body. The maximum
392 * Display List Extended Command Management
545 * Display List Transaction Management
560 /* Get a default body for our list. */ in vsp1_dl_list_alloc()
582 list_for_each_entry_safe(dlb, tmp, &dl->bodies, list) { in vsp1_dl_list_bodies_put()
583 list_del(&dlb->list); in vsp1_dl_list_bodies_put()
597 * vsp1_dl_list_get - Get a free display list
598 * @dlm: The display list manager
600 * Get a display list from the pool of free lists and return it.
602 * This function must be called without the display list manager lock held.
612 dl = list_first_entry(&dlm->free, struct vsp1_dl_list, list); in vsp1_dl_list_get()
613 list_del(&dl->list); in vsp1_dl_list_get()
616 * The display list chain must be initialised to ensure every in vsp1_dl_list_get()
617 * display list can assert list_empty() if it is not in a chain. in vsp1_dl_list_get()
627 /* This function must be called with the display list manager lock held.*/
655 * body0 is reused as as an optimisation as presently every display list in __vsp1_dl_list_put()
656 * has at least one body, thus we reinitialise the entries list. in __vsp1_dl_list_put()
660 list_add_tail(&dl->list, &dl->dlm->free); in __vsp1_dl_list_put()
664 * vsp1_dl_list_put - Release a display list
665 * @dl: The display list
667 * Release the display list and return it to the pool of free lists.
685 * vsp1_dl_list_get_body0 - Obtain the default body for the display list
686 * @dl: The display list
688 * Obtain a pointer to the internal display list body allowing this to be passed
697 * vsp1_dl_list_add_body - Add a body to the display list
698 * @dl: The display list
701 * Add a display list body to a display list. Registers contained in bodies are
702 * processed after registers contained in the main display list, in the order in
705 * Adding a body to a display list passes ownership of the body to the list. The
706 * caller retains its reference to the body when adding it to the display list,
716 list_add_tail(&dlb->list, &dl->bodies); in vsp1_dl_list_add_body()
722 * vsp1_dl_list_add_chain - Add a display list to a chain
723 * @head: The head display list
724 * @dl: The new display list
726 * Add a display list to an existing display list chain. The chained lists
728 * the CPU. A display list end interrupt will only complete after the last
729 * display list in the chain has completed processing.
731 * Adding a display list to a chain passes ownership of the display list to
732 * the head display list item. The chain is released when the head dl item is
759 * Fill the header with the display list bodies addresses and sizes. The in vsp1_dl_list_fill_header()
761 * list was allocated. in vsp1_dl_list_fill_header()
767 list_for_each_entry(dlb, &dl->bodies, list) { in vsp1_dl_list_fill_header()
781 * chained lists are used with one list per frame, so enable the in vsp1_dl_list_fill_header()
782 * interrupt for each list. In singleshot mode chained lists are used in vsp1_dl_list_fill_header()
784 * list only. in vsp1_dl_list_fill_header()
791 * loop on the same list until a new one is queued. In singleshot mode in vsp1_dl_list_fill_header()
800 * If this is not the last display list in the chain, queue the in vsp1_dl_list_fill_header()
808 * if the display list manager works in continuous mode, the VSP in vsp1_dl_list_fill_header()
809 * should loop over the display list continuously until in vsp1_dl_list_fill_header()
857 * Program the display list header address. If the hardware is idle in vsp1_dl_list_hw_enqueue()
860 * VI6_DL_HDR_REF_ADDR register will be updated with the display list in vsp1_dl_list_hw_enqueue()
871 * If a previous display list has been queued to the hardware but not in vsp1_dl_list_commit_continuous()
873 * case we can't replace the queued list by the new one, as we could in vsp1_dl_list_commit_continuous()
877 * If a display list is already pending we simply drop it as the new in vsp1_dl_list_commit_continuous()
878 * display list is assumed to contain a more recent configuration. It is in vsp1_dl_list_commit_continuous()
879 * an error if the already pending list has the in vsp1_dl_list_commit_continuous()
881 * waiting for that list to complete. This shouldn't happen as the in vsp1_dl_list_commit_continuous()
894 * Pass the new display list to the hardware and mark it as queued. It in vsp1_dl_list_commit_continuous()
909 * hardware is idle at this point. Just commit the head display list in vsp1_dl_list_commit_singleshot()
945 * Display List Manager
949 * vsp1_dlm_irq_frame_end - Display list handler for the frame end interrupt
950 * @dlm: the display list manager
952 * Return a set of flags that indicates display list completion status.
954 * The VSP1_DL_FRAME_END_COMPLETED flag indicates that the previous display list
955 * has completed at frame end. If the flag is not returned display list
956 * completion has been delayed by one frame because the display list commit
958 * set in single-shot mode as display list processing is then not continuous and
963 * The VSP1_DL_FRAME_END_INTERNAL flag indicates that the display list that just
967 * display list had been queued with the writeback flag.
979 * list can be queued, we don't have to do anything. in vsp1_dlm_irq_frame_end()
1006 * If the active display list has the writeback flag set, the frame in vsp1_dlm_irq_frame_end()
1008 * VSP1_DL_FRAME_END_WRITEBACK flag and reset the display list's in vsp1_dlm_irq_frame_end()
1017 * The device starts processing the queued display list right after the in vsp1_dlm_irq_frame_end()
1018 * frame end interrupt. The display list thus becomes active. in vsp1_dlm_irq_frame_end()
1032 * Now that the VSP has started processing the queued display list, we in vsp1_dlm_irq_frame_end()
1033 * can queue the pending display list to the hardware if one has been in vsp1_dlm_irq_frame_end()
1109 * Initialize the display list body and allocate DMA memory for the body in vsp1_dlm_create()
1140 list_add_tail(&dl->list, &dlm->free); in vsp1_dlm_create()
1162 list_for_each_entry_safe(dl, next, &dlm->free, list) { in vsp1_dlm_destroy()
1163 list_del(&dl->list); in vsp1_dlm_destroy()