From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lj1-f170.google.com (mail-lj1-f170.google.com [209.85.208.170]) (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 095B337BE8E for ; Sun, 19 Apr 2026 09:34:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.170 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776591281; cv=none; b=F70blOpmnywrlKUWRBGP+DHI7nuVLdkP/RXC/b89qvga27cftoBzmbiIz3IOXwg7UTcFu64XCfpL2CKPFT4DenHsW1DAiPkhadIc6xDYpMFLeV+CfnA7J1OLrGIpt7DvNp4L8aC8PmQHuu/otkR5QN2iAuDG97wlCFP4JfBtz0g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776591281; c=relaxed/simple; bh=DPuU9UKzjNveL2Uy3y9tUPnjY6ZhEX35Z5uqTrDGofg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UttUgqoikope8rYFLkV9Tlouko8GjN+OSk+cTAM4ffIAGJ4QfpDZLo2PXd3rC9mQmOlIYupVfpphsRQZcup3hK27vpkvSF3p+HjdDXsRKESf9i7y8mpL4idhc4guMs4skNZOFUn4q2cgC9NwpopcbQZ2tg0gZ3QLzQY4JuGBWK4= 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=gNDW6PJy; arc=none smtp.client-ip=209.85.208.170 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="gNDW6PJy" Received: by mail-lj1-f170.google.com with SMTP id 38308e7fff4ca-38ccde812ecso20054251fa.0 for ; Sun, 19 Apr 2026 02:34:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776591278; x=1777196078; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WwldWTVNb+Q/QpXo1IdPnwyyFuA7X8MQ9JBz50beleY=; b=gNDW6PJyeJ00F1zQsh4NhPP1dxsb4kvt0G2Bfbo0y8O0DXc86Vvapzj20VCp5R2y04 4wxpxLLRN6ynpvk9FBeK1Q8Ej3wy3ndl+ZQ8dyP/fy+Ie0ObMYnNF7uflfEGJKUU0HGK eWVHXz3V8a/PizH5f7VQ78uct+V1Uz2fubwrCP4gaSpWRk7mI/aECcnY0hvxqifcX3JL COZq2Yg7ZqlfbOKGH+lpq/DlM8iITrTwjOfRQ9agI4DflhUEuSBMQ/7APJtv6tjnqQLd cQTybS5r5AE9S1QBJINjvUZImmx2uZQYeNki2ATbThKiy60vxJOsnPRKhiWQaPZTWil9 sWlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776591278; x=1777196078; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=WwldWTVNb+Q/QpXo1IdPnwyyFuA7X8MQ9JBz50beleY=; b=pUL6IsQQUxfXbZYs/Qx6PTAXhsNFYjCxkPsNG6tOt2XE/LRu+RelCulLKhkgMdZiHX SxwKOSSqU0HhyeC83JYP4SNRruEIaMTdTJbI1G9SXCgQ2IcZAHiVRblhV2pWoRfrp0Be NhgGj8jG8cRCKrLvC365T9P5Z7BVD7O74yxsSiMcV81pf6lPzFjtWJbnyyHRsGT4qC4f 4YfeX8RAAozqz0UnsIJM+ULO5DHV90hc77UzXf62d5bm8wtfaaC0YgiXHAPl7KZ2cjo3 ByUg6ru7Ff4oFiLPya8eHesggT3w9UHpURKc8MaHd5iE7I8MoWH3PF7BgpzSngxpaMDV 1Omw== X-Forwarded-Encrypted: i=1; AFNElJ/eglwnFV7YkOHa1HKCNkc9dtztljXLr7W1ZbauIsaQ0e6/metxfl2hB1w5gHNBF3BT/WH8XvcacJfmREg=@vger.kernel.org X-Gm-Message-State: AOJu0Yy1WXl0eNC3f1gp2Iwvz+lF0jinMJ78w7gKuK/kvfMYTZdAeMV4 reuAqxF42CEz7sgzeC6nWOpsxNLVJ9Za9uKHepwqrcCXishmwdXl8GZi X-Gm-Gg: AeBDievVdZQH8bG+YGyrrJkWsQGMrVEQc7/ny2bMeYV+2QitfyoY0CfUsk/pdWm+vjb BJBX9Cg3buO0d195dzAvt5O0+OEE9LdGHNte3YcF/39hn1VCqJuqVM5ANrX1OCw8uGAGABAAcgu 84rDISPbd3kjCtd9CR3UzWRIWRan+AptDrSv84VRMthpoUzuqZfV+Dlwnm821L3Y1xmeJGBODht 0wDDWc74HuT76nW81Pg6I8081whpeASlXBM6D+OZw4ZRuFts5ayGHRQtalEmQ6DNEDabeH6T1Oh meTn7m6tpGDu/gP1DOdFb/QDKfaBFjGMlx6fpqcT9w3ztd/Q3xgYS1NgHaQsSNBZQkO8AnSdsLC awEoSPKhQ+iW3As8htE90xtL/Ch+Eu2ZDDe7Uf1mW5b+rFip0nBjZ99VRtxSVUsnKyblScFLWBH S3qcE7nO0G7xuB56Hd8cZEO8QeJUIKnH1rbg== X-Received: by 2002:a05:651c:2344:20b0:389:e2e8:4f4c with SMTP id 38308e7fff4ca-38ec951d010mr18302131fa.21.1776591278096; Sun, 19 Apr 2026 02:34:38 -0700 (PDT) Received: from xeon ([188.163.112.56]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-38ecb7613a9sm18221671fa.41.2026.04.19.02.34.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Apr 2026 02:34:37 -0700 (PDT) From: Svyatoslav Ryhel To: Lee Jones , Pavel Machek , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Sakari Ailus , Mauro Carvalho Chehab , Svyatoslav Ryhel Cc: linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org Subject: [PATCH v2 3/5] media: i2c: lm3560: Optimize mutex lock usage Date: Sun, 19 Apr 2026 12:34:10 +0300 Message-ID: <20260419093412.40796-4-clamor95@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260419093412.40796-1-clamor95@gmail.com> References: <20260419093412.40796-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Pass the device's own mutex lock to the control handler so that the media framework can handle control access instead of managing it manually. The lock must be common to both sub-devices, so the individual sub-device locks will not work here. Signed-off-by: Svyatoslav Ryhel --- drivers/media/i2c/lm3560.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/drivers/media/i2c/lm3560.c b/drivers/media/i2c/lm3560.c index 085a0ef70e39..5cd22c2fbb64 100644 --- a/drivers/media/i2c/lm3560.c +++ b/drivers/media/i2c/lm3560.c @@ -162,14 +162,12 @@ static int lm3560_get_ctrl(struct v4l2_ctrl *ctrl, enum lm3560_led_id led_no) struct lm3560_flash *flash = to_lm3560_flash(ctrl, led_no); int rval = -EINVAL; - mutex_lock(&flash->lock); - if (ctrl->id == V4L2_CID_FLASH_FAULT) { s32 fault = 0; unsigned int reg_val; rval = regmap_read(flash->regmap, REG_FLAG, ®_val); if (rval < 0) - goto out; + return rval; if (reg_val & FAULT_SHORT_CIRCUIT) fault |= V4L2_FLASH_FAULT_SHORT_CIRCUIT; if (reg_val & FAULT_OVERTEMP) @@ -179,8 +177,6 @@ static int lm3560_get_ctrl(struct v4l2_ctrl *ctrl, enum lm3560_led_id led_no) ctrl->cur.val = fault; } -out: - mutex_unlock(&flash->lock); return rval; } @@ -190,8 +186,6 @@ static int lm3560_set_ctrl(struct v4l2_ctrl *ctrl, enum lm3560_led_id led_no) u8 tout_bits; int rval = -EINVAL; - mutex_lock(&flash->lock); - switch (ctrl->id) { case V4L2_CID_FLASH_LED_MODE: flash->led_mode = ctrl->val; @@ -202,14 +196,12 @@ static int lm3560_set_ctrl(struct v4l2_ctrl *ctrl, enum lm3560_led_id led_no) case V4L2_CID_FLASH_STROBE_SOURCE: rval = regmap_update_bits(flash->regmap, REG_CONFIG1, 0x04, (ctrl->val) << 2); - if (rval < 0) - goto err_out; break; case V4L2_CID_FLASH_STROBE: if (flash->led_mode != V4L2_FLASH_LED_MODE_FLASH) { rval = -EBUSY; - goto err_out; + break; } flash->led_mode = V4L2_FLASH_LED_MODE_FLASH; rval = lm3560_mode_ctrl(flash); @@ -218,7 +210,7 @@ static int lm3560_set_ctrl(struct v4l2_ctrl *ctrl, enum lm3560_led_id led_no) case V4L2_CID_FLASH_STROBE_STOP: if (flash->led_mode != V4L2_FLASH_LED_MODE_FLASH) { rval = -EBUSY; - goto err_out; + break; } flash->led_mode = V4L2_FLASH_LED_MODE_NONE; rval = lm3560_mode_ctrl(flash); @@ -239,8 +231,6 @@ static int lm3560_set_ctrl(struct v4l2_ctrl *ctrl, enum lm3560_led_id led_no) break; } -err_out: - mutex_unlock(&flash->lock); return rval; } @@ -332,6 +322,8 @@ static int lm3560_init_controls(struct lm3560_flash *flash, return hdl->error; flash->subdev_led[led_no].ctrl_handler = hdl; + flash->subdev_led[led_no].ctrl_handler->lock = &flash->lock; + return 0; } -- 2.51.0