From nobody Sun Feb 8 02:41:17 2026 Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 11296224AF0 for ; Wed, 31 Dec 2025 05:24:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767158677; cv=none; b=SbD8rXl/QLCdJvYprYArfMdF/ikvO2xfxh9ufVB2mjhDlZ/nBzvPqqAmf4kWVo0P53IyLePU/iEShdftNZiBKVprGdBrbVjbKWarUtdzGBGQP9GVavu6vzNrImNwWKqcSr5ki6jeZf3BxtN/IinIuToVLFlvSzfMlf6rgUWkMhI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767158677; c=relaxed/simple; bh=c9ubX7ai/qwqA+ba+ASKq+KnXFMC1M1ULeLSCnqQ5vA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=kJPz0A+4OLnv+0HsJ4M6lisEo5MHejDQBkyzFPZg0aoFMXlekYrpf9KOc6UgeeuZcCjpYNrRV2DRmuefR2mBF8d2ZLnEOTS8Rjb0IxwLtxYOH6pvjPbn5CndvVIEHNemmGAO1Ju+MROHRyf3ltVEhx7pP1lJG4luBpdq1CAk8Bg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lrkrtWxf; arc=none smtp.client-ip=209.85.210.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lrkrtWxf" Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-7f0da2dfeaeso11348168b3a.1 for ; Tue, 30 Dec 2025 21:24:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767158675; x=1767763475; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=nZBUgEksAy0wDWZsDFUpREOsS5QTTJSKv9aUl7dZr6M=; b=lrkrtWxfA3AoN3kEc/bvBEUnhm6g+Rm98Y+uP/7KjU4cTESGxgjFf1j1MtVVugBE5e S//2pRjO7z6MDkKjL7uchwu3GoGpMZCZeh8lgYVxs0+z78WxG55vg7Us5V0K3hifF22y KGriUWqfMWGlEy2RSIVpYjoRRsXdauo+12PAcMY12Vlau+Lt9yAYar7FpwfnYXfP7CIN JAD5BRw3+T4ay42lOHxaT72Cs6T4J5GDWCK/FGcBxPuvsKZytfsR6hfzEUzS/dQxUx9k cRJad6QFzsRAcZEoM/zE0gLQYsaBXWJ21HIgtSMjNUlAAkvCAluUjsoIVsYSkLr65WzV tuKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767158675; x=1767763475; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=nZBUgEksAy0wDWZsDFUpREOsS5QTTJSKv9aUl7dZr6M=; b=cpt2/Sf2nfOQ+BP9TqntMgoF+rghB0aSlnr0P1+JAjbtxbAV1L86y56a85K1e/DNwF hXCc6937uQDReo8dYNg7f4rpP+/otVosImJiaMqTFbbjROPT6/woWH8JH7WATz7VnpTV +x3mUK/1P5w7h3cPYBtATrkaePTAsHxFsgHW1dRUutGv65Zm65yVGY6SzwyyrMsYmjeu zjPOTsODFtJdWDYp7kwmAsyc1re3zmU5q5H+mRReqYDcfu0ixlIIdzo+DES+6dJKeFxc j1TyDGyYEn3BAbOMbcAs2oVlyLy48ee94JEwlOIBjLltdgAulWUWsk503JZAj5KVbR10 5x0w== X-Forwarded-Encrypted: i=1; AJvYcCVRmUWePNOWUpUkOOXJBzVqwJVuC4b+AT1/OIaMi6UaYiSLOkebyK4JWbDRH5N8GfVD12RMZbko9DQ2YuY=@vger.kernel.org X-Gm-Message-State: AOJu0Ywym0DkaC6QWeoEUaehpt3Hdy/c+++ZT5QhLXHdZH4WHzQH0PPs gymjg3E0lPmGIVNvxshy/es7hBfFIByr9vW6wfktsfb2O3TmGSOeqXdh X-Gm-Gg: AY/fxX4kx71Ux3EwN5wfC0xFoJR+R2GFz0eJgPU78wW9G1g75VNxpQhRikMBiI8SMt/ SaWH2U1bVzWgeFcAale2rYlRhk1+SkO9dyHki8KX3kMXSh33h8cLaB98ulYjCI3gmBhhHIDffaV FRloVZsI2KVfwTxt0qHKTkwH2eiKB4cGkfYUfRXtFaO8uLuxwU+reRKm279TnZbhCOJye1CPH7n Apz8guaNYRaK//ovCc3DthKv1U8+00eaRwlqzDddfdsP0rKc5NDwkz3R/wrRrhJioDjJ7vzkKsQ gYwewAnNF5k+TzLxgRcypLMQGaJdx3bSlKHdXaJU9lIE0VoaKkFTwB74meH9S3+DiX8SrVP2/zT Tg7SlOWEjLTHZwRlWfjz/0i5zaUttiJNCCSZByL+8pWfFAmiscM1dJPmVThRS7pN0NVMEgeFkZe HxRvy9O21GyZ8= X-Google-Smtp-Source: AGHT+IGyO1jeZ+2WgT5h8ytwtHL7NzTQKQbBl4WgLNbmRrgy9RVIz52E4M5tultTxpJqkmy8KLDOPA== X-Received: by 2002:aa7:930b:0:b0:7ad:564:bf92 with SMTP id d2e1a72fcca58-7ff657a64f5mr33762165b3a.27.1767158675270; Tue, 30 Dec 2025 21:24:35 -0800 (PST) Received: from karthik.. ([43.247.159.43]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7b423b9asm34388142b3a.28.2025.12.30.21.24.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 21:24:34 -0800 (PST) From: Karthikey D Kadati To: Hans de Goede , Mauro Carvalho Chehab Cc: Sakari Ailus , Andy Shevchenko , Greg Kroah-Hartman , linux-media@vger.kernel.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Karthikey D Kadati Subject: [PATCH] media: atomisp: remove private white balance IOCTLs Date: Wed, 31 Dec 2025 10:54:27 +0530 Message-ID: <20251231052427.58840-1-karthikey3608@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This patch resolves a MUST-FIX graduation blocker identified in the atomisp TODO by removing the private ATOMISP_IOC_G_ISP_WHITE_BALANCE and ATOMISP_IOC_S_ISP_WHITE_BALANCE and replacing them with standard V4L2 control handling. The private IOCTLs were used to set white balance parameters. This functionality is now mapped to the standard V4L2 controls V4L2_CID_RED_BALANCE and V4L2_CID_BLUE_BALANCE. A helper function `atomisp_v4l2_set_wb` is introduced to translate the V4L2 control values to the driver's internal configuration format. Signed-off-by: Karthikey D Kadati --- .../media/atomisp/include/linux/atomisp.h | 5 +- .../staging/media/atomisp/pci/atomisp_ioctl.c | 49 ++++++++++++++++--- 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/drivers/staging/media/atomisp/include/linux/atomisp.h b/driver= s/staging/media/atomisp/include/linux/atomisp.h index 3c8fa3f58..fcf116cc4 100644 --- a/drivers/staging/media/atomisp/include/linux/atomisp.h +++ b/drivers/staging/media/atomisp/include/linux/atomisp.h @@ -741,10 +741,7 @@ enum atomisp_burst_capture_options { _IOW('v', BASE_VIDIOC_PRIVATE + 15, struct atomisp_ctc_table) =20 /* white balance Correction */ -#define ATOMISP_IOC_G_ISP_WHITE_BALANCE \ - _IOR('v', BASE_VIDIOC_PRIVATE + 16, struct atomisp_wb_config) -#define ATOMISP_IOC_S_ISP_WHITE_BALANCE \ - _IOW('v', BASE_VIDIOC_PRIVATE + 16, struct atomisp_wb_config) + =20 /* fpn table loading */ #define ATOMISP_IOC_S_ISP_FPN_TABLE \ diff --git a/drivers/staging/media/atomisp/pci/atomisp_ioctl.c b/drivers/st= aging/media/atomisp/pci/atomisp_ioctl.c index bb8b2f221..5c0a1d92b 100644 --- a/drivers/staging/media/atomisp/pci/atomisp_ioctl.c +++ b/drivers/staging/media/atomisp/pci/atomisp_ioctl.c @@ -1083,6 +1083,38 @@ static int atomisp_g_ctrl(struct file *file, void *f= h, * applications initialize the id and value fields of a struct v4l2_control * and call this ioctl. */ +static int atomisp_v4l2_set_wb(struct atomisp_sub_device *asd, int id, + int value) +{ + struct atomisp_device *isp =3D asd->isp; + struct atomisp_wb_config config; + int ret; + + if (atomisp_css_get_wb_config(asd, &config)) { + dev_err(isp->dev, "%s: can't get wb config\n", __func__); + return -EINVAL; + } + + switch (id) { + case V4L2_CID_BLUE_BALANCE: + config.b =3D value << (16 - 8 - config.integer_bits + 1); + break; + case V4L2_CID_RED_BALANCE: + config.r =3D value << (16 - 8 - config.integer_bits + 1); + break; + default: + return -EINVAL; + } + + ret =3D atomisp_white_balance_param(asd, 1, &config); + if (ret) { + dev_err(isp->dev, "%s: set wb config failed\n", __func__); + return ret; + } + + return 0; +} + static int atomisp_s_ctrl(struct file *file, void *fh, struct v4l2_control *control) { @@ -1122,6 +1154,17 @@ static int atomisp_s_ctrl(struct file *file, void *f= h, case V4L2_CID_ATOMISP_LOW_LIGHT: ret =3D atomisp_low_light(asd, 1, &control->value); break; + case V4L2_CID_AUTO_WHITE_BALANCE: + /* + * TODO: Auto White Balance is not supported yet. + * It is currently handled by the ISP. + */ + ret =3D 0; + break; + case V4L2_CID_RED_BALANCE: + case V4L2_CID_BLUE_BALANCE: + ret =3D atomisp_v4l2_set_wb(asd, control->id, control->value); + break; default: ret =3D -EINVAL; break; @@ -1484,13 +1527,7 @@ static long atomisp_vidioc_default(struct file *file= , void *fh, err =3D atomisp_ctc(asd, 1, arg); break; =20 - case ATOMISP_IOC_G_ISP_WHITE_BALANCE: - err =3D atomisp_white_balance_param(asd, 0, arg); - break; =20 - case ATOMISP_IOC_S_ISP_WHITE_BALANCE: - err =3D atomisp_white_balance_param(asd, 1, arg); - break; =20 case ATOMISP_IOC_G_3A_CONFIG: err =3D atomisp_3a_config_param(asd, 0, arg); --=20 2.43.0