Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751551AbbHGIqe (ORCPT ); Fri, 7 Aug 2015 04:46:34 -0400 Received: from mail-yk0-f178.google.com ([209.85.160.178]:33487 "EHLO mail-yk0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750913AbbHGIqc (ORCPT ); Fri, 7 Aug 2015 04:46:32 -0400 MIME-Version: 1.0 In-Reply-To: <20150807054554.GE13200@shlinux2> References: <8fcb9ff7a8e01bec53813f0702ff606bf4982943.1438844454.git.baolin.wang@linaro.org> <20150807054554.GE13200@shlinux2> Date: Fri, 7 Aug 2015 16:46:31 +0800 Message-ID: Subject: Re: [PATCH 2/2] gadget: Support for the usb charger framework From: Baolin Wang To: Peter Chen Cc: Felipe Balbi , Mark Brown , LKML , Greg KH , sojka@merica.cz, Alan Stern , andreas@gaisler.com, linux-usb@vger.kernel.org, device-mainlining@lists.linuxfoundation.org Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2192 Lines: 64 On 7 August 2015 at 13:45, Peter Chen wrote: > On Thu, Aug 06, 2015 at 03:03:49PM +0800, Baolin Wang wrote: >> The usb charger framework is based on usb gadget, and each usb gadget >> can be one usb charger to set the current limitation. >> >> This patch adds a notifier mechanism for usb charger to report to usb >> charger when the usb gadget state is changed. >> >> Also we introduce a callback 'get_charger_type' which will implemented >> by user for usb gadget operations to get the usb charger type. >> >> Signed-off-by: Baolin Wang >> --- >> drivers/usb/gadget/udc/udc-core.c | 41 +++++++++++++++++++++++++++++++++++++ >> include/linux/usb/gadget.h | 20 ++++++++++++++++++ >> 2 files changed, 61 insertions(+) >> >> diff --git a/drivers/usb/gadget/udc/udc-core.c b/drivers/usb/gadget/udc/udc-core.c >> index d69c355..d5368088 100644 >> --- a/drivers/usb/gadget/udc/udc-core.c >> +++ b/drivers/usb/gadget/udc/udc-core.c >> @@ -28,6 +28,7 @@ >> #include >> #include >> #include >> +#include >> >> /** >> * struct usb_udc - describes one usb device controller >> @@ -127,12 +128,45 @@ void usb_gadget_giveback_request(struct usb_ep *ep, >> } >> EXPORT_SYMBOL_GPL(usb_gadget_giveback_request); >> >> +int usb_gadget_register_notify(struct usb_gadget *gadget, >> + struct notifier_block *nb) >> +{ >> + unsigned long flags; >> + int ret; >> + >> + spin_lock_irqsave(&gadget->lock, flags); > > I find you use so many spin_lock_irqsave, any reasons for that? > Why mutex_lock can't be used? > The spin_lock_irqsave() can make it as a atomic notifier, that can make sure the gadget state event can be quickly reported to the user who register a notifier on the gadget device. Is it OK? > -- > > Best Regards, > Peter Chen -- Baolin.wang Best Regards -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/