All of lore.kernel.org
 help / color / mirror / Atom feed
From: Krzysztof Kozlowski <k.kozlowski@samsung.com>
To: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-samsung-soc@vger.kernel.org, linux-mmc@vger.kernel.org,
	linux-pm@vger.kernel.org, linux-usb@vger.kernel.org,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Sebastian Reichel <sre@kernel.org>,
	Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Mark Brown <broonie@kernel.org>
Cc: tjakobi@math.uni-bielefeld.de, m.szyprowski@samsung.com,
	hverkuil@xs4all.nl, Krzysztof Kozlowski <k.kozlowski@samsung.com>,
	Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Subject: [RFC v2 11/13] usb: port: Parse pwrseq phandle from Device Tree
Date: Thu, 05 May 2016 14:34:24 +0200	[thread overview]
Message-ID: <1462451666-17945-12-git-send-email-k.kozlowski@samsung.com> (raw)
In-Reply-To: <1462451666-17945-1-git-send-email-k.kozlowski@samsung.com>

Parse usb-pwrseq property from Device Tree to get the phandle to pwrseq
device. The pwrseq device will be used by USB hub to cycle the power
before activating ports.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
---
 drivers/usb/core/hub.h  |  3 +++
 drivers/usb/core/port.c | 15 +++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h
index 34c1a7e22aae..68ca89780d26 100644
--- a/drivers/usb/core/hub.h
+++ b/drivers/usb/core/hub.h
@@ -24,6 +24,8 @@
 #include <linux/usb/hcd.h>
 #include "usb.h"
 
