linux/include/linux/soc/amlogic/meson-canvas.h
<<
>>
Prefs
   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
  23struct device;
  24struct meson_canvas;
  25
  26/**
  27 * meson_canvas_get() - get a canvas provider instance
  28 *
  29 * @dev: consumer device pointer
  30 */
  31struct 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 */
  39int 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 */
  47int 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 */
  61int 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