Received: by 10.192.165.156 with SMTP id m28csp468317imm; Wed, 11 Apr 2018 02:04:02 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/x1jJd+ioqaFLb9fczRPhoTGXjOTn64Kn0mTa8Y4vaQ5cfOobcGldaKqO28+7C32AsEapO X-Received: by 10.99.124.2 with SMTP id x2mr2837715pgc.262.1523437442217; Wed, 11 Apr 2018 02:04:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523437442; cv=none; d=google.com; s=arc-20160816; b=C40WDcDZLNINeGVW4gU0NW5uDe7pO1DyCkwsxBrJlBzz15Elj5sm6TU50m9NN6hkbq U7mGRr7bLFplPMxaol9g/pavXINuMi+eYRwFfjaPLYi5Vz41zrN2PJr5d9KkhiH3E9NQ R2BzY3ImMDcElMoE6Qc9bvlycPi5xjJIPrqjzfH0QVEnp9STxndaNX5odlNMkKOccsYC hY62ds+IxtsuNxLS8imv8zD26T11V4WjcrwUP038GxNjv2UMzmP5freIzXoayf4fH55U dgy3fJK5VFJ1UFqyPn+sWV5gV9MecLZbgVpKud/gEY8heRdReqsshN0V02yVDpjyyU4w X3jA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=YtAqc87NCkAe38tPuX5HIuAWcZrSDbelEuGQM960wME=; b=yu9ZnzTVrQEkyzFH61oB+JZF1LxrdODjQxuXC/XiJAQODqvqa1TmgZ4Am8/maQZH2m F/NPptz7MY+I9vGHQfuk1HyNfaxIAg4LieRe2EQwdQpMRiUHBJLs0m5yrj2uMlPYE3ew hwO2Qs6sT9gjH7b2ApcoovP9u0bRCQoL3yuR0z5rz39hXd1yo5cnX9adq/Lei1dvCgDw GYGSLzQf+l4ZAgXo0YVoguVC6R/m5ZynSzu0U2qmRJJjs6XNE0BLyXXmvFcom+yq5Ac8 xLGJxCj28XYq24v7UbxoNwUQejvYnft5DqUc0FtM2iKZLUKLKZWYFi83tncaMVy52VNu mW1Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Cb7eVFTe; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g33-v6si695859plb.499.2018.04.11.02.03.25; Wed, 11 Apr 2018 02:04:02 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Cb7eVFTe; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753184AbeDKI7F (ORCPT + 99 others); Wed, 11 Apr 2018 04:59:05 -0400 Received: from mail-lf0-f65.google.com ([209.85.215.65]:37910 "EHLO mail-lf0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751972AbeDKI7A (ORCPT ); Wed, 11 Apr 2018 04:59:00 -0400 Received: by mail-lf0-f65.google.com with SMTP id u3-v6so1522079lff.5 for ; Wed, 11 Apr 2018 01:58:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=YtAqc87NCkAe38tPuX5HIuAWcZrSDbelEuGQM960wME=; b=Cb7eVFTewJEJ5bT8PSKqEmuQXAh4k0MxDhzxDrljmfGugiauBrmgg7wBc1o51YPfxe l3zeDnEa4nSvtlANfxPVGW53q/Jgt8IEBzzKKQoZyK3w25tPxvNCNBr/BLgvgzv4CABG R4UifTWNgaGzsnxiSMl7XQpqJoSXTHjeu1noX3A+Y/+X5Tlmb7jrzS/65VvOV8En1XXr yZPJMvynRkHOV/YCZb/NyopGE8JS5I1TPeNLL1zUoZsyZfT/PBbdGXglIqSsG094mWiT r/es8TX0N7aK2UM1mI3KY8fHucPam5gBlBx1ALFUK0wKfckKftZVqaoomQkx/5fyRHF0 zkiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=YtAqc87NCkAe38tPuX5HIuAWcZrSDbelEuGQM960wME=; b=OCp4ETosIK1faqqVMz0olS/JmhkLzKV1F6A2GgTUWZ9Vwo+xLebC3DxqYZ2hHwflEy 7P8eQ9/wc5vz5hz8uDxbM45cns+yuydFcmcyshxmqcDoe0Fhy84ptotZ1x2asMZe40Pa cXOUWSINkafc51u6T8XDID35rhV33TTb4uvX5lu/6m0dKDyOElqUbOO5NJvEKdELwNFG En5gviFSsylCbX499ewpqNpxHTziEeKTj1WKrKgFJk2Wn2FX6zIHRNyZh3H2N/rJuNQs b9O0EBrmWboiqRi669ccHky1ahFirGMrqiKigSNuRXOkxEiMsGk/QFiPOfwbEAH2zi5g vxLw== X-Gm-Message-State: ALQs6tATbSEBqECcSDhEoONrE+AKqBRX4zVJNAiYirbCIse9dJ/Ebw2Z zraU9oyfCyjV/jQMUNsT9wh9FVQCpN8CDrv+qjM= X-Received: by 10.46.128.132 with SMTP id i4mr2314827ljg.51.1523437138352; Wed, 11 Apr 2018 01:58:58 -0700 (PDT) MIME-Version: 1.0 Received: by 10.46.151.217 with HTTP; Wed, 11 Apr 2018 01:58:37 -0700 (PDT) In-Reply-To: <20180302230358.25153-1-eric@anholt.net> References: <20180302230358.25153-1-eric@anholt.net> From: Stefan Schake Date: Wed, 11 Apr 2018 10:58:37 +0200 Message-ID: Subject: Re: [PATCH] drm/vc4: Add some missing HVS register definitions. To: Eric Anholt Cc: dri-devel , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Mar 3, 2018 at 12:03 AM, Eric Anholt wrote: > At least the RGBA expand field we should have been setting, because we > aren't expanding correctly for 565 -> 8888. Other registers are ones > that may be interesting for various projects that have been discussed. > > Signed-off-by: Eric Anholt > Cc: Stefan Schake > --- > drivers/gpu/drm/vc4/vc4_regs.h | 96 ++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 96 insertions(+) > > diff --git a/drivers/gpu/drm/vc4/vc4_regs.h b/drivers/gpu/drm/vc4/vc4_regs.h > index b9749cb24063..ce8bb7486456 100644 > --- a/drivers/gpu/drm/vc4/vc4_regs.h > +++ b/drivers/gpu/drm/vc4/vc4_regs.h > @@ -330,6 +330,21 @@ > #define SCALER_DISPCTRL0 0x00000040 > # define SCALER_DISPCTRLX_ENABLE BIT(31) > # define SCALER_DISPCTRLX_RESET BIT(30) > +/* Generates a single frame when VSTART is seen and stops at the last > + * pixel read from the FIFO. > + */ > +# define SCALER_DISPCTRLX_ONESHOT BIT(29) > +/* Processes a single context in the dlist and then task switch, > + * instead of an entire line. > + */ > +# define SCALER_DISPCTRLX_ONECTX BIT(28) > +/* Set to have DISPSLAVE return 2 16bpp pixels and no status data. */ > +# define SCALER_DISPCTRLX_FIFO32 BIT(27) > +/* Turns on output to the DISPSLAVE register instead of the normal > + * FIFO. > + */ > +# define SCALER_DISPCTRLX_FIFOREG BIT(26) > + > # define SCALER_DISPCTRLX_WIDTH_MASK VC4_MASK(23, 12) > # define SCALER_DISPCTRLX_WIDTH_SHIFT 12 > # define SCALER_DISPCTRLX_HEIGHT_MASK VC4_MASK(11, 0) > @@ -402,6 +417,68 @@ > */ > # define SCALER_GAMADDR_SRAMENB BIT(30) > > +#define SCALER_OLEDOFFS 0x00000080 > +/* Clamps R to [16,235] and G/B to [16,240]. */ > +# define SCALER_OLEDOFFS_YUVCLAMP BIT(31) > + > +/* Chooses which display FIFO the matrix applies to. */ > +# define SCALER_OLEDOFFS_DISPFIFO_MASK VC4_MASK(25, 24) > +# define SCALER_OLEDOFFS_DISPFIFO_SHIFT 24 > +# define SCALER_OLEDOFFS_DISPFIFO_DISABLED 0 > +# define SCALER_OLEDOFFS_DISPFIFO_0 1 > +# define SCALER_OLEDOFFS_DISPFIFO_1 2 > +# define SCALER_OLEDOFFS_DISPFIFO_2 3 > + > +/* Offsets are 8-bit 2s-complement. */ > +# define SCALER_OLEDOFFS_RED_MASK VC4_MASK(23, 16) > +# define SCALER_OLEDOFFS_RED_SHIFT 16 > +# define SCALER_OLEDOFFS_GREEN_MASK VC4_MASK(15, 8) > +# define SCALER_OLEDOFFS_GREEN_SHIFT 8 > +# define SCALER_OLEDOFFS_BLUE_MASK VC4_MASK(7, 0) > +# define SCALER_OLEDOFFS_BLUE_SHIFT 0 > + > +/* The coefficients are S0.9 fractions. */ > +#define SCALER_OLEDCOEF0 0x00000084 > +# define SCALER_OLEDCOEF0_B_TO_R_MASK VC4_MASK(29, 20) > +# define SCALER_OLEDCOEF0_B_TO_R_SHIFT 20 > +# define SCALER_OLEDCOEF0_B_TO_G_MASK VC4_MASK(19, 10) > +# define SCALER_OLEDCOEF0_B_TO_G_SHIFT 10 > +# define SCALER_OLEDCOEF0_B_TO_B_MASK VC4_MASK(9, 0) > +# define SCALER_OLEDCOEF0_B_TO_B_SHIFT 0 > + > +#define SCALER_OLEDCOEF1 0x00000088 > +# define SCALER_OLEDCOEF1_G_TO_R_MASK VC4_MASK(29, 20) > +# define SCALER_OLEDCOEF1_G_TO_R_SHIFT 20 > +# define SCALER_OLEDCOEF1_G_TO_G_MASK VC4_MASK(19, 10) > +# define SCALER_OLEDCOEF1_G_TO_G_SHIFT 10 > +# define SCALER_OLEDCOEF1_G_TO_B_MASK VC4_MASK(9, 0) > +# define SCALER_OLEDCOEF1_G_TO_B_SHIFT 0 > + > +#define SCALER_OLEDCOEF2 0x0000008c > +# define SCALER_OLEDCOEF2_R_TO_R_MASK VC4_MASK(29, 20) > +# define SCALER_OLEDCOEF2_R_TO_R_SHIFT 20 > +# define SCALER_OLEDCOEF2_R_TO_G_MASK VC4_MASK(19, 10) > +# define SCALER_OLEDCOEF2_R_TO_G_SHIFT 10 > +# define SCALER_OLEDCOEF2_R_TO_B_MASK VC4_MASK(9, 0) > +# define SCALER_OLEDCOEF2_R_TO_B_SHIFT 0 > + > +/* Slave addresses for DMAing from HVS composition output to other > + * devices. The top bits are valid only in !FIFO32 mode. > + */ > +#define SCALER_DISPSLAVE0 0x000000c0 > +#define SCALER_DISPSLAVE1 0x000000c9 > +#define SCALER_DISPSLAVE2 0x000000d0 > +# define SCALER_DISPSLAVE_ISSUE_VSTART BIT(31) > +# define SCALER_DISPSLAVE_ISSUE_HSTART BIT(30) > +/* Set when the current line has been read and an HSTART is required. */ > +# define SCALER_DISPSLAVE_EOL BIT(26) > +/* Set when the display FIFO is empty. */ > +# define SCALER_DISPSLAVE_EMPTY BIT(25) > +/* Set when there is RGB data ready to read. */ > +# define SCALER_DISPSLAVE_VALID BIT(24) > +# define SCALER_DISPSLAVE_RGB_MASK VC4_MASK(23, 0) > +# define SCALER_DISPSLAVE_RGB_SHIFT 0 > + > #define SCALER_GAMDATA 0x000000e0 > #define SCALER_DLIST_START 0x00002000 > #define SCALER_DLIST_SIZE 0x00004000 > @@ -767,6 +844,10 @@ enum hvs_pixel_format { > HVS_PIXEL_FORMAT_YCBCR_YUV420_2PLANE = 9, > HVS_PIXEL_FORMAT_YCBCR_YUV422_3PLANE = 10, > HVS_PIXEL_FORMAT_YCBCR_YUV422_2PLANE = 11, > + HVS_PIXEL_FORMAT_H264 = 12, > + HVS_PIXEL_FORMAT_PALETTE = 13, > + HVS_PIXEL_FORMAT_YUV444_RGB = 14, > + HVS_PIXEL_FORMAT_AYUV444_RGB = 15, > }; > > /* Note: the LSB is the rightmost character shown. Only valid for > @@ -800,12 +881,27 @@ enum hvs_pixel_format { > #define SCALER_CTL0_TILING_128B 2 > #define SCALER_CTL0_TILING_256B_OR_T 3 > > +#define SCALER_CTL0_ALPHA_MASK BIT(19) > #define SCALER_CTL0_HFLIP BIT(16) > #define SCALER_CTL0_VFLIP BIT(15) > > +#define SCALER_CTL0_KEY_MODE_MASK VC4_MASK(18, 17) > +#define SCALER_CTL0_KEY_MODE_SHIFT 17 > +#define SCALER_CTL0_KEY_DISABLED 0 > +#define SCALER_CTL0_KEY_LUMA_OR_COMMON_RGB 1 > +#define SCALER_CTL0_KEY_MATCH 2 /* turn transparent */ > +#define SCALER_CTL0_KEY_REPLACE 3 /* replace with value from key mask word 2 */ > + > #define SCALER_CTL0_ORDER_MASK VC4_MASK(14, 13) > #define SCALER_CTL0_ORDER_SHIFT 13 > > +#define SCALER_CTL0_RGBA_EXPAND_MASK VC4_MASK(12, 11) > +#define SCALER_CTL0_RGBA_EXPAND_SHIFT 11 > +#define SCALER_CTL0_RGBA_EXPAND_ZERO 0 > +#define SCALER_CTL0_RGBA_EXPAND_LSB 1 > +#define SCALER_CTL0_RGBA_EXPAND_MSB 2 > +#define SCALER_CTL0_RGBA_EXPAND_ROUND 3 > + > #define SCALER_CTL0_SCL1_MASK VC4_MASK(10, 8) > #define SCALER_CTL0_SCL1_SHIFT 8 > > -- > 2.16.2 > Acked-by: Stefan Schake Since the generic plane alpha series is close to going in, we might also want the alpha mix bit in SCALER_POS2 (bit 28). But we can always do that as part of an actual series implementing plane alpha.