* [PATCH v2 0/4] [media] davinci: VPIF: add DT support @ 2016-11-22 1:44 Kevin Hilman 2016-11-22 1:44 ` [PATCH v2 2/4] [media] davinci: vpif_capture: don't lock over s_stream Kevin Hilman ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Kevin Hilman @ 2016-11-22 1:44 UTC (permalink / raw) To: linux-media-u79uwXL29TY76Z2rM5mHXA, Hans Verkuil Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Sekhar Nori, Axel Haslam, Bartosz Gołaszewski, Alexandre Bailon, David Lechner Add DT support, including getting subdevs from DT ports/endpoints. Changes since v1: - more specific compatible strings, based on SoC: ti,da850-vpif* - fix locking bug when unlocking over subdev s_stream Kevin Hilman (4): [media] davinci: add support for DT init [media] davinci: vpif_capture: don't lock over s_stream [media] davinci: vpif_capture: get subdevs from DT [media] dt-bindings: add TI VPIF documentation .../bindings/media/ti,da850-vpif-capture.txt | 65 +++++++++ .../devicetree/bindings/media/ti,da850-vpif.txt | 8 ++ drivers/media/platform/davinci/vpif.c | 9 ++ drivers/media/platform/davinci/vpif_capture.c | 147 ++++++++++++++++++++- include/media/davinci/vpif_types.h | 9 +- 5 files changed, 232 insertions(+), 6 deletions(-) create mode 100644 Documentation/devicetree/bindings/media/ti,da850-vpif-capture.txt create mode 100644 Documentation/devicetree/bindings/media/ti,da850-vpif.txt -- 2.9.3 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 2/4] [media] davinci: vpif_capture: don't lock over s_stream 2016-11-22 1:44 [PATCH v2 0/4] [media] davinci: VPIF: add DT support Kevin Hilman @ 2016-11-22 1:44 ` Kevin Hilman 2016-11-22 1:44 ` [PATCH v2 3/4] [media] davinci: vpif_capture: get subdevs from DT Kevin Hilman [not found] ` <20161122014408.22388-1-khilman-rdvid1DuHRBWk0Htik3J/w@public.gmane.org> 2 siblings, 0 replies; 7+ messages in thread From: Kevin Hilman @ 2016-11-22 1:44 UTC (permalink / raw) To: linux-media, Hans Verkuil Cc: devicetree, Sekhar Nori, Axel Haslam, Bartosz Gołaszewski, Alexandre Bailon, David Lechner Video capture subdevs may be over I2C and may sleep during xfer, so we cannot do IRQ-disabled locking when calling the subdev. Signed-off-by: Kevin Hilman <khilman@baylibre.com> --- drivers/media/platform/davinci/vpif_capture.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/media/platform/davinci/vpif_capture.c b/drivers/media/platform/davinci/vpif_capture.c index 87ee1e2c3864..94ee6cf03f02 100644 --- a/drivers/media/platform/davinci/vpif_capture.c +++ b/drivers/media/platform/davinci/vpif_capture.c @@ -193,7 +193,10 @@ static int vpif_start_streaming(struct vb2_queue *vq, unsigned int count) } } + spin_unlock_irqrestore(&common->irqlock, flags); ret = v4l2_subdev_call(ch->sd, video, s_stream, 1); + spin_lock_irqsave(&common->irqlock, flags); + if (ret && ret != -ENOIOCTLCMD && ret != -ENODEV) { vpif_dbg(1, debug, "stream on failed in subdev\n"); goto err; -- 2.9.3 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 3/4] [media] davinci: vpif_capture: get subdevs from DT 2016-11-22 1:44 [PATCH v2 0/4] [media] davinci: VPIF: add DT support Kevin Hilman 2016-11-22 1:44 ` [PATCH v2 2/4] [media] davinci: vpif_capture: don't lock over s_stream Kevin Hilman @ 2016-11-22 1:44 ` Kevin Hilman [not found] ` <20161122014408.22388-1-khilman-rdvid1DuHRBWk0Htik3J/w@public.gmane.org> 2 siblings, 0 replies; 7+ messages in thread From: Kevin Hilman @ 2016-11-22 1:44 UTC (permalink / raw) To: linux-media, Hans Verkuil Cc: devicetree, Sekhar Nori, Axel Haslam, Bartosz Gołaszewski, Alexandre Bailon, David Lechner Allow getting of subdevs from DT ports and endpoints. The _get_pdata() function was larely inspired by (i.e. stolen from) am437x-vpfe.c Signed-off-by: Kevin Hilman <khilman@baylibre.com> --- drivers/media/platform/davinci/vpif_capture.c | 130 +++++++++++++++++++++++++- include/media/davinci/vpif_types.h | 9 +- 2 files changed, 133 insertions(+), 6 deletions(-) diff --git a/drivers/media/platform/davinci/vpif_capture.c b/drivers/media/platform/davinci/vpif_capture.c index 94ee6cf03f02..47a4699157e7 100644 --- a/drivers/media/platform/davinci/vpif_capture.c +++ b/drivers/media/platform/davinci/vpif_capture.c @@ -26,6 +26,8 @@ #include <linux/slab.h> #include <media/v4l2-ioctl.h> +#include <media/v4l2-of.h> +#include <media/i2c/tvp514x.h> #include "vpif.h" #include "vpif_capture.h" @@ -650,6 +652,10 @@ static int vpif_input_to_subdev( vpif_dbg(2, debug, "vpif_input_to_subdev\n"); + if (!chan_cfg) + return -1; + if (input_index >= chan_cfg->input_count) + return -1; subdev_name = chan_cfg->inputs[input_index].subdev_name; if (subdev_name == NULL) return -1; @@ -657,7 +663,7 @@ static int vpif_input_to_subdev( /* loop through the sub device list to get the sub device info */ for (i = 0; i < vpif_cfg->subdev_count; i++) { subdev_info = &vpif_cfg->subdev_info[i]; - if (!strcmp(subdev_info->name, subdev_name)) + if (subdev_info && !strcmp(subdev_info->name, subdev_name)) return i; } return -1; @@ -1327,6 +1333,21 @@ static int vpif_async_bound(struct v4l2_async_notifier *notifier, { int i; + for (i = 0; i < vpif_obj.config->asd_sizes[0]; i++) { + struct v4l2_async_subdev *_asd = vpif_obj.config->asd[i]; + const struct device_node *node = _asd->match.of.node; + + if (node == subdev->of_node) { + vpif_obj.sd[i] = subdev; + vpif_obj.config->chan_config->inputs[i].subdev_name = + (char *)subdev->of_node->full_name; + vpif_dbg(2, debug, + "%s: setting input %d subdev_name = %s\n", + __func__, i, subdev->of_node->full_name); + return 0; + } + } + for (i = 0; i < vpif_obj.config->subdev_count; i++) if (!strcmp(vpif_obj.config->subdev_info[i].name, subdev->name)) { @@ -1422,6 +1443,110 @@ static int vpif_async_complete(struct v4l2_async_notifier *notifier) return vpif_probe_complete(); } +static struct vpif_capture_config * +vpif_capture_get_pdata(struct platform_device *pdev) +{ + struct device_node *endpoint = NULL; + struct v4l2_of_endpoint bus_cfg; + struct vpif_capture_config *pdata; + struct vpif_subdev_info *sdinfo; + struct vpif_capture_chan_config *chan; + unsigned int i; + + dev_dbg(&pdev->dev, "vpif_get_pdata\n"); + + if (!IS_ENABLED(CONFIG_OF) || !pdev->dev.of_node) + return pdev->dev.platform_data; + + pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); + if (!pdata) + return NULL; + pdata->subdev_info = + devm_kzalloc(&pdev->dev, sizeof(*pdata->subdev_info) * + VPIF_CAPTURE_MAX_CHANNELS, GFP_KERNEL); + + if (!pdata->subdev_info) + return NULL; + dev_dbg(&pdev->dev, "%s\n", __func__); + + for (i = 0; ; i++) { + struct device_node *rem; + unsigned int flags; + int err; + + endpoint = of_graph_get_next_endpoint(pdev->dev.of_node, + endpoint); + if (!endpoint) + break; + + sdinfo = &pdata->subdev_info[i]; + chan = &pdata->chan_config[i]; + chan->inputs = devm_kzalloc(&pdev->dev, + sizeof(*chan->inputs) * + VPIF_DISPLAY_MAX_CHANNELS, + GFP_KERNEL); + + chan->input_count++; + chan->inputs[i].input.type = V4L2_INPUT_TYPE_CAMERA; + chan->inputs[i].input.std = V4L2_STD_ALL; + chan->inputs[i].input.capabilities = V4L2_IN_CAP_STD; + + /* FIXME: need a new property? ch0:composite ch1: s-video */ + if (i == 0) + chan->inputs[i].input_route = INPUT_CVBS_VI2B; + else + chan->inputs[i].input_route = INPUT_SVIDEO_VI2C_VI1C; + chan->inputs[i].output_route = OUTPUT_10BIT_422_EMBEDDED_SYNC; + + err = v4l2_of_parse_endpoint(endpoint, &bus_cfg); + if (err) { + dev_err(&pdev->dev, "Could not parse the endpoint\n"); + goto done; + } + dev_dbg(&pdev->dev, "Endpoint %s, bus_width = %d\n", + endpoint->full_name, bus_cfg.bus.parallel.bus_width); + flags = bus_cfg.bus.parallel.flags; + + if (flags & V4L2_MBUS_HSYNC_ACTIVE_HIGH) + chan->vpif_if.hd_pol = 1; + + if (flags & V4L2_MBUS_VSYNC_ACTIVE_HIGH) + chan->vpif_if.vd_pol = 1; + + chan->vpif_if.if_type = VPIF_IF_BT656; + rem = of_graph_get_remote_port_parent(endpoint); + if (!rem) { + dev_dbg(&pdev->dev, "Remote device at %s not found\n", + endpoint->full_name); + goto done; + } + + dev_dbg(&pdev->dev, "Remote device %s, %s found\n", + rem->name, rem->full_name); + sdinfo->name = rem->full_name; + + pdata->asd[i] = devm_kzalloc(&pdev->dev, + sizeof(struct v4l2_async_subdev), + GFP_KERNEL); + if (!pdata->asd[i]) { + of_node_put(rem); + pdata = NULL; + goto done; + } + + pdata->asd[i]->match_type = V4L2_ASYNC_MATCH_OF; + pdata->asd[i]->match.of.node = rem; + of_node_put(rem); + } + +done: + pdata->asd_sizes[0] = i; + pdata->subdev_count = i; + pdata->card_name = "DA850/OMAP-L138 Video Capture"; + + return pdata; +} + /** * vpif_probe : This function probes the vpif capture driver * @pdev: platform device pointer @@ -1438,6 +1563,7 @@ static __init int vpif_probe(struct platform_device *pdev) int res_idx = 0; int i, err; + pdev->dev.platform_data = vpif_capture_get_pdata(pdev); if (!pdev->dev.platform_data) { dev_warn(&pdev->dev, "Missing platform data. Giving up.\n"); return -EINVAL; @@ -1480,7 +1606,7 @@ static __init int vpif_probe(struct platform_device *pdev) goto vpif_unregister; } - if (!vpif_obj.config->asd_sizes) { + if (!vpif_obj.config->asd_sizes[0]) { i2c_adap = i2c_get_adapter(1); for (i = 0; i < subdev_count; i++) { subdevdata = &vpif_obj.config->subdev_info[i]; diff --git a/include/media/davinci/vpif_types.h b/include/media/davinci/vpif_types.h index 3cb1704a0650..4ee3b41975db 100644 --- a/include/media/davinci/vpif_types.h +++ b/include/media/davinci/vpif_types.h @@ -65,14 +65,14 @@ struct vpif_display_config { struct vpif_input { struct v4l2_input input; - const char *subdev_name; + char *subdev_name; u32 input_route; u32 output_route; }; struct vpif_capture_chan_config { struct vpif_interface vpif_if; - const struct vpif_input *inputs; + struct vpif_input *inputs; int input_count; }; @@ -83,7 +83,8 @@ struct vpif_capture_config { struct vpif_subdev_info *subdev_info; int subdev_count; const char *card_name; - struct v4l2_async_subdev **asd; /* Flat array, arranged in groups */ - int *asd_sizes; /* 0-terminated array of asd group sizes */ + + struct v4l2_async_subdev *asd[VPIF_CAPTURE_MAX_CHANNELS]; + int asd_sizes[VPIF_CAPTURE_MAX_CHANNELS]; }; #endif /* _VPIF_TYPES_H */ -- 2.9.3 ^ permalink raw reply related [flat|nested] 7+ messages in thread
[parent not found: <20161122014408.22388-1-khilman-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>]
* [PATCH v2 1/4] [media] davinci: add support for DT init [not found] ` <20161122014408.22388-1-khilman-rdvid1DuHRBWk0Htik3J/w@public.gmane.org> @ 2016-11-22 1:44 ` Kevin Hilman 2016-11-22 1:44 ` [PATCH v2 4/4] [media] dt-bindings: add TI VPIF documentation Kevin Hilman 1 sibling, 0 replies; 7+ messages in thread From: Kevin Hilman @ 2016-11-22 1:44 UTC (permalink / raw) To: linux-media-u79uwXL29TY76Z2rM5mHXA, Hans Verkuil Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Sekhar Nori, Axel Haslam, Bartosz Gołaszewski, Alexandre Bailon, David Lechner Add basic support for initialization via DT. Signed-off-by: Kevin Hilman <khilman-rdvid1DuHRBWk0Htik3J/w@public.gmane.org> --- drivers/media/platform/davinci/vpif.c | 9 +++++++++ drivers/media/platform/davinci/vpif_capture.c | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/drivers/media/platform/davinci/vpif.c b/drivers/media/platform/davinci/vpif.c index 0380cf2e5775..d4434f614141 100644 --- a/drivers/media/platform/davinci/vpif.c +++ b/drivers/media/platform/davinci/vpif.c @@ -464,8 +464,17 @@ static const struct dev_pm_ops vpif_pm = { #define vpif_pm_ops NULL #endif +#if IS_ENABLED(CONFIG_OF) +static const struct of_device_id vpif_of_match[] = { + { .compatible = "ti,da850-vpif", }, + { /* sentinel */ }, +}; +MODULE_DEVICE_TABLE(of, vpif_of_match); +#endif + static struct platform_driver vpif_driver = { .driver = { + .of_match_table = of_match_ptr(vpif_of_match), .name = "vpif", .pm = vpif_pm_ops, }, diff --git a/drivers/media/platform/davinci/vpif_capture.c b/drivers/media/platform/davinci/vpif_capture.c index 5104cc0ee40e..87ee1e2c3864 100644 --- a/drivers/media/platform/davinci/vpif_capture.c +++ b/drivers/media/platform/davinci/vpif_capture.c @@ -1435,6 +1435,11 @@ static __init int vpif_probe(struct platform_device *pdev) int res_idx = 0; int i, err; + if (!pdev->dev.platform_data) { + dev_warn(&pdev->dev, "Missing platform data. Giving up.\n"); + return -EINVAL; + } + vpif_dev = &pdev->dev; err = initialize_vpif(); @@ -1618,8 +1623,17 @@ static int vpif_resume(struct device *dev) static SIMPLE_DEV_PM_OPS(vpif_pm_ops, vpif_suspend, vpif_resume); +#if IS_ENABLED(CONFIG_OF) +static const struct of_device_id vpif_capture_of_match[] = { + { .compatible = "ti,da850-vpif-capture", }, + { /* sentinel */ }, +}; +MODULE_DEVICE_TABLE(of, vpif_capture_of_match); +#endif + static __refdata struct platform_driver vpif_driver = { .driver = { + .of_match_table = of_match_ptr(vpif_capture_of_match), .name = VPIF_DRIVER_NAME, .pm = &vpif_pm_ops, }, -- 2.9.3 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 4/4] [media] dt-bindings: add TI VPIF documentation [not found] ` <20161122014408.22388-1-khilman-rdvid1DuHRBWk0Htik3J/w@public.gmane.org> 2016-11-22 1:44 ` [PATCH v2 1/4] [media] davinci: add support for DT init Kevin Hilman @ 2016-11-22 1:44 ` Kevin Hilman 2016-11-22 12:47 ` Hans Verkuil 1 sibling, 1 reply; 7+ messages in thread From: Kevin Hilman @ 2016-11-22 1:44 UTC (permalink / raw) To: linux-media-u79uwXL29TY76Z2rM5mHXA, Hans Verkuil Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Sekhar Nori, Axel Haslam, Bartosz Gołaszewski, Alexandre Bailon, David Lechner, Rob Herring Cc: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> Signed-off-by: Kevin Hilman <khilman-rdvid1DuHRBWk0Htik3J/w@public.gmane.org> --- .../bindings/media/ti,da850-vpif-capture.txt | 65 ++++++++++++++++++++++ .../devicetree/bindings/media/ti,da850-vpif.txt | 8 +++ 2 files changed, 73 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/ti,da850-vpif-capture.txt create mode 100644 Documentation/devicetree/bindings/media/ti,da850-vpif.txt diff --git a/Documentation/devicetree/bindings/media/ti,da850-vpif-capture.txt b/Documentation/devicetree/bindings/media/ti,da850-vpif-capture.txt new file mode 100644 index 000000000000..bdd93267301f --- /dev/null +++ b/Documentation/devicetree/bindings/media/ti,da850-vpif-capture.txt @@ -0,0 +1,65 @@ +Texas Instruments VPIF Capture +------------------------------ + +The TI Video Port InterFace (VPIF) capture component is the primary +component for video capture on the DA850 family of TI DaVinci SoCs. + +TI Document number reference: SPRUH82C + +Required properties: +- compatible: must be "ti,da850-vpif-capture" +- reg: physical base address and length of the registers set for the device; +- interrupts: should contain IRQ line for the VPIF + +VPIF capture has a 16-bit parallel bus input, supporting 2 8-bit +channels or a single 16-bit channel. It should contain at least one +port child node with child 'endpoint' node. Please refer to the +bindings defined in +Documentation/devicetree/bindings/media/video-interfaces.txt. + +Example using 2 8-bit input channels, one of which is connected to an +I2C-connected TVP5147 decoder: + + vpif_capture: video-capture@0x00217000 { + compatible = "ti,vpif-capture"; + reg = <0x00217000 0x1000>; + interrupts = <92>; + + port { + vpif_ch0: endpoint@0 { + reg = <0>; + bus-width = <8>; + remote-endpoint = <&composite>; + }; + + vpif_ch1: endpoint@1 { + reg = <1>; + bus-width = <8>; + data-shift = <8>; + }; + }; + }; + +[ ... ] + +&i2c0 { + + tvp5147@5d { + compatible = "ti,tvp5147"; + reg = <0x5d>; + status = "okay"; + + port { + composite: endpoint { + hsync-active = <1>; + vsync-active = <1>; + pclk-sample = <0>; + + /* VPIF channel 0 (lower 8-bits) */ + remote-endpoint = <&vpif_ch0>; + bus-width = <8>; + }; + }; + }; + +}; diff --git a/Documentation/devicetree/bindings/media/ti,da850-vpif.txt b/Documentation/devicetree/bindings/media/ti,da850-vpif.txt new file mode 100644 index 000000000000..d004e600aabe --- /dev/null +++ b/Documentation/devicetree/bindings/media/ti,da850-vpif.txt @@ -0,0 +1,8 @@ +Texas Instruments VPIF +---------------------- + +The Video Port InterFace (VPIF) is the core component for video output +and capture on DA850 TI Davinci SoCs. + +- compatible: must be "ti,da850-vpif" +- reg: physical base address and length of the registers set for the device; -- 2.9.3 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 4/4] [media] dt-bindings: add TI VPIF documentation 2016-11-22 1:44 ` [PATCH v2 4/4] [media] dt-bindings: add TI VPIF documentation Kevin Hilman @ 2016-11-22 12:47 ` Hans Verkuil 2016-11-22 15:50 ` Kevin Hilman 0 siblings, 1 reply; 7+ messages in thread From: Hans Verkuil @ 2016-11-22 12:47 UTC (permalink / raw) To: Kevin Hilman, linux-media Cc: devicetree, Sekhar Nori, Axel Haslam, Bartosz Gołaszewski, Alexandre Bailon, David Lechner, Rob Herring On 22/11/16 02:44, Kevin Hilman wrote: > Cc: Rob Herring <robh@kernel.org> > Signed-off-by: Kevin Hilman <khilman@baylibre.com> > --- > .../bindings/media/ti,da850-vpif-capture.txt | 65 ++++++++++++++++++++++ > .../devicetree/bindings/media/ti,da850-vpif.txt | 8 +++ > 2 files changed, 73 insertions(+) > create mode 100644 Documentation/devicetree/bindings/media/ti,da850-vpif-capture.txt > create mode 100644 Documentation/devicetree/bindings/media/ti,da850-vpif.txt > > diff --git a/Documentation/devicetree/bindings/media/ti,da850-vpif-capture.txt b/Documentation/devicetree/bindings/media/ti,da850-vpif-capture.txt > new file mode 100644 > index 000000000000..bdd93267301f > --- /dev/null > +++ b/Documentation/devicetree/bindings/media/ti,da850-vpif-capture.txt > @@ -0,0 +1,65 @@ > +Texas Instruments VPIF Capture > +------------------------------ > + > +The TI Video Port InterFace (VPIF) capture component is the primary > +component for video capture on the DA850 family of TI DaVinci SoCs. > + > +TI Document number reference: SPRUH82C > + > +Required properties: > +- compatible: must be "ti,da850-vpif-capture" > +- reg: physical base address and length of the registers set for the device; > +- interrupts: should contain IRQ line for the VPIF > + > +VPIF capture has a 16-bit parallel bus input, supporting 2 8-bit > +channels or a single 16-bit channel. It should contain at least one > +port child node with child 'endpoint' node. Please refer to the > +bindings defined in > +Documentation/devicetree/bindings/media/video-interfaces.txt. > + > +Example using 2 8-bit input channels, one of which is connected to an > +I2C-connected TVP5147 decoder: > + > + vpif_capture: video-capture@0x00217000 { > + compatible = "ti,vpif-capture"; Did you forget to update the compatible string to ti,da850-vpif-capture? Hans > + reg = <0x00217000 0x1000>; > + interrupts = <92>; > + > + port { > + vpif_ch0: endpoint@0 { > + reg = <0>; > + bus-width = <8>; > + remote-endpoint = <&composite>; > + }; > + > + vpif_ch1: endpoint@1 { > + reg = <1>; > + bus-width = <8>; > + data-shift = <8>; > + }; > + }; > + }; > + > +[ ... ] > + > +&i2c0 { > + > + tvp5147@5d { > + compatible = "ti,tvp5147"; > + reg = <0x5d>; > + status = "okay"; > + > + port { > + composite: endpoint { > + hsync-active = <1>; > + vsync-active = <1>; > + pclk-sample = <0>; > + > + /* VPIF channel 0 (lower 8-bits) */ > + remote-endpoint = <&vpif_ch0>; > + bus-width = <8>; > + }; > + }; > + }; > + > +}; > diff --git a/Documentation/devicetree/bindings/media/ti,da850-vpif.txt b/Documentation/devicetree/bindings/media/ti,da850-vpif.txt > new file mode 100644 > index 000000000000..d004e600aabe > --- /dev/null > +++ b/Documentation/devicetree/bindings/media/ti,da850-vpif.txt > @@ -0,0 +1,8 @@ > +Texas Instruments VPIF > +---------------------- > + > +The Video Port InterFace (VPIF) is the core component for video output > +and capture on DA850 TI Davinci SoCs. > + > +- compatible: must be "ti,da850-vpif" > +- reg: physical base address and length of the registers set for the device; > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 4/4] [media] dt-bindings: add TI VPIF documentation 2016-11-22 12:47 ` Hans Verkuil @ 2016-11-22 15:50 ` Kevin Hilman 0 siblings, 0 replies; 7+ messages in thread From: Kevin Hilman @ 2016-11-22 15:50 UTC (permalink / raw) To: Hans Verkuil Cc: linux-media, devicetree, Sekhar Nori, Axel Haslam, Bartosz Gołaszewski, Alexandre Bailon, David Lechner, Rob Herring Hans Verkuil <hverkuil@xs4all.nl> writes: > On 22/11/16 02:44, Kevin Hilman wrote: >> Cc: Rob Herring <robh@kernel.org> >> Signed-off-by: Kevin Hilman <khilman@baylibre.com> >> --- >> .../bindings/media/ti,da850-vpif-capture.txt | 65 ++++++++++++++++++++++ >> .../devicetree/bindings/media/ti,da850-vpif.txt | 8 +++ >> 2 files changed, 73 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/media/ti,da850-vpif-capture.txt >> create mode 100644 Documentation/devicetree/bindings/media/ti,da850-vpif.txt >> >> diff --git a/Documentation/devicetree/bindings/media/ti,da850-vpif-capture.txt b/Documentation/devicetree/bindings/media/ti,da850-vpif-capture.txt >> new file mode 100644 >> index 000000000000..bdd93267301f >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/media/ti,da850-vpif-capture.txt >> @@ -0,0 +1,65 @@ >> +Texas Instruments VPIF Capture >> +------------------------------ >> + >> +The TI Video Port InterFace (VPIF) capture component is the primary >> +component for video capture on the DA850 family of TI DaVinci SoCs. >> + >> +TI Document number reference: SPRUH82C >> + >> +Required properties: >> +- compatible: must be "ti,da850-vpif-capture" >> +- reg: physical base address and length of the registers set for the device; >> +- interrupts: should contain IRQ line for the VPIF >> + >> +VPIF capture has a 16-bit parallel bus input, supporting 2 8-bit >> +channels or a single 16-bit channel. It should contain at least one >> +port child node with child 'endpoint' node. Please refer to the >> +bindings defined in >> +Documentation/devicetree/bindings/media/video-interfaces.txt. >> + >> +Example using 2 8-bit input channels, one of which is connected to an >> +I2C-connected TVP5147 decoder: >> + >> + vpif_capture: video-capture@0x00217000 { >> + compatible = "ti,vpif-capture"; > > Did you forget to update the compatible string to ti,da850-vpif-capture? > Ugh, yup. v3 coming right up. Kevin ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-11-22 15:50 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-11-22 1:44 [PATCH v2 0/4] [media] davinci: VPIF: add DT support Kevin Hilman 2016-11-22 1:44 ` [PATCH v2 2/4] [media] davinci: vpif_capture: don't lock over s_stream Kevin Hilman 2016-11-22 1:44 ` [PATCH v2 3/4] [media] davinci: vpif_capture: get subdevs from DT Kevin Hilman [not found] ` <20161122014408.22388-1-khilman-rdvid1DuHRBWk0Htik3J/w@public.gmane.org> 2016-11-22 1:44 ` [PATCH v2 1/4] [media] davinci: add support for DT init Kevin Hilman 2016-11-22 1:44 ` [PATCH v2 4/4] [media] dt-bindings: add TI VPIF documentation Kevin Hilman 2016-11-22 12:47 ` Hans Verkuil 2016-11-22 15:50 ` Kevin Hilman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).