From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 17BE13C141F for ; Tue, 17 Mar 2026 12:25:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773750303; cv=none; b=Nk8zewCLrBCK2C6S41S/7aMPjTqXCmLNYzeHl0B1ehqnTrqU47oSp+Tu3mgRXWmkKceATYkkgvAkBelZRFg0E+cipNHp7KTgtWOicHWd1Qqm6rvCInI4vOmlPQzAhB4yMcsWjpnriM1X68ycu78nqIeaqdgrjmL3Kq4canUFHKw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773750303; c=relaxed/simple; bh=YwSIm6+kexwJepl6Yf8/Smn9UpseQunFFfXJQGTKT3A=; h=Message-ID:Date:MIME-Version:From:Subject:To:Cc:References: In-Reply-To:Content-Type; b=FMyTHD5VnxlQT0H3O30XOmX/f5BfOZ9jxHqCQd7MbJVymjjKLd0YfVCL+pPqShNgaC/ZUftT/2noPO8DEDItv/JU1D46YfVChGcvWn1THvHkqN1ENm2w1wvncY7aFy++Ij3GZARrdyKYAKZZecd4aOlsLgZbb19sqoA3ihzWcoI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=bTjjyztc; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=IdL0RzwA; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="bTjjyztc"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="IdL0RzwA" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62HBleGH1025576 for ; Tue, 17 Mar 2026 12:25:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= lt2XPVPZjVV9AEhhW0NEp+RwyFrJ+wodr2Juckp1GTU=; b=bTjjyztcalDiloil Zh4GHW2a9FVfSbjh0ac9zoj53ePuLfE3ZMrNqGDQA/WUK6kEL4XojWRUuI6OfmJn k7nxznkrLNNOskK+ghl8OViCD48vSpffSJKXiLtB+J3PYuHbCbDuz6/pFf2IrHsM Upta4B51cCFusn6uKF69X9aQaSMJcCpGr47DAN8WIlv7fx3wR55OGP4nPiLOvUvJ On08l2zdyp66fFZLQBtStW1s9DU7O4/t9LKosDovBgFWeUqA23Mj4TJILxPntgyc 4DW8MkkDm3q+BF/lMt8KilfBkxWnfimeGbXdnmQEnbkZslvZRd8zT3rQIuhmsSHK OsKq2g== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cy6d6g3y9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 17 Mar 2026 12:25:00 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-8cd80c4965aso490827785a.1 for ; Tue, 17 Mar 2026 05:25:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773750299; x=1774355099; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:subject:from:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=lt2XPVPZjVV9AEhhW0NEp+RwyFrJ+wodr2Juckp1GTU=; b=IdL0RzwAJAfqXPMsj6dmSLDOsbIOLwPTSwVX2GTZTqbp2St2tVKW7/XJsJqjyqY15k Q5roCnglTTCsgTG2hb4RyydFcHfZovr8u1Do8YCX+glEBZadNerAQAypGfqlQMbL7LeU +aScz3OvdgVURQwrGVJQRjBvdbXdkHPCMkg31a2eRw7q2UYAzYXgn7bxMeCGxg48VJdi 78CiC26ltCu9RFmxDQ1OuBd6ZDNyPS7mz9yhP1C8Fg+JlSa+ixXlbDWcxVpGUVsJongg jWCEe8XL/B77HQaImo++/uYsACS6MMqbUEWVCskojxJ1gJLUDefcF1gZDzQePssRrcLR 8lFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773750299; x=1774355099; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:subject:from:user-agent:mime-version:date:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=lt2XPVPZjVV9AEhhW0NEp+RwyFrJ+wodr2Juckp1GTU=; b=lS081pXNfyjbJ2PXAlqp6A7uXVM+ECEusWMrA9paOrNowEjEQHlu1rQlYXfMz04ZlX m9Lcg6ZLvInO1GYfKOI4RUwsXwyC7cEincwmBCkIurhHncCW7akfQNBfqt1lMHmMhiM4 sGI1s/1r6eoiPRm9ugcCxqdBhMapSYzYNxk++s7EzbnevSjrqMw2+kLhZfHkTH1VpsYn wuLSrxuIue3JV93OrpRfC9U6Y0BDN7JasreckjLAhaDfwErE1WdDSixR0NdJIN2U9ThY 7GSr/WLNNAQh7vHA2Tb2StLBWmOorHXLNbPwngdovO3UYVXPDmKyl4mHYei6/EVwnyn3 DHZQ== X-Forwarded-Encrypted: i=1; AJvYcCW1MjAEFhrJjcmprld2Xkr6JlNbFx5al53wGIvToylK7fJVc8sL+MF4uWfe53OCkKVnmhhx0F759FN3CJA=@vger.kernel.org X-Gm-Message-State: AOJu0Yye0aqqql2OnICsYTmkp9+ZRf4wzWHu9cjvu03Lqr5tzBiHVs/O 9LEua26Si+i5vrWhiUH4TGoX6I8yrQwN7cabpfC+Fp0ZOPkoW0mT+NVjRntv5mvc5t9O2yvyLKP 0YIl4+NFm3P2gA2hxsG8fES2RLtDDgO8M0CTAJtdWY8IBKDCmBx4rKbgE+IdcDVVpVRo= X-Gm-Gg: ATEYQzzhJH8Q477YWp1rlOQvu5SYvDAy3DvwJHqbKxzvOiX4qkiSr1/j0VomEbZLn3D QkK3GsHN3nP1yscm4dRie6XLjRZxrppjYlck9xR7cPrJcmtd0FIm+7La3j6FVtnbUqJpSopRGzp ALuGD4idK+QJ7SgHwzwl6vGIj49j/LbnnGj9xlT8+8r8YJhVTIz+nBd2DqpYtLIr1hVvQt8eDQA h1ASjwSC+vI48cGW2p8bYW6EHG//MFW3V3Kf42xqcAmMX8oGegYGr+BwR8wOeGc4NEkqPgg5qvX x43siJd502ZSsIK+I7L4nr9+mJIS/xh3NorXLDQ1ZfzUPFn+O5TEZ+AXRJrd22DOBdNtwxLbM0u 1dpaM43lxpyA9lzn5RzZLv5sp7UnbPYNvt1nYQ5HtmoTGGwYyrgemKCMJA/drCe8zPSr3HbTQIi 0mnCpF5hVXPk4+kQUI5VCsn+fx7vj7Bmum3rm56YGg29t35tAGYK4xfh5imrN4LAD6Z2jCFpR+U c/iolwJTIA2ZRLj X-Received: by 2002:a05:620a:6cc5:b0:8cd:7cea:aea0 with SMTP id af79cd13be357-8cde1533e68mr371324485a.39.1773750299327; Tue, 17 Mar 2026 05:24:59 -0700 (PDT) X-Received: by 2002:a05:620a:6cc5:b0:8cd:7cea:aea0 with SMTP id af79cd13be357-8cde1533e68mr371321185a.39.1773750298847; Tue, 17 Mar 2026 05:24:58 -0700 (PDT) Received: from ?IPV6:2001:1c00:c32:7800:5bfa:a036:83f0:f9ec? (2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl. [2001:1c00:c32:7800:5bfa:a036:83f0:f9ec]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-66794e48a92sm59136a12.28.2026.03.17.05.24.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 17 Mar 2026 05:24:57 -0700 (PDT) Message-ID: Date: Tue, 17 Mar 2026 13:24:57 +0100 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Hans de Goede Subject: Re: [PATCH v11] media: Add t4ka3 camera sensor driver To: Sakari Ailus , Kate Hsuan Cc: Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Hans de Goede References: <20260316085704.352669-1-hpa@redhat.com> Content-Language: en-US, nl In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEwOSBTYWx0ZWRfX/xSSjqf5bm+q VHDEWwiw1Nd4nmtuOs29XO0ye97gFeKPWD1H47t30tdfCXXPqJ4RdjpxhgADKWkmyjwtVvzEjOa DaqOC1wni9RXgLXIJpcp/9Fgzkjl3/RNpGYLzOM4VGlEm6Dputu2Q+hIzcdwrlaLXYkuSXkFn/e zsBrmUQRWfak4v/5gykEp79rCiUsaPLN5cDGi2Th0CjglbLFd/TNB7FzeXAev6JFJGUz2wQh1gA am9tqlC/KhvKRk6lEqVq2wvDJmdeyHFGg8MhJRtTMwXsbDe5aZh8ChavEtiU3tJuJxeWS7jN6EK fIeYjrIC6EkQZlIETKAJ4udZNASa5SjBJy3/flYcx0h66nqwrqjaPL2dVRr/i3NidAIMIlkAiC+ dm9Nemclq4GhVpcMXU/umrgO7fIbsikw3oU8eUZvK0WGpW08Wc6bDSPLlDA+WxfCZg3jsQejXk8 GHKNLcfQsHew+vHAWTA== X-Proofpoint-GUID: q64YPEAQqW2Etkuof5C0BRnvebJwtj4Z X-Authority-Analysis: v=2.4 cv=IqMTsb/g c=1 sm=1 tr=0 ts=69b9481c cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=sLlAhtP-nh0cMpve25QA:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-ORIG-GUID: q64YPEAQqW2Etkuof5C0BRnvebJwtj4Z X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-17_01,2026-03-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 spamscore=0 malwarescore=0 phishscore=0 impostorscore=0 clxscore=1011 adultscore=0 priorityscore=1501 suspectscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603170109 Hi Sakari, On 16-Mar-26 23:00, Sakari Ailus wrote: >> diff --git a/drivers/media/i2c/t4ka3.c b/drivers/media/i2c/t4ka3.c >> new file mode 100644 >> index 000000000000..d9af5e51f7a8 >> --- /dev/null >> +++ b/drivers/media/i2c/t4ka3.c >> +static struct v4l2_mbus_framefmt *t4ka3_get_active_format(struct t4ka3_data *sensor) >> +{ >> + struct v4l2_subdev_state *active_state = >> + v4l2_subdev_get_locked_active_state(&sensor->sd); >> + >> + return v4l2_subdev_state_get_format(active_state, 0); >> +} >> + >> +static struct v4l2_rect *t4ka3_get_active_crop(struct t4ka3_data *sensor) >> +{ >> + struct v4l2_subdev_state *active_state = >> + v4l2_subdev_get_locked_active_state(&sensor->sd); >> + >> + return v4l2_subdev_state_get_crop(active_state, 0); > > Please avoid adding such helpers. The problem is that we need to know the active-fmt/-crop in some places without access to it. E.g. when the vblank ctrl gets set this influences the range of the exposure control, so we need active_fmt.height to calculate the values to pass to v4l2_ctrl_modify_range() and we need this from a v4l2_ctrl_ops.s_ctrl callback which does not get passed in the (active) fmt. Since the ctrl lock is used as the main sensor-driver lock too, we can always safely call v4l2_subdev_get_locked_active_state() in these cases, since we are always holding the lock. The alternative would be to store a copy of the active fmt/crop inside struct t4ka3_data, but I thought that the whole direction for sensor drivers was to stop having (and needing to update) their own shadow copy of the active_state and instead direct use the active_state ? >> +static int t4ka3_s_ctrl(struct v4l2_ctrl *ctrl) >> +{ >> + struct t4ka3_data *sensor = ctrl_to_t4ka3(ctrl); >> + struct v4l2_mbus_framefmt *fmt; >> + int ret; >> + >> + /* Update exposure range on vblank changes */ >> + if (ctrl->id == V4L2_CID_VBLANK) { >> + ret = t4ka3_update_exposure_range(sensor); >> + if (ret) >> + return ret; >> + } >> + >> + fmt = t4ka3_get_active_format(sensor); > > You could assign this in declaration. > >> + >> + /* Only apply changes to the controls if the device is powered up */ >> + if (!pm_runtime_get_if_in_use(sensor->sd.dev)) { >> + t4ka3_set_bayer_order(sensor, fmt); > > Does this call belong here? Yes, if the hflip/vflip controls change then fmt->code needs to be updated to the now changed bayer-order. t4ka3_set_bayer_order() uses the cached ctrl->val values so it is cheap enough to always do this instead of checking if the changed ctrl is vflip or hflip. In case the sensor is actually streaming and we don't hit this path, the t4ka3_t_vflip()helper will return -EBUSY since changing the active fmt while streaming is not a good idea. Looking at this again, I do think that: t4ka3_t_vflip() should be renamed to t4ka3_update_hvflip() because the current name is weird. Regards, Hans