Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c50f056c authored by Tomasz Figa's avatar Tomasz Figa Committed by Felipe Balbi
Browse files

usb: gadget: s3c-hsotg: Allow driver instantiation using device tree



This patch adds OF match table to the driver to allow instantiating it
using device tree.

Signed-off-by: default avatarTomasz Figa <t.figa@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 22a5aa17
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
Samsung High Speed USB OTG controller
-----------------------------

The Samsung HSOTG IP can be found on Samsung SoCs, from S3C6400 onwards.
It gives functionality of OTG-compliant USB 2.0 host and device with
support for USB 2.0 high-speed (480Mbps) and full-speed (12 Mbps)
operation.

Currently only device mode is supported.

Binding details
-----

Required properties:
- compatible: "samsung,s3c6400-hsotg" should be used for all currently
    supported SoC,
- interrupt-parent: phandle for the interrupt controller to which the
    interrupt signal of the HSOTG block is routed,
- interrupts: specifier of interrupt signal of interrupt controller,
    according to bindings of interrupt controller,
- clocks: contains an array of clock specifiers:
    - first entry: OTG clock
- clock-names: contains array of clock names:
    - first entry: must be "otg"
- vusb_d-supply: phandle to voltage regulator of digital section,
- vusb_a-supply: phandle to voltage regulator of analog section.

Example
-----

	hsotg@12480000 {
		compatible = "samsung,s3c6400-hsotg";
		reg = <0x12480000 0x20000>;
		interrupts = <0 71 0>;
		clocks = <&clock 305>;
		clock-names = "otg";
		vusb_d-supply = <&vusb_reg>;
		vusb_a-supply = <&vusbdac_reg>;
	};
+10 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@
#include <linux/slab.h>
#include <linux/clk.h>
#include <linux/regulator/consumer.h>
#include <linux/of_platform.h>

#include <linux/usb/ch9.h>
#include <linux/usb/gadget.h>
@@ -3648,10 +3649,19 @@ static int s3c_hsotg_remove(struct platform_device *pdev)
#define s3c_hsotg_resume NULL
#endif

#ifdef CONFIG_OF
static const struct of_device_id s3c_hsotg_of_ids[] = {
	{ .compatible = "samsung,s3c6400-hsotg", },
	{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, s3c_hsotg_of_ids);
#endif

static struct platform_driver s3c_hsotg_driver = {
	.driver		= {
		.name	= "s3c-hsotg",
		.owner	= THIS_MODULE,
		.of_match_table = of_match_ptr(s3c_hsotg_of_ids),
	},
	.probe		= s3c_hsotg_probe,
	.remove		= s3c_hsotg_remove,