All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lukasz Majewski <l.majewski@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [u-boot 26/40] usb: dwc3: dwc3-omap: change probe and remove to uboot init and uboot exit code
Date: Mon, 16 Feb 2015 12:04:52 +0100	[thread overview]
Message-ID: <20150216120452.319ec9de@amdc2363> (raw)
In-Reply-To: <1423212497-11970-27-git-send-email-kishon@ti.com>

Hi Kishon,

> Removed probe and remove that are specific to linux and replaced it
> with uboot init and uboot exit. These functions will be invoked from
> boardfile.
> 
> This will change once we have dwc3-omap driver adapted to use the
> uboot driver model.
> 
> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
> ---
>  drivers/usb/dwc3/dwc3-omap.c |  128
> +++++++++++++-----------------------------
> include/dwc3-omap-uboot.h    |    3 + 2 files changed, 42
> insertions(+), 89 deletions(-)
> 
> diff --git a/drivers/usb/dwc3/dwc3-omap.c
> b/drivers/usb/dwc3/dwc3-omap.c index 31a2aa3..30d7210 100644
> --- a/drivers/usb/dwc3/dwc3-omap.c
> +++ b/drivers/usb/dwc3/dwc3-omap.c
> @@ -17,6 +17,7 @@
>  #include <common.h>
>  #include <malloc.h>
>  #include <asm/io.h>
> +#include <dwc3-omap-uboot.h>
>  #include <linux/usb/dwc3-omap.h>
>  #include <linux/ioport.h>
>  
> @@ -120,6 +121,8 @@ struct dwc3_omap {
>  	u32			dma_status:1;
>  };
>  
> +struct dwc3_omap *omap;
> +
>  static inline u32 dwc3_omap_readl(void __iomem *base, u32 offset)
>  {
>  	return readl(base + offset);
> @@ -278,15 +281,6 @@ static irqreturn_t dwc3_omap_interrupt(int irq,
> void *_omap) return IRQ_HANDLED;
>  }
>  
> -static int dwc3_omap_remove_core(struct device *dev, void *c)
> -{
> -	struct platform_device *pdev = to_platform_device(dev);
> -
> -	of_device_unregister(pdev);
> -
> -	return 0;
> -}
> -
>  static void dwc3_omap_enable_irqs(struct dwc3_omap *omap)
>  {
>  	u32			reg;
> @@ -315,12 +309,8 @@ static void dwc3_omap_disable_irqs(struct
> dwc3_omap *omap) dwc3_omap_write_irq0_set(omap, 0x00);
>  }
>  
> -static u64 dwc3_omap_dma_mask = DMA_BIT_MASK(32);
> -
>  static void dwc3_omap_map_offset(struct dwc3_omap *omap)
>  {
> -	struct device_node	*node = omap->dev->of_node;
> -
>  	/*
>  	 * Differentiate between OMAP5 and AM437x.
>  	 *
> @@ -329,25 +319,21 @@ static void dwc3_omap_map_offset(struct
> dwc3_omap *omap) *
>  	 * Using dt compatible to differentiate AM437x.
>  	 */
> -	if (of_device_is_compatible(node, "ti,am437x-dwc3")) {
> -		omap->irq_eoi_offset = USBOTGSS_EOI_OFFSET;
> -		omap->irq0_offset = USBOTGSS_IRQ0_OFFSET;
> -		omap->irqmisc_offset = USBOTGSS_IRQMISC_OFFSET;
> -		omap->utmi_otg_offset = USBOTGSS_UTMI_OTG_OFFSET;
> -		omap->debug_offset = USBOTGSS_DEBUG_OFFSET;
> -	}
> +#ifdef CONFIG_AM43XX
> +	omap->irq_eoi_offset = USBOTGSS_EOI_OFFSET;
> +	omap->irq0_offset = USBOTGSS_IRQ0_OFFSET;
> +	omap->irqmisc_offset = USBOTGSS_IRQMISC_OFFSET;
> +	omap->utmi_otg_offset = USBOTGSS_UTMI_OTG_OFFSET;
> +	omap->debug_offset = USBOTGSS_DEBUG_OFFSET;
> +#endif
>  }
>  
> -static void dwc3_omap_set_utmi_mode(struct dwc3_omap *omap)
> +static void dwc3_omap_set_utmi_mode(struct dwc3_omap *omap, int
> utmi_mode) {
>  	u32			reg;
> -	struct device_node	*node = omap->dev->of_node;
> -	int			utmi_mode = 0;
>  
>  	reg = dwc3_omap_read_utmi_status(omap);
>  
> -	of_property_read_u32(node, "utmi-mode", &utmi_mode);
> -
>  	switch (utmi_mode) {
>  	case DWC3_OMAP_UTMI_MODE_SW:
>  		reg |= USBOTGSS_UTMI_OTG_STATUS_SW_MODE;
> @@ -362,95 +348,59 @@ static void dwc3_omap_set_utmi_mode(struct
> dwc3_omap *omap) dwc3_omap_write_utmi_status(omap, reg);
>  }
>  
> -static int dwc3_omap_probe(struct platform_device *pdev)
> +/**
> + * dwc3_omap_uboot_init - dwc3 omap uboot initialization code
> + * @dev: struct dwc3_omap_device containing initialization data
> + *
> + * Entry point for dwc3 omap driver (equivalent to dwc3_omap_probe
> in linux
> + * kernel driver). Pointer to dwc3_omap_device should be passed
> containing
> + * base address and other initialization data. Returns '0' on
> success and
> + * a negative value on failure.
> + *
> + * Generally called from board_usb_init() implemented in board file.
> + */
> +int dwc3_omap_uboot_init(struct dwc3_omap_device *omap_dev)
>  {
> -	struct device_node	*node = pdev->dev.of_node;
> -
> -	struct dwc3_omap	*omap;
> -	struct resource		*res;
> -	struct device		*dev = &pdev->dev;
> -
> -	int			ret;
>  	u32			reg;
> -
> -	void __iomem		*base;
> -
> -	if (!node) {
> -		dev_err(dev, "device node not found\n");
> -		return -EINVAL;
> -	}
> +	struct device		*dev;
>  
>  	omap = devm_kzalloc(dev, sizeof(*omap), GFP_KERNEL);
>  	if (!omap)
>  		return -ENOMEM;
>  
> -	platform_set_drvdata(pdev, omap);
> -
> -	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	base = devm_ioremap_resource(dev, res);
> -	if (IS_ERR(base))
> -		return PTR_ERR(base);
> -
> -	omap->dev	= dev;
> -	omap->base	= base;
> -	dev->dma_mask	= &dwc3_omap_dma_mask;
> +	omap->base	= omap_dev->base;
>  
>  	dwc3_omap_map_offset(omap);
> -	dwc3_omap_set_utmi_mode(omap);
> +	dwc3_omap_set_utmi_mode(omap, omap_dev->utmi_mode);
>  
>  	/* check the DMA Status */
>  	reg = dwc3_omap_readl(omap->base, USBOTGSS_SYSCONFIG);
>  	omap->dma_status = !!(reg & USBOTGSS_SYSCONFIG_DMADISABLE);
>  
> -	dwc3_omap_enable_irqs(omap);
> +	dwc3_omap_set_mailbox(omap, omap_dev->vbus_id_status);
>  
> -	ret = of_platform_populate(node, NULL, NULL, dev);
> -	if (ret) {
> -		dev_err(&pdev->dev, "failed to create dwc3 core\n");
> -		goto err1;
> -	}
> +	dwc3_omap_enable_irqs(omap);
>  
>  	return 0;
> -
> -err1:
> -	dwc3_omap_disable_irqs(omap);
> -
> -err0:
> -	return ret;
>  }
>  
> -static int dwc3_omap_remove(struct platform_device *pdev)
> +/**
> + * dwc3_omap_uboot_exit - dwc3 omap uboot cleanup code
> + * @index: index of this controller
> + *
> + * Performs cleanup of memory allocated in dwc3_omap_uboot_init
> + * (equivalent to dwc3_omap_remove in linux).
> + *
> + * Generally called from board file.
> + */
> +void dwc3_omap_uboot_exit(void)
>  {
> -	struct dwc3_omap	*omap = platform_get_drvdata(pdev);
> -
>  	dwc3_omap_disable_irqs(omap);
> -	device_for_each_child(&pdev->dev, NULL,
> dwc3_omap_remove_core);
> +	kfree(omap);
>  
>  	return 0;
>  }
>  
> -static const struct of_device_id of_dwc3_match[] = {
> -	{
> -		.compatible =	"ti,dwc3"
> -	},
> -	{
> -		.compatible =	"ti,am437x-dwc3"
> -	},
> -	{ },
> -};
> -MODULE_DEVICE_TABLE(of, of_dwc3_match);
> -
> -static struct platform_driver dwc3_omap_driver = {
> -	.probe		= dwc3_omap_probe,
> -	.remove		= dwc3_omap_remove,
> -	.driver		= {
> -		.name	= "omap-dwc3",
> -		.of_match_table	= of_dwc3_match,
> -	},
> -};
> -
> -module_platform_driver(dwc3_omap_driver);
> -
>  MODULE_ALIAS("platform:omap-dwc3");
>  MODULE_AUTHOR("Felipe Balbi <balbi@ti.com>");
>  MODULE_LICENSE("GPL v2");
> diff --git a/include/dwc3-omap-uboot.h b/include/dwc3-omap-uboot.h
> index b313b64..99f8f38 100644
> --- a/include/dwc3-omap-uboot.h
> +++ b/include/dwc3-omap-uboot.h
> @@ -24,4 +24,7 @@ struct dwc3_omap_device {
>  	enum dwc3_omap_utmi_mode utmi_mode;
>  	enum omap_dwc3_vbus_id_status vbus_id_status;
>  };
> +
> +int dwc3_omap_uboot_init(struct dwc3_omap_device *dev);
> +void dwc3_omap_uboot_exit(void);
>  #endif /* __DWC3_OMAP_UBOOT_H_ */

Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>

-- 
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group

  reply	other threads:[~2015-02-16 11:04 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-06  8:47 [U-Boot] [u-boot 00/40] dra7xx: am43xx: add dwc3 gadget driver support and enable dfu Kishon Vijay Abraham I
2015-02-06  8:47 ` [U-Boot] [u-boot 01/40] ARM: DRA7: Enable clocks for USB OTGSS and USB PHY Kishon Vijay Abraham I
2015-02-16 10:04   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 02/40] ARM: AM43xx: " Kishon Vijay Abraham I
2015-02-16 10:07   ` Lukasz Majewski
2015-02-16 13:29     ` Marek Vasut
2015-02-20  9:30       ` Kishon Vijay Abraham I
2015-02-20 10:48         ` Marek Vasut
2015-02-06  8:47 ` [U-Boot] [u-boot 03/40] usb: gadget: udc: add udc-core from linux kernel to u-boot Kishon Vijay Abraham I
2015-02-07 13:27   ` Marek Vasut
2015-02-16  9:58     ` Lukasz Majewski
2015-02-16 13:29       ` Marek Vasut
2015-02-16 10:11   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 04/40] include: usb: modify gadget.h to include udc support Kishon Vijay Abraham I
2015-02-16 10:12   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 05/40] usb: gadget: udc: make udc-core compile in u-boot build Kishon Vijay Abraham I
2015-02-16 10:18   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 06/40] include: asm: dma-mapping: get rid of the compilation warning in udc-core Kishon Vijay Abraham I
2015-02-16 10:19   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 07/40] usb: dwc3: add dwc3 folder from linux kernel to u-boot Kishon Vijay Abraham I
2015-02-16 10:20   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 08/40] usb: dwc3: remove un-used files from dwc3 folder Kishon Vijay Abraham I
2015-02-16 10:21   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 09/40] usb: dwc3: Modify the file headers to u-boot format Kishon Vijay Abraham I
2015-02-16 10:21   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 10/40] usb: dwc3: remove trace_* APIs from dwc3 driver Kishon Vijay Abraham I
2015-02-16 10:24   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 11/40] usb: dwc3: fix dwc3 header files Kishon Vijay Abraham I
2015-02-16 10:25   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 12/40] usb: dwc3: remove pm related operations from dwc3 driver Kishon Vijay Abraham I
2015-02-16 10:26   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 13/40] arm: asm: dma-mapping: added dma_free_coherent API Kishon Vijay Abraham I
2015-02-16 10:26   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 14/40] usb: dwc3: linux-compat: Add header for dwc3 linux compatibiltiy Kishon Vijay Abraham I
2015-02-16 10:32   ` Lukasz Majewski
2015-02-23  6:19     ` Kishon Vijay Abraham I
2015-02-23 14:59       ` Marek Vasut
2015-02-24 13:21         ` Kishon Vijay Abraham I
2015-02-24 17:42           ` Marek Vasut
2015-02-25  8:17             ` Lukasz Majewski
2015-02-25 12:16               ` Marek Vasut
2015-02-25 13:04                 ` Lukasz Majewski
2015-02-27  9:43                   ` Marek Vasut
2015-02-27 11:28                     ` Lukasz Majewski
2015-03-02  9:51                       ` Marek Vasut
2015-03-02 12:56                         ` Lukasz Majewski
2015-03-02 14:30                           ` Marek Vasut
2015-02-06  8:47 ` [U-Boot] [u-boot 15/40] usb: dwc3: gadget: make dwc3 gadget build in uboot Kishon Vijay Abraham I
2015-02-16 10:52   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 16/40] include: asm: types: add resource_size_t type Kishon Vijay Abraham I
2015-02-16 10:53   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 17/40] usb: dwc3: ep0: make dwc3 ep0 build in uboot Kishon Vijay Abraham I
2015-02-16 10:54   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 18/40] include: usb: composite: add USB_GADGET_DELAYED_STATUS to avoid compilation error Kishon Vijay Abraham I
2015-02-16 10:55   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 19/40] usb: dwc3: core: make dwc3 core build in uboot Kishon Vijay Abraham I
2015-02-16 10:57   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 20/40] include: dwc3-uboot: add a structure for populating platform data Kishon Vijay Abraham I
2015-02-16 10:58   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 21/40] dwc3: core: change probe and remove to uboot init and uboot exit code Kishon Vijay Abraham I
2015-02-16 10:59   ` Lukasz Majewski
2015-02-06  8:47 ` [U-Boot] [u-boot 22/40] dwc3: core: add support for multiple dwc3 controllers Kishon Vijay Abraham I
2015-02-16 11:00   ` Lukasz Majewski
2015-02-06  8:48 ` [U-Boot] [u-boot 23/40] dwc3: core: added an API to invoke irq handlers Kishon Vijay Abraham I
2015-02-16 11:01   ` Lukasz Majewski
2015-02-06  8:48 ` [U-Boot] [u-boot 24/40] usb: dwc3: dwc3-omap: make dwc3-omap build in uboot Kishon Vijay Abraham I
2015-02-16 11:02   ` Lukasz Majewski
2015-02-06  8:48 ` [U-Boot] [u-boot 25/40] include: dwc3-omap-uboot: add a structure for populating dwc3-omap platform data Kishon Vijay Abraham I
2015-02-16 11:03   ` Lukasz Majewski
2015-02-06  8:48 ` [U-Boot] [u-boot 26/40] usb: dwc3: dwc3-omap: change probe and remove to uboot init and uboot exit code Kishon Vijay Abraham I
2015-02-16 11:04   ` Lukasz Majewski [this message]
2015-02-06  8:48 ` [U-Boot] [u-boot 27/40] dwc3: dwc3-omap: add support for multiple dwc3-omap controllers Kishon Vijay Abraham I
2015-02-16 11:06   ` Lukasz Majewski
2015-02-06  8:48 ` [U-Boot] [u-boot 28/40] usb: dwc3: dwc3-omap: add interrupt status API to check for interrupts Kishon Vijay Abraham I
2015-02-16 11:07   ` Lukasz Majewski
2015-02-06  8:48 ` [U-Boot] [u-boot 29/40] usb: dwc3: TI PHY: PHY driver for dwc3 in TI platforms Kishon Vijay Abraham I
2015-02-16 11:13   ` Lukasz Majewski
2015-02-06  8:48 ` [U-Boot] [u-boot 30/40] dwc3: flush the buffers before using it Kishon Vijay Abraham I
2015-02-16 11:39   ` Lukasz Majewski
2015-02-06  8:48 ` [U-Boot] [u-boot 31/40] usb: dwc3: ep0: preparation for implementing chained TRB Kishon Vijay Abraham I
2015-02-16 11:40   ` Lukasz Majewski
2015-02-06  8:48 ` [U-Boot] [u-boot 32/40] usb: dwc3: Add chained TRB support for ep0 Kishon Vijay Abraham I
2015-02-16 11:42   ` Lukasz Majewski
2015-02-16 12:01     ` Kishon Vijay Abraham I
2015-02-16 13:04       ` Lukasz Majewski
2015-02-16 13:06         ` Kishon Vijay Abraham I
2015-02-06  8:48 ` [U-Boot] [u-boot 33/40] usb: dwc3: Makefile: Make dwc3 driver compile in u-boot Kishon Vijay Abraham I
2015-02-16 11:43   ` Lukasz Majewski
2015-02-06  8:48 ` [U-Boot] [u-boot 34/40] usb: gadget: defer setting maxpacket till ->setup() Kishon Vijay Abraham I
2015-02-16 11:44   ` Lukasz Majewski
2015-02-06  8:48 ` [U-Boot] [u-boot 35/40] common: cmd_dfu: invoke board_usb_cleanup() for cleaning up Kishon Vijay Abraham I
2015-02-16 11:47   ` Lukasz Majewski
2015-02-06  8:48 ` [U-Boot] [u-boot 36/40] board: ti: DRA7: added USB initializtion code Kishon Vijay Abraham I
2015-02-16 11:49   ` Lukasz Majewski
2015-02-06  8:48 ` [U-Boot] [u-boot 37/40] include: configs: Enable DWC3 and DFU in DRA7xx Kishon Vijay Abraham I
2015-02-16 11:50   ` Lukasz Majewski
2015-02-06  8:48 ` [U-Boot] [u-boot 38/40] board: ti: AM43xx: added USB initializtion code Kishon Vijay Abraham I
2015-02-16 11:50   ` Lukasz Majewski
2015-02-06  8:48 ` [U-Boot] [u-boot 39/40] include: configs: Enable DWC3 and DFU in AM43xx Kishon Vijay Abraham I
2015-02-16 11:53   ` Lukasz Majewski
2015-02-06  8:48 ` [U-Boot] [u-boot 40/40] usb: modify usb_gadget_handle_interrupts to take controller index Kishon Vijay Abraham I
2015-02-16 11:56   ` Lukasz Majewski
2015-02-07 13:32 ` [U-Boot] [u-boot 00/40] dra7xx: am43xx: add dwc3 gadget driver support and enable dfu Marek Vasut
2015-02-11 11:33   ` Kishon Vijay Abraham I

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=20150216120452.319ec9de@amdc2363 \
    --to=l.majewski@samsung.com \
    --cc=u-boot@lists.denx.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.