From patchwork Wed Dec 13 16:00:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Akinobu Mita X-Patchwork-Id: 10110369 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 6E55160327 for ; Wed, 13 Dec 2017 16:01:11 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5312328CD3 for ; Wed, 13 Dec 2017 16:01:11 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3ECC1292D9; Wed, 13 Dec 2017 16:01:11 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A4BA328CD3 for ; Wed, 13 Dec 2017 16:01:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753493AbdLMQBJ (ORCPT ); Wed, 13 Dec 2017 11:01:09 -0500 Received: from mail-pl0-f68.google.com ([209.85.160.68]:34851 "EHLO mail-pl0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753041AbdLMQBI (ORCPT ); Wed, 13 Dec 2017 11:01:08 -0500 Received: by mail-pl0-f68.google.com with SMTP id b96so1234112pli.2 for ; Wed, 13 Dec 2017 08:01:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=eZ3Orb6ut/oxWMBxKXFJtgG2YxB70h94vR9421Pnrrg=; b=Oche2fqHVPMlGQXelzbmJSaH8zOw5v/2s49bBqjD1bjfd2rPfYQTMOF+7cFA+TYpG3 jIMdgj82D7jLYmY/KrWnWz1nHPHFgaRyBzuDUkwPxi93Oyfp4puzFoyYToGbbs6ZptFl fHrQJRuSwfU79RwzuBVc9CUCFV8LcWPmV66SyPGj1XbkOYwZukAXsjj3AzpYXd6iBMp8 NbXGIlHXg54xr0o1pUbsPk6TmWymUvfr0+Lcas67fnYOujEcf7UTcHINLbgCLdB9KzP+ wHvlp6XnyC+Jdfdh8tJq/Lrv2Y2GatPoIiJC9mhSgGaOfdZhUECRNoDlNeLVQKtsnoDN lCpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=eZ3Orb6ut/oxWMBxKXFJtgG2YxB70h94vR9421Pnrrg=; b=Ny9ILlhwAOvn3mCNUVq75586QscDaPv8OFDHzdx68SBTumDUP44X/AtnWdhOj/UDaq GVvYU2nqG8nps3SLdkfuCCEbd7WpUeSKdKXKC27xMmPONVu4ITJ83Dk9l7kGwPaxltRc O481LmbAtNPdRKZi4foCDMJDdO1B7enPaf7J/7lPn4kNUvm7tfoRtsCkmQ/PoycVTqeU ehuiOpdXz3gIwPIIzmq97n5wSefhBhUlBib9WBaULPckVrmjKdd627oTeBvkY1SGSF8P fCbrKNEFFDc5cjy6JM/n0NQv8Gw6XyndIicBgxDIRa8GVSZY9FZJD3630nWaWqqKrNTq 2HYA== X-Gm-Message-State: AKGB3mIIJwThlh5EM5Ry9r4JKOOj3L0WsxkvLGzyAU4eUNjQuRbpa1zi wCSjarJFQuUjp5y3c3flXBmFcQ== X-Google-Smtp-Source: ACJfBou6e/6LkIsLhl3skjx8YNEXJ/z1RCG/l2g1lFXHcE9cb3eps/YgP9k2IWVWUBXKacA6mfQn7Q== X-Received: by 10.84.171.129 with SMTP id l1mr6254037plb.438.1513180868401; Wed, 13 Dec 2017 08:01:08 -0800 (PST) Received: from localhost.localdomain ([240f:4:c2bc:1:d9e6:2d90:20e1:69a]) by smtp.gmail.com with ESMTPSA id i11sm3946734pfk.25.2017.12.13.08.01.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 13 Dec 2017 08:01:06 -0800 (PST) From: Akinobu Mita To: linux-media@vger.kernel.org Cc: Akinobu Mita , Sylwester Nawrocki , Sakari Ailus , Mauro Carvalho Chehab Subject: [PATCH] media: ov9650: support VIDIOC_DBG_G/S_REGISTER ioctls Date: Thu, 14 Dec 2017 01:00:49 +0900 Message-Id: <1513180849-7913-1-git-send-email-akinobu.mita@gmail.com> X-Mailer: git-send-email 2.7.4 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This adds support VIDIOC_DBG_G/S_REGISTER ioctls. There are many device control registers contained in the OV9650. So this helps debugging the lower level issues by getting and setting the registers. Cc: Sylwester Nawrocki Cc: Sakari Ailus Cc: Mauro Carvalho Chehab Signed-off-by: Akinobu Mita Acked-by: Hans Verkuil --- drivers/media/i2c/ov9650.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/drivers/media/i2c/ov9650.c b/drivers/media/i2c/ov9650.c index 69433e1..c6462cf 100644 --- a/drivers/media/i2c/ov9650.c +++ b/drivers/media/i2c/ov9650.c @@ -1374,6 +1374,38 @@ static int ov965x_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) return 0; } +#ifdef CONFIG_VIDEO_ADV_DEBUG + +static int ov965x_g_register(struct v4l2_subdev *sd, + struct v4l2_dbg_register *reg) +{ + struct i2c_client *client = v4l2_get_subdevdata(sd); + u8 val = 0; + int ret; + + if (reg->reg > 0xff) + return -EINVAL; + + ret = ov965x_read(client, reg->reg, &val); + reg->val = val; + reg->size = 1; + + return ret; +} + +static int ov965x_s_register(struct v4l2_subdev *sd, + const struct v4l2_dbg_register *reg) +{ + struct i2c_client *client = v4l2_get_subdevdata(sd); + + if (reg->reg > 0xff || reg->val > 0xff) + return -EINVAL; + + return ov965x_write(client, reg->reg, reg->val); +} + +#endif + static const struct v4l2_subdev_pad_ops ov965x_pad_ops = { .enum_mbus_code = ov965x_enum_mbus_code, .enum_frame_size = ov965x_enum_frame_sizes, @@ -1397,6 +1429,10 @@ static const struct v4l2_subdev_core_ops ov965x_core_ops = { .log_status = v4l2_ctrl_subdev_log_status, .subscribe_event = v4l2_ctrl_subdev_subscribe_event, .unsubscribe_event = v4l2_event_subdev_unsubscribe, +#ifdef CONFIG_VIDEO_ADV_DEBUG + .g_register = ov965x_g_register, + .s_register = ov965x_s_register, +#endif }; static const struct v4l2_subdev_ops ov965x_subdev_ops = {