1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Copyright (C) 2018 BayLibre, SAS 4 */ 5 #ifndef __SOC_MESON_CANVAS_H 6 #define __SOC_MESON_CANVAS_H 7 8 #include <linux/kernel.h> 9 10 #define MESON_CANVAS_WRAP_NONE 0x00 11 #define MESON_CANVAS_WRAP_X 0x01 12 #define MESON_CANVAS_WRAP_Y 0x02 13 14 #define MESON_CANVAS_BLKMODE_LINEAR 0x00 15 #define MESON_CANVAS_BLKMODE_32x32 0x01 16 #define MESON_CANVAS_BLKMODE_64x64 0x02 17 18 #define MESON_CANVAS_ENDIAN_SWAP16 0x1 19 #define MESON_CANVAS_ENDIAN_SWAP32 0x3 20 #define MESON_CANVAS_ENDIAN_SWAP64 0x7 21 #define MESON_CANVAS_ENDIAN_SWAP128 0xf 22 23 struct device; 24 struct meson_canvas; 25 26 /** 27 * meson_canvas_get() - get a canvas provider instance 28 * 29 * @dev: consumer device pointer 30 */ 31 struct meson_canvas *meson_canvas_get(struct device *dev); 32 33 /** 34 * meson_canvas_alloc() - take ownership of a canvas 35 * 36 * @canvas: canvas provider instance retrieved from meson_canvas_get() 37 * @canvas_index: will be filled with the canvas ID 38 */ 39 int meson_canvas_alloc(struct meson_canvas *canvas, u8 *canvas_index); 40 41 /** 42 * meson_canvas_free() - remove ownership from a canvas 43 * 44 * @canvas: canvas provider instance retrieved from meson_canvas_get() 45 * @canvas_index: canvas ID that was obtained via meson_canvas_alloc() 46 */ 47 int meson_canvas_free(struct meson_canvas *canvas, u8 canvas_index); 48 49 /** 50 * meson_canvas_config() - configure a canvas 51 * 52 * @canvas: canvas provider instance retrieved from meson_canvas_get() 53 * @canvas_index: canvas ID that was obtained via meson_canvas_alloc() 54 * @addr: physical address to the pixel buffer 55 * @stride: width of the buffer 56 * @height: height of the buffer 57 * @wrap: undocumented 58 * @blkmode: block mode (linear, 32x32, 64x64) 59 * @endian: byte swapping (swap16, swap32, swap64, swap128) 60 */ 61 int meson_canvas_config(struct meson_canvas *canvas, u8 canvas_index, 62 u32 addr, u32 stride, u32 height, 63 unsigned int wrap, unsigned int blkmode, 64 unsigned int endian); 65 66 #endif 67