/linux-6.8/drivers/gpu/drm/amd/display/dc/link/protocols/ |
D | link_hpd.c | 28 * This file implements functions that manage basic HPD components such as gpio. 29 * It also provides wrapper functions to execute HPD related programming. This 30 * file only manages basic HPD functionality. It doesn't manage detection or 31 * feature or signal specific HPD behaviors. 65 struct gpio *hpd; in link_enable_hpd_filter() local 72 /* Obtain HPD handle */ in link_enable_hpd_filter() 73 hpd = link_get_hpd_gpio(link->ctx->dc_bios, link->link_id, link->ctx->gpio_service); in link_enable_hpd_filter() 75 if (!hpd) in link_enable_hpd_filter() 78 /* Setup HPD filtering */ in link_enable_hpd_filter() 79 if (dal_gpio_open(hpd, GPIO_MODE_INTERRUPT) == GPIO_RESULT_OK) { in link_enable_hpd_filter() [all …]
|
/linux-6.8/drivers/gpu/drm/nouveau/nvkm/engine/disp/ |
D | conn.c | 46 static const u8 hpd[] = { 0x07, 0x08, 0x51, 0x52, 0x5e, 0x5f, 0x60 }; in nvkm_conn_ctor() local 54 conn->info.hpd = DCB_GPIO_UNUSED; in nvkm_conn_ctor() 56 CONN_DBG(conn, "type %02x loc %d hpd %02x dp %x di %x sr %x lcdid %x", in nvkm_conn_ctor() 57 info->type, info->location, info->hpd, info->dp, in nvkm_conn_ctor() 60 if ((info->hpd = ffs(info->hpd))) { in nvkm_conn_ctor() 61 if (--info->hpd >= ARRAY_SIZE(hpd)) { in nvkm_conn_ctor() 62 CONN_ERR(conn, "hpd %02x unknown", info->hpd); in nvkm_conn_ctor() 65 info->hpd = hpd[info->hpd]; in nvkm_conn_ctor() 67 ret = nvkm_gpio_find(gpio, 0, info->hpd, DCB_GPIO_UNUSED, &func); in nvkm_conn_ctor() 69 CONN_ERR(conn, "func %02x lookup failed, %d", info->hpd, ret); in nvkm_conn_ctor() [all …]
|
/linux-6.8/Documentation/devicetree/bindings/display/panel/ |
D | panel-edp.yaml | 56 HPD :<T3>| : : | 91 hpd-reliable-delay-ms: 94 panel's power-supply before the HPD signal is a reliable way to know 96 the HPD at the start of power-on. This value is not needed if HPD is 99 hpd-absent-delay-ms: 101 The panel specifies that HPD will be asserted this many milliseconds 103 measure HPD then a fixed delay of this many milliseconds can be used. 104 This can also be used as a timeout when waiting for HPD. Does not 105 include the hpd-reliable-delay, so if hpd-reliable-delay was 80 ms 106 and hpd-absent-delay was 200 ms then we'd do a fixed 80 ms delay and [all …]
|
/linux-6.8/drivers/gpu/drm/mediatek/ |
D | mtk_cec.c | 56 bool hpd; member 57 void (*hpd_event)(bool hpd, struct device *dev); 94 void (*hpd_event)(bool hpd, struct device *dev), in mtk_cec_set_hpd_event() argument 151 static void mtk_cec_hpd_event(struct mtk_cec *cec, bool hpd) in mtk_cec_hpd_event() argument 153 void (*hpd_event)(bool hpd, struct device *dev); in mtk_cec_hpd_event() 163 hpd_event(hpd, hdmi_dev); in mtk_cec_hpd_event() 170 bool hpd; in mtk_cec_htplg_isr_thread() local 173 hpd = mtk_cec_hpd_high(dev); in mtk_cec_htplg_isr_thread() 175 if (cec->hpd != hpd) { in mtk_cec_htplg_isr_thread() 176 dev_dbg(dev, "hotplug event! cur hpd = %d, hpd = %d\n", in mtk_cec_htplg_isr_thread() [all …]
|
/linux-6.8/drivers/gpu/drm/radeon/ |
D | radeon_combios.c | 633 i2c.hpd = RADEON_HPD_NONE; in combios_setup_i2c_bus() 1456 struct radeon_hpd hpd; in radeon_get_legacy_connector_info_from_table() local 1543 hpd.hpd = RADEON_HPD_NONE; in radeon_get_legacy_connector_info_from_table() 1554 &hpd); in radeon_get_legacy_connector_info_from_table() 1558 hpd.hpd = RADEON_HPD_NONE; in radeon_get_legacy_connector_info_from_table() 1569 &hpd); in radeon_get_legacy_connector_info_from_table() 1573 hpd.hpd = RADEON_HPD_NONE; in radeon_get_legacy_connector_info_from_table() 1584 &hpd); in radeon_get_legacy_connector_info_from_table() 1588 hpd.hpd = RADEON_HPD_1; in radeon_get_legacy_connector_info_from_table() 1605 &hpd); in radeon_get_legacy_connector_info_from_table() [all …]
|
D | radeon_connectors.c | 46 /* bail if the connector does not have hpd pin, e.g., in radeon_connector_hotplug() 49 if (radeon_connector->hpd.hpd == RADEON_HPD_NONE) in radeon_connector_hotplug() 52 radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd); in radeon_connector_hotplug() 74 radeon_hpd_sense(rdev, radeon_connector->hpd.hpd) && in radeon_connector_hotplug() 1199 /* We only trust HPD on R600 and newer ASICS. */ in radeon_check_hpd_status_unchanged() 1201 && radeon_connector->hpd.hpd != RADEON_HPD_NONE) { in radeon_check_hpd_status_unchanged() 1202 if (radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) in radeon_check_hpd_status_unchanged() 1259 * for HPD do. If the DDC probe fails even though we had an HPD in radeon_dvi_detect() 1263 DRM_DEBUG_KMS("hpd detected without ddc, retrying in 1 second\n"); in radeon_dvi_detect() 1320 /* hpd is our only option in this case */ in radeon_dvi_detect() [all …]
|
/linux-6.8/drivers/gpu/drm/i915/display/ |
D | intel_hotplug_irq.c | 136 struct intel_hotplug *hpd = &dev_priv->display.hotplug; in intel_hpd_init_pins() local 141 hpd->hpd = hpd_status_g4x; in intel_hpd_init_pins() 143 hpd->hpd = hpd_status_i915; in intel_hpd_init_pins() 148 hpd->hpd = hpd_xelpdp; in intel_hpd_init_pins() 150 hpd->hpd = hpd_gen11; in intel_hpd_init_pins() 152 hpd->hpd = hpd_bxt; in intel_hpd_init_pins() 154 hpd->hpd = NULL; /* no north HPD on SKL */ in intel_hpd_init_pins() 156 hpd->hpd = hpd_bdw; in intel_hpd_init_pins() 158 hpd->hpd = hpd_ivb; in intel_hpd_init_pins() 160 hpd->hpd = hpd_ilk; in intel_hpd_init_pins() [all …]
|
D | intel_hotplug.c | 44 * handlers gather the hotplug detect (HPD) information from relevant registers 73 * callback is handled by i915_digport_work_func reenabling of hpd is not 83 * @port: the hpd port to get associated pin 117 * intel_hpd_irq_storm_detect - gather stats and detect HPD IRQ storm on a pin 120 * @long_hpd: whether the HPD IRQ was long or short 122 * Gather stats about HPD IRQs from the specified @pin, and detect IRQ 140 * The HPD threshold can be controlled through i915_hpd_storm_ctl in debugfs, 148 struct intel_hotplug *hpd = &dev_priv->display.hotplug; in intel_hpd_irq_storm_detect() local 149 unsigned long start = hpd->stats[pin].last_jiffies; in intel_hpd_irq_storm_detect() 152 const int threshold = hpd->hpd_storm_threshold; in intel_hpd_irq_storm_detect() [all …]
|
/linux-6.8/drivers/gpu/drm/amd/display/dc/gpio/ |
D | hw_hpd.c | 38 hpd->shifts->field_name, hpd->masks->field_name 41 hpd->base.base.ctx 43 (hpd->regs->reg) 56 struct hw_hpd *hpd = HW_HPD_FROM_BASE(*ptr); in dal_hw_hpd_destroy() local 58 dal_hw_hpd_destruct(hpd); in dal_hw_hpd_destroy() 60 kfree(hpd); in dal_hw_hpd_destroy() 69 struct hw_hpd *hpd = HW_HPD_FROM_BASE(ptr); in get_value() local 92 struct hw_hpd *hpd = HW_HPD_FROM_BASE(ptr); in set_config() local 98 DC_HPD_CONNECT_INT_DELAY, config_data->config.hpd.delay_on_connect / 10, in set_config() 99 DC_HPD_DISCONNECT_INT_DELAY, config_data->config.hpd.delay_on_disconnect / 10); in set_config()
|
/linux-6.8/Documentation/devicetree/bindings/media/cec/ |
D | cec-gpio.yaml | 14 hooked up to a pull-up GPIO line and - optionally - the HPD line is hooked up 17 Please note:: the maximum voltage for the CEC line is 3.63V, for the HPD and 31 hpd-gpios: 34 GPIO that the HPD line is connected to. Used for debugging HPD changes 54 hpd-gpios: false 58 - hpd-gpios 72 hpd-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
|
D | cec-common.yaml | 21 needs-hpd: 24 The CEC support is only available when the HPD is high. Some boards only 25 let the CEC pin through if the HPD is high, for example if there is a 26 level converter that uses the HPD to power up or down.
|
/linux-6.8/arch/powerpc/include/asm/book3s/64/ |
D | hugetlb.h | 67 static inline pte_t *hugepd_page(hugepd_t hpd) in hugepd_page() argument 69 BUG_ON(!hugepd_ok(hpd)); in hugepd_page() 74 return __va(hpd_val(hpd) & HUGEPD_ADDR_MASK); in hugepd_page() 77 static inline unsigned int hugepd_mmu_psize(hugepd_t hpd) in hugepd_mmu_psize() argument 79 return (hpd_val(hpd) & HUGEPD_SHIFT_MASK) >> 2; in hugepd_mmu_psize() 82 static inline unsigned int hugepd_shift(hugepd_t hpd) in hugepd_shift() argument 84 return mmu_psize_to_shift(hugepd_mmu_psize(hpd)); in hugepd_shift() 93 static inline pte_t *hugepte_offset(hugepd_t hpd, unsigned long addr, in hugepte_offset() argument 96 unsigned long idx = (addr & ((1UL << pdshift) - 1)) >> hugepd_shift(hpd); in hugepte_offset() 98 return hugepd_page(hpd) + idx; in hugepte_offset()
|
D | pgtable-4k.h | 34 static inline int hugepd_ok(hugepd_t hpd) in hugepd_ok() argument 38 return hash__hugepd_ok(hpd); in hugepd_ok() 40 #define is_hugepd(hpd) (hugepd_ok(hpd)) argument
|
/linux-6.8/arch/powerpc/include/asm/nohash/ |
D | hugetlb-e500.h | 5 static inline pte_t *hugepd_page(hugepd_t hpd) in hugepd_page() argument 7 if (WARN_ON(!hugepd_ok(hpd))) in hugepd_page() 10 return (pte_t *)((hpd_val(hpd) & ~HUGEPD_SHIFT_MASK) | PD_HUGE); in hugepd_page() 13 static inline unsigned int hugepd_shift(hugepd_t hpd) in hugepd_shift() argument 15 return hpd_val(hpd) & HUGEPD_SHIFT_MASK; in hugepd_shift() 18 static inline pte_t *hugepte_offset(hugepd_t hpd, unsigned long addr, in hugepte_offset() argument 26 return hugepd_page(hpd); in hugepte_offset()
|
/linux-6.8/drivers/gpu/drm/msm/hdmi/ |
D | hdmi_hpd.c | 83 "failed to enable hpd clk: %s (%d)\n", in enable_hpd_clocks() 105 DRM_DEV_ERROR(dev, "failed to enable hpd regulators: %d\n", ret); in msm_hdmi_hpd_enable() 127 /* enable HPD events: */ in msm_hdmi_hpd_enable() 137 /* Toggle HPD circuit to trigger HPD sense */ in msm_hdmi_hpd_enable() 156 /* Disable HPD interrupt */ in msm_hdmi_hpd_disable() 170 dev_warn(dev, "failed to disable hpd regulator: %d\n", ret); in msm_hdmi_hpd_disable() 179 /* Process HPD: */ in msm_hdmi_hpd_irq() 187 /* ack & disable (temporarily) HPD events: */ in msm_hdmi_hpd_irq() 236 * some platforms may not have hpd gpio. Rely only on the status in msm_hdmi_bridge_detect() 258 DBG("hpd gpio tells us: %d", stat_gpio); in msm_hdmi_bridge_detect()
|
/linux-6.8/arch/powerpc/include/asm/nohash/32/ |
D | hugetlb-8xx.h | 7 static inline pte_t *hugepd_page(hugepd_t hpd) in hugepd_page() argument 9 BUG_ON(!hugepd_ok(hpd)); in hugepd_page() 11 return (pte_t *)__va(hpd_val(hpd) & ~HUGEPD_SHIFT_MASK); in hugepd_page() 14 static inline unsigned int hugepd_shift(hugepd_t hpd) in hugepd_shift() argument 19 static inline pte_t *hugepte_offset(hugepd_t hpd, unsigned long addr, in hugepte_offset() argument 24 return hugepd_page(hpd) + idx; in hugepte_offset()
|
/linux-6.8/Documentation/devicetree/bindings/display/bridge/ |
D | analogix,dp.yaml | 28 force-hpd: 31 Indicate driver need force hpd when hpd detect failed, this 32 is used for some eDP screen which don not have a hpd signal. 34 hpd-gpios:
|
/linux-6.8/drivers/usb/typec/altmodes/ |
D | displayport.c | 62 bool hpd; member 140 bool hpd = !!(dp->data.status & DP_STATUS_HPD_STATE); in dp_altmode_status_update() local 153 if (dp->hpd != hpd) { in dp_altmode_status_update() 154 dp->hpd = hpd; in dp_altmode_status_update() 160 hpd ? connector_status_connected : in dp_altmode_status_update() 162 dp->hpd = hpd; in dp_altmode_status_update() 163 sysfs_notify(&dp->alt->dev.kobj, "displayport", "hpd"); in dp_altmode_status_update() 174 * If the DFP_D/UFP_D sends a change in HPD when first notifying the in dp_altmode_configured() 176 * configuration is complete to signal HPD. in dp_altmode_configured() 181 sysfs_notify(&dp->alt->dev.kobj, "displayport", "hpd"); in dp_altmode_configured() [all …]
|
/linux-6.8/Documentation/ABI/testing/ |
D | sysfs-driver-typec-displayport | 51 What: /sys/bus/typec/devices/.../displayport/hpd 56 HotPlugDetect(HPD) shall be supported on the USB-C connector when 58 reflects the current state of HPD. 61 - 1: when HPD’s logical state is high (HPD_High) as defined 63 - 0 when HPD’s logical state is low (HPD_Low) as defined by
|
/linux-6.8/Documentation/devicetree/bindings/display/ti/ |
D | ti,tpd12s015.txt | 8 - gpios: CT CP HPD, LS OE and HPD gpios 20 gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>, /* 60, CT CP HPD */ 22 <&gpio2 31 GPIO_ACTIVE_HIGH>; /* 63, HPD */
|
/linux-6.8/include/linux/ |
D | amd-pmf-io.h | 29 * @SFH_NOT_DETECTED: Check the HPD connection information from MP2 FW 30 * @SFH_USER_PRESENT: Check if the user is present from HPD sensor 31 * @SFH_USER_AWAY: Check if the user is away from HPD sensor 40 * struct amd_sfh_info - get HPD sensor info from MP2 FW
|
/linux-6.8/drivers/gpu/drm/amd/amdgpu/ |
D | dce_v11_0.c | 93 uint32_t hpd; member 99 .hpd = DISP_INTERRUPT_STATUS__DC_HPD1_INTERRUPT_MASK 104 .hpd = DISP_INTERRUPT_STATUS_CONTINUE__DC_HPD2_INTERRUPT_MASK 109 .hpd = DISP_INTERRUPT_STATUS_CONTINUE2__DC_HPD3_INTERRUPT_MASK 114 .hpd = DISP_INTERRUPT_STATUS_CONTINUE3__DC_HPD4_INTERRUPT_MASK 119 .hpd = DISP_INTERRUPT_STATUS_CONTINUE4__DC_HPD5_INTERRUPT_MASK 124 .hpd = DISP_INTERRUPT_STATUS_CONTINUE5__DC_HPD6_INTERRUPT_MASK 295 * dce_v11_0_hpd_sense - hpd sense callback. 298 * @hpd: hpd (hotplug detect) pin 304 enum amdgpu_hpd_id hpd) in dce_v11_0_hpd_sense() argument [all …]
|
D | dce_v10_0.c | 89 uint32_t hpd; member 95 .hpd = DISP_INTERRUPT_STATUS__DC_HPD1_INTERRUPT_MASK 100 .hpd = DISP_INTERRUPT_STATUS_CONTINUE__DC_HPD2_INTERRUPT_MASK 105 .hpd = DISP_INTERRUPT_STATUS_CONTINUE2__DC_HPD3_INTERRUPT_MASK 110 .hpd = DISP_INTERRUPT_STATUS_CONTINUE3__DC_HPD4_INTERRUPT_MASK 115 .hpd = DISP_INTERRUPT_STATUS_CONTINUE4__DC_HPD5_INTERRUPT_MASK 120 .hpd = DISP_INTERRUPT_STATUS_CONTINUE5__DC_HPD6_INTERRUPT_MASK 271 * dce_v10_0_hpd_sense - hpd sense callback. 274 * @hpd: hpd (hotplug detect) pin 280 enum amdgpu_hpd_id hpd) in dce_v10_0_hpd_sense() argument [all …]
|
/linux-6.8/Documentation/admin-guide/media/ |
D | cec.rst | 220 CEC Without HPD 227 level-shifter that is powered off when the HPD signal is low, thus 228 blocking the CEC pin. Even though the SoC can use CEC without a HPD, 270 on your device: now there is a HPD, so you should see the command 273 2) If you have another linux device supporting CEC without HPD, then 275 two HDMI outputs together. You won't have a HPD (which is what we 280 If CEC messages do not come through when there is no HPD, then you 282 or the software powers off the CEC core when the HPD goes low. The 324 If you want to monitor the HPD and/or 5V lines as well, then you need one of 336 GPIO 6 and GPIO 7. The optional HPD pin of the HDMI connector should [all …]
|
/linux-6.8/drivers/gpu/drm/amd/display/dc/ |
D | dc.h | 1529 bool hpd_status; /* HPD status of link without physical HPD pin. */ 1530 bool is_hpd_pending; /* Indicates a new received hpd */ 1672 * recommended to call this function as the first link operation upon HPD event 1715 /* Enable HPD interrupt handler for a given link */ 1718 /* Disable HPD interrupt handler for a given link */ 1734 /* query current hpd pin value 1735 * return - true HPD is asserted (HPD high), false otherwise (HPD low) 1743 /* enable/disable hardware HPD filter. 1745 * @link - The link the HPD pin is associated with. 1746 * @enable = true - enable hardware HPD filter. HPD event will only queued to irq [all …]
|