1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * PS3 GPU declarations.
5 * Copyright 2009 Sony Corporation
8 #ifndef _ASM_POWERPC_PS3GPU_H
9 #define _ASM_POWERPC_PS3GPU_H
11 #include <linux/mutex.h>
13 #include <asm/lv1call.h>
16 #define L1GPU_CONTEXT_ATTRIBUTE_DISPLAY_SYNC 0x101
17 #define L1GPU_CONTEXT_ATTRIBUTE_DISPLAY_FLIP 0x102
19 #define L1GPU_CONTEXT_ATTRIBUTE_FB_SETUP 0x600
20 #define L1GPU_CONTEXT_ATTRIBUTE_FB_BLIT 0x601
21 #define L1GPU_CONTEXT_ATTRIBUTE_FB_BLIT_SYNC 0x602
22 #define L1GPU_CONTEXT_ATTRIBUTE_FB_CLOSE 0x603
24 #define L1GPU_FB_BLIT_WAIT_FOR_COMPLETION (1ULL << 32)
26 #define L1GPU_DISPLAY_SYNC_HSYNC 1
27 #define L1GPU_DISPLAY_SYNC_VSYNC 2
30 /* mutex synchronizing GPU accesses and video mode changes */
31 extern struct mutex ps3_gpu_mutex
;
34 static inline int lv1_gpu_display_sync(u64 context_handle
, u64 head
,
37 return lv1_gpu_context_attribute(context_handle
,
38 L1GPU_CONTEXT_ATTRIBUTE_DISPLAY_SYNC
,
39 head
, ddr_offset
, 0, 0);
42 static inline int lv1_gpu_display_flip(u64 context_handle
, u64 head
,
45 return lv1_gpu_context_attribute(context_handle
,
46 L1GPU_CONTEXT_ATTRIBUTE_DISPLAY_FLIP
,
47 head
, ddr_offset
, 0, 0);
50 static inline int lv1_gpu_fb_setup(u64 context_handle
, u64 xdr_lpar
,
51 u64 xdr_size
, u64 ioif_offset
)
53 return lv1_gpu_context_attribute(context_handle
,
54 L1GPU_CONTEXT_ATTRIBUTE_FB_SETUP
,
55 xdr_lpar
, xdr_size
, ioif_offset
, 0);
58 static inline int lv1_gpu_fb_blit(u64 context_handle
, u64 ddr_offset
,
59 u64 ioif_offset
, u64 sync_width
, u64 pitch
)
61 return lv1_gpu_context_attribute(context_handle
,
62 L1GPU_CONTEXT_ATTRIBUTE_FB_BLIT
,
63 ddr_offset
, ioif_offset
, sync_width
,
67 static inline int lv1_gpu_fb_close(u64 context_handle
)
69 return lv1_gpu_context_attribute(context_handle
,
70 L1GPU_CONTEXT_ATTRIBUTE_FB_CLOSE
, 0,
74 #endif /* _ASM_POWERPC_PS3GPU_H */