Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2565996pxb; Tue, 9 Mar 2021 05:58:50 -0800 (PST) X-Google-Smtp-Source: ABdhPJwkI9IgWCuestqh2VTNGYiS/cvCVs6iitxiG//ze56YtwMtTcdQ1ltwgdf3acYhaytUIRdn X-Received: by 2002:a17:906:296a:: with SMTP id x10mr20107255ejd.240.1615298330169; Tue, 09 Mar 2021 05:58:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615298330; cv=none; d=google.com; s=arc-20160816; b=QBh9beegxpfuLIwL0tEye11HYbeHuA8Y9vCK9fFcgFH2azZveznOxKa6eeZSAAQS9T PvL18i6bp4+eYv6HtyyCqO7spHZqWmebzNjZuiaXi9KdLtFnblhZb6nX3q1eo5IxSUv6 DLqFwO2wSinjtnKXLhGTHLqb8XtaRWsEdUukyURpImYC2l0GSBjEHAQemkCTeG9P2kp5 xjVqwU9tiiHdiVyfx3dZVWWOuuaaBy7RwpWlPduqQexRnLzlod0Uys2tc+nfIhRMzUyO JCeFLt/yjp3BoIFlCbbB9oOGgdfXMFPpaldwKI7GF2x56Lmqrb25YWyZNtMBn2RqwQW6 1iZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:dkim-signature; bh=o0i3jTGJa4u9CMcR9i+YO5JrVEW+lDjWwY+bLaJZEas=; b=ISz8dprjELCfbp5L6tXQijihDUT2AB05uGiIfQicOqLpViHfFysRxrv3DG0z3D2ZeG yM2mUBe74x1vdGqOK8o7DHCtjji0YV7fO8fOi65k5EwCMM5zyaCqRaeXANgQkeE2T6L6 k8fSemtMIftC0T3AAPd4/fdeUna0eBOxU7GSEFxP6U/jaqTIezfkgsg7IHcM+6c7N0vu vTq4bSdtWJvl5UfDVvzihkTAPm9gswWLpoaUQuop2J1kVCWjrAbZw8n/aGkINHYH4Sh3 /oHiEf5u8GlhG/V4/1N+57DwGUpfQelrktAH4yYLYfQl0YWMeO16bFnE9Ejo6OgkIO0N q35Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=H8C+IHam; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y11si9158760ejd.56.2021.03.09.05.58.27; Tue, 09 Mar 2021 05:58:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=H8C+IHam; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231293AbhCIN45 (ORCPT + 99 others); Tue, 9 Mar 2021 08:56:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51346 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231268AbhCIN4f (ORCPT ); Tue, 9 Mar 2021 08:56:35 -0500 Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com [IPv6:2a00:1450:4864:20::229]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BC3D4C061760 for ; Tue, 9 Mar 2021 05:56:34 -0800 (PST) Received: by mail-lj1-x229.google.com with SMTP id q14so20745542ljp.4 for ; Tue, 09 Mar 2021 05:56:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=o0i3jTGJa4u9CMcR9i+YO5JrVEW+lDjWwY+bLaJZEas=; b=H8C+IHam0T1659elztELFUMBjKc2bjIAQS8Zbp12F/CkJblv7Qlkv7cSXAjxXdqPhj 8BQjQOeHlSsZoikX1ouP3PWTFDTL4YoKgUldDXbP74h4y7J8Aai/vNNVDnxlI59spK+0 VKrbcrcZlbd4R8XDSke6RI4/vnyoJnnk+doBBAtwxribDLV8zAvT9hK+NbU3VrtjZEak njLu6nGKVPO6CQ7zvQFRLKIXY0SDv9Du2xr+hWXGKnScl30Hd9sc2ENUlx/Id7tCOYNb cGR8z845WwN98WKEN+EZxQXQ4NQaaSbQWRUxlD6Hstl6GH0ZBuBXvbL6ECT70OI016hS Svig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=o0i3jTGJa4u9CMcR9i+YO5JrVEW+lDjWwY+bLaJZEas=; b=d/1GhgKAqSv5lic+MBku2PpwU3zM4S3HTdm0rr/F4v9eUs70f7S8O8DUbEm5b5zKpU Joe+kINidiQvovOugR/4Eg3NDegzHCy36pRohkxOQ3JAJaog8rot2gwU6osXg8LRt1af HZ0NV7Z+JrQOfXhVhtHO1AK+wDkKuNUrmhdQH29r6H7G6tyxqIArNnQUfhcyjdD4fMIB iocEfkHRH1itKHUblEIkYFgSA92gtmvu61AqivVPtv8wCE2VVn/nDCNz3/yLr7r5JNiK gEwJ4S6g3r4Z+z1Ib2RLQqAgeAe1ddES3LhKGvktWriZstt8wiyNSzGyIS0jGXxL1Rik 8Xpg== X-Gm-Message-State: AOAM531wV59eWf9hbPsST7HSvglpUp917nr/bT2cSP+0qT7XI8hKwmdF ieO+kuwOxxLTcYarLwrFRvxFcA== X-Received: by 2002:a2e:a58f:: with SMTP id m15mr16510137ljp.400.1615298193297; Tue, 09 Mar 2021 05:56:33 -0800 (PST) Received: from [192.168.118.216] ([85.249.43.69]) by smtp.gmail.com with ESMTPSA id f10sm1808622lfm.194.2021.03.09.05.56.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Mar 2021 05:56:32 -0800 (PST) Subject: Re: [PATCH v6 08/22] media: camss: Add missing format identifiers To: Robert Foss , agross@kernel.org, bjorn.andersson@linaro.org, todor.too@gmail.com, mchehab@kernel.org, robh+dt@kernel.org, angelogioacchino.delregno@somainline.org, linux-arm-msm@vger.kernel.org, linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, AngeloGioacchino Del Regno , Sakari Ailus Cc: Rob Herring , Tomasz Figa , Azam Sadiq Pasha Kapatrala Syed , Sarvesh Sridutt , Laurent Pinchart , Jonathan Marek References: <20210304120326.153966-1-robert.foss@linaro.org> <20210304120326.153966-9-robert.foss@linaro.org> From: Andrey Konovalov Message-ID: <879d57a4-1187-a32c-7902-9ca7e9910c44@linaro.org> Date: Tue, 9 Mar 2021 16:56:31 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20210304120326.153966-9-robert.foss@linaro.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Robert, Thank you for your patch! On 04.03.2021 15:03, Robert Foss wrote: > The CSI-2 spec defines format identifier for Data Type (DT), > and how the Decode Format (DF) & Encode Format (EF) are implemented. > The spec does however not define the DF, EF or Plain Format (PF) > identifiers, as those are vendor specific. > > Plain formats describe the size of the pixels written by the RDI > units to memory. PLAIN8 for example has the size 8 bits, and > PLAIN32 32 bits. The appropriate Plain Format is determined by > the Decode Format used. The smallest Plain Format that is able > to contain a pixel of the used Decode Format is the appropriate > one to use. > > As the vendor specific identifiers differ between hardware > generations, split them out into separate headers. > > Signed-off-by: Robert Foss Reviewed-by: Andrey Konovalov Thanks, Andrey > --- > > Changes since v5 > - Andrey: Gen 1 & Gen2 devices have different decode/encode/plain > format definitions, list in separate headers > - Andrey: Make commit msg more clear about what is in MIPI spec or not > > > .../platform/qcom/camss/camss-csid-gen1.h | 27 +++++++++++++ > .../platform/qcom/camss/camss-csid-gen2.h | 39 +++++++++++++++++++ > .../media/platform/qcom/camss/camss-csid.c | 20 ++-------- > .../media/platform/qcom/camss/camss-csid.h | 24 ++++++++++++ > 4 files changed, 94 insertions(+), 16 deletions(-) > create mode 100644 drivers/media/platform/qcom/camss/camss-csid-gen1.h > create mode 100644 drivers/media/platform/qcom/camss/camss-csid-gen2.h > > diff --git a/drivers/media/platform/qcom/camss/camss-csid-gen1.h b/drivers/media/platform/qcom/camss/camss-csid-gen1.h > new file mode 100644 > index 000000000000..80a2bc6efff6 > --- /dev/null > +++ b/drivers/media/platform/qcom/camss/camss-csid-gen1.h > @@ -0,0 +1,27 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * camss-csid-gen1.h > + * > + * Qualcomm MSM Camera Subsystem - CSID (CSI Decoder) Module Generation 1 > + * > + * Copyright (C) 2021 Linaro Ltd. > + */ > +#ifndef QC_MSM_CAMSS_CSID_GEN1_H > +#define QC_MSM_CAMSS_CSID_GEN1_H > + > +#define DECODE_FORMAT_UNCOMPRESSED_6_BIT 0x0 > +#define DECODE_FORMAT_UNCOMPRESSED_8_BIT 0x1 > +#define DECODE_FORMAT_UNCOMPRESSED_10_BIT 0x2 > +#define DECODE_FORMAT_UNCOMPRESSED_12_BIT 0x3 > +#define DECODE_FORMAT_DPCM_10_6_10 0x4 > +#define DECODE_FORMAT_DPCM_10_8_10 0x5 > +#define DECODE_FORMAT_DPCM_12_6_12 0x6 > +#define DECODE_FORMAT_DPCM_12_8_12 0x7 > +#define DECODE_FORMAT_UNCOMPRESSED_14_BIT 0x8 > +#define DECODE_FORMAT_DPCM_14_8_14 0x9 > +#define DECODE_FORMAT_DPCM_14_10_14 0xa > + > +#define PLAIN_FORMAT_PLAIN8 0x0 /* supports DPCM, UNCOMPRESSED_6/8_BIT */ > +#define PLAIN_FORMAT_PLAIN16 0x1 /* supports DPCM, UNCOMPRESSED_10/16_BIT */ > + > +#endif /* QC_MSM_CAMSS_CSID_GEN1_H */ > diff --git a/drivers/media/platform/qcom/camss/camss-csid-gen2.h b/drivers/media/platform/qcom/camss/camss-csid-gen2.h > new file mode 100644 > index 000000000000..3a8ad001b3e8 > --- /dev/null > +++ b/drivers/media/platform/qcom/camss/camss-csid-gen2.h > @@ -0,0 +1,39 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * camss-csid-gen1.h > + * > + * Qualcomm MSM Camera Subsystem - CSID (CSI Decoder) Module Generation 1 > + * > + * Copyright (C) 2021 Linaro Ltd. > + */ > +#ifndef QC_MSM_CAMSS_CSID_GEN2_H > +#define QC_MSM_CAMSS_CSID_GEN2_H > + > +#define DECODE_FORMAT_UNCOMPRESSED_6_BIT 0x0 > +#define DECODE_FORMAT_UNCOMPRESSED_8_BIT 0x1 > +#define DECODE_FORMAT_UNCOMPRESSED_10_BIT 0x2 > +#define DECODE_FORMAT_UNCOMPRESSED_12_BIT 0x3 > +#define DECODE_FORMAT_UNCOMPRESSED_14_BIT 0x4 > +#define DECODE_FORMAT_UNCOMPRESSED_16_BIT 0x5 > +#define DECODE_FORMAT_UNCOMPRESSED_20_BIT 0x6 > +#define DECODE_FORMAT_DPCM_10_6_10 0x7 > +#define DECODE_FORMAT_DPCM_10_8_10 0x8 > +#define DECODE_FORMAT_DPCM_12_6_12 0x9 > +#define DECODE_FORMAT_DPCM_12_8_12 0xa > +#define DECODE_FORMAT_DPCM_14_8_14 0xb > +#define DECODE_FORMAT_DPCM_14_10_14 0xc > +#define DECODE_FORMAT_DPCM_12_10_12 0xd > +#define DECODE_FORMAT_USER_DEFINED 0xe > +#define DECODE_FORMAT_PAYLOAD_ONLY 0xf > + > +#define ENCODE_FORMAT_RAW_8_BIT 0x1 > +#define ENCODE_FORMAT_RAW_10_BIT 0x2 > +#define ENCODE_FORMAT_RAW_12_BIT 0x3 > +#define ENCODE_FORMAT_RAW_14_BIT 0x4 > +#define ENCODE_FORMAT_RAW_16_BIT 0x5 > + > +#define PLAIN_FORMAT_PLAIN8 0x0 /* supports DPCM, UNCOMPRESSED_6/8_BIT */ > +#define PLAIN_FORMAT_PLAIN16 0x1 /* supports DPCM, UNCOMPRESSED_10/16_BIT */ > +#define PLAIN_FORMAT_PLAIN32 0x2 /* supports UNCOMPRESSED_20_BIT */ > + > +#endif /* QC_MSM_CAMSS_CSID_GEN2_H */ > diff --git a/drivers/media/platform/qcom/camss/camss-csid.c b/drivers/media/platform/qcom/camss/camss-csid.c > index be3fe76f3dc3..697b51d6ad38 100644 > --- a/drivers/media/platform/qcom/camss/camss-csid.c > +++ b/drivers/media/platform/qcom/camss/camss-csid.c > @@ -22,6 +22,7 @@ > #include > > #include "camss-csid.h" > +#include "camss-csid-gen1.h" > #include "camss.h" > > #define MSM_CSID_NAME "msm_csid" > @@ -37,8 +38,8 @@ > #define CAMSS_CSID_CID_n_CFG_ISPIF_EN BIT(0) > #define CAMSS_CSID_CID_n_CFG_RDI_EN BIT(1) > #define CAMSS_CSID_CID_n_CFG_DECODE_FORMAT_SHIFT 4 > -#define CAMSS_CSID_CID_n_CFG_PLAIN_FORMAT_8 (0 << 8) > -#define CAMSS_CSID_CID_n_CFG_PLAIN_FORMAT_16 (1 << 8) > +#define CAMSS_CSID_CID_n_CFG_PLAIN_FORMAT_8 (PLAIN_FORMAT_PLAIN8 << 8) > +#define CAMSS_CSID_CID_n_CFG_PLAIN_FORMAT_16 (PLAIN_FORMAT_PLAIN16 << 8) > #define CAMSS_CSID_CID_n_CFG_PLAIN_ALIGNMENT_LSB (0 << 9) > #define CAMSS_CSID_CID_n_CFG_PLAIN_ALIGNMENT_MSB (1 << 9) > #define CAMSS_CSID_CID_n_CFG_RDI_MODE_RAW_DUMP (0 << 10) > @@ -59,22 +60,9 @@ > #define CAMSS_CSID_TG_DT_n_CGG_2(v, n) \ > (((v) == CAMSS_8x16 ? 0x0b4 : 0x0bc) + 0xc * (n)) > > -#define DATA_TYPE_EMBEDDED_DATA_8BIT 0x12 > -#define DATA_TYPE_YUV422_8BIT 0x1e > -#define DATA_TYPE_RAW_6BIT 0x28 > -#define DATA_TYPE_RAW_8BIT 0x2a > -#define DATA_TYPE_RAW_10BIT 0x2b > -#define DATA_TYPE_RAW_12BIT 0x2c > -#define DATA_TYPE_RAW_14BIT 0x2d > - > -#define DECODE_FORMAT_UNCOMPRESSED_6_BIT 0x0 > -#define DECODE_FORMAT_UNCOMPRESSED_8_BIT 0x1 > -#define DECODE_FORMAT_UNCOMPRESSED_10_BIT 0x2 > -#define DECODE_FORMAT_UNCOMPRESSED_12_BIT 0x3 > -#define DECODE_FORMAT_UNCOMPRESSED_14_BIT 0x8 > - > #define CSID_RESET_TIMEOUT_MS 500 > > + > struct csid_format { > u32 code; > u8 data_type; > diff --git a/drivers/media/platform/qcom/camss/camss-csid.h b/drivers/media/platform/qcom/camss/camss-csid.h > index 1824b3745e10..318c19bb26c9 100644 > --- a/drivers/media/platform/qcom/camss/camss-csid.h > +++ b/drivers/media/platform/qcom/camss/camss-csid.h > @@ -21,6 +21,30 @@ > #define MSM_CSID_PAD_SRC 1 > #define MSM_CSID_PADS_NUM 2 > > +#define DATA_TYPE_EMBEDDED_DATA_8BIT 0x12 > +#define DATA_TYPE_YUV420_8BIT 0x18 > +#define DATA_TYPE_YUV420_10BIT 0x19 > +#define DATA_TYPE_YUV420_8BIT_LEGACY 0x1a > +#define DATA_TYPE_YUV420_8BIT_SHIFTED 0x1c /* Chroma Shifted Pixel Sampling */ > +#define DATA_TYPE_YUV420_10BIT_SHIFTED 0x1d /* Chroma Shifted Pixel Sampling */ > +#define DATA_TYPE_YUV422_8BIT 0x1e > +#define DATA_TYPE_YUV422_10BIT 0x1f > +#define DATA_TYPE_RGB444 0x20 > +#define DATA_TYPE_RGB555 0x21 > +#define DATA_TYPE_RGB565 0x22 > +#define DATA_TYPE_RGB666 0x23 > +#define DATA_TYPE_RGB888 0x24 > +#define DATA_TYPE_RAW_24BIT 0x27 > +#define DATA_TYPE_RAW_6BIT 0x28 > +#define DATA_TYPE_RAW_7BIT 0x29 > +#define DATA_TYPE_RAW_8BIT 0x2a > +#define DATA_TYPE_RAW_10BIT 0x2b > +#define DATA_TYPE_RAW_12BIT 0x2c > +#define DATA_TYPE_RAW_14BIT 0x2d > +#define DATA_TYPE_RAW_16BIT 0x2e > +#define DATA_TYPE_RAW_20BIT 0x2f > + > + > enum csid_payload_mode { > CSID_PAYLOAD_MODE_INCREMENTING = 0, > CSID_PAYLOAD_MODE_ALTERNATING_55_AA = 1, >