18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci// 38c2ecf20Sopenharmony_ci// Ingenic JZ47xx IPU - Register definitions and private API 48c2ecf20Sopenharmony_ci// 58c2ecf20Sopenharmony_ci// Copyright (C) 2020, Paul Cercueil <paul@crapouillou.net> 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#ifndef DRIVERS_GPU_DRM_INGENIC_INGENIC_IPU_H 88c2ecf20Sopenharmony_ci#define DRIVERS_GPU_DRM_INGENIC_INGENIC_IPU_H 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include <linux/bitops.h> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci#define JZ_REG_IPU_CTRL 0x00 138c2ecf20Sopenharmony_ci#define JZ_REG_IPU_STATUS 0x04 148c2ecf20Sopenharmony_ci#define JZ_REG_IPU_D_FMT 0x08 158c2ecf20Sopenharmony_ci#define JZ_REG_IPU_Y_ADDR 0x0c 168c2ecf20Sopenharmony_ci#define JZ_REG_IPU_U_ADDR 0x10 178c2ecf20Sopenharmony_ci#define JZ_REG_IPU_V_ADDR 0x14 188c2ecf20Sopenharmony_ci#define JZ_REG_IPU_IN_GS 0x18 198c2ecf20Sopenharmony_ci#define JZ_REG_IPU_Y_STRIDE 0x1c 208c2ecf20Sopenharmony_ci#define JZ_REG_IPU_UV_STRIDE 0x20 218c2ecf20Sopenharmony_ci#define JZ_REG_IPU_OUT_ADDR 0x24 228c2ecf20Sopenharmony_ci#define JZ_REG_IPU_OUT_GS 0x28 238c2ecf20Sopenharmony_ci#define JZ_REG_IPU_OUT_STRIDE 0x2c 248c2ecf20Sopenharmony_ci#define JZ_REG_IPU_RSZ_COEF_INDEX 0x30 258c2ecf20Sopenharmony_ci#define JZ_REG_IPU_CSC_C0_COEF 0x34 268c2ecf20Sopenharmony_ci#define JZ_REG_IPU_CSC_C1_COEF 0x38 278c2ecf20Sopenharmony_ci#define JZ_REG_IPU_CSC_C2_COEF 0x3c 288c2ecf20Sopenharmony_ci#define JZ_REG_IPU_CSC_C3_COEF 0x40 298c2ecf20Sopenharmony_ci#define JZ_REG_IPU_CSC_C4_COEF 0x44 308c2ecf20Sopenharmony_ci#define JZ_REG_IPU_HRSZ_COEF_LUT 0x48 318c2ecf20Sopenharmony_ci#define JZ_REG_IPU_VRSZ_COEF_LUT 0x4c 328c2ecf20Sopenharmony_ci#define JZ_REG_IPU_CSC_OFFSET 0x50 338c2ecf20Sopenharmony_ci#define JZ_REG_IPU_Y_PHY_T_ADDR 0x54 348c2ecf20Sopenharmony_ci#define JZ_REG_IPU_U_PHY_T_ADDR 0x58 358c2ecf20Sopenharmony_ci#define JZ_REG_IPU_V_PHY_T_ADDR 0x5c 368c2ecf20Sopenharmony_ci#define JZ_REG_IPU_OUT_PHY_T_ADDR 0x60 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci#define JZ_IPU_CTRL_ADDR_SEL BIT(20) 398c2ecf20Sopenharmony_ci#define JZ_IPU_CTRL_ZOOM_SEL BIT(18) 408c2ecf20Sopenharmony_ci#define JZ_IPU_CTRL_DFIX_SEL BIT(17) 418c2ecf20Sopenharmony_ci#define JZ_IPU_CTRL_LCDC_SEL BIT(11) 428c2ecf20Sopenharmony_ci#define JZ_IPU_CTRL_SPKG_SEL BIT(10) 438c2ecf20Sopenharmony_ci#define JZ_IPU_CTRL_VSCALE BIT(9) 448c2ecf20Sopenharmony_ci#define JZ_IPU_CTRL_HSCALE BIT(8) 458c2ecf20Sopenharmony_ci#define JZ_IPU_CTRL_STOP BIT(7) 468c2ecf20Sopenharmony_ci#define JZ_IPU_CTRL_RST BIT(6) 478c2ecf20Sopenharmony_ci#define JZ_IPU_CTRL_FM_IRQ_EN BIT(5) 488c2ecf20Sopenharmony_ci#define JZ_IPU_CTRL_CSC_EN BIT(4) 498c2ecf20Sopenharmony_ci#define JZ_IPU_CTRL_VRSZ_EN BIT(3) 508c2ecf20Sopenharmony_ci#define JZ_IPU_CTRL_HRSZ_EN BIT(2) 518c2ecf20Sopenharmony_ci#define JZ_IPU_CTRL_RUN BIT(1) 528c2ecf20Sopenharmony_ci#define JZ_IPU_CTRL_CHIP_EN BIT(0) 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ci#define JZ_IPU_STATUS_OUT_END BIT(0) 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ci#define JZ_IPU_IN_GS_H_LSB 0x0 578c2ecf20Sopenharmony_ci#define JZ_IPU_IN_GS_W_LSB 0x10 588c2ecf20Sopenharmony_ci#define JZ_IPU_OUT_GS_H_LSB 0x0 598c2ecf20Sopenharmony_ci#define JZ_IPU_OUT_GS_W_LSB 0x10 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci#define JZ_IPU_Y_STRIDE_Y_LSB 0 628c2ecf20Sopenharmony_ci#define JZ_IPU_UV_STRIDE_U_LSB 16 638c2ecf20Sopenharmony_ci#define JZ_IPU_UV_STRIDE_V_LSB 0 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_IN_FMT_LSB 0 668c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_IN_FMT_RGB555 (0x0 << JZ_IPU_D_FMT_IN_FMT_LSB) 678c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_IN_FMT_YUV420 (0x0 << JZ_IPU_D_FMT_IN_FMT_LSB) 688c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_IN_FMT_YUV422 (0x1 << JZ_IPU_D_FMT_IN_FMT_LSB) 698c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_IN_FMT_RGB888 (0x2 << JZ_IPU_D_FMT_IN_FMT_LSB) 708c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_IN_FMT_YUV444 (0x2 << JZ_IPU_D_FMT_IN_FMT_LSB) 718c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_IN_FMT_RGB565 (0x3 << JZ_IPU_D_FMT_IN_FMT_LSB) 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_YUV_FMT_LSB 2 748c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_YUV_Y1UY0V (0x0 << JZ_IPU_D_FMT_YUV_FMT_LSB) 758c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_YUV_Y1VY0U (0x1 << JZ_IPU_D_FMT_YUV_FMT_LSB) 768c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_YUV_UY1VY0 (0x2 << JZ_IPU_D_FMT_YUV_FMT_LSB) 778c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_YUV_VY1UY0 (0x3 << JZ_IPU_D_FMT_YUV_FMT_LSB) 788c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_IN_FMT_YUV411 (0x3 << JZ_IPU_D_FMT_IN_FMT_LSB) 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_OUT_FMT_LSB 19 818c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_OUT_FMT_RGB555 (0x0 << JZ_IPU_D_FMT_OUT_FMT_LSB) 828c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_OUT_FMT_RGB565 (0x1 << JZ_IPU_D_FMT_OUT_FMT_LSB) 838c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_OUT_FMT_RGB888 (0x2 << JZ_IPU_D_FMT_OUT_FMT_LSB) 848c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_OUT_FMT_YUV422 (0x3 << JZ_IPU_D_FMT_OUT_FMT_LSB) 858c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_OUT_FMT_RGBAAA (0x4 << JZ_IPU_D_FMT_OUT_FMT_LSB) 868c2ecf20Sopenharmony_ci 878c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_RGB_OUT_OFT_LSB 22 888c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_RGB_OUT_OFT_RGB (0x0 << JZ_IPU_D_FMT_RGB_OUT_OFT_LSB) 898c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_RGB_OUT_OFT_RBG (0x1 << JZ_IPU_D_FMT_RGB_OUT_OFT_LSB) 908c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_RGB_OUT_OFT_GBR (0x2 << JZ_IPU_D_FMT_RGB_OUT_OFT_LSB) 918c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_RGB_OUT_OFT_GRB (0x3 << JZ_IPU_D_FMT_RGB_OUT_OFT_LSB) 928c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_RGB_OUT_OFT_BRG (0x4 << JZ_IPU_D_FMT_RGB_OUT_OFT_LSB) 938c2ecf20Sopenharmony_ci#define JZ_IPU_D_FMT_RGB_OUT_OFT_BGR (0x5 << JZ_IPU_D_FMT_RGB_OUT_OFT_LSB) 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_ci#define JZ4725B_IPU_RSZ_LUT_COEF_LSB 2 968c2ecf20Sopenharmony_ci#define JZ4725B_IPU_RSZ_LUT_COEF_MASK 0x7ff 978c2ecf20Sopenharmony_ci#define JZ4725B_IPU_RSZ_LUT_IN_EN BIT(1) 988c2ecf20Sopenharmony_ci#define JZ4725B_IPU_RSZ_LUT_OUT_EN BIT(0) 998c2ecf20Sopenharmony_ci 1008c2ecf20Sopenharmony_ci#define JZ4760_IPU_RSZ_COEF20_LSB 6 1018c2ecf20Sopenharmony_ci#define JZ4760_IPU_RSZ_COEF31_LSB 17 1028c2ecf20Sopenharmony_ci#define JZ4760_IPU_RSZ_COEF_MASK 0x7ff 1038c2ecf20Sopenharmony_ci#define JZ4760_IPU_RSZ_OFFSET_LSB 1 1048c2ecf20Sopenharmony_ci#define JZ4760_IPU_RSZ_OFFSET_MASK 0x1f 1058c2ecf20Sopenharmony_ci 1068c2ecf20Sopenharmony_ci#define JZ_IPU_CSC_OFFSET_CHROMA_LSB 16 1078c2ecf20Sopenharmony_ci#define JZ_IPU_CSC_OFFSET_LUMA_LSB 16 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_ci#endif /* DRIVERS_GPU_DRM_INGENIC_INGENIC_IPU_H */ 110