From patchwork Sat May 17 11:40:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 890966 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 7C5041F6694 for ; Sat, 17 May 2025 11:41:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482086; cv=none; b=ryLCBk2CgYWji0q01UHrBRLYnb382IHIhLQC0NUb3ZMhphUe4kJIKhAT2l9wLHoYdEGVDmyVdQSrN6dGYRLGKEJ38cI0MJCsyMh8pxwXci+aYSvquGvuSJU7VyrRCJcQ4nCSuLym3xy+Q4q1rq5NlQBB8MyXkGrFHcBg3Mf8oCI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482086; c=relaxed/simple; bh=ICuTjN1gntUWa0Hip6tE3aC4409Uv9tglpRi3vSWNLI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EWfqFNRV0/o90/e1FXgw8EumtZykDtG75KsSRkazRxFdAEo8D5PcZgCijR9KYelh5H4EBT+xRcdBmHP6KlaaFT6uiHgMGThQUzWYpEpq/jPc993k0Gdr/IQuih0M0FHxLSsyBNCFqqayffglMHYLxvKLmbhTNPg+lEQLlT0Fx04= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=SVKG8JGL; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="SVKG8JGL" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747482083; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FNk20NmAxabtqMy79RJrDePgZjTQbcEyCRyDOMXssaA=; b=SVKG8JGLqZlkw4JYltNL3qShCvOEBDS+50PsZWXiPzLTN6cSdyrQEH3DZc7Dpo9jJkXN7Z RRBw0Y1Zt9/u7MnphZePY68BQZizoEbITS+nXm/xx4uihGWvu1Ikq4kd3KMp+rpKpIIjdI DV5MCb2EgsuziEhwfs3DYJy11LX/e+w= Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-627-ORfgP36QPM2XZTb23qrfNg-1; Sat, 17 May 2025 07:41:20 -0400 X-MC-Unique: ORfgP36QPM2XZTb23qrfNg-1 X-Mimecast-MFC-AGG-ID: ORfgP36QPM2XZTb23qrfNg_1747482079 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id CDAF218004AD; Sat, 17 May 2025 11:41:18 +0000 (UTC) Received: from x1.redhat.com (unknown [10.45.224.43]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 1A613180045B; Sat, 17 May 2025 11:41:14 +0000 (UTC) From: Hans de Goede To: Sakari Ailus , Andy Shevchenko Cc: Hans de Goede , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-staging@lists.linux.dev Subject: [PATCH 01/23] media: atomisp: gc0310: Rename "dev" function variable to "sensor" Date: Sat, 17 May 2025 13:40:44 +0200 Message-ID: <20250517114106.43494-2-hdegoede@redhat.com> In-Reply-To: <20250517114106.43494-1-hdegoede@redhat.com> References: <20250517114106.43494-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 Many functions on the gc0310 driver use a function local variable called "dev" but these variable's type is not "struct device *" type as one would expect based on the name. Instead they point to the gc0310 driver data struct. Rename these variables to sensor to make their purpose more clear. Signed-off-by: Hans de Goede --- .../media/atomisp/i2c/atomisp-gc0310.c | 112 +++++++++--------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c index d35394f1ddbb..cc74e90a1457 100644 --- a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c @@ -282,16 +282,16 @@ static int gc0310_write_reg_array(struct i2c_client *client, return 0; } -static int gc0310_exposure_set(struct gc0310_device *dev, u32 exp) +static int gc0310_exposure_set(struct gc0310_device *sensor, u32 exp) { - struct i2c_client *client = v4l2_get_subdevdata(&dev->sd); + struct i2c_client *client = v4l2_get_subdevdata(&sensor->sd); return i2c_smbus_write_word_swapped(client, GC0310_AEC_PK_EXPO_H, exp); } -static int gc0310_gain_set(struct gc0310_device *dev, u32 gain) +static int gc0310_gain_set(struct gc0310_device *sensor, u32 gain) { - struct i2c_client *client = v4l2_get_subdevdata(&dev->sd); + struct i2c_client *client = v4l2_get_subdevdata(&sensor->sd); u8 again, dgain; int ret; @@ -317,27 +317,27 @@ static int gc0310_gain_set(struct gc0310_device *dev, u32 gain) static int gc0310_s_ctrl(struct v4l2_ctrl *ctrl) { - struct gc0310_device *dev = + struct gc0310_device *sensor = container_of(ctrl->handler, struct gc0310_device, ctrls.handler); int ret; /* Only apply changes to the controls if the device is powered up */ - if (!pm_runtime_get_if_in_use(dev->sd.dev)) + if (!pm_runtime_get_if_in_use(sensor->sd.dev)) return 0; switch (ctrl->id) { case V4L2_CID_EXPOSURE: - ret = gc0310_exposure_set(dev, ctrl->val); + ret = gc0310_exposure_set(sensor, ctrl->val); break; case V4L2_CID_GAIN: - ret = gc0310_gain_set(dev, ctrl->val); + ret = gc0310_gain_set(sensor, ctrl->val); break; default: ret = -EINVAL; break; } - pm_runtime_put(dev->sd.dev); + pm_runtime_put(sensor->sd.dev); return ret; } @@ -346,14 +346,14 @@ static const struct v4l2_ctrl_ops ctrl_ops = { }; static struct v4l2_mbus_framefmt * -gc0310_get_pad_format(struct gc0310_device *dev, +gc0310_get_pad_format(struct gc0310_device *sensor, struct v4l2_subdev_state *state, unsigned int pad, enum v4l2_subdev_format_whence which) { if (which == V4L2_SUBDEV_FORMAT_TRY) return v4l2_subdev_state_get_format(state, pad); - return &dev->mode.fmt; + return &sensor->mode.fmt; } /* The GC0310 currently only supports 1 fixed fmt */ @@ -370,10 +370,10 @@ static int gc0310_set_fmt(struct v4l2_subdev *sd, struct v4l2_subdev_state *sd_state, struct v4l2_subdev_format *format) { - struct gc0310_device *dev = to_gc0310_sensor(sd); + struct gc0310_device *sensor = to_gc0310_sensor(sd); struct v4l2_mbus_framefmt *fmt; - fmt = gc0310_get_pad_format(dev, sd_state, format->pad, format->which); + fmt = gc0310_get_pad_format(sensor, sd_state, format->pad, format->which); gc0310_fill_format(fmt); format->format = *fmt; @@ -384,10 +384,10 @@ static int gc0310_get_fmt(struct v4l2_subdev *sd, struct v4l2_subdev_state *sd_state, struct v4l2_subdev_format *format) { - struct gc0310_device *dev = to_gc0310_sensor(sd); + struct gc0310_device *sensor = to_gc0310_sensor(sd); struct v4l2_mbus_framefmt *fmt; - fmt = gc0310_get_pad_format(dev, sd_state, format->pad, format->which); + fmt = gc0310_get_pad_format(sensor, sd_state, format->pad, format->which); format->format = *fmt; return 0; } @@ -424,12 +424,12 @@ static int gc0310_detect(struct i2c_client *client) static int gc0310_s_stream(struct v4l2_subdev *sd, int enable) { - struct gc0310_device *dev = to_gc0310_sensor(sd); + struct gc0310_device *sensor = to_gc0310_sensor(sd); struct i2c_client *client = v4l2_get_subdevdata(sd); int ret = 0; dev_dbg(&client->dev, "%s S enable=%d\n", __func__, enable); - mutex_lock(&dev->input_lock); + mutex_lock(&sensor->input_lock); if (enable) { ret = pm_runtime_get_sync(&client->dev); @@ -449,7 +449,7 @@ static int gc0310_s_stream(struct v4l2_subdev *sd, int enable) goto error_power_down; /* restore value of all ctrls */ - ret = __v4l2_ctrl_handler_setup(&dev->ctrls.handler); + ret = __v4l2_ctrl_handler_setup(&sensor->ctrls.handler); if (ret) goto error_power_down; @@ -475,14 +475,14 @@ static int gc0310_s_stream(struct v4l2_subdev *sd, int enable) if (!enable) pm_runtime_put(&client->dev); - dev->is_streaming = enable; - mutex_unlock(&dev->input_lock); + sensor->is_streaming = enable; + mutex_unlock(&sensor->input_lock); return 0; error_power_down: pm_runtime_put(&client->dev); - dev->is_streaming = false; - mutex_unlock(&dev->input_lock); + sensor->is_streaming = false; + mutex_unlock(&sensor->input_lock); return ret; } @@ -559,21 +559,21 @@ static const struct v4l2_subdev_ops gc0310_ops = { .sensor = &gc0310_sensor_ops, }; -static int gc0310_init_controls(struct gc0310_device *dev) +static int gc0310_init_controls(struct gc0310_device *sensor) { - struct v4l2_ctrl_handler *hdl = &dev->ctrls.handler; + struct v4l2_ctrl_handler *hdl = &sensor->ctrls.handler; v4l2_ctrl_handler_init(hdl, 2); /* Use the same lock for controls as for everything else */ - hdl->lock = &dev->input_lock; - dev->sd.ctrl_handler = hdl; + hdl->lock = &sensor->input_lock; + sensor->sd.ctrl_handler = hdl; - dev->ctrls.exposure = + sensor->ctrls.exposure = v4l2_ctrl_new_std(hdl, &ctrl_ops, V4L2_CID_EXPOSURE, 0, 4095, 1, 1023); /* 32 steps at base gain 1 + 64 half steps at base gain 2 */ - dev->ctrls.gain = + sensor->ctrls.gain = v4l2_ctrl_new_std(hdl, &ctrl_ops, V4L2_CID_GAIN, 0, 95, 1, 31); return hdl->error; @@ -582,21 +582,21 @@ static int gc0310_init_controls(struct gc0310_device *dev) static void gc0310_remove(struct i2c_client *client) { struct v4l2_subdev *sd = i2c_get_clientdata(client); - struct gc0310_device *dev = to_gc0310_sensor(sd); + struct gc0310_device *sensor = to_gc0310_sensor(sd); dev_dbg(&client->dev, "gc0310_remove...\n"); v4l2_async_unregister_subdev(sd); - media_entity_cleanup(&dev->sd.entity); - v4l2_ctrl_handler_free(&dev->ctrls.handler); - mutex_destroy(&dev->input_lock); + media_entity_cleanup(&sensor->sd.entity); + v4l2_ctrl_handler_free(&sensor->ctrls.handler); + mutex_destroy(&sensor->input_lock); pm_runtime_disable(&client->dev); } static int gc0310_probe(struct i2c_client *client) { struct fwnode_handle *ep_fwnode; - struct gc0310_device *dev; + struct gc0310_device *sensor; int ret; /* @@ -609,25 +609,25 @@ static int gc0310_probe(struct i2c_client *client) fwnode_handle_put(ep_fwnode); - dev = devm_kzalloc(&client->dev, sizeof(*dev), GFP_KERNEL); - if (!dev) + sensor = devm_kzalloc(&client->dev, sizeof(*sensor), GFP_KERNEL); + if (!sensor) return -ENOMEM; - dev->reset = devm_gpiod_get(&client->dev, "reset", GPIOD_OUT_HIGH); - if (IS_ERR(dev->reset)) { - return dev_err_probe(&client->dev, PTR_ERR(dev->reset), + sensor->reset = devm_gpiod_get(&client->dev, "reset", GPIOD_OUT_HIGH); + if (IS_ERR(sensor->reset)) { + return dev_err_probe(&client->dev, PTR_ERR(sensor->reset), "getting reset GPIO\n"); } - dev->powerdown = devm_gpiod_get(&client->dev, "powerdown", GPIOD_OUT_HIGH); - if (IS_ERR(dev->powerdown)) { - return dev_err_probe(&client->dev, PTR_ERR(dev->powerdown), + sensor->powerdown = devm_gpiod_get(&client->dev, "powerdown", GPIOD_OUT_HIGH); + if (IS_ERR(sensor->powerdown)) { + return dev_err_probe(&client->dev, PTR_ERR(sensor->powerdown), "getting powerdown GPIO\n"); } - mutex_init(&dev->input_lock); - v4l2_i2c_subdev_init(&dev->sd, client, &gc0310_ops); - gc0310_fill_format(&dev->mode.fmt); + mutex_init(&sensor->input_lock); + v4l2_i2c_subdev_init(&sensor->sd, client, &gc0310_ops); + gc0310_fill_format(&sensor->mode.fmt); pm_runtime_set_suspended(&client->dev); pm_runtime_enable(&client->dev); @@ -640,23 +640,23 @@ static int gc0310_probe(struct i2c_client *client) return ret; } - dev->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; - dev->pad.flags = MEDIA_PAD_FL_SOURCE; - dev->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR; + sensor->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; + sensor->pad.flags = MEDIA_PAD_FL_SOURCE; + sensor->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR; - ret = gc0310_init_controls(dev); + ret = gc0310_init_controls(sensor); if (ret) { gc0310_remove(client); return ret; } - ret = media_entity_pads_init(&dev->sd.entity, 1, &dev->pad); + ret = media_entity_pads_init(&sensor->sd.entity, 1, &sensor->pad); if (ret) { gc0310_remove(client); return ret; } - ret = v4l2_async_register_subdev_sensor(&dev->sd); + ret = v4l2_async_register_subdev_sensor(&sensor->sd); if (ret) { gc0310_remove(client); return ret; @@ -668,22 +668,22 @@ static int gc0310_probe(struct i2c_client *client) static int gc0310_suspend(struct device *dev) { struct v4l2_subdev *sd = dev_get_drvdata(dev); - struct gc0310_device *gc0310_dev = to_gc0310_sensor(sd); + struct gc0310_device *sensor = to_gc0310_sensor(sd); - gpiod_set_value_cansleep(gc0310_dev->powerdown, 1); - gpiod_set_value_cansleep(gc0310_dev->reset, 1); + gpiod_set_value_cansleep(sensor->powerdown, 1); + gpiod_set_value_cansleep(sensor->reset, 1); return 0; } static int gc0310_resume(struct device *dev) { struct v4l2_subdev *sd = dev_get_drvdata(dev); - struct gc0310_device *gc0310_dev = to_gc0310_sensor(sd); + struct gc0310_device *sensor = to_gc0310_sensor(sd); usleep_range(10000, 15000); - gpiod_set_value_cansleep(gc0310_dev->reset, 0); + gpiod_set_value_cansleep(sensor->reset, 0); usleep_range(10000, 15000); - gpiod_set_value_cansleep(gc0310_dev->powerdown, 0); + gpiod_set_value_cansleep(sensor->powerdown, 0); return 0; } From patchwork Sat May 17 11:40:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 890965 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 2BE071DD88F for ; Sat, 17 May 2025 11:41:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482099; cv=none; b=FiFvStH7LYiM0+NX70XFFL+OIYSVd17D+SBZU3L+i0G0637AYpkhA0b8FqH2CMN4JRfQVRDNR0n3TUr9fdmQ+hEduVR1WQv5hu/bPlYMJmFzZpZ7fNGktidq/24R53g6743mlF0Lc6cJ+cELW/GhUdpDKfTIgAOz0mFvoxtAfpA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482099; c=relaxed/simple; bh=jK/vrgG07dcevue1rte3AVOpSkRUFJqw+vDhVBclD5w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hsWEIqcvyRtEVH3X4p8YTLBB4AUGPyPv97vReiSm9E/TcQ5hO9F3uc/QDl12DHwY/Oafppik6qJ/M2m1dyLN+RwbanoBWc/t96ZE7OSdTeOAcHkvGb03LD/zAO3dgQmh4gCSutSLWbI2NFDN/iEXSdzVYTcav+MOrC2A5LxXf9w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=Ss+UEL82; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Ss+UEL82" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747482097; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=37rKD/x6wYb49G2Eb30IpXZhx0NW0+TDvj/kszqUg4A=; b=Ss+UEL82TwFDATFH5zg5vbqEbheuTqALB452fO/POPepqxbNYNIrlQtV4WkcmqVJMSMGEu VxHX9UMKSRcZVfLp4NN2+8EmPWNjdLZzl48m4Wi8MZPgouOUzJBzS+lCmyLAQ6AjHCW81h Tz/aRvEhHx4/KyBFIJfZRuI1+wT6gdw= Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-66-EA3mrYpLPQeTYsl2P0lG3g-1; Sat, 17 May 2025 07:41:31 -0400 X-MC-Unique: EA3mrYpLPQeTYsl2P0lG3g-1 X-Mimecast-MFC-AGG-ID: EA3mrYpLPQeTYsl2P0lG3g_1747482090 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D9EB01800446; Sat, 17 May 2025 11:41:29 +0000 (UTC) Received: from x1.redhat.com (unknown [10.45.224.43]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 251EE180045B; Sat, 17 May 2025 11:41:24 +0000 (UTC) From: Hans de Goede To: Sakari Ailus , Andy Shevchenko Cc: Hans de Goede , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-staging@lists.linux.dev Subject: [PATCH 03/23] media: atomisp: gc0310: Modify vblank value to run at 30 fps Date: Sat, 17 May 2025 13:40:46 +0200 Message-ID: <20250517114106.43494-4-hdegoede@redhat.com> In-Reply-To: <20250517114106.43494-1-hdegoede@redhat.com> References: <20250517114106.43494-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 Currently the sensor is running 30.9 fps, increase vblank to have it actually run at 30.0 fps. Signed-off-by: Hans de Goede --- drivers/staging/media/atomisp/i2c/atomisp-gc0310.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c index f253b4b494f2..6b11f0ff6088 100644 --- a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c @@ -141,7 +141,7 @@ static const struct gc0310_reg gc0310_reset_register[] = { { 0x05, 0x00 }, { 0x06, 0xb2 }, /* 0x0a //HB */ { 0x07, 0x00 }, - { 0x08, 0x0c }, /* 0x89 //VB */ + { 0x08, 0x1b }, /* 0x89 //VB */ { 0x09, 0x00 }, /* row start */ { 0x0a, 0x00 }, { 0x0b, 0x00 }, /* col start */ From patchwork Sat May 17 11:40:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 890964 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 27F9A1F8755 for ; Sat, 17 May 2025 11:41:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482106; cv=none; b=rfjBUPygbeoXkkqEh4re2MPgaAbJTHf0SJttA2+jU6soCKdX4wdbUvkW3X+l4ECGB/1VQWVtdJvS61Kir4SHa59rF9Im3R8BV5gG1kQ1BiZ2G2Hh3UTFDbdOElGLphA8EKQRvvMT2IdF4DiJ535UlBXeOgyZCHYTpFf5/ZSD1Lo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482106; c=relaxed/simple; bh=kPgg7eaRlADTXBeEj4UG/eDKO+eMbJrVB1gnP0RMt18=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KsWRXhjlov9c6c+wWTBHOLWNf+ihYTFrl9TtgJcWQlB9oAhpEnPlZf6oFFCkRU86gOoRcPyQ8Rhi6EosWB8+MkdsrVN8YVpunvJ5XuIY58ne0T3v4GO3Y6DBFntrg79NONqlz9O/OHF+qDQHE2jjGiTDw9O3zeNFY/Dw4kax7XM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=THBH3mGa; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="THBH3mGa" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747482104; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LcE1b5mbpZvFvraLqanoAPLCCe37suWF8oFa4XfGpcc=; b=THBH3mGatfrAfy5NKBwLRcvU7tqkSrODNBv/H12/d1GqBEi1C0hpp8UqgMyqU7F+932B0g TQ/8BtYd6hdVINw6Z5nCGNuN+1Q+RP/kuR0JZz3qQZCfgTXKjzs3T+LlZJ8X20OWoc5rnN 8FNO6Lhhe73eM0VMV/UTSkEt2ZaL9yE= Received: from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-385-f103rmV5N6Sht63Z7KtdfQ-1; Sat, 17 May 2025 07:41:42 -0400 X-MC-Unique: f103rmV5N6Sht63Z7KtdfQ-1 X-Mimecast-MFC-AGG-ID: f103rmV5N6Sht63Z7KtdfQ_1747482101 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id BAB2E1956086; Sat, 17 May 2025 11:41:41 +0000 (UTC) Received: from x1.redhat.com (unknown [10.45.224.43]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 0EEB4180045B; Sat, 17 May 2025 11:41:37 +0000 (UTC) From: Hans de Goede To: Sakari Ailus , Andy Shevchenko Cc: Hans de Goede , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-staging@lists.linux.dev Subject: [PATCH 05/23] media: atomisp: gc0310: Use V4L2_CID_ANALOGUE_GAIN for gain control Date: Sat, 17 May 2025 13:40:48 +0200 Message-ID: <20250517114106.43494-6-hdegoede@redhat.com> In-Reply-To: <20250517114106.43494-1-hdegoede@redhat.com> References: <20250517114106.43494-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 Use V4L2_CID_ANALOGUE_GAIN for gain control, as expected by userspace. Signed-off-by: Hans de Goede --- drivers/staging/media/atomisp/i2c/atomisp-gc0310.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c index ee039f3be4da..756e56f639b7 100644 --- a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c @@ -289,7 +289,7 @@ static int gc0310_s_ctrl(struct v4l2_ctrl *ctrl) ret = cci_write(sensor->regmap, GC0310_AEC_PK_EXPO_REG, ctrl->val, NULL); break; - case V4L2_CID_GAIN: + case V4L2_CID_ANALOGUE_GAIN: ret = gc0310_gain_set(sensor, ctrl->val); break; default: @@ -533,7 +533,7 @@ static int gc0310_init_controls(struct gc0310_device *sensor) /* 32 steps at base gain 1 + 64 half steps at base gain 2 */ sensor->ctrls.gain = - v4l2_ctrl_new_std(hdl, &ctrl_ops, V4L2_CID_GAIN, 0, 95, 1, 31); + v4l2_ctrl_new_std(hdl, &ctrl_ops, V4L2_CID_ANALOGUE_GAIN, 0, 95, 1, 31); return hdl->error; } From patchwork Sat May 17 11:40:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 890963 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 A00BB1EF080 for ; Sat, 17 May 2025 11:42:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482123; cv=none; b=Q9PyRG+wrBJoLTDdJMIWOCsjDIJYJJBMUM9kICuhm4mghTwLZxWOF7XSqwc2g0JSdjKbYmRAamYVpW5AtZpWFtQMSLIdG0UFZFv/YMqfaGnilDSlcHKjK5a0plGuwCHyvoGsqbsjpfxWexi4P8PXKZdhW568YyI+GzC3GsDdz9s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482123; c=relaxed/simple; bh=g6RTdmPQydu3N73AFUA9tAmB/ZCZLAapM6DVUpLSTaw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rrD54uGAEbSZD2r5DPidq3K2txXh5cb4vr5t9Py74tf5r6uJALrM0g0SEi0kZ8p+J6rM5GS1luJoQEuK2TkFzAg6Sr1DaHaOHca6M28+savqeA9lvIJybNQep2cN869AmS6yAcr/SW4vcKOeRaK6T8tNbpG1r37+fD7R1o92FR0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=dAdOgzVw; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="dAdOgzVw" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747482120; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ENy+lwBIYYMMt7i/UP9ASvIPDHYJ2PjUSQYKRDJPjTI=; b=dAdOgzVwWemsCUIQzgXJbha7wwIJb+YlSk+r03AJTOvBS2JkMq4sz5/U8aUG9HiMmWZOxO YC9hOclPfvotxaL8MTrYdXTWvV0kxh5vlfQfKKrN6IL/GGUenALZqSlau8Luo5sEomqni8 bQyM1wTxgXkoK4bH5sfqlV30hP3QhMs= Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-62-UOrry5U3Pruqw5-trRsA0w-1; Sat, 17 May 2025 07:41:59 -0400 X-MC-Unique: UOrry5U3Pruqw5-trRsA0w-1 X-Mimecast-MFC-AGG-ID: UOrry5U3Pruqw5-trRsA0w_1747482118 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id EF9BF1800446; Sat, 17 May 2025 11:41:57 +0000 (UTC) Received: from x1.redhat.com (unknown [10.45.224.43]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 03CEC180045B; Sat, 17 May 2025 11:41:53 +0000 (UTC) From: Hans de Goede To: Sakari Ailus , Andy Shevchenko Cc: Hans de Goede , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-staging@lists.linux.dev Subject: [PATCH 07/23] media: atomisp: gc0310: Add link-frequency and pixelrate controls Date: Sat, 17 May 2025 13:40:50 +0200 Message-ID: <20250517114106.43494-8-hdegoede@redhat.com> In-Reply-To: <20250517114106.43494-1-hdegoede@redhat.com> References: <20250517114106.43494-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 Add support for the pixelrate control as expected by libcamera, while at it also add the link-frequency control. Signed-off-by: Hans de Goede --- .../media/atomisp/i2c/atomisp-gc0310.c | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c index 7902e732a3ca..2bb309b51a3a 100644 --- a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c @@ -24,6 +24,17 @@ #define GC0310_NATIVE_WIDTH 656 #define GC0310_NATIVE_HEIGHT 496 +/* + * The actual PLL output rate is unknown, the datasheet + * says that the formula for the frame-time in pixels is: + * rowtime = win-width + hblank + sh-delay + 4 + * frametime = rowtime * (win-height + vblank) + * Filling this in and multiplying by 30 fps gives: + * pixelrate = (660 + 178 + 42 + 4) * (498 + 27) * 30 = 13923000 + */ +#define GC0310_PIXELRATE 13923000 +/* single lane, bus-format is 8 bpp, CSI-2 is double data rate */ +#define GC0310_LINK_FREQ (GC0310_PIXELRATE * 8 / 2) #define GC0310_FPS 30 #define GC0310_SKIP_FRAMES 3 @@ -76,6 +87,8 @@ struct gc0310_device { struct v4l2_ctrl_handler handler; struct v4l2_ctrl *exposure; struct v4l2_ctrl *gain; + struct v4l2_ctrl *link_freq; + struct v4l2_ctrl *pixel_rate; } ctrls; }; @@ -251,6 +264,10 @@ static const struct reg_sequence gc0310_VGA_30fps[] = { { 0xfe, 0x00 }, }; +static const s64 link_freq_menu_items[] = { + GC0310_LINK_FREQ, +}; + static int gc0310_gain_set(struct gc0310_device *sensor, u32 gain) { u8 again, dgain; @@ -561,7 +578,7 @@ static int gc0310_init_controls(struct gc0310_device *sensor) { struct v4l2_ctrl_handler *hdl = &sensor->ctrls.handler; - v4l2_ctrl_handler_init(hdl, 2); + v4l2_ctrl_handler_init(hdl, 4); /* Use the same lock for controls as for everything else */ hdl->lock = &sensor->input_lock; @@ -574,7 +591,19 @@ static int gc0310_init_controls(struct gc0310_device *sensor) sensor->ctrls.gain = v4l2_ctrl_new_std(hdl, &ctrl_ops, V4L2_CID_ANALOGUE_GAIN, 0, 95, 1, 31); - return hdl->error; + sensor->ctrls.link_freq = + v4l2_ctrl_new_int_menu(hdl, NULL, V4L2_CID_LINK_FREQ, + 0, 0, link_freq_menu_items); + sensor->ctrls.pixel_rate = + v4l2_ctrl_new_std(hdl, NULL, V4L2_CID_PIXEL_RATE, 0, + GC0310_PIXELRATE, 1, GC0310_PIXELRATE); + + if (hdl->error) + return hdl->error; + + sensor->ctrls.pixel_rate->flags |= V4L2_CTRL_FLAG_READ_ONLY; + sensor->ctrls.link_freq->flags |= V4L2_CTRL_FLAG_READ_ONLY; + return 0; } static void gc0310_remove(struct i2c_client *client) From patchwork Sat May 17 11:40:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 890962 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 6870B1DED57 for ; Sat, 17 May 2025 11:42:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482135; cv=none; b=FFitTyNL1T1IbMA+8g6ATbG93qrcBS4XLYlyqa7uMuUwxJ2eAxcypYOwDI/ZfXNJlfmvvTZmaXn2ZSXfiG/K9nrCU3UBUqlUzVA+7HSmjCRNJYAq+u5tRcuNAvnXHKk7YDzOtxzAClKl1On2BXfSJSQ11FVLpwYX1qE6+t5nqvI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482135; c=relaxed/simple; bh=zatqsTiNVt0mizH5icHO5VIaXzhq6Tzs0YbvpxqcW3w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=U9R2z/Y1Dw9Ya8F1xX3tey2Ks46vtsh75seb+GjqU8sRz81jvllmQsx93RV1UsEb9/FC1L+tTdDyInvsGURORl/KQo2b+Hmhw0UGwwWZnme8uQ9QPVB/wBRIArngzP0J0L6TSeRky7etZh2v54v2THbGH7sc/ZUgC32XXO0+3KE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=gXWmEvBY; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="gXWmEvBY" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747482133; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+Abb/XWpvsZRHOky6X9DeXY5nVyF4W3yOOrEo6J5UAE=; b=gXWmEvBYQrk3WxLRwZA48la4Faqx0XKQfYi8u2g21JbyhGl3VLCpKND9pJAJSIKzzH+rj6 kYExWtdKwzvY1BcDk7nec1QbASQpDzitng9cK0yjfne1RdrpULQROZoYu4Mnswj3Ivbfui LKvm5I+2JIAVEnfyXTm9iKWdyw+drV0= Received: from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-462-R6cuqmxsMYK851djr4kBgQ-1; Sat, 17 May 2025 07:42:10 -0400 X-MC-Unique: R6cuqmxsMYK851djr4kBgQ-1 X-Mimecast-MFC-AGG-ID: R6cuqmxsMYK851djr4kBgQ_1747482129 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 035371956089; Sat, 17 May 2025 11:42:09 +0000 (UTC) Received: from x1.redhat.com (unknown [10.45.224.43]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 43564180045B; Sat, 17 May 2025 11:42:03 +0000 (UTC) From: Hans de Goede To: Sakari Ailus , Andy Shevchenko Cc: Hans de Goede , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-staging@lists.linux.dev Subject: [PATCH 09/23] media: atomisp: gc0310: Add camera orientation and sensor rotation controls Date: Sat, 17 May 2025 13:40:52 +0200 Message-ID: <20250517114106.43494-10-hdegoede@redhat.com> In-Reply-To: <20250517114106.43494-1-hdegoede@redhat.com> References: <20250517114106.43494-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 Add camera orientation and sensor rotation controls using the v4l2_fwnode_device_parse() and v4l2_ctrl_new_fwnode_properties() helpers. Signed-off-by: Hans de Goede --- drivers/staging/media/atomisp/i2c/atomisp-gc0310.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c index 568b501f7e87..889e03b89ee7 100644 --- a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c @@ -20,6 +20,7 @@ #include #include #include +#include #define GC0310_NATIVE_WIDTH 656 #define GC0310_NATIVE_HEIGHT 496 @@ -595,9 +596,12 @@ static const struct v4l2_subdev_ops gc0310_ops = { static int gc0310_init_controls(struct gc0310_device *sensor) { + struct i2c_client *client = v4l2_get_subdevdata(&sensor->sd); struct v4l2_ctrl_handler *hdl = &sensor->ctrls.handler; + struct v4l2_fwnode_device_properties props; + int ret; - v4l2_ctrl_handler_init(hdl, 6); + v4l2_ctrl_handler_init(hdl, 8); /* Use the same lock for controls as for everything else */ hdl->lock = &sensor->input_lock; @@ -629,6 +633,12 @@ static int gc0310_init_controls(struct gc0310_device *sensor) GC0310_H_BLANK_DEFAULT, 1, GC0310_H_BLANK_DEFAULT); + ret = v4l2_fwnode_device_parse(&client->dev, &props); + if (ret) + return ret; + + v4l2_ctrl_new_fwnode_properties(hdl, &ctrl_ops, &props); + if (hdl->error) return hdl->error; From patchwork Sat May 17 11:40:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 890961 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 4EB931F9F61 for ; Sat, 17 May 2025 11:42:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482147; cv=none; b=FxqyVNOf3uQXTy1X4AZOLLQIawPKxP0w9Cnpr+t8gFSJK472elI2jvd75dFjAv18ObvxtTtfYiJ63v3EEnadDtuqFsxfUwmimteSozRMbSMc32cWv6sTeb/OGd0a5tsuBiPRxlCO3PfopGxrjWKnSmcW4toW+6U2yVF8IzVhmsc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482147; c=relaxed/simple; bh=WxJiMxFWGy58LjBh3KaBA6vviR2IHM1TtvBQP+vdtgY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Q/gl/zWxTqji+JXbFqr/G7cJ8tenbGQrFwA5eaYUSa55oqqwzcI/Cdgc1sqXi7L+f7IQBfRkXmkQfrAq+I/KlQmSPDN6qPTn70eRhgpviW5Pz+c/wVDljcluLn/615wsSnG0Y7Hh6n7p+MMr2Aagy3z5Y2w2q8S2va7uEgqWr/s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=UkllxWkE; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="UkllxWkE" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747482144; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=y1xrFIyc9aacmml6a+Hq91W8qFOeGc1J+hupW2QHfIY=; b=UkllxWkEDUrjMn7c/ZCSVt5RtXp3n8NO/HAMEGIBb7wyM0HDvKwaWGw++L4bDW0/kVQEfN ouws10VYLVkonJ9FzYCou0kSwaTt3BV22ynejsIQeSlgcayZsIKbax6EN2fMEu0ZkXeu3Q yZxn+hOi1/S3TVE3w4iuQ12eBSnQRmI= Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-688-E1qbdYSUPu-mmtQk3OmUkA-1; Sat, 17 May 2025 07:42:20 -0400 X-MC-Unique: E1qbdYSUPu-mmtQk3OmUkA-1 X-Mimecast-MFC-AGG-ID: E1qbdYSUPu-mmtQk3OmUkA_1747482139 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C4B4F19560BC; Sat, 17 May 2025 11:42:19 +0000 (UTC) Received: from x1.redhat.com (unknown [10.45.224.43]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 9B48418003FC; Sat, 17 May 2025 11:42:14 +0000 (UTC) From: Hans de Goede To: Sakari Ailus , Andy Shevchenko Cc: Hans de Goede , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-staging@lists.linux.dev Subject: [PATCH 11/23] media: atomisp: gc0310: Add check_hwcfg() function Date: Sat, 17 May 2025 13:40:54 +0200 Message-ID: <20250517114106.43494-12-hdegoede@redhat.com> In-Reply-To: <20250517114106.43494-1-hdegoede@redhat.com> References: <20250517114106.43494-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 Add a check_hwcfg() function to check if the external clk-freq, CSI link-freq and lane-count match the driver's expectations. Signed-off-by: Hans de Goede --- .../media/atomisp/i2c/atomisp-gc0310.c | 56 +++++++++++++++++-- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c index e053982a6512..8acb4517c67b 100644 --- a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c @@ -36,6 +36,7 @@ #define GC0310_PIXELRATE 13923000 /* single lane, bus-format is 8 bpp, CSI-2 is double data rate */ #define GC0310_LINK_FREQ (GC0310_PIXELRATE * 8 / 2) +#define GC0310_MCLK_FREQ 19200000 #define GC0310_FPS 30 #define GC0310_SKIP_FRAMES 3 @@ -679,21 +680,68 @@ static void gc0310_remove(struct i2c_client *client) pm_runtime_disable(&client->dev); } -static int gc0310_probe(struct i2c_client *client) +static int gc0310_check_hwcfg(struct device *dev) { + struct v4l2_fwnode_endpoint bus_cfg = { + .bus_type = V4L2_MBUS_CSI2_DPHY + }; struct fwnode_handle *ep_fwnode; - struct gc0310_device *sensor; + unsigned long link_freq_bitmap; + u32 mclk; int ret; /* * Sometimes the fwnode graph is initialized by the bridge driver. * Bridge drivers doing this may also add GPIO mappings, wait for this. */ - ep_fwnode = fwnode_graph_get_next_endpoint(dev_fwnode(&client->dev), NULL); + ep_fwnode = fwnode_graph_get_endpoint_by_id(dev_fwnode(dev), 0, 0, 0); if (!ep_fwnode) - return dev_err_probe(&client->dev, -EPROBE_DEFER, "waiting for fwnode graph endpoint\n"); + return dev_err_probe(dev, -EPROBE_DEFER, + "waiting for fwnode graph endpoint\n"); + ret = fwnode_property_read_u32(dev_fwnode(dev), "clock-frequency", + &mclk); + if (ret) { + fwnode_handle_put(ep_fwnode); + return dev_err_probe(dev, ret, + "reading clock-frequency property\n"); + } + + if (mclk != GC0310_MCLK_FREQ) { + fwnode_handle_put(ep_fwnode); + return dev_err_probe(dev, -EINVAL, + "external clock %u is not supported\n", + mclk); + } + + ret = v4l2_fwnode_endpoint_alloc_parse(ep_fwnode, &bus_cfg); fwnode_handle_put(ep_fwnode); + if (ret) + return dev_err_probe(dev, ret, "parsing endpoint failed\n"); + + ret = v4l2_link_freq_to_bitmap(dev, bus_cfg.link_frequencies, + bus_cfg.nr_of_link_frequencies, + link_freq_menu_items, + ARRAY_SIZE(link_freq_menu_items), + &link_freq_bitmap); + + if (ret == 0 && bus_cfg.bus.mipi_csi2.num_data_lanes != 1) + ret = dev_err_probe(dev, -EINVAL, + "number of CSI2 data lanes %u is not supported\n", + bus_cfg.bus.mipi_csi2.num_data_lanes); + + v4l2_fwnode_endpoint_free(&bus_cfg); + return ret; +} + +static int gc0310_probe(struct i2c_client *client) +{ + struct gc0310_device *sensor; + int ret; + + ret = gc0310_check_hwcfg(&client->dev); + if (ret) + return ret; sensor = devm_kzalloc(&client->dev, sizeof(*sensor), GFP_KERNEL); if (!sensor) From patchwork Sat May 17 11:40:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 890960 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 65E601F8725 for ; Sat, 17 May 2025 11:42:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482153; cv=none; b=FfHL672k+6hNx6Rp2gozR5MBDptx3oJiDEWoiKCU7HoHeQH/pBi6oJBaXQoGs1/kObVCQ4DUuOE7U0apoFGIsqM/Ie/9qIZAhEtoRu9yE+iUBoAr6gq9nO04iqI+mJVTkHXWeVHzT6RlorJU2LyZ0JnT8Rirx7/ZqkNk7MW4cQg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482153; c=relaxed/simple; bh=WqZGmpEk3vxwwUIWJwfn1HYSoEqI/BkNDa3C3E2cEkw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Hw0hfsswSTrG+QuLYkQ0jI198Uzust84QNuJRLVSX6wPR5s4fZGsWD3nkeP4bJNWwgdzpa0Gm7MSYNgszBkMHD4q/ofmFBoNzWhbuKHhrBrwQfdSf69Zf8UGy/ghqpj3geJG98gDe7fLZBo5ApwA1wgdUAfC1cTUA4jMsMbINsQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=Hz3dTjWg; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Hz3dTjWg" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747482150; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=TZZqZ5gfyYgjgP5y0/m1L5GU/Z5B/x2lcV+xdaYXqL4=; b=Hz3dTjWgqotvJhjz3VahbQxbUvH8AkEKcBwJFAIHCMkXid7ek+ojECS68aK4aeOxnJpcQS XSDvcvVKmpfx9RSqvqL6vTaLqh38ZxZJ9VtJabFmQ60zZGyFhSh18IBywrFgRHje9NlBjA F5aCFRrr+Oes/6FhRcY7mpDj7y6yg64= Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-303-onfJIfqAO5SKOECpAw3dJA-1; Sat, 17 May 2025 07:42:28 -0400 X-MC-Unique: onfJIfqAO5SKOECpAw3dJA-1 X-Mimecast-MFC-AGG-ID: onfJIfqAO5SKOECpAw3dJA_1747482147 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id BBA5A1800570; Sat, 17 May 2025 11:42:27 +0000 (UTC) Received: from x1.redhat.com (unknown [10.45.224.43]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 2B254180045B; Sat, 17 May 2025 11:42:24 +0000 (UTC) From: Hans de Goede To: Sakari Ailus , Andy Shevchenko Cc: Hans de Goede , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-staging@lists.linux.dev Subject: [PATCH 13/23] media: atomisp: gc0310: Remove unused is_streaming variable Date: Sat, 17 May 2025 13:40:56 +0200 Message-ID: <20250517114106.43494-14-hdegoede@redhat.com> In-Reply-To: <20250517114106.43494-1-hdegoede@redhat.com> References: <20250517114106.43494-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 is_streaming is only set and never read, drop it. Signed-off-by: Hans de Goede --- drivers/staging/media/atomisp/i2c/atomisp-gc0310.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c index 162b81789eca..948579c0373d 100644 --- a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c @@ -88,7 +88,6 @@ struct gc0310_device { struct media_pad pad; /* Protect against concurrent changes to controls */ struct mutex input_lock; - bool is_streaming; struct regmap *regmap; struct gpio_desc *reset; @@ -522,13 +521,11 @@ static int gc0310_s_stream(struct v4l2_subdev *sd, int enable) if (!enable) pm_runtime_put(&client->dev); - sensor->is_streaming = enable; mutex_unlock(&sensor->input_lock); return 0; error_power_down: pm_runtime_put(&client->dev); - sensor->is_streaming = false; mutex_unlock(&sensor->input_lock); return ret; } From patchwork Sat May 17 11:40:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 890959 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 907D21F8BCB for ; Sat, 17 May 2025 11:42:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482162; cv=none; b=r3XFFyh+TwO4nJhX6o/MnH5Ivsr/0e07CUzcpkO3pmHycNCGZre6jAzqhnpJ7MOGIhKOomk9gtSMEcyFonSl6lA8TN9MfaNozVtL20r2T8ensaLz8IXGIGUnaUhevKEWs5S7IrA8Jgc+GmItF9ypEmdvpt2a0F+l09JxrcR2cGU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482162; c=relaxed/simple; bh=JmUPvt561himc+cPtrwfNumti7HrU8kHiOPTW5GWkIU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tpJUj8gIRCGm5OgtfepME/NkRiZSQUnbOEbeSRCSAmxSoyuWuAGeb/wQVLkr5RsrwuHzkHmGguDGoJ2xO9Zk/0L3TwOhR9rWSmhHk/F0R7nBE2iZriJXwxmSF3WKg7MkDUKN7CBWmm6i7pmmipqHBmh3TMkjqc/lfcloKvjhd0M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=DcYp6jVo; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="DcYp6jVo" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747482159; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=F4GSR6FtDxSGEAddPd3LESrIeg1JdpX+26lA7h3FiT4=; b=DcYp6jVo0n3/NER2m28ImI5HOSKjiX3NPN+pa+8so6B03G05j5+xVpJiKiUTNKMaj+s9gH dSp8bgMzYda6Kn3b28CHk29RBOHSTPoZnrpDK4oCD3SR+Xu4nqcV23YjdINmr/aixTbC19 FmCGmhvGtwBGbe9JQ8kR3dvdTbNZ/hI= Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-184-ee8mnVIcOPextX8LuX3Ctw-1; Sat, 17 May 2025 07:42:38 -0400 X-MC-Unique: ee8mnVIcOPextX8LuX3Ctw-1 X-Mimecast-MFC-AGG-ID: ee8mnVIcOPextX8LuX3Ctw_1747482157 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 23DA218003FC; Sat, 17 May 2025 11:42:37 +0000 (UTC) Received: from x1.redhat.com (unknown [10.45.224.43]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6B39518003FC; Sat, 17 May 2025 11:42:33 +0000 (UTC) From: Hans de Goede To: Sakari Ailus , Andy Shevchenko Cc: Hans de Goede , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-staging@lists.linux.dev Subject: [PATCH 15/23] media: atomisp: gc0310: Switch to using the sub-device state lock Date: Sat, 17 May 2025 13:40:58 +0200 Message-ID: <20250517114106.43494-16-hdegoede@redhat.com> In-Reply-To: <20250517114106.43494-1-hdegoede@redhat.com> References: <20250517114106.43494-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 Switch to using the sub-device state lock and properly call v4l2_subdev_init_finalize() / v4l2_subdev_cleanup() on probe() / remove(). Signed-off-by: Hans de Goede --- .../media/atomisp/i2c/atomisp-gc0310.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c index 5d25be0f4cf4..a099f0975e1d 100644 --- a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c @@ -86,8 +86,6 @@ struct gc0310_device { struct v4l2_subdev sd; struct media_pad pad; - /* Protect against concurrent changes to controls */ - struct mutex input_lock; struct regmap *regmap; struct gpio_desc *reset; @@ -481,8 +479,6 @@ static int gc0310_enable_streams(struct v4l2_subdev *sd, struct i2c_client *client = v4l2_get_subdevdata(sd); int ret; - mutex_lock(&sensor->input_lock); - ret = pm_runtime_get_sync(&client->dev); if (ret) goto error_power_down; @@ -516,7 +512,6 @@ static int gc0310_enable_streams(struct v4l2_subdev *sd, if (ret) pm_runtime_put(&client->dev); - mutex_unlock(&sensor->input_lock); return ret; } @@ -528,8 +523,6 @@ static int gc0310_disable_streams(struct v4l2_subdev *sd, struct i2c_client *client = v4l2_get_subdevdata(sd); int ret = 0; - mutex_lock(&sensor->input_lock); - cci_write(sensor->regmap, GC0310_RESET_RELATED_REG, GC0310_REGISTER_PAGE_3, &ret); cci_write(sensor->regmap, GC0310_SW_STREAM_REG, @@ -538,7 +531,6 @@ static int gc0310_disable_streams(struct v4l2_subdev *sd, GC0310_REGISTER_PAGE_0, &ret); pm_runtime_put(&client->dev); - mutex_unlock(&sensor->input_lock); return ret; } @@ -629,7 +621,6 @@ static int gc0310_init_controls(struct gc0310_device *sensor) v4l2_ctrl_handler_init(hdl, 8); /* Use the same lock for controls as for everything else */ - hdl->lock = &sensor->input_lock; sensor->sd.ctrl_handler = hdl; exp_max = GC0310_NATIVE_HEIGHT + GC0310_V_BLANK_DEFAULT; @@ -683,9 +674,9 @@ static void gc0310_remove(struct i2c_client *client) dev_dbg(&client->dev, "gc0310_remove...\n"); v4l2_async_unregister_subdev(sd); + v4l2_subdev_cleanup(sd); media_entity_cleanup(&sensor->sd.entity); v4l2_ctrl_handler_free(&sensor->ctrls.handler); - mutex_destroy(&sensor->input_lock); pm_runtime_disable(&client->dev); } @@ -768,7 +759,6 @@ static int gc0310_probe(struct i2c_client *client) "getting powerdown GPIO\n"); } - mutex_init(&sensor->input_lock); v4l2_i2c_subdev_init(&sensor->sd, client, &gc0310_ops); gc0310_fill_format(&sensor->mode.fmt); @@ -803,6 +793,13 @@ static int gc0310_probe(struct i2c_client *client) return ret; } + sensor->sd.state_lock = sensor->ctrls.handler.lock; + ret = v4l2_subdev_init_finalize(&sensor->sd); + if (ret) { + gc0310_remove(client); + return ret; + } + ret = v4l2_async_register_subdev_sensor(&sensor->sd); if (ret) { gc0310_remove(client); From patchwork Sat May 17 11:41:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 890958 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 B517A1F5834 for ; Sat, 17 May 2025 11:42:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482175; cv=none; b=VEKowcSZw7UllNYDNvJWQo9Jr1z1+A9KPdUJAVW7O31qvyp0HnR4un/HV7yyYObCAaDJVa+Bn7kKkQCageEVDKbKqB4SqbDy9B58/pRtObcWllqQf6kZAi/HBQbhwAIcnFcFESFqqPZm9Na4WGgFZaMp9n/RKZ15ruv/LCZ55l8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482175; c=relaxed/simple; bh=Bwjrj7qYCnhh15bg0hlrNt4dtFfkqIHpQq5Og1RDDnw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iCEOhCsoOXn5OvlEEghrNusAy5NtbZJs/qPO/vztSlibAQZgLH6UUc3HZC8AVsERDE6FDPqVzqPOWj/tPHfY6PEpkbXRX75uROmYlN9hGVRdLgxI1iTqoIaSFNi45gk7xDrmBJVJdFA2SpUuBIcmAJ5tCpi8Hgw5SMp2lATRdf0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=S4X/itzO; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="S4X/itzO" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747482173; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rIMJajLixwd4QF7Tp5+ILmU18vnNryBdxf1XjhLPF70=; b=S4X/itzOdZLldnPvqB2SOTVSCljJQj80Yswgyobx82+YmbNmei1n102XsZlPxq0FmnhvVx jtO3OT0UPVL58V+QdenyKft5Lamgfpz0+P45xbwW03+1vzNtK5EuMXUGtlPobHKHT8fzYv 5WmEETOGH90QlSk+Jj/oXOG1H9ynrzw= Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-413-Z18RjzsoNwGyg9HKYNWb6g-1; Sat, 17 May 2025 07:42:47 -0400 X-MC-Unique: Z18RjzsoNwGyg9HKYNWb6g-1 X-Mimecast-MFC-AGG-ID: Z18RjzsoNwGyg9HKYNWb6g_1747482166 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 717BA18004A7; Sat, 17 May 2025 11:42:46 +0000 (UTC) Received: from x1.redhat.com (unknown [10.45.224.43]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6027E180045B; Sat, 17 May 2025 11:42:42 +0000 (UTC) From: Hans de Goede To: Sakari Ailus , Andy Shevchenko Cc: Hans de Goede , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-staging@lists.linux.dev Subject: [PATCH 17/23] media: atomisp: gc0310: Use v4l2_subdev_get_fmt() as v4l2_subdev_pad_ops.get_fmt() Date: Sat, 17 May 2025 13:41:00 +0200 Message-ID: <20250517114106.43494-18-hdegoede@redhat.com> In-Reply-To: <20250517114106.43494-1-hdegoede@redhat.com> References: <20250517114106.43494-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 Now that the sd-state's fmt is properly initialized by internal_ops.init_state(), the driver can be safely switched to v4l2_subdev_get_fmt(). Signed-off-by: Hans de Goede --- drivers/staging/media/atomisp/i2c/atomisp-gc0310.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c index 7f655285bf62..a9d0afbbe7ef 100644 --- a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c @@ -390,18 +390,6 @@ static int gc0310_set_fmt(struct v4l2_subdev *sd, return 0; } -static int gc0310_get_fmt(struct v4l2_subdev *sd, - struct v4l2_subdev_state *sd_state, - struct v4l2_subdev_format *format) -{ - struct gc0310_device *sensor = to_gc0310_sensor(sd); - struct v4l2_mbus_framefmt *fmt; - - fmt = gc0310_get_pad_format(sensor, sd_state, format->pad, format->which); - format->format = *fmt; - return 0; -} - static int gc0310_get_selection(struct v4l2_subdev *sd, struct v4l2_subdev_state *state, struct v4l2_subdev_selection *sel) @@ -596,7 +584,7 @@ static const struct v4l2_subdev_video_ops gc0310_video_ops = { static const struct v4l2_subdev_pad_ops gc0310_pad_ops = { .enum_mbus_code = gc0310_enum_mbus_code, .enum_frame_size = gc0310_enum_frame_size, - .get_fmt = gc0310_get_fmt, + .get_fmt = v4l2_subdev_get_fmt, .set_fmt = gc0310_set_fmt, .get_selection = gc0310_get_selection, .set_selection = gc0310_set_selection, From patchwork Sat May 17 11:41:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 890957 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 A31031F8ACA for ; Sat, 17 May 2025 11:43:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482186; cv=none; b=li80w9q7+iq7zBSlEtAG2GhLPPGlsmToCqGosPACpZ/a5wjh0gghkEE2n+Hany389JjvnJ5WOxfs2/vlBlv/w9VrnTxlY9ACB0bxAEO6y5XPW37lQwVEWkfV+gc5GNYK62WpvJnRl6VxIkoqtROJzPz9moUp71Od6jeXURx0A+E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482186; c=relaxed/simple; bh=Uo1NbIe2rVo/tMnsMhmSJefmiidzCKqLWgwf6epA0YI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LCaHkhKaxiDEUWQTgLab6zvjBkz6r9UDYPpVSskTnNKG5uOBKIfrN5pAkcV9Ir9K3jlajhFkx3dEV8/hH37MMnpVG4YU/H5mS19FoSfHkh7fC9adeXHkXWWtTVWsIMCEAjhp3p9ai5HUPgljEliD5AY43hqPR7Kt8vwFRRORdrA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=fQEOK1XC; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="fQEOK1XC" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747482183; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gf3S86fEkFcj7atUEt6E90ECcJDpWZD+FLQw+yK5qVI=; b=fQEOK1XCjHAMfkz/1a35ZcOwcCeyuvVcDfrTMWcjtsCworFfmbSYMiTejH+Q8YegALJ6ds te+Do0Rc228w+Nzr/dgxK6fHEzNG1I26KhDbb4nKxJOL7Yn6NdhrZzUmmWfJtL/iFuoAVR 5XeFoBIVNQ6NGk35OUlmwzcSOyx6oZs= Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-99-hDG4P0zEOcy4z-kGPSHgaw-1; Sat, 17 May 2025 07:43:02 -0400 X-MC-Unique: hDG4P0zEOcy4z-kGPSHgaw-1 X-Mimecast-MFC-AGG-ID: hDG4P0zEOcy4z-kGPSHgaw_1747482181 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1BE9C1956096; Sat, 17 May 2025 11:43:01 +0000 (UTC) Received: from x1.redhat.com (unknown [10.45.224.43]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id CD27418003FC; Sat, 17 May 2025 11:42:57 +0000 (UTC) From: Hans de Goede To: Sakari Ailus , Andy Shevchenko Cc: Hans de Goede , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-staging@lists.linux.dev Subject: [PATCH 19/23] media: atomisp: gc0310: Move and rename suspend/resume functions Date: Sat, 17 May 2025 13:41:02 +0200 Message-ID: <20250517114106.43494-20-hdegoede@redhat.com> In-Reply-To: <20250517114106.43494-1-hdegoede@redhat.com> References: <20250517114106.43494-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 Move the suspend()/resume() functions to above gc0310_detect() and rename the functions to power_off()/power_on(). No functional changes, this is a preparation patch for reworking the runtime-pm handling in probe() and remove(). Signed-off-by: Hans de Goede --- .../media/atomisp/i2c/atomisp-gc0310.c | 51 ++++++++++--------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c index 5936e25fb8c7..9532114d6139 100644 --- a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c @@ -398,6 +398,30 @@ static int gc0310_set_selection(struct v4l2_subdev *sd, return 0; } +static int gc0310_power_off(struct device *dev) +{ + struct v4l2_subdev *sd = dev_get_drvdata(dev); + struct gc0310_device *sensor = to_gc0310_sensor(sd); + + gpiod_set_value_cansleep(sensor->powerdown, 1); + gpiod_set_value_cansleep(sensor->reset, 1); + return 0; +} + +static int gc0310_power_on(struct device *dev) +{ + struct v4l2_subdev *sd = dev_get_drvdata(dev); + struct gc0310_device *sensor = to_gc0310_sensor(sd); + + fsleep(10000); + gpiod_set_value_cansleep(sensor->reset, 0); + fsleep(10000); + gpiod_set_value_cansleep(sensor->powerdown, 0); + fsleep(10000); + + return 0; +} + static int gc0310_detect(struct gc0310_device *sensor) { struct i2c_client *client = v4l2_get_subdevdata(&sensor->sd); @@ -779,31 +803,8 @@ static int gc0310_probe(struct i2c_client *client) return 0; } -static int gc0310_suspend(struct device *dev) -{ - struct v4l2_subdev *sd = dev_get_drvdata(dev); - struct gc0310_device *sensor = to_gc0310_sensor(sd); - - gpiod_set_value_cansleep(sensor->powerdown, 1); - gpiod_set_value_cansleep(sensor->reset, 1); - return 0; -} - -static int gc0310_resume(struct device *dev) -{ - struct v4l2_subdev *sd = dev_get_drvdata(dev); - struct gc0310_device *sensor = to_gc0310_sensor(sd); - - fsleep(10000); - gpiod_set_value_cansleep(sensor->reset, 0); - fsleep(10000); - gpiod_set_value_cansleep(sensor->powerdown, 0); - fsleep(10000); - - return 0; -} - -static DEFINE_RUNTIME_DEV_PM_OPS(gc0310_pm_ops, gc0310_suspend, gc0310_resume, NULL); +static DEFINE_RUNTIME_DEV_PM_OPS(gc0310_pm_ops, gc0310_power_off, + gc0310_power_on, NULL); static const struct acpi_device_id gc0310_acpi_match[] = { {"INT0310"}, From patchwork Sat May 17 11:41:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 890956 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 5C0871F8725 for ; Sat, 17 May 2025 11:43:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482197; cv=none; b=JCsv8I1ofafJt3UshQMbDs3JXuJLz79soNn2WacvNoIVYLAthBICxsblXn5TfrEFuf9bAPhzvSfQzAAwsuOBvTBXJvHmOZoAQGFFQBLFOLUHhSutYqYWCqgvkJ7kDMhxj64P+Qmm30JlvKRkxEifQfB5TStVLm2zXq7rarnNoA4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482197; c=relaxed/simple; bh=ZJGL0muPWqnauXLIPFAYVtvlCCUe4QZI+RbxavIbA7c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=piIfRCVRKL7jBybWo9Csijv9KjLvfxenWC4pF01EU92ApL100LramOc/3d9exFHIcbPOB+Wl3x7tyOlY2f8rt9ETLOGw9TVBuynSi+e30dGTousP3HBiHRElzSWxsDvkOfR1YIp47peuIbZS4V4t2F8O+xTNS2RKsI7uv2Qf/cY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=BPLWz4vN; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="BPLWz4vN" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747482195; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mDO/TmKNQR3jCwP33V3psrrzDK+VkoWi4epaJB4JJ9c=; b=BPLWz4vN/SsCZXQrFl3jc52axQly5b8M+DD/mPfNz9ybnw/trovqHIz/vVsQYX+1YaNmIp fcJRySiXsZeipOGqqR0IIiQT/gOD1TAbHpbNvhcj74W6Yimgc8wNnUOvPq1q314rAHCdfD /Fo16kI807HXerHwhi7zwniV2XUm4pQ= Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-617-CwEWZjifNNO2yJ973AkXgw-1; Sat, 17 May 2025 07:43:12 -0400 X-MC-Unique: CwEWZjifNNO2yJ973AkXgw-1 X-Mimecast-MFC-AGG-ID: CwEWZjifNNO2yJ973AkXgw_1747482191 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 4368B195608E; Sat, 17 May 2025 11:43:11 +0000 (UTC) Received: from x1.redhat.com (unknown [10.45.224.43]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6C3AD18003FC; Sat, 17 May 2025 11:43:06 +0000 (UTC) From: Hans de Goede To: Sakari Ailus , Andy Shevchenko Cc: Hans de Goede , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-staging@lists.linux.dev Subject: [PATCH 21/23] media: atomisp: gc0310: Drop gc0310_get_frame_interval() Date: Sat, 17 May 2025 13:41:04 +0200 Message-ID: <20250517114106.43494-22-hdegoede@redhat.com> In-Reply-To: <20250517114106.43494-1-hdegoede@redhat.com> References: <20250517114106.43494-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 On raw camera sensors the framerate is controlled through vblank (and optional) hblank controls. Having a get_frame_interval makes no sense in this case, drop it. Signed-off-by: Hans de Goede Reviewed-by: Kieran Bingham --- .../staging/media/atomisp/i2c/atomisp-gc0310.c | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c index 152835fa4226..73779c20ca68 100644 --- a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c +++ b/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c @@ -513,23 +513,6 @@ static int gc0310_disable_streams(struct v4l2_subdev *sd, return ret; } -static int gc0310_get_frame_interval(struct v4l2_subdev *sd, - struct v4l2_subdev_state *sd_state, - struct v4l2_subdev_frame_interval *interval) -{ - /* - * FIXME: Implement support for V4L2_SUBDEV_FORMAT_TRY, using the V4L2 - * subdev active state API. - */ - if (interval->which != V4L2_SUBDEV_FORMAT_ACTIVE) - return -EINVAL; - - interval->interval.numerator = 1; - interval->interval.denominator = GC0310_FPS; - - return 0; -} - static int gc0310_enum_mbus_code(struct v4l2_subdev *sd, struct v4l2_subdev_state *sd_state, struct v4l2_subdev_mbus_code_enum *code) @@ -579,7 +562,6 @@ static const struct v4l2_subdev_pad_ops gc0310_pad_ops = { .set_fmt = v4l2_subdev_get_fmt, /* Only 1 fixed mode supported */ .get_selection = gc0310_get_selection, .set_selection = gc0310_set_selection, - .get_frame_interval = gc0310_get_frame_interval, .enable_streams = gc0310_enable_streams, .disable_streams = gc0310_disable_streams, }; From patchwork Sat May 17 11:41:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 890955 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 B261E1F8725 for ; Sat, 17 May 2025 11:43:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482208; cv=none; b=bg/sSaQ4zUyyMIAv5wekbW+toortFA5dO/UqobtMXw7EB+C+I1DMt6BxvkNms30hsevKQIqJcmGI08zFOO+VIsh6ykzFtISNdHMbacqMiEpacJQJUoN6ZBCS4UHe25iBZ74gGfjIX47ttEDaWWebK04QWJ2X7u3XeqkVHgwG4WY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747482208; c=relaxed/simple; bh=THLwXoOgLDd9wnrQQCSeUCTUq2Z3AORPxae7EyvzTEY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KI6qCuOFBRT+vBDOontkV18+Wl6Skul6kAv7fUHtvj+OvzGHUm9mrhpuWzuc4sA7y6Q27EDgXsOL+5v0OyALIRYJxsxv72kGdiY0KOYpGr5xqspt1cWOvFX492PQiwVL/q3+KA5wKwbd/GThF2O/YGkjWts/nKrlZjRaOR4UkbE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=WZVQohNd; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="WZVQohNd" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747482205; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XjCDQy6h9xDMmBhLCAE6eWX7GA2oOa+aYh/ywEQ20as=; b=WZVQohNd42ckSmzQAMp7sNk5Ik3O0fE8Mom/7sAsGBr+Tls8OWycPFyUP8PustaEI59mHr E8gDmUJoD6HjiHvHNIcgNevFx7LLeyiNEM0Im5GRsVr2vq7E69Mz5c9swc/R4vvBJ/uBiW HimYZAUWzNLzyZH7Y63s7PDWZddQ9Is= Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-260-hp3dmKehORy4vmGjCtUxrQ-1; Sat, 17 May 2025 07:43:22 -0400 X-MC-Unique: hp3dmKehORy4vmGjCtUxrQ-1 X-Mimecast-MFC-AGG-ID: hp3dmKehORy4vmGjCtUxrQ_1747482200 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C2397180034E; Sat, 17 May 2025 11:43:20 +0000 (UTC) Received: from x1.redhat.com (unknown [10.45.224.43]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 0DCC818003FC; Sat, 17 May 2025 11:43:16 +0000 (UTC) From: Hans de Goede To: Sakari Ailus , Andy Shevchenko Cc: Hans de Goede , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-staging@lists.linux.dev Subject: [PATCH 23/23] media: Move gc0310 sensor drivers to drivers/media/i2c/ Date: Sat, 17 May 2025 13:41:06 +0200 Message-ID: <20250517114106.43494-24-hdegoede@redhat.com> In-Reply-To: <20250517114106.43494-1-hdegoede@redhat.com> References: <20250517114106.43494-1-hdegoede@redhat.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 The atomisp gc0310 sensor driver has now been fully converted to a standard v4l2 sensor driver. Move it to drivers/media/i2c/ to reflect this. Signed-off-by: Hans de Goede --- MAINTAINERS | 6 ++++++ drivers/media/i2c/Kconfig | 10 ++++++++++ drivers/media/i2c/Makefile | 1 + .../i2c/atomisp-gc0310.c => media/i2c/gc0310.c} | 0 drivers/staging/media/atomisp/i2c/Kconfig | 9 --------- drivers/staging/media/atomisp/i2c/Makefile | 1 - 6 files changed, 17 insertions(+), 10 deletions(-) rename drivers/{staging/media/atomisp/i2c/atomisp-gc0310.c => media/i2c/gc0310.c} (100%) diff --git a/MAINTAINERS b/MAINTAINERS index 43a3d9afbb76..445120c55ad7 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -9800,6 +9800,12 @@ S: Maintained F: Documentation/devicetree/bindings/media/i2c/galaxycore,gc0308.yaml F: drivers/media/i2c/gc0308.c +GALAXYCORE GC0310 CAMERA SENSOR DRIVER +M: Hans de Goede +L: linux-media@vger.kernel.org +S: Maintained +F: drivers/media/i2c/gc0310.c + GALAXYCORE GC05a2 CAMERA SENSOR DRIVER M: Zhi Mao L: linux-media@vger.kernel.org diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig index b213cf27d4ea..bdfa41770090 100644 --- a/drivers/media/i2c/Kconfig +++ b/drivers/media/i2c/Kconfig @@ -70,6 +70,16 @@ config VIDEO_GC0308 To compile this driver as a module, choose M here: the module will be called gc0308. +config VIDEO_GC0310 + tristate "GalaxyCore GC0310 sensor support" + select V4L2_CCI_I2C + help + This is a Video4Linux2 sensor-level driver for the Galaxycore + GC0310 0.3MP sensor. + + To compile this driver as a module, choose M here: the + module will be called gc0310. + config VIDEO_GC05A2 tristate "GalaxyCore gc05a2 sensor support" select V4L2_CCI_I2C diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile index 92c1c69b346b..01e9f7259289 100644 --- a/drivers/media/i2c/Makefile +++ b/drivers/media/i2c/Makefile @@ -39,6 +39,7 @@ obj-$(CONFIG_VIDEO_DW9768) += dw9768.o obj-$(CONFIG_VIDEO_DW9807_VCM) += dw9807-vcm.o obj-$(CONFIG_VIDEO_ET8EK8) += et8ek8/ obj-$(CONFIG_VIDEO_GC0308) += gc0308.o +obj-$(CONFIG_VIDEO_GC0310) += gc0310.o obj-$(CONFIG_VIDEO_GC05A2) += gc05a2.o obj-$(CONFIG_VIDEO_GC08A3) += gc08a3.o obj-$(CONFIG_VIDEO_GC2145) += gc2145.o diff --git a/drivers/staging/media/atomisp/i2c/atomisp-gc0310.c b/drivers/media/i2c/gc0310.c similarity index 100% rename from drivers/staging/media/atomisp/i2c/atomisp-gc0310.c rename to drivers/media/i2c/gc0310.c diff --git a/drivers/staging/media/atomisp/i2c/Kconfig b/drivers/staging/media/atomisp/i2c/Kconfig index ef2094c22347..7d447ba7a7e1 100644 --- a/drivers/staging/media/atomisp/i2c/Kconfig +++ b/drivers/staging/media/atomisp/i2c/Kconfig @@ -26,12 +26,3 @@ config VIDEO_ATOMISP_GC2235 GC2235 is a 2M raw sensor. It currently only works with the atomisp driver. - -config VIDEO_ATOMISP_GC0310 - tristate "GC0310 sensor support" - depends on ACPI - depends on I2C && VIDEO_DEV - select V4L2_CCI_I2C - help - This is a Video4Linux2 sensor-level driver for the Galaxycore - GC0310 0.3MP sensor. diff --git a/drivers/staging/media/atomisp/i2c/Makefile b/drivers/staging/media/atomisp/i2c/Makefile index e1637417e5c5..161aa542ef34 100644 --- a/drivers/staging/media/atomisp/i2c/Makefile +++ b/drivers/staging/media/atomisp/i2c/Makefile @@ -5,4 +5,3 @@ obj-$(CONFIG_VIDEO_ATOMISP_GC2235) += atomisp-gc2235.o obj-$(CONFIG_VIDEO_ATOMISP_OV2722) += atomisp-ov2722.o -obj-$(CONFIG_VIDEO_ATOMISP_GC0310) += atomisp-gc0310.o