Received: by 2002:a25:824b:0:0:0:0:0 with SMTP id d11csp4933928ybn; Sat, 28 Sep 2019 10:03:15 -0700 (PDT) X-Google-Smtp-Source: APXvYqyFF7AFJN4K15vMgKCOX/zjC65pe8err2eQZ2TayORSW0wCNpIXnbQOhYpYPEVLTCZRk226 X-Received: by 2002:a17:907:441d:: with SMTP id om21mr12987648ejb.188.1569690195363; Sat, 28 Sep 2019 10:03:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1569690195; cv=none; d=google.com; s=arc-20160816; b=UXbtiK4PboVqU8Na1txLYCcCI9OVadbhLK4zhnulglui/yw0+nl1tU91+E9mShw1BO UvjV2yzveYeYQKSYPvH2DM+r1aFPnozt+/ZV1nWGbHQiLML9nDKDrpFuY9Omy9ozm7s7 Pg2OxdDvT6PFw8iKEfiQovcND8LbIy+6Uz25fkI9pzmrHmPfLfworH8MjNvMO9fxjPPT BTk8dy+2LAZqPDXLPoC1EI8iw9MiPqggLAaf518lRY1HxiMgH0n9nLTVmgIUddadMgzn 0YHbRwUOwkWxAuJvXvWfdPSpBH/e3IzHQ6zPmnOCCiLH6AyqniQUoncH/BU0riAEmmom t+FQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=nsn5RNui/wYoQeLsfCsdYPJc8RIh0LlvrJMCZy9B00U=; b=N8GvCG+T7220qaQ9vWscPGbA4yE7dEUkLJljyMux9NPlqx4r5HtB8fldTJBdZiJOW9 5hYFtNFuoX8o7PzZmTii9VYiS8Fm2pWWSDt1a3CgVzrgveNfYCxNH+FBUMq4Vczh81lD wwPj/6Yxscysys9rKIF/4EMBT5dRREtnSPdUuuXnjxIlSvQ5OfbJMdVfYHsN+5HWAtiZ uXmdrZMB4kvl6Ux4y7cqxDwCgPDpwcs/k+MCXGZv1zka2lTUhOWtqo6i4izPxmpIY2lI PHr+QDZNVmWDZPns67KIjsJE96Xw1yHLA7prqBnqFBUQrPUfhkTah0Lp7/RkcTCQp9ly KMYA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=AcntU8Zi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e22si4494498ejx.107.2019.09.28.10.02.25; Sat, 28 Sep 2019 10:03:15 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=AcntU8Zi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728573AbfI1RCV (ORCPT + 99 others); Sat, 28 Sep 2019 13:02:21 -0400 Received: from mail-io1-f68.google.com ([209.85.166.68]:35567 "EHLO mail-io1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725965AbfI1RCV (ORCPT ); Sat, 28 Sep 2019 13:02:21 -0400 Received: by mail-io1-f68.google.com with SMTP id q10so26165414iop.2; Sat, 28 Sep 2019 10:02:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=nsn5RNui/wYoQeLsfCsdYPJc8RIh0LlvrJMCZy9B00U=; b=AcntU8ZiAQ7bhWMrePguPrbeqSmlkWHtPFCGV5GGeHxVP7OF0XMOx3YBUxQu4410Ck euWaL9/ELTgVTlcfgLurn1uJaTjayTnlY77IP9s8yKgrkjSsREsXaroSb/3lDg1DITbB cvO94OIBuuwFAQZkTdynxtpS/GSNaLqQcUkIBIPkWI/Un1U+6QWhsisd166twxDl3oae AhtuQGT7EfGInKE8qbjsB/YAU5pYh1kMhS+NEYsghYQqbq/QuntqkZJDZCbix7qHU4+5 /SKFLMaavoPrR1x+ZpIjvjBsLU1HHmZPzPny1HLmlbjpQiT7P6xOJwRYaoQ9NxMvaL9g OdrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=nsn5RNui/wYoQeLsfCsdYPJc8RIh0LlvrJMCZy9B00U=; b=JerFAoBwWxIlB+lGkR+fVEz+HslfDe0tZCbMx0JHcZKbOXdRfnG4I2rVm+Mny4XUs4 0SXBFDsWHzkcbd/Xp9igNN+25ZVVWWnQG01FaQR9JKjW8k5MHFgOdeGpXpD03+j/l+95 64wb9RQX0SBOH968UilJfMyMakBbu+yOAiyDKly8up4FgqdJjUVb5nIkG9lf7pXIg2Tj e5H+/ndYKd9mboR+dz96DTtiw+cliGEBfb/5nRqog+bsQb3d1CnmTc0TcuTeQGoKWPke WMdkEdqAsPFqdl4l1Xf/W6sbzbFGAa+eTbnRkVCbXi66ATkSCWPryD0kTrAV3xlfJDG2 fgDg== X-Gm-Message-State: APjAAAWxPmCd1Jpu2BnDotfJ5KwjFjPsEEYATy2NDkzrY66iCU6n6ds5 7Bzuw8j9sRk8uKjgJGHtJ7q1ep2E+c2zHeyoK+g= X-Received: by 2002:a92:d206:: with SMTP id y6mr11816566ily.208.1569690140551; Sat, 28 Sep 2019 10:02:20 -0700 (PDT) MIME-Version: 1.0 References: <20190915184419.32184-1-lucmaga@gmail.com> In-Reply-To: From: =?UTF-8?Q?Lucas_Magalh=C3=A3es?= Date: Sat, 28 Sep 2019 14:02:09 -0300 Message-ID: Subject: Re: [PATCH v2] media: vimc: fla: Add virtual flash subdevice To: Hans Verkuil Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Helen Koike , edusbarretto@gmail.com, lkcamp@lists.libreplanetbr.org Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Hans, Thanks for the review. Sorry about the style mistakes, will be careful next time. Just a couple of questions. On Fri, Sep 20, 2019 at 8:32 AM Hans Verkuil wrote: > > > +static int vimc_fla_s_ctrl(struct v4l2_ctrl *c) > > +{ > > + > > + struct vimc_fla_device *vfla = > > + container_of(c->handler, struct vimc_fla_device, hdl); > > + > > + switch (c->id) { > > + case V4L2_CID_FLASH_LED_MODE: > > + vfla->led_mode = c->val; > > + return 0; > > + case V4L2_CID_FLASH_STROBE_SOURCE: > > + vfla->strobe_source = c->val; > > + return 0; > > + case V4L2_CID_FLASH_STROBE: > > + if (vfla->led_mode != V4L2_FLASH_LED_MODE_FLASH || > > + vfla->strobe_source != V4L2_FLASH_STROBE_SOURCE_SOFTWARE){ > > + return -EILSEQ; > > + } > > + vfla->is_strobe = true; > > + vfla->kthread = kthread_run(vimc_fla_strobe_thread, vfla, "vimc-flash thread"); > > What if the thread is already running? > > I wonder what existing flash drivers do if V4L2_CID_FLASH_STROBE is called > repeatedly. Perhaps returning EBUSY if strobe is still active makes sense here. > > It would also be a nice feature if keeping the strobe on for more than X seconds > would create a V4L2_FLASH_FAULT_LED_OVER_TEMPERATURE fault. > How would you expect this? At this point I will never cross the maximum timeout configured. I don't expect a driver to fail if I set a value within the configuration borders. > > + v4l2_ctrl_new_std_menu(&vfla->hdl, &vimc_fla_ctrl_ops, > > + V4L2_CID_FLASH_LED_MODE, > > + V4L2_FLASH_LED_MODE_TORCH, ~0x7, > > + V4L2_FLASH_LED_MODE_NONE); > > + v4l2_ctrl_new_std_menu(&vfla->hdl, &vimc_fla_ctrl_ops, > > + V4L2_CID_FLASH_STROBE_SOURCE, 0x1, ~0x3, > > + V4L2_FLASH_STROBE_SOURCE_SOFTWARE); > > + v4l2_ctrl_new_std(&vfla->hdl, &vimc_fla_ctrl_ops, > > + V4L2_CID_FLASH_STROBE, 0, 0, 0, 0); > > + v4l2_ctrl_new_std(&vfla->hdl, &vimc_fla_ctrl_ops, > > + V4L2_CID_FLASH_STROBE_STOP, 0, 0, 0, 0); > > + v4l2_ctrl_new_std(&vfla->hdl, &vimc_fla_ctrl_ops, > > + V4L2_CID_FLASH_TIMEOUT, 0, > > + VIMC_FLASH_TIMEOUT_MAX, > > + VIMC_FLASH_TIMEOUT_STEP, > > + VIMC_FLASH_TIMEOUT_STEP); > > + v4l2_ctrl_new_std(&vfla->hdl, &vimc_fla_ctrl_ops, > > + V4L2_CID_FLASH_TORCH_INTENSITY, 0, 255, 1, 255); > > + v4l2_ctrl_new_std(&vfla->hdl, &vimc_fla_ctrl_ops, > > + V4L2_CID_FLASH_INTENSITY, 0, 255, 1, 255); > > + v4l2_ctrl_new_std(&vfla->hdl, &vimc_fla_ctrl_ops,V4L2_CID_FLASH_INDICATOR_INTENSITY > > + V4L2_CID_FLASH_INDICATOR_INTENSITY, 0, 255, 1, 255); > > Can you look at existing flash drivers and copy the min/max/step/def values? > > The values here are rather arbitrary. It would be nice if it was a bit more > realistic. I didn't found any driver implementing V4L2_CID_FLASH_INDICATOR_INTENSITY. Do you have any examples for this? For the other ones I'm copying the lm3646 for the other ones. Regards, Lucas