/* * arch/ubicom32/include/asm/vdc_tio.h * Ubicom32 architecture VDC TIO definitions. * * (C) Copyright 2009, Ubicom, Inc. * * This file is part of the Ubicom32 Linux Kernel Port. * * The Ubicom32 Linux Kernel Port is free software: you can redistribute * it and/or modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 2 of the * License, or (at your option) any later version. * * The Ubicom32 Linux Kernel Port is distributed in the hope that it * will be useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See * the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the Ubicom32 Linux Kernel Port. If not, * see . * * Ubicom32 implementation derived from (with many thanks): * arch/m68knommu * arch/blackfin * arch/parisc */ #ifndef _ASM_UBICOM32_VDC_TIO_H #define _ASM_UBICOM32_VDC_TIO_H #include #define VDCTIO_VP_VERSION 5 #define VDCTIO_SCALE_FLAG_VSUB (1 << 9) #define VDCTIO_SCALE_FLAG_YUV_SCAN_ORDER (1 << 8) #define VDCTIO_SCALE_FLAG_YUV_BLOCK_ORDER (1 << 7) #define VDCTIO_SCALE_FLAG_YUV (1 << 6) #define VDCTIO_SCALE_FLAG_VRANGE_16_255 (1 << 5) #define VDCTIO_SCALE_FLAG_VRANGE_0_255 (1 << 4) #define VDCTIO_SCALE_FLAG_HSUB_2_1 (1 << 3) #define VDCTIO_SCALE_FLAG_HSUB_1_1 (1 << 2) #define VDCTIO_SCALE_FLAG_SET_FRAME_BUFFER (1 << 1) #define VDCTIO_SCALE_FLAG_ENABLE (1 << 0) #define VDCTIO_NEXT_FRAME_FLAG_YUV_BIT 0 #define VDCTIO_NEXT_FRAME_FLAG_YUV (1 << (VDCTIO_NEXT_FRAME_FLAG_YUV_BIT)) #define VDCTIO_CAPS_SUPPORTS_SCALING (1 << 0) #define VDCTIO_COMMAND_START (1 << 3) #define VDCTIO_COMMAND_SET_COEFF (1 << 2) #define VDCTIO_COMMAND_SET_LUT (1 << 1) #define VDCTIO_COMMAND_SET_SCALE_MODE (1 << 0) /* * Command / Data registers to access the VDC */ struct vdc_tio_vp_regs { /* * Version of this TIO register map */ u32_t version; volatile u32_t command; /* * Next frame pointer, when the command VDCTIO_COMMAND_SET_FRAME_BUFFER is set, * the vdc will take the pointer here and display it. */ void *next_frame; u32_t next_frame_flags; /* * These map directly into the PIXP registers 0x20-0x80. * DO NOT change the order of these three variables. */ u32_t red_lut[6]; u32_t blue_lut[6]; u32_t green_lut[13]; /* * These map directly into the PIXP registers 0x04, 0x08 */ u32_t coeff0; u32_t coeff1; /* * There are used to set the scaling parameters */ u32_t x_in; u32_t x_out; u32_t y_in; u32_t y_out; u32_t scale_flags; /* * Current frame number, monotonically increasing number */ u32_t frame_number; /* * These variables tell the guest OS what the underlying hardware looks like */ u32_t caps; u32_t xres; u32_t yres; u32_t fb_align; u8_t bpp; u8_t rbits; u8_t gbits; u8_t bbits; u8_t rshift; u8_t gshift; u8_t bshift; }; /* * Devtree node for VDC */ struct vdc_tio_node { struct devtree_node dn; struct vdc_tio_vp_regs *regs; }; extern void vdc_tio_init(void); #endif /* _ASM_UBICOM32_VDC_TIO_H */