From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1762096AbcLSAKz (ORCPT ); Sun, 18 Dec 2016 19:10:55 -0500 Received: from mx1.redhat.com ([209.132.183.28]:43490 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752605AbcLSAHj (ORCPT ); Sun, 18 Dec 2016 19:07:39 -0500 From: Hans de Goede To: Sebastian Reichel , Chen-Yu Tsai , MyungJoo Ham , Chanwoo Choi Cc: "russianneuromancer @ ya . ru" , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Hans de Goede Subject: [PATCH 02/14] extcon: Make extcon_register_notifier use extcon_get_extcon_dev_by_cable_id Date: Mon, 19 Dec 2016 01:07:19 +0100 Message-Id: <20161219000731.10188-3-hdegoede@redhat.com> In-Reply-To: <20161219000731.10188-1-hdegoede@redhat.com> References: <20161219000731.10188-1-hdegoede@redhat.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Mon, 19 Dec 2016 00:07:39 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Implement extcon_register_notifier's support for a NULL edev argument using the new extcon_get_extcon_dev_by_cable_id function. Signed-off-by: Hans de Goede --- drivers/extcon/extcon.c | 35 +++++++++++------------------------ 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/drivers/extcon/extcon.c b/drivers/extcon/extcon.c index 505c272..2816187 100644 --- a/drivers/extcon/extcon.c +++ b/drivers/extcon/extcon.c @@ -933,32 +933,19 @@ int extcon_register_notifier(struct extcon_dev *edev, unsigned int id, if (!nb) return -EINVAL; - if (edev) { - idx = find_cable_index_by_id(edev, id); - if (idx < 0) - return idx; + if (!edev) { + edev = extcon_get_extcon_dev_by_cable_id(id); + if (!edev) + return -ENODEV; + } - spin_lock_irqsave(&edev->lock, flags); - ret = raw_notifier_chain_register(&edev->nh[idx], nb); - spin_unlock_irqrestore(&edev->lock, flags); - } else { - struct extcon_dev *extd; - - mutex_lock(&extcon_dev_list_lock); - list_for_each_entry(extd, &extcon_dev_list, entry) { - idx = find_cable_index_by_id(extd, id); - if (idx >= 0) - break; - } - mutex_unlock(&extcon_dev_list_lock); + idx = find_cable_index_by_id(edev, id); + if (idx < 0) + return idx; - if (idx >= 0) { - edev = extd; - return extcon_register_notifier(extd, id, nb); - } else { - ret = -ENODEV; - } - } + spin_lock_irqsave(&edev->lock, flags); + ret = raw_notifier_chain_register(&edev->nh[idx], nb); + spin_unlock_irqrestore(&edev->lock, flags); return ret; } -- 2.9.3