From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 92B2C3D9DB7 for ; Tue, 28 Apr 2026 11:39:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777376391; cv=none; b=nQnIYRRe3DhLhh9ZKzA3Y0KY2sUd+IaB9hPlGCm1sPsupRyYMIC8uKc2ZCsyLTnry9OhiOoGkEJ6+L2eqRnxgM0HGrgaNP5GMRwePNlrT07fJiAznfKmGHYSK8/ey8fOzZfm6Mc5ru6Hxkx82OvtRTk4cnSVseBRJqfNWzZbAl8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777376391; c=relaxed/simple; bh=LRXlNS9x02z8g+CGxmATU/6gvHvDK0YuBVqtECCU2ME=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fWH8lSbCZS9IDsYnrpRrISrsQv0Vw9uXdnyJT6eoRtrs/ZkpwSsvc8FTajYrz23GUuPf2k7k9fMbmBieBVHW+QqK+bbRW1kn/zYRacSIZFP0vy7WxWUK7x4ctidh/jPzSo3YYu3O4pzQWGCO6AZpJtwccAXGjfHnSJnmBMxilAg= 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=F33ZpTnE; arc=none smtp.client-ip=209.85.128.51 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="F33ZpTnE" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-48a563e4ef7so78676205e9.0 for ; Tue, 28 Apr 2026 04:39:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777376386; x=1777981186; 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=2KGU01Qq2W7EXZE5uDuHFOzhjoXBSa5CoF8m94VBiMo=; b=F33ZpTnEflLMf50xgLlKc6vUGNRORo8QcHcqdx0Mhtyml9qGfrQisf/PKui/9v+Wf9 w1AA+6dotF7yKb2DzBKevJnrssvc5r9CpySacJpkrHn/qTPMqlYcaIhZPvW//HgVTVIN cJqzqVPSK0N/iQNnXFL011IqOIbgsFlgkgIadlkWrrQijqti04EAAMQbFDgoRo+pX1qG UdhmtamphWP4KddrddeDheXPH59/rj1hpaBYYJGI9xOivB1W+6achp1QVgDjuxNvTE7e SOswzCYFscl1vB2H0rNAaVy/ikJFj1Km+5ctKx88JIYQDX/y7Of1WCn2QQONK2zqG1Hy MvNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777376386; x=1777981186; 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=2KGU01Qq2W7EXZE5uDuHFOzhjoXBSa5CoF8m94VBiMo=; b=OEpp9KXcr4eanVW4HieSGvKVu/sDaT08wKRo6Ru7t5Oe+FEHUSlhjFgPUb0qXEcYIF Rv8lQlPhW81nRjjUSCQHFZ7VVjpvv5K26RZ2V3fAB9Yd06hJMiiIrzWWtGzpUVSypc3h Ro8DcP8h/JypNGnRfQttsO+9LBVJvqj8YEy6H+mEDvI+PZZkWNxe6kH8uLU7u/kEVz1N 7iDegZ9TPazAlIBa3dPug2k7OewPmZ0QmmzMbrBz6AK+Ml0PSaVFl7hPHwFQNCkE/ZB7 +kGLwc33sAl1OSct1SV8YcvRgtE7mU+Mm0ayjDuEzNMH1zbb/7euI7tnT6j2gGjQZSRw Jq7Q== X-Forwarded-Encrypted: i=1; AFNElJ++NZ5UiZEbk62erJkYbEHzH9dMM3kqsjFvbvGntkByF/LhJq4zvh76IEm34ubuybP6/Q2lquWOfm18q3s=@vger.kernel.org X-Gm-Message-State: AOJu0YxUdmVFtpIQbAmxbhPrHEeFzrhanL6fgS5+DmMMN+EJFfimDjPl DNXg2mNfqfoqo8U+PM6m9rPdVJ2+l3KKCInw1gH0GCBLwrAYkQ5/LCmG X-Gm-Gg: AeBDievXYPkedEewaqvbwcg7CDjjjkaMvdf38kECUMTdrq3pM6ogKc/lND/p0iPx2ZF afpk8MjXIueiLiJqPW5mGeg6XNA+Oj+M9xkavEH64dzRiyCSYMBCtiYvM/RUwht4IB/F8kdTSDF aMB2/0+5FAXMGtFtkZW1WS0mSFzOt0dGBCsuE+qV6+ixNKzI5Im8j6qgoiutPleTbY2iKH2MkuW 5PpOGftdLI/j5i1asmBg8saz/9PIcSD36EBHPEsCn8bAQ/CiKOEoQaYDJKiTEleNBzv2Gp45J51 k2O4DkH/UXEEdp+Sa+xviRllud/3yBJqt/8MtsvC6YvjYp8puFmxlmSRfpCkIDMdUueAtQYjsV6 RPGeHrXo9eKFqA2pcdr6Kab0L5Gb6Aj4qVvRByobwHYo2tzWy5oZtRdFhaOzNqCa8+NRtjMsmtc 1m6fR9mdqEEC5Kq0kfwrtewRw= X-Received: by 2002:a05:600c:1d0a:b0:488:a824:fe04 with SMTP id 5b1f17b1804b1-48a77b1e893mr45325545e9.26.1777376385036; Tue, 28 Apr 2026 04:39:45 -0700 (PDT) Received: from xeon ([188.163.112.56]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48a77aeb223sm43541125e9.3.2026.04.28.04.39.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 04:39:44 -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 v4 3/5] media: i2c: lm3560: Optimize mutex lock usage Date: Tue, 28 Apr 2026 14:39:20 +0300 Message-ID: <20260428113923.112920-4-clamor95@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260428113923.112920-1-clamor95@gmail.com> References: <20260428113923.112920-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 since they share same hardware, so the individual sub-device locks will not work here. Signed-off-by: Svyatoslav Ryhel --- drivers/media/i2c/lm3560.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/drivers/media/i2c/lm3560.c b/drivers/media/i2c/lm3560.c index edfb07587cab..5b568ed9536b 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; } @@ -328,6 +318,8 @@ static int lm3560_init_controls(struct lm3560_flash *flash, if (fault != NULL) fault->flags |= V4L2_CTRL_FLAG_VOLATILE; + hdl->lock = &flash->lock; + if (hdl->error) return hdl->error; @@ -363,6 +355,7 @@ static int lm3560_subdev_init(struct lm3560_flash *flash, if (rval < 0) goto err_out; flash->subdev_led[led_no].entity.function = MEDIA_ENT_F_FLASH; + flash->subdev_led[led_no].state_lock = &flash->lock; rval = v4l2_async_register_subdev(&flash->subdev_led[led_no]); if (rval < 0) { -- 2.51.0