• Home
  • Raw
  • Download

Lines Matching +full:lvds +full:- +full:decoder

1 // SPDX-License-Identifier: GPL-2.0
3 * THC63LVD1024 LVDS to parallel data DRM bridge driver.
45 return drm_bridge_attach(bridge->encoder, thc63->next, bridge); in thc63_attach()
53 ret = regulator_enable(thc63->vcc); in thc63_enable()
55 dev_err(thc63->dev, in thc63_enable()
60 gpiod_set_value(thc63->pdwn, 0); in thc63_enable()
61 gpiod_set_value(thc63->oe, 1); in thc63_enable()
69 gpiod_set_value(thc63->oe, 0); in thc63_disable()
70 gpiod_set_value(thc63->pdwn, 1); in thc63_disable()
72 ret = regulator_disable(thc63->vcc); in thc63_disable()
74 dev_err(thc63->dev, in thc63_disable()
89 thc63_out = of_graph_get_endpoint_by_regs(thc63->dev->of_node, in thc63_parse_dt()
90 THC63_RGB_OUT0, -1); in thc63_parse_dt()
92 dev_err(thc63->dev, "Missing endpoint in port@%u\n", in thc63_parse_dt()
94 return -ENODEV; in thc63_parse_dt()
100 dev_err(thc63->dev, "Endpoint in port@%u unconnected\n", in thc63_parse_dt()
102 return -ENODEV; in thc63_parse_dt()
106 dev_err(thc63->dev, "port@%u remote endpoint is disabled\n", in thc63_parse_dt()
109 return -ENODEV; in thc63_parse_dt()
112 thc63->next = of_drm_find_bridge(remote); in thc63_parse_dt()
114 if (!thc63->next) in thc63_parse_dt()
115 return -EPROBE_DEFER; in thc63_parse_dt()
122 thc63->oe = devm_gpiod_get_optional(thc63->dev, "oe", GPIOD_OUT_LOW); in thc63_gpio_init()
123 if (IS_ERR(thc63->oe)) { in thc63_gpio_init()
124 dev_err(thc63->dev, "Unable to get \"oe-gpios\": %ld\n", in thc63_gpio_init()
125 PTR_ERR(thc63->oe)); in thc63_gpio_init()
126 return PTR_ERR(thc63->oe); in thc63_gpio_init()
129 thc63->pdwn = devm_gpiod_get_optional(thc63->dev, "powerdown", in thc63_gpio_init()
131 if (IS_ERR(thc63->pdwn)) { in thc63_gpio_init()
132 dev_err(thc63->dev, "Unable to get \"powerdown-gpios\": %ld\n", in thc63_gpio_init()
133 PTR_ERR(thc63->pdwn)); in thc63_gpio_init()
134 return PTR_ERR(thc63->pdwn); in thc63_gpio_init()
145 thc63 = devm_kzalloc(&pdev->dev, sizeof(*thc63), GFP_KERNEL); in thc63_probe()
147 return -ENOMEM; in thc63_probe()
149 thc63->dev = &pdev->dev; in thc63_probe()
152 thc63->vcc = devm_regulator_get_optional(thc63->dev, "vcc"); in thc63_probe()
153 if (IS_ERR(thc63->vcc)) { in thc63_probe()
154 if (PTR_ERR(thc63->vcc) == -EPROBE_DEFER) in thc63_probe()
155 return -EPROBE_DEFER; in thc63_probe()
157 dev_err(thc63->dev, "Unable to get \"vcc\" supply: %ld\n", in thc63_probe()
158 PTR_ERR(thc63->vcc)); in thc63_probe()
159 return PTR_ERR(thc63->vcc); in thc63_probe()
170 thc63->bridge.driver_private = thc63; in thc63_probe()
171 thc63->bridge.of_node = pdev->dev.of_node; in thc63_probe()
172 thc63->bridge.funcs = &thc63_bridge_func; in thc63_probe()
174 drm_bridge_add(&thc63->bridge); in thc63_probe()
183 drm_bridge_remove(&thc63->bridge); in thc63_remove()
205 MODULE_DESCRIPTION("Thine THC63LVD1024 LVDS decoder DRM bridge driver");