From: Paul Walmsley <paul@pwsan.com>
To: linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Cc: Roland Stigge <stigge@antcom.de>,
linux-usb@vger.kernel.org, Felipe Balbi <balbi@ti.com>,
Anand Gadiyar <gadiyar@ti.com>
Subject: [PATCH v4 04/12] ARM: OMAP1: OHCI: use platform_data fn ptr to enable OCPI bus
Date: Tue, 10 Apr 2012 18:35:38 -0600 [thread overview]
Message-ID: <20120411003528.27059.8836.stgit@dusk> (raw)
In-Reply-To: <20120411003454.27059.37500.stgit@dusk>
The OMAP1 OHCI driver needs to enable the OCPI IP block before it can
work. Previously, the driver was simply calling a symbol defined in
the OMAP platform code, but this is incorrect: drivers should be fully
decoupled from platform and architecture code.
So instead, modify the driver to call through a platform_data function
pointer instead. We skip any DT aspect, since OMAP1 is not scheduled
to be converted to DT in the near future.
This resolves the following sparse warning:
It also gets rid of a cpu_is_omap16xx() call in a driver.
In the long term, it probably makes sense to move the OCPI bus code to
somewhere under drivers/. This should avoid the whole platform_data/DT
issue with this function.
Also interesting is that drivers/usb/host/ohci-nxp.c contains a stub
for ocpi_enable() - perhaps the NXP chips use a similar OCPI IP block?
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Roland Stigge <stigge@antcom.de>
Cc: Felipe Balbi <balbi@ti.com>
Cc: Anand Gadiyar <gadiyar@ti.com>
---
arch/arm/mach-omap1/usb.c | 3 +++
arch/arm/plat-omap/include/plat/board.h | 2 ++
drivers/usb/host/ohci-omap.c | 5 +++--
3 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-omap1/usb.c b/arch/arm/mach-omap1/usb.c
index 19de03b..e61afd9 100644
--- a/arch/arm/mach-omap1/usb.c
+++ b/arch/arm/mach-omap1/usb.c
@@ -29,6 +29,8 @@
#include <plat/mux.h>
#include <plat/usb.h>
+#include "common.h"
+
/* These routines should handle the standard chip-specific modes
* for usb0/1/2 ports, covering basic mux and transceiver setup.
*
@@ -138,6 +140,7 @@ static inline void ohci_device_init(struct omap_usb_config *pdata)
if (cpu_is_omap7xx())
ohci_resources[1].start = INT_7XX_USB_HHC_1;
pdata->ohci_device = &ohci_device;
+ pdata->ocpi_enable = &ocpi_enable;
}
#else
diff --git a/arch/arm/plat-omap/include/plat/board.h b/arch/arm/plat-omap/include/plat/board.h
index d5eb4c8..4814c5b 100644
--- a/arch/arm/plat-omap/include/plat/board.h
+++ b/arch/arm/plat-omap/include/plat/board.h
@@ -91,6 +91,8 @@ struct omap_usb_config {
u32 (*usb0_init)(unsigned nwires, unsigned is_device);
u32 (*usb1_init)(unsigned nwires);
u32 (*usb2_init)(unsigned nwires, unsigned alt_pingroup);
+
+ int (*ocpi_enable)(void);
};
struct omap_lcd_config {
diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c
index 96451e4..71229cb 100644
--- a/drivers/usb/host/ohci-omap.c
+++ b/drivers/usb/host/ohci-omap.c
@@ -205,8 +205,9 @@ static int ohci_omap_init(struct usb_hcd *hcd)
need_transceiver = need_transceiver
|| machine_is_omap_h2() || machine_is_omap_h3();
- if (cpu_is_omap16xx())
- ocpi_enable();
+ /* XXX OMAP16xx only */
+ if (config->ocpi_enable)
+ config->ocpi_enable();
#ifdef CONFIG_USB_OTG
if (need_transceiver) {
WARNING: multiple messages have this Message-ID (diff)
From: paul@pwsan.com (Paul Walmsley)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 04/12] ARM: OMAP1: OHCI: use platform_data fn ptr to enable OCPI bus
Date: Tue, 10 Apr 2012 18:35:38 -0600 [thread overview]
Message-ID: <20120411003528.27059.8836.stgit@dusk> (raw)
In-Reply-To: <20120411003454.27059.37500.stgit@dusk>
The OMAP1 OHCI driver needs to enable the OCPI IP block before it can
work. Previously, the driver was simply calling a symbol defined in
the OMAP platform code, but this is incorrect: drivers should be fully
decoupled from platform and architecture code.
So instead, modify the driver to call through a platform_data function
pointer instead. We skip any DT aspect, since OMAP1 is not scheduled
to be converted to DT in the near future.
This resolves the following sparse warning:
It also gets rid of a cpu_is_omap16xx() call in a driver.
In the long term, it probably makes sense to move the OCPI bus code to
somewhere under drivers/. This should avoid the whole platform_data/DT
issue with this function.
Also interesting is that drivers/usb/host/ohci-nxp.c contains a stub
for ocpi_enable() - perhaps the NXP chips use a similar OCPI IP block?
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Roland Stigge <stigge@antcom.de>
Cc: Felipe Balbi <balbi@ti.com>
Cc: Anand Gadiyar <gadiyar@ti.com>
---
arch/arm/mach-omap1/usb.c | 3 +++
arch/arm/plat-omap/include/plat/board.h | 2 ++
drivers/usb/host/ohci-omap.c | 5 +++--
3 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-omap1/usb.c b/arch/arm/mach-omap1/usb.c
index 19de03b..e61afd9 100644
--- a/arch/arm/mach-omap1/usb.c
+++ b/arch/arm/mach-omap1/usb.c
@@ -29,6 +29,8 @@
#include <plat/mux.h>
#include <plat/usb.h>
+#include "common.h"
+
/* These routines should handle the standard chip-specific modes
* for usb0/1/2 ports, covering basic mux and transceiver setup.
*
@@ -138,6 +140,7 @@ static inline void ohci_device_init(struct omap_usb_config *pdata)
if (cpu_is_omap7xx())
ohci_resources[1].start = INT_7XX_USB_HHC_1;
pdata->ohci_device = &ohci_device;
+ pdata->ocpi_enable = &ocpi_enable;
}
#else
diff --git a/arch/arm/plat-omap/include/plat/board.h b/arch/arm/plat-omap/include/plat/board.h
index d5eb4c8..4814c5b 100644
--- a/arch/arm/plat-omap/include/plat/board.h
+++ b/arch/arm/plat-omap/include/plat/board.h
@@ -91,6 +91,8 @@ struct omap_usb_config {
u32 (*usb0_init)(unsigned nwires, unsigned is_device);
u32 (*usb1_init)(unsigned nwires);
u32 (*usb2_init)(unsigned nwires, unsigned alt_pingroup);
+
+ int (*ocpi_enable)(void);
};
struct omap_lcd_config {
diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c
index 96451e4..71229cb 100644
--- a/drivers/usb/host/ohci-omap.c
+++ b/drivers/usb/host/ohci-omap.c
@@ -205,8 +205,9 @@ static int ohci_omap_init(struct usb_hcd *hcd)
need_transceiver = need_transceiver
|| machine_is_omap_h2() || machine_is_omap_h3();
- if (cpu_is_omap16xx())
- ocpi_enable();
+ /* XXX OMAP16xx only */
+ if (config->ocpi_enable)
+ config->ocpi_enable();
#ifdef CONFIG_USB_OTG
if (need_transceiver) {
next prev parent reply other threads:[~2012-04-11 0:38 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-11 0:35 [PATCH v4 00/12] ARM: OMAP: resolve some warnings Paul Walmsley
2012-04-11 0:35 ` Paul Walmsley
2012-04-11 0:35 ` [PATCH v4 01/12] ARM: OMAP2+: declare file-local functions as static Paul Walmsley
2012-04-11 0:35 ` Paul Walmsley
2012-04-11 8:43 ` Arnd Bergmann
2012-04-11 8:43 ` Arnd Bergmann
2012-04-11 18:16 ` Paul Walmsley
2012-04-11 18:16 ` Paul Walmsley
2012-04-11 0:35 ` [PATCH v4 02/12] ARM: OMAP: add includes for missing prototypes Paul Walmsley
2012-04-11 0:35 ` Paul Walmsley
2012-04-11 0:35 ` [PATCH v4 03/12] ARM: OMAP1: OCPI: move to mach-omap1/ Paul Walmsley
2012-04-11 0:35 ` Paul Walmsley
2012-04-11 0:35 ` Paul Walmsley [this message]
2012-04-11 0:35 ` [PATCH v4 04/12] ARM: OMAP1: OHCI: use platform_data fn ptr to enable OCPI bus Paul Walmsley
2012-04-11 7:49 ` Roland Stigge
2012-04-11 7:49 ` Roland Stigge
2012-04-11 18:19 ` Paul Walmsley
2012-04-11 18:19 ` Paul Walmsley
2012-04-11 18:26 ` Felipe Balbi
2012-04-11 18:26 ` Felipe Balbi
[not found] ` <20120411182634.GA9396-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-04-11 19:01 ` Paul Walmsley
2012-04-11 19:01 ` Paul Walmsley
2012-04-11 0:35 ` [PATCH v4 05/12] ARM: OMAP2+: GPMC: resolve type-conversion warning from sparse Paul Walmsley
2012-04-11 0:35 ` Paul Walmsley
2012-04-11 0:35 ` [PATCH v4 06/12] ARM: OMAP: fix 'using plain integer as NULL pointer' sparse warnings Paul Walmsley
2012-04-11 0:35 ` Paul Walmsley
2012-04-11 0:35 ` [PATCH v4 07/12] ARM: OMAP: OCM RAM: use memset_io() when clearing SRAM Paul Walmsley
2012-04-11 0:35 ` Paul Walmsley
2012-04-11 0:35 ` [PATCH v4 08/12] ARM: OMAP: DMA: use constant array maximum, drop some LCD DMA code Paul Walmsley
2012-04-11 0:35 ` Paul Walmsley
2012-04-11 0:35 ` [PATCH v4 09/12] ARM: OMAP: USB: remove unnecessary sideways include Paul Walmsley
2012-04-11 0:35 ` Paul Walmsley
2012-04-11 0:35 ` [PATCH v4 10/12] ARM: OMAP1: board files: deduplicate and clean some NAND-related code Paul Walmsley
2012-04-11 0:35 ` Paul Walmsley
2012-04-11 9:12 ` Arnd Bergmann
2012-04-11 9:12 ` Arnd Bergmann
2012-04-11 18:45 ` Paul Walmsley
2012-04-11 18:45 ` Paul Walmsley
2012-04-11 0:36 ` [PATCH v4 11/12] ARM: OMAP1: DMTIMER: fix broken timer clock source selection Paul Walmsley
2012-04-11 0:36 ` Paul Walmsley
2012-04-17 21:48 ` Tony Lindgren
2012-04-17 21:48 ` Tony Lindgren
2012-04-17 21:53 ` Paul Walmsley
2012-04-17 21:53 ` Paul Walmsley
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=20120411003528.27059.8836.stgit@dusk \
--to=paul@pwsan.com \
--cc=balbi@ti.com \
--cc=gadiyar@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=stigge@antcom.de \
/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.