From: Hans Verkuil <hansverk@cisco.com>
To: linux-media@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org, m.szyprowski@samsung.com,
kyungmin.park@samsung.com, thomas@tommie-lie.de, sean@mess.org,
dmitry.torokhov@gmail.com, linux-input@vger.kernel.org,
linux-samsung-soc@vger.kernel.org, lars@opdenkamp.eu,
kamil@wypas.org, linux@arm.linux.org.uk
Subject: [PATCHv9 00/15] HDMI CEC framework
Date: Mon, 7 Sep 2015 15:44:29 +0200 [thread overview]
Message-ID: <cover.1441633456.git.hansverk@cisco.com> (raw)
Hi all,
The ninth version of this patchset addresses comments I received from
Russell King.
As far as I am concerned this version is code complete (but I said that
before) and the only thing missing is that the cec.txt documentation is
out-of-sync with the current implementation.
So there will be a v10 fixing that.
The cec-ctl and cec-compliance utilities used to test the CEC framework
can be found here:
http://git.linuxtv.org/cgit.cgi/hverkuil/v4l-utils.git/log/?h=cec
Best regards,
Hans
Changes since v8
================
- Addressed the comments Russell King made about how the cec character
devices should be allocated/freed.
- Updated the DocBook documentation.
Changes since v7
================
- I thought that the core thread could handle out-of-order messages, but that
turned out to be wrong. After careful analysis I realized that I had to
rewrite this part in cec.c in order to make it work.
- Added new CEC-specific keys to input.h and use them in the CEC rc keymap.
Replaced KEY_PLAY/PAUSE/STOP with KEY_PLAYCD/PAUSECD/STOPCD to clarify that
these are media operations and not the Pause key on the keyboard.
- Added CEC_PHYS_ADDR_INVALID (0xffff)
- Added monitor support to monitor CEC traffic
- Replaced CAP_TRANSMIT and CAP_RECEIVE by a single CAP_IO.
- Replaced CAP_CDC by CAP_CDC_HPD since this only applies to the HPD part of
the CDC messages.
- Add CAP_IS_SOURCE.
- Add ninputs field to cec_caps to export the number of inputs of the device.
- Drop CEC_LOG_ADDRS_FL_HANDLE_MSGS and the flags field (see next change for
more info).
- Add CEC_CLAIM and CEC_RELEASE to explicitly start/stop processing CEC messages.
This also implies ownership of the CEC interface, so other filehandles can
only receive but not transmit.
- Reworked event handling: report adapter state changes, input changes and
if the message receive queue is full.
- cec-funcs.h: added CDC HEC support.
- Renamed G/S_ADAP ioctls to ADAP_G/S: this made it clearer which ioctls deal
with the adapter configuration and which deal with CEC messages/events.
- Clarified which CEC messages are passed on to userspace and which aren't.
Specifically if CAP_ARC is set, then all ARC messages are handled by the kernel.
If CAP_CDC_HPD is set, then all CDC hotplug messages are handled by the kernel.
Otherwise these messages are passed on to userspace.
Changes since v6
================
- added cec-funcs.h to provide wrapper functions that fill in the cec_msg struct.
This header is needed both by the kernel and by applications.
- fix a missing rc_unregister_device call.
- added CEC support for the adv7842 and cobalt drivers.
- added CEC operand defines. Rename CEC message defines to CEC_MSG_ and operand
defines now use CEC_OP_.
- the CEC_VERSION defines are dropped since we now have the CEC_OP_VERSION defines.
- ditto: CEC_PRIM_DEVTYPE_ is now CEC_OP_PRIM_DEVTYPE.
- ditto: CEC_FL_ALL_DEVTYPE_ is now CEC_OP_ALL_DEVTYPE.
- cec-ioc-g-adap-log-addrs.xml: document cec_versions field.
- cec-ioc-g-caps.xml: drop vendor_id and version fields.
- add MAINTAINERS entry.
- add CDC support (not yet fully functional).
- add a second debug level for message debugging.
- fix a nasty kernel Oops in cec_transmit_msg while waiting for transmit completion
(adap->tx_queue[idx].func wasn't set to NULL).
- add support for CEC_MSG_REPORT_FEATURES (CEC 2.0 only).
- correctly abort unsupported messages.
- add support for the device power status feature.
- add support for the audio return channel (preliminary).
- add support for the CDC hotplug message (preliminary).
- added osd_name to struct cec_log_addrs.
- reported physical addresses are stored internally.
- fix enabling/disabling the CEC adapter (internal fields weren't cleared correctly).
- zero reserved fields.
- return an error if you try to receive/transmit and the adapter isn't configured.
- when creating the adapter provide the owner module and the parent device.
- add a CEC_VENDOR_ID_NONE define to signal if no vendor ID was set.
- add new capabilities: RC (remote control), ARC (audio return channel) and CDC
(Capability Discovery and Control).
- applications that want to handle messages for a logical address need to set the
CEC_LOG_ADDRS_FL_HANDLE_MSGS flag. Otherwise the CEC core will be the one handling
all messages.
- Each logical address has its own all_device_types value. So this should be an array,
not a single value.
- I'm sure I've forgotten some changes...
Changes since v5
================
- drop struct cec_timeval in favour of a __u64 that keeps the timestamp in ns
- remove userspace documentation from Documentation/cec.txt as userspace API
is described in the DocBook
- add missing documentation for the passthrough mode to the DocBook
- add information about the number of events that can be queued
- fix misspelling of reply
- fix behaviour of posting an event in cec_received_msg, such that the behaviour
is consistent with the documentation
Changes since v4
================
- add sequence numbering to transmitted messages
- add sequence number handling to event hanlding
- add passthrough mode
- change reserved field sizes
- fixed CEC version defines and addec CEC 2.0 commands
- add DocBook documentation
Changes since v3
================
- remove the promiscuous mode
- rewrite the devicetree patches
- fixes, expansion and partial rewrite of the documentation
- reorder of API structures and addition of reserved fields
- use own struct to report time (32/64 bit safe)
- fix of handling events
- add cec.h to include/uapi/linux/Kbuild
- fixes in the adv76xx driver (add missing methods, change adv7604 to adv76xx)
- cleanup of debug messages in s5p-cec driver
- remove non necessary claiming of a gpio in the s5p-cec driver
- cleanup headers of the s5p-cec driver
Changes since v2
===============-
- added promiscuous mode
- added new key codes to the input framework
- add vendor ID reporting
- add the possibility to clear assigned logical addresses
- cleanup of the rc cec map
Changes since v1
================
- documentation edited and moved to the Documentation folder
- added key up/down message handling
- add missing CEC commands to the cec.h file
Background
==========
The work on a common CEC framework was started over three years ago by Hans
Verkuil. Unfortunately the work has stalled. As I have received the task of
creating a driver for the CEC interface module present on the Exynos range of
SoCs, I got in touch with Hans. He replied that the work stalled due to his
lack of time.
Original RFC by Hans Verkuil/Martin Bugge
=========================================
https://www.mail-archive.com/linux-media@vger.kernel.org/msg28735.html
Hans Verkuil (9):
input.h: add BUS_CEC type
cec: add HDMI CEC framework
cec.txt: add CEC framework documentation
DocBook/media: add CEC documentation
v4l2-subdev: add HDMI CEC ops
cec: adv7604: add cec support.
cec: adv7842: add cec support
cec: adv7511: add cec support.
cobalt: add cec support
Kamil Debski (6):
dts: exynos4*: add HDMI CEC pin definition to pinctrl
dts: exynos4: add node for the HDMI CEC device
dts: exynos4412-odroid*: enable the HDMI CEC device
HID: add HDMI CEC specific keycodes
rc: Add HDMI CEC protocol handling
cec: s5p-cec: Add s5p-cec driver
Documentation/DocBook/media/Makefile | 2 +
Documentation/DocBook/media/v4l/biblio.xml | 10 +
Documentation/DocBook/media/v4l/cec-api.xml | 76 +
Documentation/DocBook/media/v4l/cec-func-close.xml | 59 +
Documentation/DocBook/media/v4l/cec-func-ioctl.xml | 73 +
Documentation/DocBook/media/v4l/cec-func-open.xml | 94 +
Documentation/DocBook/media/v4l/cec-func-poll.xml | 89 +
.../DocBook/media/v4l/cec-ioc-adap-g-caps.xml | 161 ++
.../DocBook/media/v4l/cec-ioc-adap-g-log-addrs.xml | 306 ++++
.../DocBook/media/v4l/cec-ioc-adap-g-phys-addr.xml | 78 +
.../DocBook/media/v4l/cec-ioc-adap-g-state.xml | 87 +
.../DocBook/media/v4l/cec-ioc-adap-g-vendor-id.xml | 70 +
Documentation/DocBook/media/v4l/cec-ioc-claim.xml | 71 +
.../DocBook/media/v4l/cec-ioc-dqevent.xml | 208 +++
.../DocBook/media/v4l/cec-ioc-g-monitor.xml | 86 +
.../DocBook/media/v4l/cec-ioc-g-passthrough.xml | 81 +
.../DocBook/media/v4l/cec-ioc-receive.xml | 185 ++
Documentation/DocBook/media_api.tmpl | 8 +-
Documentation/cec.txt | 166 ++
.../devicetree/bindings/media/s5p-cec.txt | 31 +
MAINTAINERS | 12 +
arch/arm/boot/dts/exynos4.dtsi | 12 +
arch/arm/boot/dts/exynos4210-pinctrl.dtsi | 7 +
arch/arm/boot/dts/exynos4210-universal_c210.dts | 4 +
arch/arm/boot/dts/exynos4x12-pinctrl.dtsi | 7 +
drivers/media/Kconfig | 6 +
drivers/media/Makefile | 2 +
drivers/media/cec.c | 1921 ++++++++++++++++++++
drivers/media/i2c/adv7511.c | 359 +++-
drivers/media/i2c/adv7604.c | 254 ++-
drivers/media/i2c/adv7842.c | 267 ++-
drivers/media/pci/cobalt/Kconfig | 1 +
drivers/media/pci/cobalt/cobalt-driver.c | 51 +-
drivers/media/pci/cobalt/cobalt-driver.h | 2 +
drivers/media/pci/cobalt/cobalt-irq.c | 3 +
drivers/media/pci/cobalt/cobalt-v4l2.c | 113 +-
drivers/media/platform/Kconfig | 12 +
drivers/media/platform/Makefile | 1 +
drivers/media/platform/s5p-cec/Makefile | 2 +
drivers/media/platform/s5p-cec/exynos_hdmi_cec.h | 37 +
.../media/platform/s5p-cec/exynos_hdmi_cecctrl.c | 208 +++
drivers/media/platform/s5p-cec/regs-cec.h | 96 +
drivers/media/platform/s5p-cec/s5p_cec.c | 284 +++
drivers/media/platform/s5p-cec/s5p_cec.h | 76 +
drivers/media/rc/keymaps/Makefile | 1 +
drivers/media/rc/keymaps/rc-cec.c | 174 ++
drivers/media/rc/rc-main.c | 1 +
include/media/adv7511.h | 6 +-
include/media/cec.h | 175 ++
include/media/rc-core.h | 1 +
include/media/rc-map.h | 5 +-
include/media/v4l2-subdev.h | 10 +
include/uapi/linux/Kbuild | 2 +
include/uapi/linux/cec-funcs.h | 1771 ++++++++++++++++++
include/uapi/linux/cec.h | 781 ++++++++
include/uapi/linux/input.h | 29 +
56 files changed, 8587 insertions(+), 47 deletions(-)
create mode 100644 Documentation/DocBook/media/v4l/cec-api.xml
create mode 100644 Documentation/DocBook/media/v4l/cec-func-close.xml
create mode 100644 Documentation/DocBook/media/v4l/cec-func-ioctl.xml
create mode 100644 Documentation/DocBook/media/v4l/cec-func-open.xml
create mode 100644 Documentation/DocBook/media/v4l/cec-func-poll.xml
create mode 100644 Documentation/DocBook/media/v4l/cec-ioc-adap-g-caps.xml
create mode 100644 Documentation/DocBook/media/v4l/cec-ioc-adap-g-log-addrs.xml
create mode 100644 Documentation/DocBook/media/v4l/cec-ioc-adap-g-phys-addr.xml
create mode 100644 Documentation/DocBook/media/v4l/cec-ioc-adap-g-state.xml
create mode 100644 Documentation/DocBook/media/v4l/cec-ioc-adap-g-vendor-id.xml
create mode 100644 Documentation/DocBook/media/v4l/cec-ioc-claim.xml
create mode 100644 Documentation/DocBook/media/v4l/cec-ioc-dqevent.xml
create mode 100644 Documentation/DocBook/media/v4l/cec-ioc-g-monitor.xml
create mode 100644 Documentation/DocBook/media/v4l/cec-ioc-g-passthrough.xml
create mode 100644 Documentation/DocBook/media/v4l/cec-ioc-receive.xml
create mode 100644 Documentation/cec.txt
create mode 100644 Documentation/devicetree/bindings/media/s5p-cec.txt
create mode 100644 drivers/media/cec.c
create mode 100644 drivers/media/platform/s5p-cec/Makefile
create mode 100644 drivers/media/platform/s5p-cec/exynos_hdmi_cec.h
create mode 100644 drivers/media/platform/s5p-cec/exynos_hdmi_cecctrl.c
create mode 100644 drivers/media/platform/s5p-cec/regs-cec.h
create mode 100644 drivers/media/platform/s5p-cec/s5p_cec.c
create mode 100644 drivers/media/platform/s5p-cec/s5p_cec.h
create mode 100644 drivers/media/rc/keymaps/rc-cec.c
create mode 100644 include/media/cec.h
create mode 100644 include/uapi/linux/cec-funcs.h
create mode 100644 include/uapi/linux/cec.h
--
2.1.4
next reply other threads:[~2015-09-07 13:44 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-07 13:44 Hans Verkuil [this message]
2015-09-07 13:44 ` [PATCHv9 01/15] dts: exynos4*: add HDMI CEC pin definition to pinctrl Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 02/15] dts: exynos4: add node for the HDMI CEC device Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 03/15] dts: exynos4412-odroid*: enable " Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 04/15] input.h: add BUS_CEC type Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 05/15] HID: add HDMI CEC specific keycodes Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 06/15] rc: Add HDMI CEC protocol handling Hans Verkuil
2015-10-06 18:05 ` Russell King - ARM Linux
2015-10-12 11:50 ` Hans Verkuil
2015-10-13 23:09 ` Russell King - ARM Linux
2015-10-14 7:12 ` Hans Verkuil
2015-10-15 7:31 ` Russell King - ARM Linux
2015-09-07 13:44 ` [PATCHv9 07/15] cec: add HDMI CEC framework Hans Verkuil
2015-10-06 17:06 ` Russell King - ARM Linux
2015-10-12 11:35 ` Hans Verkuil
2015-10-13 22:51 ` Russell King - ARM Linux
2015-10-14 6:29 ` Hans Verkuil
2015-10-15 17:34 ` Russell King - ARM Linux
2015-10-15 17:45 ` Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 08/15] cec.txt: add CEC framework documentation Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 09/15] DocBook/media: add CEC documentation Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 10/15] v4l2-subdev: add HDMI CEC ops Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 11/15] cec: adv7604: add cec support Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 12/15] cec: adv7842: " Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 13/15] cec: adv7511: " Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 14/15] cec: s5p-cec: Add s5p-cec driver Hans Verkuil
2015-10-05 22:32 ` Russell King - ARM Linux
2015-10-12 10:50 ` Hans Verkuil
2015-10-12 12:33 ` Kamil Debski
2015-10-12 12:39 ` Hans Verkuil
2015-10-12 12:44 ` Kamil Debski
2015-10-13 23:26 ` Russell King - ARM Linux
2015-10-05 23:11 ` Russell King - ARM Linux
2015-10-12 10:54 ` Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 15/15] cobalt: add cec support Hans Verkuil
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1441633456.git.hansverk@cisco.com \
--to=hansverk@cisco.com \
--cc=dmitry.torokhov@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=kamil@wypas.org \
--cc=kyungmin.park@samsung.com \
--cc=lars@opdenkamp.eu \
--cc=linux-input@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=m.szyprowski@samsung.com \
--cc=sean@mess.org \
--cc=thomas@tommie-lie.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).