+struct pwrseq;
+
 struct usb_hub {
 	struct device		*intfdev;	/* the "interface" device */
 	struct usb_device	*hdev;
@@ -101,6 +103,7 @@ struct usb_port {
 	struct usb_dev_state *port_owner;
 	struct usb_port *peer;
 	struct dev_pm_qos_request *req;
+	struct pwrseq *pwrseq;
 	enum usb_port_connect_type connect_type;
 	usb_port_location_t location;
 	struct mutex status_lock;
diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c
index 14718a9ffcfb..a875bd342452 100644
--- a/drivers/usb/core/port.c
+++ b/drivers/usb/core/port.c
@@ -18,6 +18,8 @@
 
 #include <linux/slab.h>
 #include <linux/pm_qos.h>
+#include <linux/pwrseq.h>
+#include <linux/usb/of.h>
 
 #include "hub.h"
 
@@ -532,6 +534,14 @@ int usb_hub_create_port_device(struct usb_hub *hub, int port1)
 		return retval;
 	}
 
+	port_dev->dev.of_node = usb_of_get_child_node(hub->hdev->dev.of_node, port1);
+	port_dev->pwrseq = pwrseq_alloc(&port_dev->dev);
+	if (IS_ERR(port_dev->pwrseq)) {
+		device_unregister(&port_dev->dev);
+		/* TODO: what about EPROBE_DEFER? */
+		return PTR_ERR(port_dev->pwrseq);
+	}
+
 	find_and_link_peer(hub, port1);
 
 	/*
@@ -573,8 +583,13 @@ void usb_hub_remove_port_device(struct usb_hub *hub, int port1)
 	struct usb_port *port_dev = hub->ports[port1 - 1];
 	struct usb_port *peer;
 
+	pwrseq_power_off(port_dev->pwrseq);
+
 	peer = port_dev->peer;
 	if (peer)
 		unlink_peers(port_dev, peer);
+
+	pwrseq_free(port_dev->pwrseq);
+	port_dev->pwrseq = NULL;
 	device_unregister(&port_dev->dev);
 }
-- 
1.9.1

WARNING: multiple messages have this Message-ID (diff)
From: Krzysztof Kozlowski <k.kozlowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
To: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-mmc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Ulf Hansson <ulf.hansson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Sebastian Reichel <sre-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Dmitry Eremin-Solenikov
	<dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	David Woodhouse <dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
	Greg Kroah-Hartman
	<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
	Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: tjakobi-o02PS0xoJP9W0yFyLvAVXMxlOr/tl8fh@public.gmane.org,
	m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	hverkuil-qWit8jRvyhVmR6Xm/wNWPw@public.gmane.org,
	Krzysztof Kozlowski
	<k.kozlowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
	Bartlomiej Zolnierkiewicz
	<b.zolnierkie-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
Subject: [RFC v2 11/13] usb: port: Parse pwrseq phandle from Device Tree
Date: Thu, 05 May 2016 14:34:24 +0200	[thread overview]
Message-ID: <1462451666-17945-12-git-send-email-k.kozlowski@samsung.com> (raw)
In-Reply-To: <1462451666-17945-1-git-send-email-k.kozlowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>

Parse usb-pwrseq property from Device Tree to get the phandle to pwrseq
device. The pwrseq device will be used by USB hub to cycle the power
before activating ports.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
---
 drivers/usb/core/hub.h  |  3 +++
 drivers/usb/core/port.c | 15 +++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h
index 34c1a7e22aae..68ca89780d26 100644
--- a/drivers/usb/core/hub.h
+++ b/drivers/usb/core/hub.h
@@ -24,6 +24,8 @@
 #include <linux/usb/hcd.h>
 #include "usb.h"
 
+struct pwrseq;
+
 struct usb_hub {
 	struct device		*intfdev;	/* the "interface" device */
 	struct usb_device	*hdev;
@@ -101,6 +103,7 @@ struct usb_port {
 	struct usb_dev_state *port_owner;
 	struct usb_port *peer;
 	struct dev_pm_qos_request *req;
+	struct pwrseq *pwrseq;
 	enum usb_port_connect_type connect_type;
 	usb_port_location_t location;
 	struct mutex status_lock;
diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c
index 14718a9ffcfb..a875bd342452 100644
--- a/drivers/usb/core/port.c
+++ b/drivers/usb/core/port.c
@@ -18,6 +18,8 @@
 
 #include <linux/slab.h>
 #include <linux/pm_qos.h>
+#include <linux/pwrseq.h>
+#include <linux/usb/of.h>
 
 #include "hub.h"
 
@@ -532,6 +534,14 @@ int usb_hub_create_port_device(struct usb_hub *hub, int port1)
 		return retval;
 	}
 
+	port_dev->dev.of_node = usb_of_get_child_node(hub->hdev->dev.of_node, port1);
+	port_dev->pwrseq = pwrseq_alloc(&port_dev->dev);
+	if (IS_ERR(port_dev->pwrseq)) {
+		device_unregister(&port_dev->dev);
+		/* TODO: what about EPROBE_DEFER? */
+		return PTR_ERR(port_dev->pwrseq);
+	}
+
 	find_and_link_peer(hub, port1);
 
 	/*
@@ -573,8 +583,13 @@ void usb_hub_remove_port_device(struct usb_hub *hub, int port1)
 	struct usb_port *port_dev = hub->ports[port1 - 1];
 	struct usb_port *peer;
 
+	pwrseq_power_off(port_dev->pwrseq);
+
 	peer = port_dev->peer;
 	if (peer)
 		unlink_peers(port_dev, peer);
+
+	pwrseq_free(port_dev->pwrseq);
+	port_dev->pwrseq = NULL;
 	device_unregister(&port_dev->dev);
 }
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: k.kozlowski@samsung.com (Krzysztof Kozlowski)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC v2 11/13] usb: port: Parse pwrseq phandle from Device Tree
Date: Thu, 05 May 2016 14:34:24 +0200	[thread overview]
Message-ID: <1462451666-17945-12-git-send-email-k.kozlowski@samsung.com> (raw)
In-Reply-To: <1462451666-17945-1-git-send-email-k.kozlowski@samsung.com>

Parse usb-pwrseq property from Device Tree to get the phandle to pwrseq
device. The pwrseq device will be used by USB hub to cycle the power
before activating ports.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
---
 drivers/usb/core/hub.h  |  3 +++
 drivers/usb/core/port.c | 15 +++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h
index 34c1a7e22aae..68ca89780d26 100644
--- a/drivers/usb/core/hub.h
+++ b/drivers/usb/core/hub.h
@@ -24,6 +24,8 @@
 #include <linux/usb/hcd.h>
 #include "usb.h"
 
+struct pwrseq;
+
 struct usb_hub {
 	struct device		*intfdev;	/* the "interface" device */
 	struct usb_device	*hdev;
@@ -101,6 +103,7 @@ struct usb_port {
 	struct usb_dev_state *port_owner;
 	struct usb_port *peer;
 	struct dev_pm_qos_request *req;
+	struct pwrseq *pwrseq;
 	enum usb_port_connect_type connect_type;
 	usb_port_location_t location;
 	struct mutex status_lock;
diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c
index 14718a9ffcfb..a875bd342452 100644
--- a/drivers/usb/core/port.c
+++ b/drivers/usb/core/port.c
@@ -18,6 +18,8 @@
 
 #include <linux/slab.h>
 #include <linux/pm_qos.h>
+#include <linux/pwrseq.h>
+#include <linux/usb/of.h>
 
 #include "hub.h"
 
@@ -532,6 +534,14 @@ int usb_hub_create_port_device(struct usb_hub *hub, int port1)
 		return retval;
 	}
 
+	port_dev->dev.of_node = usb_of_get_child_node(hub->hdev->dev.of_node, port1);
+	port_dev->pwrseq = pwrseq_alloc(&port_dev->dev);
+	if (IS_ERR(port_dev->pwrseq)) {
+		device_unregister(&port_dev->dev);
+		/* TODO: what about EPROBE_DEFER? */
+		return PTR_ERR(port_dev->pwrseq);
+	}
+
 	find_and_link_peer(hub, port1);
 
 	/*
@@ -573,8 +583,13 @@ void usb_hub_remove_port_device(struct usb_hub *hub, int port1)
 	struct usb_port *port_dev = hub->ports[port1 - 1];
 	struct usb_port *peer;
 
+	pwrseq_power_off(port_dev->pwrseq);
+
 	peer = port_dev->peer;
 	if (peer)
 		unlink_peers(port_dev, peer);
+
+	pwrseq_free(port_dev->pwrseq);
+	port_dev->pwrseq = NULL;
 	device_unregister(&port_dev->dev);
 }
-- 
1.9.1

  parent reply	other threads:[~2016-05-05 12:35 UTC|newest]

Thread overview: 124+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-05 12:34 [RFC v2 00/13] usb/mmc/power: Fix USB/LAN when TFTP booting Krzysztof Kozlowski
2016-05-05 12:34 ` Krzysztof Kozlowski
2016-05-05 12:34 ` Krzysztof Kozlowski
2016-05-05 12:34 ` [RFC v2 01/13] usb: misc: usb3503: Clean up on driver unbind Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 18:32   ` Javier Martinez Canillas
2016-05-05 18:32     ` Javier Martinez Canillas
2016-05-06  6:13     ` Krzysztof Kozlowski
2016-05-06  6:13       ` Krzysztof Kozlowski
2016-05-05 12:34 ` [RFC v2 02/13] power/mmc: Move pwrseq drivers to power/pwrseq Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 18:44   ` Javier Martinez Canillas
2016-05-05 18:44     ` Javier Martinez Canillas
2016-05-06  6:15     ` Krzysztof Kozlowski
2016-05-06  6:15       ` Krzysztof Kozlowski
2016-05-05 12:34 ` [RFC v2 03/13] MAINTAINERS: Retain Ulf Hansson as the same maintainer of pwrseq Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 18:46   ` Javier Martinez Canillas
2016-05-05 18:46     ` Javier Martinez Canillas
2016-05-05 12:34 ` [RFC v2 04/13] power: pwrseq: Enable COMPILE_TEST for drivers Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 18:57   ` Javier Martinez Canillas
2016-05-05 18:57     ` Javier Martinez Canillas
2016-05-05 18:57     ` Javier Martinez Canillas
2016-05-05 12:34 ` [RFC v2 05/13] power: pwrseq: Remove mmc prefix from mmc_pwrseq Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 19:09   ` Javier Martinez Canillas
2016-05-05 19:09     ` Javier Martinez Canillas
2016-05-06  6:20     ` Krzysztof Kozlowski
2016-05-06  6:20       ` Krzysztof Kozlowski
2016-05-05 12:34 ` [RFC v2 06/13] power: pwrseq: Generalize mmc_pwrseq operations by removing mmc prefix Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 19:14   ` Javier Martinez Canillas
2016-05-05 19:14     ` Javier Martinez Canillas
2016-05-05 19:14     ` Javier Martinez Canillas
2016-05-05 12:34 ` [RFC v2 07/13] power: pwrseq: simple: Add support for toggling regulator Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 19:31   ` Javier Martinez Canillas
2016-05-05 19:31     ` Javier Martinez Canillas
2016-05-06  6:24     ` Krzysztof Kozlowski
2016-05-06  6:24       ` Krzysztof Kozlowski
2016-05-05 12:34 ` [RFC v2 08/13] usb: hub: Handle deferred probe Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 19:33   ` Javier Martinez Canillas
2016-05-05 19:33     ` Javier Martinez Canillas
2016-05-05 12:34 ` [RFC v2 09/13] power: pwrseq: Add support for USB hubs with external power Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 19:52   ` Javier Martinez Canillas
2016-05-05 19:52     ` Javier Martinez Canillas
2016-05-05 19:52     ` Javier Martinez Canillas
2016-05-06  6:26     ` Krzysztof Kozlowski
2016-05-06  6:26       ` Krzysztof Kozlowski
2016-05-05 12:34 ` [RFC v2 10/13] usb: hub: Power sequence the ports on activation Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 14:09   ` Alan Stern
2016-05-05 14:09     ` Alan Stern
2016-05-05 14:09     ` Alan Stern
2016-05-05 17:37     ` Krzysztof Kozlowski
2016-05-05 17:37       ` Krzysztof Kozlowski
2016-05-05 19:56   ` Javier Martinez Canillas
2016-05-05 19:56     ` Javier Martinez Canillas
2016-05-05 12:34 ` Krzysztof Kozlowski [this message]
2016-05-05 12:34   ` [RFC v2 11/13] usb: port: Parse pwrseq phandle from Device Tree Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 20:10   ` Javier Martinez Canillas
2016-05-05 20:10     ` Javier Martinez Canillas
2016-05-06  6:27     ` Krzysztof Kozlowski
2016-05-06  6:27       ` Krzysztof Kozlowski
2016-05-05 12:34 ` [RFC v2 12/13] ARM: dts: exynos: Switch the buck8 to GPIO mode on Odroid U3 Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 20:11   ` Javier Martinez Canillas
2016-05-05 20:11     ` Javier Martinez Canillas
2016-05-05 12:34 ` [RFC v2 13/13] ARM: dts: exynos: Fix LAN and HUB after bootloader initialization " Krzysztof Kozlowski
2016-05-05 12:34   ` Krzysztof Kozlowski
2016-05-05 20:16   ` Javier Martinez Canillas
2016-05-05 20:16     ` Javier Martinez Canillas
2016-05-06  6:28     ` Krzysztof Kozlowski
2016-05-06  6:28       ` Krzysztof Kozlowski
2016-05-05 22:42 ` [RFC v2 00/13] usb/mmc/power: Fix USB/LAN when TFTP booting Rob Herring
2016-05-05 22:42   ` Rob Herring
2016-05-05 22:42   ` Rob Herring
2016-05-06  5:44   ` Peter Chen
2016-05-06  5:44     ` Peter Chen
2016-05-06  6:12     ` Krzysztof Kozlowski
2016-05-06  6:12       ` Krzysztof Kozlowski
2016-05-06  7:15       ` Peter Chen
2016-05-06  7:15         ` Peter Chen
2016-05-06  7:15         ` Peter Chen
2016-05-06  6:10   ` Krzysztof Kozlowski
2016-05-06  6:10     ` Krzysztof Kozlowski
2016-05-06 13:01     ` Rob Herring
2016-05-06 13:01       ` Rob Herring
2016-05-06 13:01       ` Rob Herring
2016-05-09  7:46   ` Ulf Hansson
2016-05-09  7:46     ` Ulf Hansson
2016-05-09  7:46     ` Ulf Hansson
2016-05-09 18:18     ` Rob Herring
2016-05-09 18:18       ` Rob Herring
2016-05-09 18:18       ` Rob Herring
2016-05-10 11:02       ` Ulf Hansson
2016-05-10 11:02         ` Ulf Hansson
2016-05-10 11:02         ` Ulf Hansson
2016-05-28  3:36         ` Peter Chen
2016-05-28  3:36           ` Peter Chen
2016-05-28  3:36           ` Peter Chen
2016-05-31  0:58           ` Peter Chen
2016-05-31  0:58             ` Peter Chen
2016-05-31  0:58             ` Peter Chen
2016-05-31 11:54             ` Krzysztof Kozlowski
2016-05-31 11:54               ` Krzysztof Kozlowski
2016-05-31 11:54               ` Krzysztof Kozlowski
2016-12-13 12:20 ` Hans Verkuil
2016-12-13 12:20   ` Hans Verkuil
2016-12-13 12:34   ` Hans Verkuil
2016-12-13 12:34     ` Hans Verkuil
2016-12-13 13:53     ` Krzysztof Kozlowski
2016-12-13 13:53       ` Krzysztof Kozlowski

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=1462451666-17945-12-git-send-email-k.kozlowski@samsung.com \
    --to=k.kozlowski@samsung.com \
    --cc=b.zolnierkie@samsung.com \
    --cc=broonie@kernel.org \
    --cc=dbaryshkov@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dwmw2@infradead.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hverkuil@xs4all.nl \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=sre@kernel.org \
    --cc=tjakobi@math.uni-bielefeld.de \
    --cc=ulf.hansson@linaro.org \
    /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.