struct vc4_hdmi_variant { /* Encoder Type for that controller */ enum vc4_encoder_type encoder_type;
/* ALSA card name */ constchar *card_name;
/* Filename to expose the registers in debugfs */ constchar *debugfs_name;
/* Maximum pixel clock supported by the controller (in Hz) */ unsignedlonglong max_pixel_clock;
/* List of the registers available on that variant */ conststruct vc4_hdmi_register *registers;
/* Number of registers on that variant */ unsignedint num_registers;
/* BCM2711 Only. * The variants don't map the lane in the same order in the * PHY, so this is an array mapping the HDMI channel (index) * to the PHY lane (value).
*/ enum vc4_hdmi_phy_channel phy_lane_mapping[4];
/* The BCM2711 cannot deal with odd horizontal pixel timings */ bool unsupported_odd_h_timings;
/* * The BCM2711 CEC/hotplug IRQ controller is shared between the * two HDMI controllers, and we have a proper irqchip driver for * it.
*/ bool external_irq_controller;
/* Callback to get the resources (memory region, interrupts, * clocks, etc) for that variant.
*/ int (*init_resources)(struct drm_device *drm, struct vc4_hdmi *vc4_hdmi);
/* Callback to reset the HDMI block */ void (*reset)(struct vc4_hdmi *vc4_hdmi);
/* Callback to enable / disable the CSC */ void (*csc_setup)(struct vc4_hdmi *vc4_hdmi, struct drm_connector_state *state, conststruct drm_display_mode *mode);
/* Callback to configure the video timings in the HDMI block */ void (*set_timings)(struct vc4_hdmi *vc4_hdmi, struct drm_connector_state *state, conststruct drm_display_mode *mode);
/* Callback to initialize the PHY according to the connector state */ void (*phy_init)(struct vc4_hdmi *vc4_hdmi, struct drm_connector_state *conn_state);
/* Callback to disable the PHY */ void (*phy_disable)(struct vc4_hdmi *vc4_hdmi);
/* Callback to enable the RNG in the PHY */ void (*phy_rng_enable)(struct vc4_hdmi *vc4_hdmi);
/* Callback to disable the RNG in the PHY */ void (*phy_rng_disable)(struct vc4_hdmi *vc4_hdmi);
/* Callback to get channel map */
u32 (*channel_map)(struct vc4_hdmi *vc4_hdmi, u32 channel_mask);
/* Enables HDR metadata */ bool supports_hdr;
/* Callback for hardware specific hotplug detect */ bool (*hp_detect)(struct vc4_hdmi *vc4_hdmi);
};
/* VC5 Only */ void __iomem *cec_regs; /* VC5 Only */ void __iomem *csc_regs; /* VC5 Only */ void __iomem *dvp_regs; /* VC5 Only */ void __iomem *phy_regs; /* VC5 Only */ void __iomem *ram_regs; /* VC5 Only */ void __iomem *rm_regs;
struct gpio_desc *hpd_gpio;
/* * On some systems (like the RPi4), some modes are in the same * frequency range than the WiFi channels (1440p@60Hz for * example). Should we take evasive actions because that system * has a wifi adapter?
*/ bool disable_wifi_frequencies;
/** * @mutex: Mutex protecting the driver access across multiple * frameworks (KMS, ALSA, CEC).
*/ struct mutex mutex;
/** * @saved_adjusted_mode: Copy of @drm_crtc_state.adjusted_mode * for use by ALSA hooks and interrupt handlers. Protected by @mutex.
*/ struct drm_display_mode saved_adjusted_mode;
/** * @packet_ram_enabled: Is the HDMI controller packet RAM currently * on? Protected by @mutex.
*/ bool packet_ram_enabled;
/** * @scdc_enabled: Is the HDMI controller currently running with * the scrambler on? Protected by @mutex.
*/ bool scdc_enabled;
/** * @output_bpc: Copy of @drm_connector_state.hdmi.output_bpc for * use outside of KMS hooks. Protected by @mutex.
*/ unsignedint output_bpc;
/** * @output_format: Copy of * @drm_connector_state.hdmi.output_format for use outside of * KMS hooks. Protected by @mutex.
*/ enum hdmi_colorspace output_format;
/** * @hdmi_jack: Represents the connection state of the HDMI plug, for * ALSA jack detection.
*/ struct snd_soc_jack hdmi_jack;
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.