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 meson_canvas; 24 25 /** 26 * meson_canvas_get() - get a canvas provider instance 27 * 28 * @dev: consumer device pointer 29 */ 30 struct meson_canvas *meson_canvas_get(struct device *dev); 31 32 /** 33 * meson_canvas_alloc() - take ownership of a canvas 34 * 35 * @canvas: canvas provider instance retrieved from meson_canvas_get() 36 * @canvas_index: will be filled with the canvas ID 37 */ 38 int meson_canvas_alloc(struct meson_canvas *canvas, u8 *canvas_index); 39 40 /** 41 * meson_canvas_free() - remove ownership from a canvas 42 * 43 * @canvas: canvas provider instance retrieved from meson_canvas_get() 44 * @canvas_index: canvas ID that was obtained via meson_canvas_alloc() 45 */ 46 int meson_canvas_free(struct meson_canvas *canvas, u8 canvas_index); 47 48 /** 49 * meson_canvas_config() - configure a canvas 50 * 51 * @canvas: canvas provider instance retrieved from meson_canvas_get() 52 * @canvas_index: canvas ID that was obtained via meson_canvas_alloc() 53 * @addr: physical address to the pixel buffer 54 * @stride: width of the buffer 55 * @height: height of the buffer 56 * @wrap: undocumented 57 * @blkmode: block mode (linear, 32x32, 64x64) 58 * @endian: byte swapping (swap16, swap32, swap64, swap128) 59 */ 60 int meson_canvas_config(struct meson_canvas *canvas, u8 canvas_index, 61 u32 addr, u32 stride, u32 height, 62 unsigned int wrap, unsigned int blkmode, 63 unsigned int endian); 64 65 #endif 66