From: Manikanta Maddireddy <mmaddireddy@nvidia.com> To: thierry.reding@gmail.com, jonathanh@nvidia.com, robh+dt@kernel.org, frowand.list@gmail.com, bhelgaas@google.com, rjw@rjwysocki.net, tglx@linutronix.de Cc: vidyas@nvidia.com, kthota@nvidia.com, linux-tegra@vger.kernel.org, devicetree@vger.kernel.org, linux-pci@vger.kernel.org, linux-pm@vger.kernel.org, Manikanta Maddireddy <mmaddireddy@nvidia.com> Subject: [PATCH V2 7/9] PCI: tegra: Add loadable kernel module support Date: Sun, 26 Nov 2017 01:02:11 +0530 [thread overview] Message-ID: <1511638333-22951-8-git-send-email-mmaddireddy@nvidia.com> (raw) In-Reply-To: <1511638333-22951-1-git-send-email-mmaddireddy@nvidia.com> Implement remove callback function for Tegra PCIe driver to add loadable kernel module support. Change PCI_TEGRA config to tristate to allow pci-tegra driver to be build as a module. Signed-off-by: Manikanta Maddireddy <mmaddireddy@nvidia.com> --- V2: * no change in this patch drivers/pci/host/Kconfig | 2 +- drivers/pci/host/pci-tegra.c | 31 ++++++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig index 38d12980db0f..6fd2a5937804 100644 --- a/drivers/pci/host/Kconfig +++ b/drivers/pci/host/Kconfig @@ -34,7 +34,7 @@ config PCI_FTPCI100 default ARCH_GEMINI config PCI_TEGRA - bool "NVIDIA Tegra PCIe controller" + tristate "NVIDIA Tegra PCIe controller" depends on ARCH_TEGRA help Say Y here if you want support for the PCIe host controller found diff --git a/drivers/pci/host/pci-tegra.c b/drivers/pci/host/pci-tegra.c index 7f7b8c9c1e84..bbc2807bcd4a 100644 --- a/drivers/pci/host/pci-tegra.c +++ b/drivers/pci/host/pci-tegra.c @@ -35,6 +35,7 @@ #include <linux/irqdomain.h> #include <linux/kernel.h> #include <linux/init.h> +#include <linux/module.h> #include <linux/msi.h> #include <linux/of_address.h> #include <linux/of_pci.h> @@ -2720,6 +2721,12 @@ static int tegra_pcie_debugfs_init(struct tegra_pcie *pcie) return -ENOMEM; } +static void tegra_pcie_debugfs_exit(struct tegra_pcie *pcie) +{ + debugfs_remove_recursive(pcie->debugfs); + pcie->debugfs = NULL; +} + static int tegra_pcie_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -2734,6 +2741,7 @@ static int tegra_pcie_probe(struct platform_device *pdev) return -ENOMEM; pcie = pci_host_bridge_priv(host); + platform_set_drvdata(pdev, pcie); pcie->soc = of_device_get_match_data(dev); INIT_LIST_HEAD(&pcie->buses); @@ -2816,6 +2824,25 @@ static int tegra_pcie_probe(struct platform_device *pdev) return err; } +static int tegra_pcie_remove(struct platform_device *pdev) +{ + struct tegra_pcie *pcie = platform_get_drvdata(pdev); + struct pci_host_bridge *host = pci_host_bridge_from_priv(pcie); + + if (IS_ENABLED(CONFIG_DEBUG_FS)) + tegra_pcie_debugfs_exit(pcie); + pci_stop_root_bus(host->bus); + pci_remove_root_bus(host->bus); + if (IS_ENABLED(CONFIG_PCI_MSI)) + tegra_pcie_disable_msi(pcie); + tegra_pcie_disable_ports(pcie); + tegra_pcie_free_resources(pcie); + tegra_pcie_disable_controller(pcie); + tegra_pcie_put_resources(pcie); + + return 0; +} + static struct platform_driver tegra_pcie_driver = { .driver = { .name = "tegra-pcie", @@ -2823,5 +2850,7 @@ static struct platform_driver tegra_pcie_driver = { .suppress_bind_attrs = true, }, .probe = tegra_pcie_probe, + .remove = tegra_pcie_remove, }; -builtin_platform_driver(tegra_pcie_driver); +module_platform_driver(tegra_pcie_driver); +MODULE_LICENSE("GPL"); -- 2.1.4
WARNING: multiple messages have this Message-ID (diff)
From: Manikanta Maddireddy <mmaddireddy@nvidia.com> To: <thierry.reding@gmail.com>, <jonathanh@nvidia.com>, <robh+dt@kernel.org>, <frowand.list@gmail.com>, <bhelgaas@google.com>, <rjw@rjwysocki.net>, <tglx@linutronix.de> Cc: <vidyas@nvidia.com>, <kthota@nvidia.com>, <linux-tegra@vger.kernel.org>, <devicetree@vger.kernel.org>, <linux-pci@vger.kernel.org>, <linux-pm@vger.kernel.org>, Manikanta Maddireddy <mmaddireddy@nvidia.com> Subject: [PATCH V2 7/9] PCI: tegra: Add loadable kernel module support Date: Sun, 26 Nov 2017 01:02:11 +0530 [thread overview] Message-ID: <1511638333-22951-8-git-send-email-mmaddireddy@nvidia.com> (raw) In-Reply-To: <1511638333-22951-1-git-send-email-mmaddireddy@nvidia.com> Implement remove callback function for Tegra PCIe driver to add loadable kernel module support. Change PCI_TEGRA config to tristate to allow pci-tegra driver to be build as a module. Signed-off-by: Manikanta Maddireddy <mmaddireddy@nvidia.com> --- V2: * no change in this patch drivers/pci/host/Kconfig | 2 +- drivers/pci/host/pci-tegra.c | 31 ++++++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig index 38d12980db0f..6fd2a5937804 100644 --- a/drivers/pci/host/Kconfig +++ b/drivers/pci/host/Kconfig @@ -34,7 +34,7 @@ config PCI_FTPCI100 default ARCH_GEMINI config PCI_TEGRA - bool "NVIDIA Tegra PCIe controller" + tristate "NVIDIA Tegra PCIe controller" depends on ARCH_TEGRA help Say Y here if you want support for the PCIe host controller found diff --git a/drivers/pci/host/pci-tegra.c b/drivers/pci/host/pci-tegra.c index 7f7b8c9c1e84..bbc2807bcd4a 100644 --- a/drivers/pci/host/pci-tegra.c +++ b/drivers/pci/host/pci-tegra.c @@ -35,6 +35,7 @@ #include <linux/irqdomain.h> #include <linux/kernel.h> #include <linux/init.h> +#include <linux/module.h> #include <linux/msi.h> #include <linux/of_address.h> #include <linux/of_pci.h> @@ -2720,6 +2721,12 @@ static int tegra_pcie_debugfs_init(struct tegra_pcie *pcie) return -ENOMEM; } +static void tegra_pcie_debugfs_exit(struct tegra_pcie *pcie) +{ + debugfs_remove_recursive(pcie->debugfs); + pcie->debugfs = NULL; +} + static int tegra_pcie_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -2734,6 +2741,7 @@ static int tegra_pcie_probe(struct platform_device *pdev) return -ENOMEM; pcie = pci_host_bridge_priv(host); + platform_set_drvdata(pdev, pcie); pcie->soc = of_device_get_match_data(dev); INIT_LIST_HEAD(&pcie->buses); @@ -2816,6 +2824,25 @@ static int tegra_pcie_probe(struct platform_device *pdev) return err; } +static int tegra_pcie_remove(struct platform_device *pdev) +{ + struct tegra_pcie *pcie = platform_get_drvdata(pdev); + struct pci_host_bridge *host = pci_host_bridge_from_priv(pcie); + + if (IS_ENABLED(CONFIG_DEBUG_FS)) + tegra_pcie_debugfs_exit(pcie); + pci_stop_root_bus(host->bus); + pci_remove_root_bus(host->bus); + if (IS_ENABLED(CONFIG_PCI_MSI)) + tegra_pcie_disable_msi(pcie); + tegra_pcie_disable_ports(pcie); + tegra_pcie_free_resources(pcie); + tegra_pcie_disable_controller(pcie); + tegra_pcie_put_resources(pcie); + + return 0; +} + static struct platform_driver tegra_pcie_driver = { .driver = { .name = "tegra-pcie", @@ -2823,5 +2850,7 @@ static struct platform_driver tegra_pcie_driver = { .suppress_bind_attrs = true, }, .probe = tegra_pcie_probe, + .remove = tegra_pcie_remove, }; -builtin_platform_driver(tegra_pcie_driver); +module_platform_driver(tegra_pcie_driver); +MODULE_LICENSE("GPL"); -- 2.1.4
next prev parent reply other threads:[~2017-11-25 19:32 UTC|newest] Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-11-25 19:32 [PATCH V2 0/9] Add loadable kernel module and power management support Manikanta Maddireddy 2017-11-25 19:32 ` Manikanta Maddireddy 2017-11-25 19:32 ` [PATCH V2 3/9] ARM: tegra: Export tegra_cpuidle_pcie_irqs_in_use() Manikanta Maddireddy 2017-11-25 19:32 ` Manikanta Maddireddy [not found] ` <1511638333-22951-1-git-send-email-mmaddireddy-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2017-11-25 19:32 ` [PATCH V2 1/9] genirq: Export irq_set_msi_desc() Manikanta Maddireddy 2017-11-25 19:32 ` Manikanta Maddireddy 2017-11-25 19:32 ` [PATCH V2 2/9] of: Export of_pci_range_to_resource() Manikanta Maddireddy 2017-11-25 19:32 ` Manikanta Maddireddy [not found] ` <1511638333-22951-3-git-send-email-mmaddireddy-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2017-11-26 22:31 ` Rob Herring 2017-11-26 22:31 ` Rob Herring 2017-11-25 19:32 ` [PATCH V2 4/9] PCI: Export pci_find_host_bridge() Manikanta Maddireddy 2017-11-25 19:32 ` Manikanta Maddireddy 2017-11-29 17:35 ` Christoph Hellwig 2017-11-25 19:32 ` [PATCH V2 5/9] PCI: Export pci_flags Manikanta Maddireddy 2017-11-25 19:32 ` Manikanta Maddireddy 2017-11-29 17:01 ` Bjorn Helgaas [not found] ` <20171129170133.GC6469-1RhO1Y9PlrlHTL0Zs8A6p5iNqAH0jzoTYJqu5kTmcBRl57MIdRCFDg@public.gmane.org> 2017-11-30 10:24 ` Lorenzo Pieralisi 2017-11-30 10:24 ` Lorenzo Pieralisi 2017-11-30 18:42 ` Bjorn Helgaas 2017-11-30 18:42 ` Bjorn Helgaas 2017-11-30 19:38 ` Manikanta Maddireddy 2017-11-30 19:38 ` Manikanta Maddireddy 2017-11-25 19:32 ` [PATCH V2 6/9] PCI: tegra: free resources on probe failure Manikanta Maddireddy 2017-11-25 19:32 ` Manikanta Maddireddy 2017-11-29 11:59 ` Mikko Perttunen 2017-11-29 17:02 ` Bjorn Helgaas 2017-11-25 19:32 ` Manikanta Maddireddy [this message] 2017-11-25 19:32 ` [PATCH V2 7/9] PCI: tegra: Add loadable kernel module support Manikanta Maddireddy [not found] ` <1511638333-22951-8-git-send-email-mmaddireddy-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2017-11-29 12:01 ` Mikko Perttunen 2017-11-29 12:01 ` Mikko Perttunen 2017-11-30 18:39 ` Manikanta Maddireddy 2017-11-30 18:39 ` Manikanta Maddireddy 2017-11-25 19:32 ` [PATCH V2 8/9] PCI: tegra: Broadcast PME_turn_Off message before link goes to L2 Manikanta Maddireddy 2017-11-25 19:32 ` Manikanta Maddireddy 2017-11-29 12:18 ` Mikko Perttunen 2017-12-01 8:51 ` Mikko Perttunen [not found] ` <1511638333-22951-9-git-send-email-mmaddireddy-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2017-11-29 16:51 ` Bjorn Helgaas 2017-11-29 16:51 ` Bjorn Helgaas 2017-11-30 18:43 ` Manikanta Maddireddy 2017-11-30 18:43 ` Manikanta Maddireddy 2017-11-25 19:32 ` [PATCH V2 9/9] PCI: tegra: Add power management support Manikanta Maddireddy 2017-11-25 19:32 ` Manikanta Maddireddy
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1511638333-22951-8-git-send-email-mmaddireddy@nvidia.com \ --to=mmaddireddy@nvidia.com \ --cc=bhelgaas@google.com \ --cc=devicetree@vger.kernel.org \ --cc=frowand.list@gmail.com \ --cc=jonathanh@nvidia.com \ --cc=kthota@nvidia.com \ --cc=linux-pci@vger.kernel.org \ --cc=linux-pm@vger.kernel.org \ --cc=linux-tegra@vger.kernel.org \ --cc=rjw@rjwysocki.net \ --cc=robh+dt@kernel.org \ --cc=tglx@linutronix.de \ --cc=thierry.reding@gmail.com \ --cc=vidyas@nvidia.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.