From: Ben Dooks <ben-linux@fluff.org>
To: Mike Frysinger <vapier@gentoo.org>
Cc: gregkh@suse.de, bigeasy@linuxtronix.de,
linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org,
Michael Hennerich <michael.hennerich@analog.com>,
Bryan Wu <cooloney@kernel.org>
Subject: Re: [PATCH] USB: isp1760: allow platform devices to customize devflags
Date: Tue, 23 Jun 2009 14:39:54 +0100 [thread overview]
Message-ID: <20090623133954.GA11764@fluff.org.uk> (raw)
In-Reply-To: <1245763114-7753-1-git-send-email-vapier@gentoo.org>
On Tue, Jun 23, 2009 at 09:18:34AM -0400, Mike Frysinger wrote:
> From: Michael Hennerich <michael.hennerich@analog.com>
>
> Platform device support was merged earlier, but support for boards to
> customize the devflags aspect of the controller was not. We want this on
> Blackfin systems to control the bus width, but might as well expose all of
> the fields while we're at it.
>
> Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
> Signed-off-by: Bryan Wu <cooloney@kernel.org>
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
> ---
> drivers/usb/host/isp1760-hcd.c | 4 ++++
> drivers/usb/host/isp1760-hcd.h | 2 ++
> drivers/usb/host/isp1760-if.c | 21 ++++++++++++++++++++-
> include/linux/usb/isp1760.h | 18 ++++++++++++++++++
> 4 files changed, 44 insertions(+), 1 deletions(-)
> create mode 100644 include/linux/usb/isp1760.h
>
> diff --git a/drivers/usb/host/isp1760-hcd.c b/drivers/usb/host/isp1760-hcd.c
> index 1543846..9600a58 100644
> --- a/drivers/usb/host/isp1760-hcd.c
> +++ b/drivers/usb/host/isp1760-hcd.c
> @@ -386,6 +386,10 @@ static int isp1760_hc_setup(struct usb_hcd *hcd)
> hwmode |= HW_DACK_POL_HIGH;
> if (priv->devflags & ISP1760_FLAG_DREQ_POL_HIGH)
> hwmode |= HW_DREQ_POL_HIGH;
> + if (priv->devflags & ISP1760_FLAG_INTR_POL_HIGH)
> + hwmode |= HW_INTR_HIGH_ACT;
> + if (priv->devflags & ISP1760_FLAG_INTR_EDGE_TRIG)
> + hwmode |= HW_INTR_EDGE_TRIG;
better move these to the irq resource flags from the resource array
in the platfrom device.
> /*
> * We have to set this first in case we're in 16-bit mode.
> diff --git a/drivers/usb/host/isp1760-hcd.h b/drivers/usb/host/isp1760-hcd.h
> index 462f494..6931ef5 100644
> --- a/drivers/usb/host/isp1760-hcd.h
> +++ b/drivers/usb/host/isp1760-hcd.h
> @@ -142,6 +142,8 @@ typedef void (packet_enqueue)(struct usb_hcd *hcd, struct isp1760_qh *qh,
> #define ISP1760_FLAG_DACK_POL_HIGH 0x00000010 /* DACK active high */
> #define ISP1760_FLAG_DREQ_POL_HIGH 0x00000020 /* DREQ active high */
> #define ISP1760_FLAG_ISP1761 0x00000040 /* Chip is ISP1761 */
> +#define ISP1760_FLAG_INTR_POL_HIGH 0x00000080 /* Interrupt polarity active high */
> +#define ISP1760_FLAG_INTR_EDGE_TRIG 0x00000100 /* Interrupt edge triggered */
>
> /* chip memory management */
> struct memory_chunk {
> diff --git a/drivers/usb/host/isp1760-if.c b/drivers/usb/host/isp1760-if.c
> index d4feebf..1c9f977 100644
> --- a/drivers/usb/host/isp1760-if.c
> +++ b/drivers/usb/host/isp1760-if.c
> @@ -3,6 +3,7 @@
> * Currently there is support for
> * - OpenFirmware
> * - PCI
> + * - PDEV (generic platform device centralized driver model)
> *
> * (c) 2007 Sebastian Siewior <bigeasy@linutronix.de>
> *
> @@ -11,6 +12,7 @@
> #include <linux/usb.h>
> #include <linux/io.h>
> #include <linux/platform_device.h>
> +#include <linux/usb/isp1760.h>
>
> #include "../core/hcd.h"
> #include "isp1760-hcd.h"
> @@ -308,6 +310,8 @@ static int __devinit isp1760_plat_probe(struct platform_device *pdev)
> struct resource *mem_res;
> struct resource *irq_res;
> resource_size_t mem_size;
> + struct isp1760_platform_data *priv = pdev->dev.platform_data;
> + unsigned int devflags = 0;
> unsigned long irqflags = IRQF_SHARED | IRQF_DISABLED;
>
> mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> @@ -330,8 +334,23 @@ static int __devinit isp1760_plat_probe(struct platform_device *pdev)
> }
> irqflags |= irq_res->flags & IRQF_TRIGGER_MASK;
>
> + if (priv) {
> + if (priv->is_isp1761)
> + devflags |= ISP1760_FLAG_ISP1761;
> + if (priv->bus_width_16)
> + devflags |= ISP1760_FLAG_BUS_WIDTH_16;
> + if (priv->port1_otg)
> + devflags |= ISP1760_FLAG_OTG_EN;
> + if (priv->analog_oc)
> + devflags |= ISP1760_FLAG_ANALOG_OC;
> + if (priv->dack_polarity_high)
> + devflags |= ISP1760_FLAG_DACK_POL_HIGH;
> + if (priv->dreq_polarity_high)
> + devflags |= ISP1760_FLAG_DREQ_POL_HIGH;
> + }
> +
> hcd = isp1760_register(mem_res->start, mem_size, irq_res->start,
> - irqflags, &pdev->dev, dev_name(&pdev->dev), 0);
> + irqflags, &pdev->dev, dev_name(&pdev->dev), devflags);
> if (IS_ERR(hcd)) {
> pr_warning("isp1760: Failed to register the HCD device\n");
> ret = -ENODEV;
> diff --git a/include/linux/usb/isp1760.h b/include/linux/usb/isp1760.h
> new file mode 100644
> index 0000000..de7de53
> --- /dev/null
> +++ b/include/linux/usb/isp1760.h
> @@ -0,0 +1,18 @@
> +/*
> + * board initialization should put one of these into dev->platform_data
> + * and place the isp1760 onto platform_bus named "isp1760-hcd".
> + */
> +
> +#ifndef __LINUX_USB_ISP1760_H
> +#define __LINUX_USB_ISP1760_H
> +
> +struct isp1760_platform_data {
> + unsigned is_isp1761:1; /* Chip is ISP1761 */
> + unsigned bus_width_16:1; /* 16/32-bit data bus width */
> + unsigned port1_otg:1; /* Port 1 supports OTG */
> + unsigned analog_oc:1; /* Analog overcurrent */
> + unsigned dack_polarity_high:1; /* DACK active high */
> + unsigned dreq_polarity_high:1; /* DREQ active high */
> +};
> +
> +#endif /* __LINUX_USB_ISP1760_H */
> --
> 1.6.3.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
Ben (ben@fluff.org, http://www.fluff.org/)
'a smiley only costs 4 bytes'
next prev parent reply other threads:[~2009-06-23 13:40 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-23 13:18 [PATCH] USB: isp1760: allow platform devices to customize devflags Mike Frysinger
2009-06-23 13:39 ` Ben Dooks [this message]
2009-06-23 13:46 ` Mike Frysinger
2009-07-15 16:08 ` Mike Frysinger
2009-07-16 2:17 ` Greg KH
2009-07-16 2:29 ` Mike Frysinger
2009-07-16 3:03 ` Greg KH
2009-07-16 3:22 ` Mike Frysinger
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=20090623133954.GA11764@fluff.org.uk \
--to=ben-linux@fluff.org \
--cc=bigeasy@linuxtronix.de \
--cc=cooloney@kernel.org \
--cc=gregkh@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=michael.hennerich@analog.com \
--cc=vapier@gentoo.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.