/Linux-v6.1/drivers/media/cec/platform/s5p/ |
D | s5p_cec.c | 2 /* drivers/media/platform/s5p-cec/s5p_cec.c 4 * Samsung S5P CEC driver 8 * This driver is based on the "cec interface driver for exynos soc" by 23 #include <media/cec.h> 24 #include <media/cec-notifier.h> 27 #include "regs-cec.h" 30 #define CEC_NAME "s5p-cec" 39 struct s5p_cec_dev *cec = cec_get_drvdata(adap); in s5p_cec_adap_enable() local 42 ret = pm_runtime_resume_and_get(cec->dev); in s5p_cec_adap_enable() 46 s5p_cec_reset(cec); in s5p_cec_adap_enable() [all …]
|
D | exynos_hdmi_cecctrl.c | 2 /* drivers/media/platform/s5p-cec/exynos_hdmi_cecctrl.c 7 * cec ftn file for Samsung TVOUT driver 14 #include "regs-cec.h" 23 void s5p_cec_set_divider(struct s5p_cec_dev *cec) in s5p_cec_set_divider() argument 30 if (regmap_read(cec->pmu, EXYNOS_HDMI_PHY_CONTROL, ®)) { in s5p_cec_set_divider() 31 dev_err(cec->dev, "failed to read phy control\n"); in s5p_cec_set_divider() 37 if (regmap_write(cec->pmu, EXYNOS_HDMI_PHY_CONTROL, reg)) { in s5p_cec_set_divider() 38 dev_err(cec->dev, "failed to write phy control\n"); in s5p_cec_set_divider() 44 writeb(0x0, cec->reg + S5P_CEC_DIVISOR_3); in s5p_cec_set_divider() 45 writeb(0x0, cec->reg + S5P_CEC_DIVISOR_2); in s5p_cec_set_divider() [all …]
|
D | exynos_hdmi_cec.h | 2 /* drivers/media/platform/s5p-cec/exynos_hdmi_cec.h 7 * Header file for interface of Samsung Exynos hdmi cec hardware 16 void s5p_cec_set_divider(struct s5p_cec_dev *cec); 17 void s5p_cec_enable_rx(struct s5p_cec_dev *cec); 18 void s5p_cec_mask_rx_interrupts(struct s5p_cec_dev *cec); 19 void s5p_cec_unmask_rx_interrupts(struct s5p_cec_dev *cec); 20 void s5p_cec_mask_tx_interrupts(struct s5p_cec_dev *cec); 21 void s5p_cec_unmask_tx_interrupts(struct s5p_cec_dev *cec); 22 void s5p_cec_reset(struct s5p_cec_dev *cec); 23 void s5p_cec_tx_reset(struct s5p_cec_dev *cec); [all …]
|
/Linux-v6.1/drivers/media/cec/platform/cec-gpio/ |
D | cec-gpio.c | 11 #include <media/cec-notifier.h> 12 #include <media/cec-pin.h> 36 struct cec_gpio *cec = cec_get_drvdata(adap); in cec_gpio_read() local 38 if (cec->cec_is_low) in cec_gpio_read() 40 return gpiod_get_value(cec->cec_gpio); in cec_gpio_read() 45 struct cec_gpio *cec = cec_get_drvdata(adap); in cec_gpio_high() local 47 if (!cec->cec_is_low) in cec_gpio_high() 49 cec->cec_is_low = false; in cec_gpio_high() 50 gpiod_set_value(cec->cec_gpio, 1); in cec_gpio_high() 55 struct cec_gpio *cec = cec_get_drvdata(adap); in cec_gpio_low() local [all …]
|
/Linux-v6.1/drivers/media/cec/platform/tegra/ |
D | tegra_cec.c | 3 * Tegra CEC implementation 5 * The original 3.10 CEC driver using a custom API: 9 * Conversion to the CEC framework and to the mainline kernel: 29 #include <media/cec-notifier.h> 33 #define TEGRA_CEC_NAME "tegra-cec" 52 static inline u32 cec_read(struct tegra_cec *cec, u32 reg) in cec_read() argument 54 return readl(cec->cec_base + reg); in cec_read() 57 static inline void cec_write(struct tegra_cec *cec, u32 reg, u32 val) in cec_write() argument 59 writel(val, cec->cec_base + reg); in cec_write() 62 static void tegra_cec_error_recovery(struct tegra_cec *cec) in tegra_cec_error_recovery() argument [all …]
|
/Linux-v6.1/drivers/media/cec/platform/stm32/ |
D | stm32-cec.c | 3 * STM32 CEC driver 17 #include <media/cec.h> 19 #define CEC_NAME "stm32-cec" 21 /* CEC registers */ 80 static void cec_hw_init(struct stm32_cec *cec) in cec_hw_init() argument 82 regmap_update_bits(cec->regmap, CEC_CR, TXEOM | TXSOM | CECEN, 0); in cec_hw_init() 84 regmap_update_bits(cec->regmap, CEC_IER, ALL_TX_IT | ALL_RX_IT, in cec_hw_init() 87 regmap_update_bits(cec->regmap, CEC_CFGR, FULL_CFG, FULL_CFG); in cec_hw_init() 90 static void stm32_tx_done(struct stm32_cec *cec, u32 status) in stm32_tx_done() argument 93 cec_transmit_done(cec->adap, CEC_TX_STATUS_ERROR, in stm32_tx_done() [all …]
|
/Linux-v6.1/drivers/gpu/drm/bridge/synopsys/ |
D | dw-hdmi-cec.c | 3 * Designware HDMI CEC driver 16 #include <media/cec.h> 17 #include <media/cec-notifier.h> 19 #include "dw-hdmi-cec.h" 67 static void dw_hdmi_write(struct dw_hdmi_cec *cec, u8 val, int offset) in dw_hdmi_write() argument 69 cec->ops->write(cec->hdmi, val, offset); in dw_hdmi_write() 72 static u8 dw_hdmi_read(struct dw_hdmi_cec *cec, int offset) in dw_hdmi_read() argument 74 return cec->ops->read(cec->hdmi, offset); in dw_hdmi_read() 79 struct dw_hdmi_cec *cec = cec_get_drvdata(adap); in dw_hdmi_cec_log_addr() local 82 cec->addresses = 0; in dw_hdmi_cec_log_addr() [all …]
|
/Linux-v6.1/drivers/gpu/drm/mediatek/ |
D | mtk_cec.c | 60 static void mtk_cec_clear_bits(struct mtk_cec *cec, unsigned int offset, in mtk_cec_clear_bits() argument 63 void __iomem *reg = cec->regs + offset; in mtk_cec_clear_bits() 71 static void mtk_cec_set_bits(struct mtk_cec *cec, unsigned int offset, in mtk_cec_set_bits() argument 74 void __iomem *reg = cec->regs + offset; in mtk_cec_set_bits() 82 static void mtk_cec_mask(struct mtk_cec *cec, unsigned int offset, in mtk_cec_mask() argument 85 u32 tmp = readl(cec->regs + offset) & ~mask; in mtk_cec_mask() 88 writel(tmp, cec->regs + offset); in mtk_cec_mask() 95 struct mtk_cec *cec = dev_get_drvdata(dev); in mtk_cec_set_hpd_event() local 98 spin_lock_irqsave(&cec->lock, flags); in mtk_cec_set_hpd_event() 99 cec->hdmi_dev = hdmi_dev; in mtk_cec_set_hpd_event() [all …]
|
/Linux-v6.1/drivers/media/cec/platform/sti/ |
D | stih-cec.c | 3 * STIH4xx CEC driver 16 #include <media/cec.h> 17 #include <media/cec-notifier.h> 19 #define CEC_NAME "stih-cec" 21 /* CEC registers */ 134 struct stih_cec *cec = cec_get_drvdata(adap); in stih_cec_adap_enable() local 138 unsigned long clk_freq = clk_get_rate(cec->clk); in stih_cec_adap_enable() 141 writel(cec_clk_div, cec->regs + CEC_CLK_DIV); in stih_cec_adap_enable() 145 cec->regs + CEC_BIT_TOUT_THRESH); in stih_cec_adap_enable() 149 cec->regs + CEC_BIT_PULSE_THRESH); in stih_cec_adap_enable() [all …]
|
/Linux-v6.1/drivers/media/cec/platform/ |
D | Kconfig | 6 tristate "ChromeOS EC CEC driver" 13 ChromeOS Embedded Controller's CEC. 14 The CEC bus is present in the HDMI connector and enables communication 18 tristate "Amlogic Meson AO CEC driver" 23 This is a driver for Amlogic Meson SoCs AO CEC interface. It uses the 24 generic CEC framework interface. 25 CEC bus is present in the HDMI connector and enables communication 28 tristate "Amlogic Meson G12A AO CEC driver" 36 This is a driver for Amlogic Meson G12A SoCs AO CEC interface. 37 This driver if for the new AO-CEC module found in G12A SoCs, [all …]
|
/Linux-v6.1/drivers/gpu/drm/display/ |
D | drm_dp_cec.c | 3 * DisplayPort CEC-Tunneling-over-AUX support 12 #include <media/cec.h> 21 * have a converter chip that supports CEC-Tunneling-over-AUX (usually the 22 * Parade PS176), but they do not wire up the CEC pin, thus making CEC 24 * support for CEC tunneling. Those adapters that I have tested using 25 * this chipset all have the CEC line connected. 29 * any of the other CEC devices. Quite literally the CEC wire is cut 34 * and no incentive to correctly wire up the CEC pin. 37 * finally fix their adapters and test the CEC functionality. 41 * https://hverkuil.home.xs4all.nl/cec-status.txt [all …]
|
/Linux-v6.1/Documentation/userspace-api/media/cec/ |
D | cec-ioc-g-mode.rst | 2 .. c:namespace:: CEC 12 CEC_G_MODE, CEC_S_MODE - Get or set exclusive use of the CEC adapter 32 Pointer to CEC mode. 39 obtain exclusive access to the CEC adapter. This ioctl sets the 42 used to initiate messages, i.e. it commands other CEC devices. The 43 follower is the filehandle that receives messages sent to the CEC 47 When a CEC message is received, then the CEC framework will decide how 50 is waiting for it. In addition the CEC framework will process it. 52 If the message is not a reply, then the CEC framework will process it 60 The CEC framework will process core messages unless requested otherwise [all …]
|
D | cec-ioc-adap-g-log-addrs.rst | 2 .. c:namespace:: CEC 40 To query the current CEC logical addresses, applications call 55 values (CEC version 2.0, no vendor ID and an empty OSD name). 62 A :ref:`CEC_EVENT_STATE_CHANGE <CEC-EVENT-STATE-CHANGE>` event is sent when the 94 - The CEC version that this adapter shall use. See 95 :ref:`cec-versions`. Used to implement the 97 Note that :ref:`CEC_OP_CEC_VERSION_1_3A <CEC-OP-CEC-VERSION-1-3A>` is not allowed by the CEC 106 ignored. Note that the CEC 2.0 standard allows for a maximum of 2 110 what was requested. If this field is set to 0, then the CEC 121 - Flags. See :ref:`cec-log-addrs-flags` for a list of available flags. [all …]
|
D | cec-ioc-adap-g-caps.rst | 2 .. c:namespace:: CEC 33 All cec devices must support :ref:`ioctl CEC_ADAP_G_CAPS <CEC_ADAP_G_CAPS>`. To query 49 - The name of the cec adapter driver. 52 - The name of this CEC adapter. The combination ``driver`` and 59 - The capabilities of the CEC adapter, see 60 :ref:`cec-capabilities`. 63 - CEC Framework API version, formatted with the ``KERNEL_VERSION()`` 70 .. flat-table:: CEC Capabilities Flags 75 * .. _`CEC-CAP-PHYS-ADDR`: 84 * .. _`CEC-CAP-LOG-ADDRS`: [all …]
|
D | cec-intro.rst | 10 HDMI cable to communicate. The protocol for CEC version 1.4 is defined 11 in supplements 1 (CEC) and 2 (HEAC or HDMI Ethernet and Audio Return 13 extensions added to CEC version 2.0 are defined in chapter 11 of the 21 CEC, need to be handled by the kernel, others can be handled either by 24 In addition, CEC can be implemented in HDMI receivers, transmitters and 26 control just the CEC pin. 28 Drivers that support CEC will create a CEC device node (/dev/cecX) to 29 give userspace access to the CEC adapter. The 34 provides three tools to handle CEC: 36 - cec-ctl: the Swiss army knife of CEC. Allows you to configure, transmit [all …]
|
D | cec-pin-error-inj.rst | 3 CEC Pin Framework Error Injection 6 The CEC Pin Framework is a core CEC framework for CEC hardware that only 7 has low-level support for the CEC bus. Most hardware today will have 8 high-level CEC support where the hardware deals with driving the CEC bus, 10 allows you to connect the CEC pin to a GPIO on e.g. a Raspberry Pi and 11 you have now made a CEC adapter. 15 test how well CEC adapters can handle error conditions. 17 Currently only the cec-gpio driver (when the CEC line is directly 22 through debugfs. Specifically, in ``/sys/kernel/debug/cec/cecX/`` there is 33 $ cat /sys/kernel/debug/cec/cec0/error-inj [all …]
|
D | cec-ioc-dqevent.rst | 2 .. c:namespace:: CEC 13 CEC_DQEVENT - Dequeue a CEC event 33 CEC devices can send asynchronous events. These can be retrieved by 43 two :ref:`CEC_EVENT_STATE_CHANGE <CEC-EVENT-STATE-CHANGE>` events with 93 replied to within a second according to the CEC specification, 114 - The CEC event type, see :ref:`cec-events`. 117 - Event flags, see :ref:`cec-event-flags`. 122 - The new adapter state as sent by the :ref:`CEC_EVENT_STATE_CHANGE <CEC-EVENT-STATE-CHANGE>` 126 - The number of lost messages as sent by the :ref:`CEC_EVENT_LOST_MSGS <CEC-EVENT-LOST-MSGS>` 135 .. flat-table:: CEC Events Types [all …]
|
D | cec-ioc-receive.rst | 2 .. c:namespace:: CEC 14 CEC_RECEIVE, CEC_TRANSMIT - Receive or transmit a CEC message 39 To receive a CEC message the application has to fill in the 50 1. a message received from another CEC device (the ``sequence`` field will 58 To send a CEC message the application has to fill in the struct 64 of 2-byte messages). Note that the CEC kernel framework will also reply 65 to core messages (see :ref:`cec-core-processing`), so it is not a good 79 However, the CEC specification allows sending messages from 'Unregistered' to 85 physical address, but the cable is still connected and CEC still works. 126 - A non-zero sequence number is automatically assigned by the CEC framework [all …]
|
/Linux-v6.1/drivers/media/rc/keymaps/ |
D | rc-cec.c | 2 /* Keytable for the CEC remote control 8 * allowed to use request_module() to load rc-cec.ko in that case. 21 * CEC Spec "High-Definition Multimedia Interface Specification" can be obtained 26 static struct rc_map_table cec[] = { variable 36 { 0x09, KEY_ROOT_MENU }, /* CEC Spec: Device Root Menu - see Note 2 */ 44 { 0x0b, KEY_MENU }, /* CEC Spec: Contents Menu */ 45 { 0x0c, KEY_FAVORITES }, /* CEC Spec: Favorite Menu */ 51 { 0x1d, KEY_DIGITS }, /* CEC Spec: select/toggle a Number Entry Mode */ 69 { 0x2f, KEY_NEXT_FAVORITE }, /* CEC Spec: Next Favorite */ 72 { 0x32, KEY_PREVIOUS }, /* CEC Spec: Previous Channel */ [all …]
|
/Linux-v6.1/Documentation/driver-api/media/ |
D | cec-core.rst | 3 CEC Kernel Support 6 The CEC framework provides a unified kernel interface for use with HDMI CEC 14 The CEC Protocol 17 The CEC protocol enables consumer electronic devices to communicate with each 24 The CEC framework described here is up to date with the CEC 2.0 specification. 32 CEC Adapter Interface 35 The struct cec_adapter represents the CEC adapter hardware. It is created by 49 adapter operations which are called by the CEC framework and that you 57 the name of the CEC adapter. Note: this name will be copied. 60 capabilities of the CEC adapter. These capabilities determine the [all …]
|
/Linux-v6.1/include/media/ |
D | cec-pin.h | 3 * cec-pin.h - low-level CEC pin control 12 #include <media/cec.h> 15 * struct cec_pin_ops - low-level CEC pin operations 16 * @read: read the CEC pin. Returns > 0 if high, 0 if low, or an error 18 * @low: drive the CEC pin low. 19 * @high: stop driving the CEC pin. The pull-up will drive the pin 30 * @received: optional. High-level CEC message callback. Allows the driver 31 * to process CEC messages. 34 * cec pin framework to manipulate the CEC pin. 47 /* High-level CEC message callback */ [all …]
|
/Linux-v6.1/Documentation/devicetree/bindings/media/ |
D | cec-gpio.txt | 1 * HDMI CEC GPIO driver 3 The HDMI CEC GPIO module supports CEC implementations where the CEC line 7 Please note: the maximum voltage for the CEC line is 3.63V, for the HPD and 12 - compatible: value must be "cec-gpio". 13 - cec-gpios: gpio that the CEC line is connected to. The line should be 16 If the CEC line is associated with an HDMI receiver/transmitter, then the 19 - hdmi-phandle - phandle to the HDMI controller, see also cec.txt. 21 If the CEC line is not associated with an HDMI receiver/transmitter, then 30 Example for the Raspberry Pi 3 where the CEC line is connected to 37 cec-gpio { [all …]
|
D | tegra-cec.txt | 1 * Tegra HDMI CEC hardware 3 The HDMI CEC module is present in Tegra SoCs and its purpose is to 4 handle communication between HDMI connected devices over the CEC bus. 8 "nvidia,tegra114-cec" 9 "nvidia,tegra124-cec" 10 "nvidia,tegra210-cec" 13 - interrupts : HDMI CEC interrupt number to the CPU. 14 - clocks : from common clock binding: handle to HDMI CEC clock. 15 - clock-names : from common clock binding: must contain "cec", 17 - hdmi-phandle : phandle to the HDMI controller, see also cec.txt. [all …]
|
/Linux-v6.1/drivers/media/cec/ |
D | Kconfig | 11 menu "CEC support" 14 bool "HDMI CEC RC integration" 18 Pass on CEC remote control messages to the RC framework. 21 bool "Enable CEC error injection support" 24 This option enables CEC error injection using debugfs. 28 prompt "HDMI CEC drivers" 31 Enable support for HDMI CEC (Consumer Electronics Control), 34 Say Y when you have an HDMI receiver, transmitter or a USB CEC 35 adapter that supports HDMI CEC. 38 source "drivers/media/cec/i2c/Kconfig" [all …]
|
/Linux-v6.1/drivers/media/cec/core/ |
D | Makefile | 2 cec-objs := cec-core.o cec-adap.o cec-api.o 5 cec-objs += cec-notifier.o 9 cec-objs += cec-pin.o 13 cec-objs += cec-pin-error-inj.o 16 obj-$(CONFIG_CEC_CORE) += cec.o
|