1b862a648SJernej Skrabec /* 2b862a648SJernej Skrabec * Copyright (C) 2017 Jernej Skrabec <jernej.skrabec@siol.net> 3b862a648SJernej Skrabec * 4b862a648SJernej Skrabec * This file is licensed under the terms of the GNU General Public 5b862a648SJernej Skrabec * License version 2. This program is licensed "as is" without any 6b862a648SJernej Skrabec * warranty of any kind, whether express or implied. 7b862a648SJernej Skrabec */ 8b862a648SJernej Skrabec 9b862a648SJernej Skrabec #ifndef _SUN8I_UI_SCALER_H_ 10b862a648SJernej Skrabec #define _SUN8I_UI_SCALER_H_ 11b862a648SJernej Skrabec 12b862a648SJernej Skrabec #include "sun8i_mixer.h" 13b862a648SJernej Skrabec 144b09c073SJernej Skrabec #define DE2_UI_SCALER_UNIT_SIZE 0x10000 15*c50519e6SJernej Skrabec #define DE3_UI_SCALER_UNIT_SIZE 0x08000 164b09c073SJernej Skrabec 17b862a648SJernej Skrabec /* this two macros assumes 16 fractional bits which is standard in DRM */ 18b862a648SJernej Skrabec #define SUN8I_UI_SCALER_SCALE_MIN 1 19b862a648SJernej Skrabec #define SUN8I_UI_SCALER_SCALE_MAX ((1UL << 20) - 1) 20b862a648SJernej Skrabec 21b862a648SJernej Skrabec #define SUN8I_UI_SCALER_SCALE_FRAC 20 22b862a648SJernej Skrabec #define SUN8I_UI_SCALER_PHASE_FRAC 20 23b862a648SJernej Skrabec #define SUN8I_UI_SCALER_COEFF_COUNT 16 24b862a648SJernej Skrabec #define SUN8I_UI_SCALER_SIZE(w, h) (((h) - 1) << 16 | ((w) - 1)) 25b862a648SJernej Skrabec 264b09c073SJernej Skrabec #define SUN8I_SCALER_GSU_CTRL(base) ((base) + 0x0) 274b09c073SJernej Skrabec #define SUN8I_SCALER_GSU_OUTSIZE(base) ((base) + 0x40) 284b09c073SJernej Skrabec #define SUN8I_SCALER_GSU_INSIZE(base) ((base) + 0x80) 294b09c073SJernej Skrabec #define SUN8I_SCALER_GSU_HSTEP(base) ((base) + 0x88) 304b09c073SJernej Skrabec #define SUN8I_SCALER_GSU_VSTEP(base) ((base) + 0x8c) 314b09c073SJernej Skrabec #define SUN8I_SCALER_GSU_HPHASE(base) ((base) + 0x90) 324b09c073SJernej Skrabec #define SUN8I_SCALER_GSU_VPHASE(base) ((base) + 0x98) 334b09c073SJernej Skrabec #define SUN8I_SCALER_GSU_HCOEFF(base, index) ((base) + 0x200 + 0x4 * (index)) 34b862a648SJernej Skrabec 35b862a648SJernej Skrabec #define SUN8I_SCALER_GSU_CTRL_EN BIT(0) 36b862a648SJernej Skrabec #define SUN8I_SCALER_GSU_CTRL_COEFF_RDY BIT(4) 37b862a648SJernej Skrabec 38b862a648SJernej Skrabec void sun8i_ui_scaler_enable(struct sun8i_mixer *mixer, int layer, bool enable); 39b862a648SJernej Skrabec void sun8i_ui_scaler_setup(struct sun8i_mixer *mixer, int layer, 40b862a648SJernej Skrabec u32 src_w, u32 src_h, u32 dst_w, u32 dst_h, 41b862a648SJernej Skrabec u32 hscale, u32 vscale, u32 hphase, u32 vphase); 42b862a648SJernej Skrabec 43b862a648SJernej Skrabec #endif 44