From patchwork Thu Oct 29 14:45:24 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Neil Armstrong X-Patchwork-Id: 537898 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 4AB2B1402D8 for ; Fri, 30 Oct 2015 01:47:02 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=baylibre_com.20150623.gappssmtp.com header.i=@baylibre_com.20150623.gappssmtp.com header.b=VsFOQzJZ; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757435AbbJ2Opd (ORCPT ); Thu, 29 Oct 2015 10:45:33 -0400 Received: from mail-wi0-f173.google.com ([209.85.212.173]:37817 "EHLO mail-wi0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756989AbbJ2Opb (ORCPT ); Thu, 29 Oct 2015 10:45:31 -0400 Received: by wicfv8 with SMTP id fv8so45241445wic.0 for ; Thu, 29 Oct 2015 07:45:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre_com.20150623.gappssmtp.com; s=20150623; h=from:subject:to:cc:organization:message-id:date:user-agent :mime-version:content-type:content-transfer-encoding; bh=tG8fb/cJuHimBL16t/rb43ihB6pd7mF70YnmZMLtCcI=; b=VsFOQzJZW0RA4tTU6xBzHr9uCMcZJ44xYqTf7dEUTOgCAbhARMrha6FTw37GXcgaga YjqJomUhC1tPsgJQ3yHwb7fryEnxHConpCCrtefi3SWoINCjznhKZ0L76l15DX5MyX7x Sm9mmwmmg4YsHFaQEGiEYWUfECvSCo5Gk4SHeycUTiINAEqqGX/z4IU2bLaDWhqNfQtW P+lcekrf5HgGQtxXXaUpTxH/E9L+1wErtyDl8WU9E6Se0YW5ekdtrxVI7jmynI0JCDJb hJGA9NgRSlydMNp7k0pBjBlBUiTpYQkCq2ONS9ey9bRyy6rB4uknbsF6PNzWN1ofVaFC SptA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:subject:to:cc:organization:message-id:date :user-agent:mime-version:content-type:content-transfer-encoding; bh=tG8fb/cJuHimBL16t/rb43ihB6pd7mF70YnmZMLtCcI=; b=G954i9uMbXxeqe7ujQAXIwkbNVAW2jjclU2JqRaZx5Eq5cWOfNjHfRvGSR9dID3GvI wYNaWVg3KBKBVVgSkwD2ECWw+7yfaldGT7tHulU7q8RaI3624m9wgr/FA7RwUyjmVRcS mlx+GLQOlgXSK3Esijw9ZzrjrD9bJWQwmRy4nHtlqiYjkUOepQnN05E52BKb2ZYHNYDB jpFggqWSLaoRZEMQ4a3NZyEHw0rICgK+A6pakA9/6gSOfZOZZGfSgMYScHWIo2Gt9E8e 3qn9HM1j3yAFp6ftUN6N9Z4iherpibqm49w61fKjw6wlPm2mKy8D7UWaEG6N9i1NKBJQ VaSQ== X-Gm-Message-State: ALoCoQmh/eA/s+tQpQ+tUvpVHGIDHdQYiq1o5lQsKkbjp6E15EBwToalAJ0Wk+rNl+a+FLpjGhTl X-Received: by 10.195.12.39 with SMTP id en7mr2625085wjd.126.1446129929779; Thu, 29 Oct 2015 07:45:29 -0700 (PDT) Received: from [192.168.2.52] (cag06-6-78-235-100-105.fbx.proxad.net. [78.235.100.105]) by smtp.gmail.com with ESMTPSA id lb2sm2159077wjc.15.2015.10.29.07.45.28 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 29 Oct 2015 07:45:29 -0700 (PDT) From: Neil Armstrong Subject: [RFC PATCH v3 1/5] net: dsa: allow switch drivers to cleanup their resources To: "David S. Miller" Cc: Andrew Lunn , Florian Fainelli , Guenter Roeck , vivien.didelot@savoirfairelinux.com, Fabian Frederick , Pavel Nakonechny , Joe Perches , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Organization: Baylibre Message-ID: <56323104.2030606@baylibre.com> Date: Thu, 29 Oct 2015 15:45:24 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Some switch drivers might request interrupts, remap register ranges, allow such drivers to implement a "remove" callback doing just that. Signed-off-by: Florian Fainelli Signed-off-by: Neil Armstrong --- include/net/dsa.h | 1 + net/dsa/dsa.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/include/net/dsa.h b/include/net/dsa.h index 98ccbde..0e1502c 100644 --- a/include/net/dsa.h +++ b/include/net/dsa.h @@ -212,6 +212,7 @@ struct dsa_switch_driver { */ char *(*probe)(struct device *host_dev, int sw_addr); int (*setup)(struct dsa_switch *ds); + void (*remove)(struct dsa_switch *ds); int (*set_addr)(struct dsa_switch *ds, u8 *addr); u32 (*get_phy_flags)(struct dsa_switch *ds, int port); diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c index 1eba07f..f462fc5 100644 --- a/net/dsa/dsa.c +++ b/net/dsa/dsa.c @@ -459,6 +459,10 @@ static void dsa_switch_destroy(struct dsa_switch *ds) } mdiobus_unregister(ds->slave_mii_bus); + + /* Leave a chance to the driver to cleanup */ + if (ds->drv->remove) + ds->drv->remove(ds); } #ifdef CONFIG_PM_SLEEP