public inbox for u-boot@lists.denx.de
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox