@@ -166,10 +166,9 @@ vc4_hdmi_connector_detect(struct drm_connector *connector, bool force)
166
166
struct vc4_hdmi * vc4_hdmi = connector_to_vc4_hdmi (connector );
167
167
bool connected = false;
168
168
169
- if (vc4_hdmi -> hpd_gpio ) {
170
- if (gpio_get_value_cansleep (vc4_hdmi -> hpd_gpio ) ^
171
- vc4_hdmi -> hpd_active_low )
172
- connected = true;
169
+ if (vc4_hdmi -> hpd_gpio &&
170
+ gpiod_get_value_cansleep (vc4_hdmi -> hpd_gpio )) {
171
+ connected = true;
173
172
} else if (drm_probe_ddc (vc4_hdmi -> ddc )) {
174
173
connected = true;
175
174
} else if (HDMI_READ (HDMI_HOTPLUG ) & VC4_HDMI_HOTPLUG_CONNECTED ) {
@@ -2105,7 +2104,6 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
2105
2104
struct vc4_hdmi * vc4_hdmi ;
2106
2105
struct drm_encoder * encoder ;
2107
2106
struct device_node * ddc_node ;
2108
- u32 value ;
2109
2107
int ret ;
2110
2108
2111
2109
vc4_hdmi = devm_kzalloc (dev , sizeof (* vc4_hdmi ), GFP_KERNEL );
@@ -2144,18 +2142,10 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
2144
2142
/* Only use the GPIO HPD pin if present in the DT, otherwise
2145
2143
* we'll use the HDMI core's register.
2146
2144
*/
2147
- if (of_find_property (dev -> of_node , "hpd-gpios" , & value )) {
2148
- enum of_gpio_flags hpd_gpio_flags ;
2149
-
2150
- vc4_hdmi -> hpd_gpio = of_get_named_gpio_flags (dev -> of_node ,
2151
- "hpd-gpios" , 0 ,
2152
- & hpd_gpio_flags );
2153
- if (vc4_hdmi -> hpd_gpio < 0 ) {
2154
- ret = vc4_hdmi -> hpd_gpio ;
2155
- goto err_put_ddc ;
2156
- }
2157
-
2158
- vc4_hdmi -> hpd_active_low = hpd_gpio_flags & OF_GPIO_ACTIVE_LOW ;
2145
+ vc4_hdmi -> hpd_gpio = devm_gpiod_get_optional (dev , "hpd" , GPIOD_IN );
2146
+ if (IS_ERR (vc4_hdmi -> hpd_gpio )) {
2147
+ ret = PTR_ERR (vc4_hdmi -> hpd_gpio );
2148
+ goto err_put_ddc ;
2159
2149
}
2160
2150
2161
2151
vc4_hdmi -> disable_wifi_frequencies =
0 commit comments