All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vinod Koul <vkoul@kernel.org>
To: Mathias Nyman <mathias.nyman@intel.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-arm-msm@vger.kernel.org,
	"Bjorn Andersson" <bjorn.andersson@linaro.org>,
	"Vinod Koul" <vkoul@kernel.org>,
	"Yoshihiro Shimoda" <yoshihiro.shimoda.uh@renesas.com>,
	"Christian Lamparter" <chunkeey@googlemail.com>,
	"John Stultz" <john.stultz@linaro.org>,
	"Alan Stern" <stern@rowland.harvard.edu>,
	"Andreas Böhler" <dev@aboehler.at>,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH v13 5/5] usb: xhci: provide a debugfs hook for erasing rom
Date: Wed,  6 May 2020 11:30:25 +0530	[thread overview]
Message-ID: <20200506060025.1535960-6-vkoul@kernel.org> (raw)
In-Reply-To: <20200506060025.1535960-1-vkoul@kernel.org>

run "echo 1 > /sys/kernel/debug/renesas-usb/rom_erase" to erase
firmware when driver is loaded.

Subsequent init of driver shall reload the firmware

Signed-off-by: Vinod Koul <vkoul@kernel.org>
---
 drivers/usb/host/xhci-pci-renesas.c | 33 +++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/drivers/usb/host/xhci-pci-renesas.c b/drivers/usb/host/xhci-pci-renesas.c
index f7d2445d30ec..fa32ec352dc8 100644
--- a/drivers/usb/host/xhci-pci-renesas.c
+++ b/drivers/usb/host/xhci-pci-renesas.c
@@ -2,6 +2,7 @@
 /* Copyright (C) 2019-2020 Linaro Limited */
 
 #include <linux/acpi.h>
+#include <linux/debugfs.h>
 #include <linux/firmware.h>
 #include <linux/module.h>
 #include <linux/pci.h>
@@ -170,6 +171,8 @@ static int renesas_fw_verify(const void *fw_data,
 	return 0;
 }
 
+static void debugfs_init(struct pci_dev *pdev);
+
 static bool renesas_check_rom(struct pci_dev *pdev)
 {
 	u16 rom_status;
@@ -183,6 +186,7 @@ static bool renesas_check_rom(struct pci_dev *pdev)
 	rom_status &= RENESAS_ROM_STATUS_ROM_EXISTS;
 	if (rom_status) {
 		dev_dbg(&pdev->dev, "External ROM exists\n");
+		debugfs_init(pdev);
 		return true; /* External ROM exists */
 	}
 
@@ -449,6 +453,34 @@ static void renesas_rom_erase(struct pci_dev *pdev)
 	dev_dbg(&pdev->dev, "ROM Erase... Done success\n");
 }
 
+static int debugfs_rom_erase(void *data, u64 value)
+{
+	struct pci_dev *pdev = data;
+
+	if (value == 1) {
+		dev_dbg(&pdev->dev, "Userspace requested ROM erase\n");
+		renesas_rom_erase(pdev);
+		return 0;
+	}
+	return -EINVAL;
+}
+DEFINE_DEBUGFS_ATTRIBUTE(rom_erase_ops, NULL, debugfs_rom_erase, "%llu\n");
+
+static struct dentry *debugfs_root;
+
+static void debugfs_init(struct pci_dev *pdev)
+{
+	debugfs_root = debugfs_create_dir("renesas_usb", NULL);
+
+	debugfs_create_file("rom_erase", 0200, debugfs_root,
+			    pdev, &rom_erase_ops);
+}
+
+static void debugfs_exit(void)
+{
+	debugfs_remove_recursive(debugfs_root);
+}
+
 static bool renesas_setup_rom(struct pci_dev *pdev, const struct firmware *fw)
 {
 	const u32 *fw_data = (const u32 *)fw->data;
@@ -639,6 +671,7 @@ EXPORT_SYMBOL_GPL(renesas_xhci_check_request_fw);
 
 void renesas_xhci_pci_exit(struct pci_dev *dev)
 {
+	debugfs_exit();
 }
 EXPORT_SYMBOL_GPL(renesas_xhci_pci_exit);
 
-- 
2.25.4


  parent reply	other threads:[~2020-05-06  6:01 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-06  6:00 [PATCH v13 0/5] usb: xhci: Add support for Renesas USB controllers Vinod Koul
2020-05-06  6:00 ` [PATCH v13 1/5] usb: hci: add hc_driver as argument for usb_hcd_pci_probe Vinod Koul
2020-05-06  6:00 ` [PATCH v13 2/5] usb: renesas-xhci: Add the renesas xhci driver Vinod Koul
2020-05-19 11:45   ` Heikki Krogerus
2020-05-19 12:01     ` Vinod Koul
2020-05-19 12:51       ` Heikki Krogerus
2020-05-19 20:19     ` Christian Lamparter
2020-05-20 13:27       ` Heikki Krogerus
2020-05-06  6:00 ` [PATCH v13 3/5] usb: xhci: Add support for Renesas controller with memory Vinod Koul
2020-05-18 17:53   ` Anders Roxell
2020-05-18 19:57     ` Vinod Koul
2020-05-18 22:37       ` Anders Roxell
2020-05-19  4:53         ` Vinod Koul
2020-05-19  7:44           ` Arnd Bergmann
2020-05-19 12:42             ` Vinod Koul
2020-05-18 22:42       ` Bjorn Andersson
2020-05-06  6:00 ` [PATCH v13 4/5] usb: renesas-xhci: Add ROM loader for uPD720201 Vinod Koul
2020-05-06  6:00 ` Vinod Koul [this message]
2020-05-13 12:36   ` [PATCH v13 5/5] usb: xhci: provide a debugfs hook for erasing rom Mathias Nyman
2020-05-13 12:45     ` Greg Kroah-Hartman
2020-05-14  9:24       ` Greg Kroah-Hartman
2020-05-14 11:26         ` Vinod Koul
2020-05-14 11:46           ` Greg Kroah-Hartman
2020-05-14 12:15             ` Vinod Koul
2020-05-13 12:19 ` [PATCH v13 0/5] usb: xhci: Add support for Renesas USB controllers Mathias Nyman
2020-05-13 12:40   ` Greg Kroah-Hartman
2020-05-13 12:51     ` Mathias Nyman
2020-05-13 12:52       ` Greg Kroah-Hartman
2020-05-13 12:57         ` Vinod Koul

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=20200506060025.1535960-6-vkoul@kernel.org \
    --to=vkoul@kernel.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=chunkeey@googlemail.com \
    --cc=dev@aboehler.at \
    --cc=gregkh@linuxfoundation.org \
    --cc=john.stultz@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@intel.com \
    --cc=stern@rowland.harvard.edu \
    --cc=yoshihiro.shimoda.uh@renesas.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: link
Be 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.