Hi,
This series adds the DT bindings and a driver for DisplayPort connector.
Minor changes since v3: - Added Laurent's reviewed-bys - Added $ref to graph schema - Use 'ret' instead of 'r' - Add the missing period
Tomi
Tomi Valkeinen (2): dt-bindings: dp-connector: add binding for DisplayPort connector drm/bridge: display-connector: add DP support
.../display/connector/dp-connector.yaml | 56 +++++++++++++++++++ drivers/gpu/drm/bridge/display-connector.c | 46 ++++++++++++++- 2 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/display/connector/dp-connector.yaml
Add binding for DisplayPort connector. A few notes:
* Similar to hdmi-connector, it has hpd-gpios as an optional property, as the HPD could also be handled by, e.g., the DP bridge.
* dp-pwr-supply, which provides 3.3V on DP_PWR pin, is optional, as it is not strictly required: standard DP cables do not even have the pin connected.
* Connector type. Full size and mini connectors are identical except for the connector size and form, so I believe there is no functional need for this property. But similar to 'label' property, it might be used to present information about the connector to the userspace.
* No eDP. There's really no "eDP connector", as it's always a custom made connection between the DP and the DP panel, although the eDP spec does offer a few suggested pin setups. So possibly there is no need for edp-connector binding, but even if there is, I don't want to guess what it could look like, and could it be part of the dp-connector binding.
* No DP++. I'm not familiar with DP++. DP++ might need an i2c bus added to the bindings.
Signed-off-by: Tomi Valkeinen tomi.valkeinen@ti.com Reviewed-by: Laurent Pinchart laurent.pinchart@ideasonboard.com --- .../display/connector/dp-connector.yaml | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/connector/dp-connector.yaml
diff --git a/Documentation/devicetree/bindings/display/connector/dp-connector.yaml b/Documentation/devicetree/bindings/display/connector/dp-connector.yaml new file mode 100644 index 000000000000..1c17d60e7760 --- /dev/null +++ b/Documentation/devicetree/bindings/display/connector/dp-connector.yaml @@ -0,0 +1,56 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/connector/dp-connector.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: DisplayPort Connector + +maintainers: + - Tomi Valkeinen tomi.valkeinen@ti.com + +properties: + compatible: + const: dp-connector + + label: true + + type: + enum: + - full-size + - mini + + hpd-gpios: + description: A GPIO line connected to HPD + maxItems: 1 + + dp-pwr-supply: + description: Power supply for the DP_PWR pin + maxItems: 1 + + port: + $ref: /schemas/graph.yaml#/properties/port + description: Connection to controller providing DP signals + +required: + - compatible + - type + - port + +additionalProperties: false + +examples: + - | + connector { + compatible = "dp-connector"; + label = "dp0"; + type = "full-size"; + + port { + dp_connector_in: endpoint { + remote-endpoint = <&dp_out>; + }; + }; + }; + +...
On Mon, 30 Nov 2020 13:29:18 +0200, Tomi Valkeinen wrote:
Add binding for DisplayPort connector. A few notes:
Similar to hdmi-connector, it has hpd-gpios as an optional property, as the HPD could also be handled by, e.g., the DP bridge.
dp-pwr-supply, which provides 3.3V on DP_PWR pin, is optional, as it is not strictly required: standard DP cables do not even have the pin connected.
Connector type. Full size and mini connectors are identical except for the connector size and form, so I believe there is no functional need for this property. But similar to 'label' property, it might be used to present information about the connector to the userspace.
No eDP. There's really no "eDP connector", as it's always a custom made connection between the DP and the DP panel, although the eDP spec does offer a few suggested pin setups. So possibly there is no need for edp-connector binding, but even if there is, I don't want to guess what it could look like, and could it be part of the dp-connector binding.
No DP++. I'm not familiar with DP++. DP++ might need an i2c bus added to the bindings.
Signed-off-by: Tomi Valkeinen tomi.valkeinen@ti.com Reviewed-by: Laurent Pinchart laurent.pinchart@ideasonboard.com
.../display/connector/dp-connector.yaml | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/connector/dp-connector.yaml
Reviewed-by: Rob Herring robh@kernel.org
Add DP support to display-connector driver. The driver will support HPD via a GPIO and DP PWR.
DP PWR will be enabled at probe, which is not optimal, but I'm not sure what would be a good place to enable and disable DP PWR. Perhaps attach/detach, but I don't know if enabling HW is something that attach is supposed to do.
In any case, I don't think there's much difference in power consumption between the version in this patch and enabling the regulator later: if the driver probes, supposedly it will attach very soon afterwards, and we need to enable the DP PWR as soon as possible.
Signed-off-by: Tomi Valkeinen tomi.valkeinen@ti.com Reviewed-by: Laurent Pinchart laurent.pinchart@ideasonboard.com --- drivers/gpu/drm/bridge/display-connector.c | 46 +++++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/bridge/display-connector.c b/drivers/gpu/drm/bridge/display-connector.c index 4d278573cdb9..05eb759da6fc 100644 --- a/drivers/gpu/drm/bridge/display-connector.c +++ b/drivers/gpu/drm/bridge/display-connector.c @@ -11,6 +11,7 @@ #include <linux/of.h> #include <linux/of_device.h> #include <linux/platform_device.h> +#include <linux/regulator/consumer.h>
#include <drm/drm_bridge.h> #include <drm/drm_edid.h> @@ -20,6 +21,8 @@ struct display_connector {
struct gpio_desc *hpd_gpio; int hpd_irq; + + struct regulator *dp_pwr; };
static inline struct display_connector * @@ -172,11 +175,12 @@ static int display_connector_probe(struct platform_device *pdev) of_property_read_string(pdev->dev.of_node, "label", &label);
/* - * Get the HPD GPIO for DVI and HDMI connectors. If the GPIO can provide + * Get the HPD GPIO for DVI, HDMI and DP connectors. If the GPIO can provide * edge interrupts, register an interrupt handler. */ if (type == DRM_MODE_CONNECTOR_DVII || - type == DRM_MODE_CONNECTOR_HDMIA) { + type == DRM_MODE_CONNECTOR_HDMIA || + type == DRM_MODE_CONNECTOR_DisplayPort) { conn->hpd_gpio = devm_gpiod_get_optional(&pdev->dev, "hpd", GPIOD_IN); if (IS_ERR(conn->hpd_gpio)) { @@ -223,6 +227,38 @@ static int display_connector_probe(struct platform_device *pdev) } }
+ /* Get the DP PWR for DP connector. */ + if (type == DRM_MODE_CONNECTOR_DisplayPort) { + int ret; + + conn->dp_pwr = devm_regulator_get_optional(&pdev->dev, "dp-pwr"); + + if (IS_ERR(conn->dp_pwr)) { + ret = PTR_ERR(conn->dp_pwr); + + switch (ret) { + case -ENODEV: + conn->dp_pwr = NULL; + break; + + case -EPROBE_DEFER: + return -EPROBE_DEFER; + + default: + dev_err(&pdev->dev, "failed to get DP PWR regulator: %d\n", ret); + return ret; + } + } + + if (conn->dp_pwr) { + ret = regulator_enable(conn->dp_pwr); + if (ret) { + dev_err(&pdev->dev, "failed to enable DP PWR regulator: %d\n", ret); + return ret; + } + } + } + conn->bridge.funcs = &display_connector_bridge_funcs; conn->bridge.of_node = pdev->dev.of_node;
@@ -251,6 +287,9 @@ static int display_connector_remove(struct platform_device *pdev) { struct display_connector *conn = platform_get_drvdata(pdev);
+ if (conn->dp_pwr) + regulator_disable(conn->dp_pwr); + drm_bridge_remove(&conn->bridge);
if (!IS_ERR(conn->bridge.ddc)) @@ -275,6 +314,9 @@ static const struct of_device_id display_connector_match[] = { }, { .compatible = "vga-connector", .data = (void *)DRM_MODE_CONNECTOR_VGA, + }, { + .compatible = "dp-connector", + .data = (void *)DRM_MODE_CONNECTOR_DisplayPort, }, {}, };
Hi DRM Bridge maintainers,
On 30/11/2020 13:29, Tomi Valkeinen wrote:
Hi,
This series adds the DT bindings and a driver for DisplayPort connector.
Minor changes since v3:
- Added Laurent's reviewed-bys
- Added $ref to graph schema
- Use 'ret' instead of 'r'
- Add the missing period
Tomi
Tomi Valkeinen (2): dt-bindings: dp-connector: add binding for DisplayPort connector drm/bridge: display-connector: add DP support
.../display/connector/dp-connector.yaml | 56 +++++++++++++++++++ drivers/gpu/drm/bridge/display-connector.c | 46 ++++++++++++++- 2 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/display/connector/dp-connector.yaml
Is it ok for me to push this to drm-misc-next, or does one of the bridge maintainers want to handle that?
Tomi
Hi Tomi, On Thu, Dec 03, 2020 at 01:52:21PM +0200, Tomi Valkeinen wrote:
Hi DRM Bridge maintainers,
On 30/11/2020 13:29, Tomi Valkeinen wrote:
Hi,
This series adds the DT bindings and a driver for DisplayPort connector.
Minor changes since v3:
- Added Laurent's reviewed-bys
- Added $ref to graph schema
- Use 'ret' instead of 'r'
- Add the missing period
Tomi
Tomi Valkeinen (2): dt-bindings: dp-connector: add binding for DisplayPort connector drm/bridge: display-connector: add DP support
.../display/connector/dp-connector.yaml | 56 +++++++++++++++++++ drivers/gpu/drm/bridge/display-connector.c | 46 ++++++++++++++- 2 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/display/connector/dp-connector.yaml
Is it ok for me to push this to drm-misc-next, or does one of the bridge maintainers want to handle that?
IMO apply them to drm-misc-next. But I am not bridge maintainer so...
Sam
On 03/12/2020 23:24, Sam Ravnborg wrote:
Hi Tomi, On Thu, Dec 03, 2020 at 01:52:21PM +0200, Tomi Valkeinen wrote:
Hi DRM Bridge maintainers,
On 30/11/2020 13:29, Tomi Valkeinen wrote:
Hi,
This series adds the DT bindings and a driver for DisplayPort connector.
Minor changes since v3:
- Added Laurent's reviewed-bys
- Added $ref to graph schema
- Use 'ret' instead of 'r'
- Add the missing period
Tomi
Tomi Valkeinen (2): dt-bindings: dp-connector: add binding for DisplayPort connector drm/bridge: display-connector: add DP support
.../display/connector/dp-connector.yaml | 56 +++++++++++++++++++ drivers/gpu/drm/bridge/display-connector.c | 46 ++++++++++++++- 2 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/display/connector/dp-connector.yaml
Is it ok for me to push this to drm-misc-next, or does one of the bridge maintainers want to handle that?
IMO apply them to drm-misc-next. But I am not bridge maintainer so...
There has been no comments, so pushing today.
Tomi
dri-devel@lists.freedesktop.org