summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPraneeth Bajjuri <praneeth@ti.com>2015-02-03 14:25:00 -0600
committerPraneeth Bajjuri <praneeth@ti.com>2015-02-03 14:25:00 -0600
commit29430b6296370c2fc8938bcf090d5161f09db8e8 (patch)
tree3f00e18273a3f76de3a08bc243ccb71da2001b5a
parente96b6cca684ee9c6005c5632a2825267da92d788 (diff)
parentb2a6a3d144669701732568cde5cce17aa37c1ae1 (diff)
Merge branch 'p-ti-linux-3.14.y-common' into p-ti-linux-3.14.y-android
* p-ti-linux-3.14.y-common: usb: dwc3: debugfs: dual role switch through debugfs entries ARM: DRA7: dts: Add coprocessor nodes for iva UAPI: Increasing the max FRAME number to 128. gpio: mcp23s08: Set initial direction and value from DT firmware: Load VPDMA firmware from kernel drivers: power: Introduce TI coprocessor driver Change-Id: I40081e26ca7b53359f832e76371aaea5b5c08878 Signed-off-by: Praneeth Bajjuri <praneeth@ti.com>
-rw-r--r--Documentation/devicetree/bindings/power/coproc/ti-coproc.txt35
-rw-r--r--arch/arm/boot/dts/dra72x.dtsi28
-rw-r--r--arch/arm/boot/dts/dra74x.dtsi28
-rw-r--r--drivers/gpio/gpio-mcp23s08.c9
-rw-r--r--drivers/media/platform/Kconfig11
-rw-r--r--drivers/power/Kconfig1
-rw-r--r--drivers/power/Makefile1
-rw-r--r--drivers/power/coproc/Kconfig7
-rw-r--r--drivers/power/coproc/Makefile2
-rw-r--r--drivers/power/coproc/ti-coproc.c229
-rw-r--r--drivers/usb/dwc3/debugfs.c11
-rw-r--r--drivers/usb/dwc3/dwc3-omap.c30
-rw-r--r--firmware/Makefile3
-rw-r--r--firmware/vpdma-1b8.bin.ihex252
-rw-r--r--include/linux/usb/drd.h9
-rw-r--r--include/uapi/linux/videodev2.h2
16 files changed, 649 insertions, 9 deletions
diff --git a/Documentation/devicetree/bindings/power/coproc/ti-coproc.txt b/Documentation/devicetree/bindings/power/coproc/ti-coproc.txt
new file mode 100644
index 00000000000..d60c1f2df57
--- /dev/null
+++ b/Documentation/devicetree/bindings/power/coproc/ti-coproc.txt
@@ -0,0 +1,35 @@
+Texas Instruments co-processor driver
+
+A co-processor device is a non-cpu processor found on an SoC.
+
+This document describes the clock and voltage configuration
+used by co-processors/devices typically found on Texas Instrument SoCs.
+
+Required properties
+- compatible: should be
+ "ti,coproc"
+- clocks: <functional clock>, <dpll clock>
+ dpll clock is optional
+- clock-names: "fclk", "dpll"
+ if you change names here, go chnage the driver too
+- clock-target-frequency: Mention your target frequency here
+- operating-points: all OPPs applicable for this device/coprocessor
+- coproc-voltdm: phandle of the Voltage domain associated with this device/coproc
+- voltage-tolerance: Specify a voltage tolerance allowed for this voltage domain
+as per datamanual limits
+
+Example:
+iva_coproc {
+ compatible = "ti,coproc";
+ clocks = <&dpll_iva_m2_ck>, <&dpll_iva_ck>;
+ clock-names = "fclk", "dpll";
+ clock-target-frequency = <532000000>;
+ operating-points = <
+ 388200 1055000
+ 430000 1150000
+ 532000 1250000
+ >;
+ coproc-voltdm = <&voltdm_ivahd>;
+ voltage-tolerance = <1>;
+};
+
diff --git a/arch/arm/boot/dts/dra72x.dtsi b/arch/arm/boot/dts/dra72x.dtsi
index b5eb3266663..3001c518c76 100644
--- a/arch/arm/boot/dts/dra72x.dtsi
+++ b/arch/arm/boot/dts/dra72x.dtsi
@@ -38,6 +38,34 @@
};
};
+ iva_coproc {
+ compatible = "ti,coproc";
+ clocks = <&dpll_iva_m2_ck>, <&dpll_iva_ck>;
+ clock-names = "fclk", "dpll";
+ clock-target-frequency = <532000000>;
+ operating-points = <
+ 388200 1055000
+ 430000 1150000
+ 532000 1250000
+ >;
+ coproc-voltdm = <&voltdm_ivahd>;
+ voltage-tolerance = <1>;
+ };
+
+ dsp_coproc {
+ compatible = "ti,coproc";
+ clocks = <&dpll_dsp_m2_ck>, <&dpll_dsp_ck>;
+ clock-names = "fclk", "dpll";
+ clock-target-frequency = <700000000>;
+ operating-points = <
+ 600000 1055000
+ 700000 1150000
+ 700000 1250000
+ >;
+ coproc-voltdm = <&voltdm_dspeve>;
+ voltage-tolerance = <1>;
+ };
+
thermal-zones {
#include "omap5-cpu-thermal.dtsi"
};
diff --git a/arch/arm/boot/dts/dra74x.dtsi b/arch/arm/boot/dts/dra74x.dtsi
index 8a36afcd925..e43fc2bd8eb 100644
--- a/arch/arm/boot/dts/dra74x.dtsi
+++ b/arch/arm/boot/dts/dra74x.dtsi
@@ -43,6 +43,34 @@
};
};
+ iva_coproc {
+ compatible = "ti,coproc";
+ clocks = <&dpll_iva_m2_ck>, <&dpll_iva_ck>;
+ clock-names = "fclk", "dpll";
+ clock-target-frequency = <532000000>;
+ operating-points = <
+ 388200 1055000
+ 430000 1150000
+ 532000 1250000
+ >;
+ coproc-voltdm = <&voltdm_ivahd>;
+ voltage-tolerance = <1>;
+ };
+
+ dsp_coproc {
+ compatible = "ti,coproc";
+ clocks = <&dpll_dsp_m2_ck>, <&dpll_dsp_ck>;
+ clock-names = "fclk", "dpll";
+ clock-target-frequency = <700000000>;
+ operating-points = <
+ 600000 1055000
+ 700000 1150000
+ 700000 1250000
+ >;
+ coproc-voltdm = <&voltdm_dspeve>;
+ voltage-tolerance = <1>;
+ };
+
thermal-zones {
#include "omap5-cpu-thermal.dtsi"
};
diff --git a/drivers/gpio/gpio-mcp23s08.c b/drivers/gpio/gpio-mcp23s08.c
index aa379971d70..e9178de8ec1 100644
--- a/drivers/gpio/gpio-mcp23s08.c
+++ b/drivers/gpio/gpio-mcp23s08.c
@@ -584,6 +584,7 @@ static int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,
unsigned base, unsigned pullups)
{
int status;
+ u32 init_dir = 0, init_val = 0;
bool mirror = false;
mutex_init(&mcp->lock);
@@ -672,6 +673,14 @@ static int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,
if (status < 0)
goto fail;
+ if (of_property_read_u32(mcp->chip.of_node,
+ "init-dir", &init_dir) == 0)
+ status = mcp->ops->write(mcp, MCP_IODIR, init_dir);
+
+ if (of_property_read_u32(mcp->chip.of_node,
+ "init-val", &init_val) == 0)
+ status = mcp->ops->write(mcp, MCP_OLAT, init_val);
+
status = mcp->ops->read_regs(mcp, 0, mcp->cache, ARRAY_SIZE(mcp->cache));
if (status < 0)
goto fail;
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index f3e78e1fb4d..aee0f2d4c31 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -255,6 +255,17 @@ config VIDEO_TI_VPDMA_HELPER
it provides a mem2mem, mem2device, device2mem DMA specifically
for transfering and manipulating video data.
+config VIDEO_TI_VPDMA_LOAD_FW
+ bool "Load VPDMA F/W from Kernel"
+ depends on VIDEO_TI_VPDMA_HELPER
+ default n
+ ---help---
+ TI SoC's Video Port Direct Memory Access module
+ needs a firmware to be loaded. This can be loaded from
+ user space via udev event or it can be loaded from kernel itself
+ Say 'y' if you want the Video devices to be initialized early
+ in the bootup sequence.
+
menuconfig V4L_TEST_DRIVERS
bool "Media test drivers"
depends on MEDIA_CAMERA_SUPPORT
diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
index 5c4fe1670fc..8b07dc1aca5 100644
--- a/drivers/power/Kconfig
+++ b/drivers/power/Kconfig
@@ -395,3 +395,4 @@ endif # POWER_SUPPLY
source "drivers/power/avs/Kconfig"
source "drivers/power/voltdm/Kconfig"
+source "drivers/power/coproc/Kconfig"
diff --git a/drivers/power/Makefile b/drivers/power/Makefile
index 3d47072191d..a76fa2a1eda 100644
--- a/drivers/power/Makefile
+++ b/drivers/power/Makefile
@@ -59,3 +59,4 @@ obj-$(CONFIG_CHARGER_SMB347) += smb347-charger.o
obj-$(CONFIG_CHARGER_TPS65090) += tps65090-charger.o
obj-$(CONFIG_POWER_RESET) += reset/
obj-$(CONFIG_VOLTAGE_DOMAIN) += voltdm/
+obj-$(CONFIG_TI_COPROC) += coproc/
diff --git a/drivers/power/coproc/Kconfig b/drivers/power/coproc/Kconfig
new file mode 100644
index 00000000000..ec0e3076800
--- /dev/null
+++ b/drivers/power/coproc/Kconfig
@@ -0,0 +1,7 @@
+config TI_COPROC
+ tristate "TI Co-processor driversupport"
+ depends on VOLTAGE_DOMAIN_OMAP
+ help
+ TI Coprocessor driver helps initialize a coprocessor to
+ a particular Operating performance point.
+
diff --git a/drivers/power/coproc/Makefile b/drivers/power/coproc/Makefile
new file mode 100644
index 00000000000..5e393a5f403
--- /dev/null
+++ b/drivers/power/coproc/Makefile
@@ -0,0 +1,2 @@
+#Texas Instruments co-processor init driver
+obj-${CONFIG_TI_COPROC} += ti-coproc.o
diff --git a/drivers/power/coproc/ti-coproc.c b/drivers/power/coproc/ti-coproc.c
new file mode 100644
index 00000000000..3795d36e105
--- /dev/null
+++ b/drivers/power/coproc/ti-coproc.c
@@ -0,0 +1,229 @@
+/*
+ * OMAP SoC COPROC driver
+ *
+ * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
+ * Carlos Hernandez <ceh@ti.com>
+ * Nishanth Menon <nm@ti.com>
+ * Ravikumar Kattekola <rk@ti.com>
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+#include <linux/io.h>
+#include <linux/slab.h>
+#include <linux/mutex.h>
+#include <linux/suspend.h>
+#include <linux/pm_opp.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+#include <linux/regulator/consumer.h>
+#include <linux/module.h>
+#include <linux/clk.h>
+#include <linux/pm_voltage_domain.h>
+
+/**
+ * struct coproc_data - Co processor private data
+ * @profile: profile specific for this device
+ * @dev: device pointer
+ * @: for this device
+ * @stat: my current statistics
+ * @dev_clk: my device clk
+ * @dpll_clk: my dpll clk
+ * @nb: my notifier block
+ */
+struct coproc_data {
+ struct device *dev;
+ struct clk *dev_clk;
+ struct clk *dpll_clk;
+ struct notifier_block *clk_nb;
+};
+
+/**
+ * DOC:
+ * clock-names should be defined in dts file, e.g.
+ * coproc {
+ *
+ * compatible = "ti,coproc";
+ * clocks = <&dpll_iva_m2_ck>, <&dpll_iva_ck>;
+ * clock-names = "fclk", "dpll";
+ * clock-target-frequency = <532000000>;
+ * operating-points = <
+ * 388200 1055000
+ * 500000 1150000
+ * 532000 1250000
+ * >;
+ * coproc-voltdm = <&voltdm_ivahd>;
+ * voltage-tolerance = <1>;
+ *
+ * };
+ */
+#define DEV_CLK_NAME "fclk"
+#define DPLL_CLK_NAME "dpll"
+
+static int coproc_probe(struct platform_device *pdev)
+{
+ struct coproc_data *d;
+ unsigned int voltage_latency;
+ u32 target_freq = 0;
+ int err = 0;
+ struct device *dev = &pdev->dev;
+ struct device_node *np = of_node_get(dev->of_node);
+ bool noset_dpll_as_rate;
+
+ dev_info(dev, "probe\n");
+
+ of_property_read_u32(np, "clock-target-frequency", &target_freq);
+ if (!target_freq) {
+ dev_err(dev, "%s: Invalid/no target frequency found in dt.\n",
+ __func__);
+ return -EINVAL;
+ }
+
+ noset_dpll_as_rate = of_property_read_bool(np, "noset-dpll-rate");
+
+ d = devm_kzalloc(dev, sizeof(*d), GFP_KERNEL);
+ if (d == NULL) {
+ dev_err(dev, "%s: Cannot allocate memory.\n", __func__);
+ err = -ENOMEM;
+ goto out;
+ }
+ platform_set_drvdata(pdev, d);
+
+ d->dpll_clk = devm_clk_get(dev, DPLL_CLK_NAME);
+ if (IS_ERR(d->dpll_clk)) {
+ err = PTR_ERR(d->dpll_clk);
+ dev_err(dev, "%s: Cannot get dpll clk(%d).\n", __func__, err);
+ d->dpll_clk = NULL;
+ }
+
+ d->dev_clk = devm_clk_get(dev, DEV_CLK_NAME);
+ if (IS_ERR(d->dev_clk)) {
+ err = PTR_ERR(d->dpll_clk);
+ dev_err(dev, "%s: Cannot get func clk(%d).\n", __func__, err);
+ goto out;
+ }
+
+ if (noset_dpll_as_rate)
+ d->dpll_clk = NULL;
+
+ err = of_init_opp_table(dev);
+ if (err) {
+ dev_err(dev, "%s: Cannot initialize opp table(%d).\n", __func__,
+ err);
+ goto out;
+ }
+ d->dev = dev;
+
+ /* Register voltage domain notifier */
+ d->clk_nb = of_pm_voltdm_notifier_register(dev, np, d->dev_clk,
+ "coproc",
+ &voltage_latency);
+ if (IS_ERR(d->clk_nb)) {
+ err = PTR_ERR(d->clk_nb);
+ /* defer probe if regulator is not yet registered */
+ if (err == -EPROBE_DEFER) {
+ dev_err(dev,
+ "coproc clock notifier not ready, retry\n");
+ } else {
+ dev_err(dev,
+ "Failed to register coproc clk notifier: %d\n",
+ err);
+ }
+ goto out;
+ }
+
+ if (target_freq) {
+ if (d->dpll_clk) {
+ err = clk_set_rate(d->dpll_clk, target_freq);
+ if (err) {
+ dev_err(dev, "%s: Cannot set dpll clock rate(%d).\n",
+ __func__, err);
+ goto out;
+ }
+ }
+
+ err = clk_set_rate(d->dev_clk, target_freq);
+ if (err) {
+ dev_err(dev, "%s: Cannot set func clock rate(%d).\n",
+ __func__, err);
+ goto out;
+ }
+ }
+
+ /* All good.. */
+ goto out;
+
+out:
+ dev_info(dev, "%s result=%d", __func__, err);
+ return err;
+}
+
+static int coproc_remove(struct platform_device *pdev)
+{
+ struct coproc_data *d = platform_get_drvdata(pdev);
+ struct device *dev = &pdev->dev;
+
+ dev_info(dev, "remove\n");
+
+ of_pm_voltdm_notifier_unregister(d->clk_nb);
+
+ dev_info(dev, "%s Removed\n", __func__);
+ return 0;
+}
+
+/**
+ * coproc_suspend() - dummy hook for suspend
+ * @dev: device pointer
+ *
+ * Return: 0
+ */
+static int coproc_suspend(struct device *dev)
+{
+ dev_info(dev, "suspend\n");
+ return 0;
+}
+
+/**
+ * coproc_resume() - dummy hook for resume
+ * @dev: device pointer
+ *
+ * Return: 0
+ */
+static int coproc_resume(struct device *dev)
+{
+ dev_info(dev, "resume\n");
+ return 0;
+}
+
+/* Device power management hooks */
+static SIMPLE_DEV_PM_OPS(coproc_pm,
+ coproc_suspend,
+ coproc_resume);
+
+static struct of_device_id of_coproc_match[] = {
+ {.compatible = "ti,coproc"},
+ {},
+};
+
+MODULE_DEVICE_TABLE(of, of_coproc_match);
+
+static struct platform_driver coproc_driver = {
+ .probe = coproc_probe,
+ .remove = coproc_remove,
+ .driver = {
+ .name = "coproc",
+ .owner = THIS_MODULE,
+ .of_match_table = of_match_ptr(of_coproc_match),
+ .pm = &coproc_pm,
+ },
+};
+module_platform_driver(coproc_driver);
+
+MODULE_LICENSE("GPL v2");
+MODULE_DESCRIPTION("OMAP Co-processor Driver");
+MODULE_AUTHOR("Texas Instruments Inc.");
diff --git a/drivers/usb/dwc3/debugfs.c b/drivers/usb/dwc3/debugfs.c
index 9ac37fe1b6a..0cc5a015451 100644
--- a/drivers/usb/dwc3/debugfs.c
+++ b/drivers/usb/dwc3/debugfs.c
@@ -27,6 +27,7 @@
#include <linux/uaccess.h>
#include <linux/usb/ch9.h>
+#include <linux/usb/drd.h>
#include "core.h"
#include "gadget.h"
@@ -412,7 +413,15 @@ static ssize_t dwc3_mode_write(struct file *file,
if (mode) {
spin_lock_irqsave(&dwc->lock, flags);
- dwc3_set_mode(dwc, mode);
+ if (mode & DWC3_GCTL_PRTCAP_HOST) {
+ dwc3_omap_usbvbus_id_handler(dwc->dev->parent,
+ OMAP_DWC3_ID_GROUND);
+ mode = 0;
+ } else if (mode & DWC3_GCTL_PRTCAP_DEVICE) {
+ dwc3_omap_usbvbus_id_handler(dwc->dev->parent,
+ OMAP_DWC3_VBUS_VALID);
+ mode = 1;
+ }
spin_unlock_irqrestore(&dwc->lock, flags);
}
return count;
diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c
index 4ccdef7333c..96b4c46cbbd 100644
--- a/drivers/usb/dwc3/dwc3-omap.c
+++ b/drivers/usb/dwc3/dwc3-omap.c
@@ -32,6 +32,7 @@
#include <linux/regulator/consumer.h>
#include <linux/usb/otg.h>
+#include <linux/usb/drd.h>
/*
* All these registers belong to OMAP's Wrapper around the
@@ -137,13 +138,6 @@ struct dwc3_omap {
struct regulator *vbus_reg;
};
-enum omap_dwc3_vbus_id_status {
- OMAP_DWC3_ID_FLOAT,
- OMAP_DWC3_ID_GROUND,
- OMAP_DWC3_VBUS_OFF,
- OMAP_DWC3_VBUS_VALID,
-};
-
static inline u32 dwc3_omap_readl(void __iomem *base, u32 offset)
{
return readl(base + offset);
@@ -278,6 +272,28 @@ static void dwc3_omap_set_mailbox(struct dwc3_omap *omap,
}
}
+int dwc3_omap_usbvbus_id_handler(struct device *dev,
+ enum omap_dwc3_vbus_id_status status)
+{
+ struct dwc3_omap *omap;
+ struct platform_device *pdev;
+
+ if (!dev)
+ return -ENODEV;
+
+ dev_dbg(omap->dev, "VBUS Connect\n");
+
+ pdev = to_platform_device(dev);
+ omap = platform_get_drvdata(pdev);
+ if (!omap)
+ return -ENODEV;
+
+ dwc3_omap_set_mailbox(omap, status);
+
+ return 0;
+}
+EXPORT_SYMBOL(dwc3_omap_usbvbus_id_handler);
+
static irqreturn_t dwc3_omap_interrupt(int irq, void *_omap)
{
struct dwc3_omap *omap = _omap;
diff --git a/firmware/Makefile b/firmware/Makefile
index cbb09ce9730..bcee66d9eeb 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -96,6 +96,9 @@ fw-shipped-$(CONFIG_SND_WAVEFRONT) += yamaha/yss225_registers.bin
fw-shipped-$(CONFIG_TEHUTI) += tehuti/bdx.bin
fw-shipped-$(CONFIG_TIGON3) += tigon/tg3.bin tigon/tg3_tso.bin \
tigon/tg3_tso5.bin
+
+fw-shipped-$(CONFIG_VIDEO_TI_VPDMA_LOAD_FW) += vpdma-1b8.bin
+
fw-shipped-$(CONFIG_TYPHOON) += 3com/typhoon.bin
fw-shipped-$(CONFIG_USB_EMI26) += emi26/loader.fw emi26/firmware.fw \
emi26/bitstream.fw
diff --git a/firmware/vpdma-1b8.bin.ihex b/firmware/vpdma-1b8.bin.ihex
new file mode 100644
index 00000000000..ddf307dd3e2
--- /dev/null
+++ b/firmware/vpdma-1b8.bin.ihex
@@ -0,0 +1,252 @@
+:10000000064B408007680749064A005102441F0812
+:10001000064A003102441E080449418004484080D9
+:100020000680000C01D002C01681010000441C08AB
+:1000300001441D080649E809064818080185064AD2
+:1000400001002181219400441B080044180806483F
+:10005000010000441A080648001C0044190806491B
+:1000600000000144250801442408064818080144FA
+:100070002108004420080648E809068001000144E0
+:100080002308004422080144260806480080004452
+:100090002708064834000044428006480000004417
+:1000A000F880064801000044F980064B1808864B8A
+:1000B000200807BC0FB80004064801000044FF8078
+:1000C0000648FFFF0044F8800648FFFF0044F9801F
+:1000D000064800000044580800445D0800445E08DB
+:1000E00000445F0800445C08004457090044590973
+:1000F00000445A0900445B0900445C0900445D095E
+:1001000000445E0900445F09004460090044660938
+:10011000004465090648D1000044E18006486A02AF
+:100120000044E2800648F9050044E3800648B8012F
+:100130000044FC800044FE800004064800000044A7
+:10014000540900445509004456090448FE8006AA93
+:1001500008000649010001940044FF80864B5909BC
+:10016000C483FE800F480ECC064B01800648080071
+:1001700004A8FE80308307480689F0011685F00147
+:1001800001C881450649FF010144FD800FB90649B8
+:1001900042802183074A26867F00CCCC0448E08039
+:1001A00000E00648FFFF0044F880064B59093483FD
+:1001B000FE80064A00000245044AFE8002446108AF
+:1001C00026A9050001446808064B32081383074836
+:1001D0000044630826A9080001446708064B4080D4
+:1001E000138307680044650807480044660836839F
+:1001F000030007480680F9FF03CC064AD70502E052
+:100200000648000000446408064B300826A9050093
+:100210001383076800445D0800445C080045064BF2
+:1002200033081383074800445F080648510100E083
+:1002300004486708064B43803083074932CC044AA0
+:10024000FE80064B6709238306481F010045864B45
+:100250004280C48367080F4836830800004506487B
+:100260007F008045064B0180348367080648FFFF06
+:1002700000450448540912C806488001044955093C
+:10028000018C0045068C80000044FC80064B34083D
+:1002900026AA05003283064800000045064897015B
+:1002A00000E0044AFE80064B6709238306481801D4
+:1002B0000045044AFE8006490800064B018012AA48
+:1002C0002383064801010045864B0F080F4A0DD8CD
+:1002D000064800010045864B07080F4A06D8064825
+:1002E000FA0100450044FF8025C00448FE8006A8AE
+:1002F0000500064B34080383044964080145064B96
+:100300003108038304495D08014506480080004424
+:10031000FA80064A000002449108044AFE80064B17
+:100320006709238306481801068C008000450648AB
+:100330009A0000E00649005106480001108C004474
+:100340001F08044A660802441D080244D18004497B
+:10035000650801441C080144D08004486308064B2A
+:100360004380348367080749018603D80244620842
+:1003700006C016800000064A00000244620804829B
+:10038000640802446408044A640806A81000004493
+:100390001B08004418080044D280064801000044AD
+:1003A000D380064A000004495C0802442508014441
+:1003B00024080449910807C806490000014491082F
+:1003C00004495C0805C00449920802CC04495D0850
+:1003D0000244210801442008064900000144920813
+:1003E00004495F0802442308014422080244260805
+:1003F0000649008001442708864B18080FBE0448B0
+:100400006208064B4380348367080045864B20080A
+:100410000448D480004465080448D5800044660838
+:100420000FB806483400064B42800449670813831E
+:100430000045044AFE80064B6709238306491801DC
+:10044000168D0040014536830800004536830800BC
+:1004500004485D080045064B43803483670807491C
+:100460000448FE80064B6709038336831800014564
+:1004700004496708064B40801383044865080065FB
+:100480000448660800450448FE8006A80500064B9F
+:1004900034080383044964080145064B310803838B
+:1004A00004495D0801450648970100E006480080C0
+:1004B0000044FA80044AFE80064B670923830648FD
+:1004C0001801068C00C0004506489A0000E0004470
+:1004D000EE8000E4044AFE80064B018026A9080055
+:1004E00001446708064B4080138307680044650891
+:1004F0000768004466080768076800446208074800
+:10050000004460080244610826AA05000244680805
+:10051000064B30082383076800445C0807680044E2
+:100520005D08076800445E08076800445F080748E4
+:1005300000446408004463080448640807CC044885
+:100540005E08004463080648180100E0044B5D089B
+:100550000649F5FF368307000748109406490A004C
+:1005600010840CC80649010010840BC8108403C80D
+:100570000648C40200E006488E0400E00648DC029B
+:1005800000E00648CC0300E036830800044A5D081A
+:10059000024536830800044A640802450448FE8088
+:1005A00006490800864B018010A888830648FB0195
+:1005B000804506489A0000E0044A640806CC0648D4
+:1005C0008A0300E006487C0300E0044A64082680B1
+:1005D000FFFFF8C8044B5D08B68306000F48068885
+:1005E000004000448F080F480688008000445409EA
+:1005F000B68307000F480688FF01044AFE800649BB
+:100600000800864B018012AAA88380450649030092
+:100610009097C68307000F4A05D8B68306000F4A95
+:1006200004D808C006489B0300E09097C6830200E8
+:100630000F49F8D8044AFE80864B0180064908001D
+:1006400012AAA8830649FE0181450144FF8007BD27
+:10065000064903009097C68302000F49168D00805B
+:10066000814536830800044954090DC80649030032
+:100670009097C68307000F491689008004488F08A9
+:10068000108D01448F0806480100044A5609209441
+:10069000044A5509028E02445509044A5F0823851D
+:1006A00004D8044B5C0803445D0804498F0805C85E
+:1006B00007B81689000001448F0807B83683080080
+:1006C00006480100044A56092681010001445609E2
+:1006D000044964081681FEFF0144640823C8044AE3
+:1006E0005F08328505D803445D080648A60200E08D
+:1006F00004485C0800445D0804485D0804495F083C
+:100700000680080000449208108404D806480100BE
+:100710000044910804485E080649FFFF1094004415
+:10072000630834C004485C0800445D0804485E085F
+:10073000004463082BC0B68306000F4801D810C0E0
+:10074000044AFE80864B01800649080012AAA8834D
+:100750000648FE0180450044FF8036831000B0C08B
+:1007600004486808064B34080383044964080145BB
+:10077000064B3108038304495D0801450AC0064859
+:10078000100000448E080648670200E00648180181
+:1007900000E006489A0000E0044A640803CC0648DA
+:1007A000500400E0044B5D08B68306000F4869C89A
+:1007B000064A000004495C08024425080144240854
+:1007C00004495D08024421080144200804495F08E7
+:1007D00002442308014422080244260806490080F6
+:1007E00001442708044AFE8006490800064B0180A0
+:1007F00012AA238306480101064900800045864B62
+:100800000F080F4A59D80648000106490040004524
+:10081000864B07080F4A50D8064901010144FD8064
+:100820000044FF800648FC010045044B5D0807BCFE
+:10083000B68306000F680F49168AFF011689000467
+:1008400003C80680010002C006480100864B4280B2
+:10085000C483670806493E00218181450449640834
+:1008600001850144640806A80800308202445D083E
+:10087000064B2008864B080807B90F490F490F4956
+:100880000AC004485D08068008000449640816810F
+:10089000FFFF06C834C004495F08218526D814C06C
+:1008A0000144640804495E08064AFFFF2196024499
+:1008B00063080648180100E0064800800044FA80FA
+:1008C0000648FF800044F98004486808064B340855
+:1008D0000383044964080145064B31080383044936
+:1008E0005D08014506489A0000E004485C080044A1
+:1008F0005D08044A5E0804496408D2C8E5C0064B96
+:10090000310834836808004500445D0836830300DD
+:100910000145014464080648A60200E0044AFE803E
+:10092000044B5D0836830600074806880F000BC895
+:1009300006490100108421C810842DC810843BC8CA
+:1009400010843FC87BC036830100044AFE800748FC
+:100950000688FF01864B9308C6830100C0830F49B8
+:10096000068C00800044FD8007B8864B4280064814
+:10097000080002AAA88381456FC0044AFE80064988
+:100980000800864BF080A88336830100074806885C
+:10099000FF01804561C0044AFE8006490800864B7D
+:1009A000428012A9C183138307480688FF0126826B
+:1009B0004700824551C03683FAFF07480044FB8058
+:1009C0004BC0044AFE8006490800864B018012AAEB
+:1009D000A8833683010007480688FF01804506ABDF
+:1009E00008003683070007491689008009CC368342
+:1009F000FCFF0749168A008008C8168A004005CC0B
+:100A000004485D080449640832C00648FE01804578
+:100A10000044FF80044B5D083683080076C03683AF
+:100A2000010007480688FF01068C00803683F9FF25
+:100A30000044FD8007B83683080067C01084EFC803
+:100A4000108418C8108422C810843EC8108453C86B
+:100A50001084064AC90502E004485D0806800800C3
+:100A6000044964081681FFFF04865F0863D8064ABC
+:100A7000BE0502E00649FCFF3683010007680688D0
+:100A8000FF010044EE800648850500E0064A0000AC
+:100A900002449108044AFE8006490800864B4080C3
+:100AA00012AAA883064806000387076880650768BE
+:100AB0008065C683010007488045064A000002445D
+:100AC00064080648DC0000E0076907490648FF01A2
+:100AD000108906480000864B7E0880658165806528
+:100AE00080658065806580658065864B7E080FBC6B
+:100AF000368301000AC03683FEFF07480688FF01DF
+:100B00000044FA803683040000C00448640806806C
+:100B1000FFFF15C80044640804495F0803445D08EA
+:100B2000318403D80648A60200E004485C0800446B
+:100B30005D08F8C004485C0800445D081FC0044814
+:100B40005E080044630804495F0803445D0831847B
+:100B500003D80648180100E004485C0800445D081A
+:100B60000648180100E004485C0800445D08044899
+:100B70005E080044630806489A0000E0064B31080E
+:100B800034836808004536830300014506489A000F
+:100B900000E00448FE8006490800864B018010A84A
+:100BA00088830648FD01804506489A0000E0044A13
+:100BB0006708064B4080328307680649FFFF90971D
+:100BC000074A268A010002C8C68F00800F4A06889D
+:100BD000010003C80649F8FF12960448FE80064942
+:100BE0000800864B018010A888838245064A9A0037
+:100BF00002E006489A0000E000000000000000004B
+:100C00000000001C01001000020000000031005133
+:100C100000000000000000000000000000000000D4
+:100C200000000000000000000000000000000000C4
+:100C3000001000104000FF110000001200124000E0
+:100C4000FF130000001400144000FF150000001600
+:100C500000164000FF170000001800184000FF19A0
+:100C60000000001A001A4000FF1B0000001C001CBE
+:100C70004000FF1D0000001E001E4000FF1F00007E
+:100C80000000000000000000000000000000000064
+:100C90000000000000000000000000000000000054
+:100CA0000000000000000000000000000000000044
+:100CB0000000000000000000000000000000000034
+:100CC0000000000000000000000000000000000420
+:100CD0000000000000000000000000000000000014
+:100CE0000000000000000000000000000000000004
+:100CF000000000000000000D0100000002000300E1
+:100D00000400050006000700080009000A000B00A7
+:100D10000C000D000E000F00100011001400130055
+:100D2000150016001700180019001A001B001C00FF
+:100D30001D001F00200021002A002B002C002A008B
+:100D40002B002C0022002200220022002200220080
+:100D50002200220022002200220022002200220083
+:100D6000220022002300230023002300230023006D
+:100D7000230023002300230023002300230023005B
+:100D8000230023003A003A003A003A003A003A00C1
+:100D90003A003A003A003A003A003A003A003A0083
+:100DA0003A003A003B003B003B003B003B003B006D
+:100DB0003B003B003B003B003B003B003B003B005B
+:100DC0003B003B00240025002200230024002200D9
+:100DD00026002600260026002600260026002600E3
+:100DE00026002600260026002600260026002600D3
+:100DF00027002700270027002700270027002700BB
+:100E000027002700270027002700270027002700AA
+:100E10003C003C003C003C003C003C003C003C00F2
+:100E20003C003C003C003C003C003C003C003C00E2
+:100E30003D003D003D003D003D003D003D003D00CA
+:100E40003D003D003D003D003D003D003D003D00BA
+:100E50002800290026002700280026002D00300049
+:100E600031002E002F0032003300350012001E002A
+:100E70003700360039003800000000000000000094
+:100E80000000000000000000000000000000000062
+:100E90000000000000000000000000000000000052
+:100EA0000000000000000000000000000000000042
+:100EB0000000000000000000000000000000000032
+:100EC0000000000000000000000000000000000022
+:100ED0000000000000000000000000000000000012
+:100EE0000000000000000000000000000000000002
+:100EF00000000000000000000000000000000000F2
+:100F000000000000000000000000000000000000E1
+:100F100000000000000000000000000000000000D1
+:100F200000000000000000000000000000000000C1
+:100F300000000000000000000000000000000000B1
+:100F400000000000000000000000000000000000A1
+:100F50000000000000000000000000000000000091
+:100F60000000000000000000000000000000000081
+:100F70000000000000000000000000000000000071
+:100F80000000000000000000000000000000000061
+:100F90000000000000000000000000000000000051
+:020FA00000004F
+:00000001FF
diff --git a/include/linux/usb/drd.h b/include/linux/usb/drd.h
index 71c64dcd93e..6a9c3ce5635 100644
--- a/include/linux/usb/drd.h
+++ b/include/linux/usb/drd.h
@@ -22,6 +22,13 @@ struct usb_drd_gadget {
struct usb_drd_setup *gadget_setup;
};
+enum omap_dwc3_vbus_id_status {
+ OMAP_DWC3_ID_FLOAT,
+ OMAP_DWC3_ID_GROUND,
+ OMAP_DWC3_VBUS_OFF,
+ OMAP_DWC3_VBUS_VALID,
+};
+
#define DRD_UNREGISTERED 0x0
#define DRD_DEVICE_REGISTERED 0x1
#define DRD_HOST_REGISTERED 0x2
@@ -45,6 +52,8 @@ int usb_drd_stop_hcd(struct device *parent);
int usb_drd_start_udc(struct device *parent);
int usb_drd_stop_udc(struct device *parent);
int usb_drd_get_state(struct device *parent);
+int dwc3_omap_usbvbus_id_handler(struct device *dev,
+ enum omap_dwc3_vbus_id_status status);
#else
static inline int usb_drd_release(struct device *parent)
{ return 0; }
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index d26bcff63cf..57d04c77084 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -69,7 +69,7 @@
* Common stuff for both V4L1 and V4L2
* Moved from videodev.h
*/
-#define VIDEO_MAX_FRAME 32
+#define VIDEO_MAX_FRAME 128
#define VIDEO_MAX_PLANES 8
/*