media: cec: add struct cec_connector_info support
Define struct cec_connector_info in media/cec.h and define CEC_CAP_CONNECTOR_INFO. In a later patch this will be moved to uapi/linux/cec.h. The CEC_CAP_CONNECTOR_INFO capability can be set by drivers, but cec_allocate_adapter() will remove it again until the public API for this can be enabled once all drm drivers wire this up correctly. Also add the cec_fill_conn_info_from_drm and cec_s_conn_info functions, which are needed by drm drivers to fill in the cec_connector info based on a drm_connector. The cec_notifier_(un)register and cec_register_cec_notifier prototypes were moved from cec-notifier.h to cec.h since cec.h no longer includes cec-notifier.h. These headers included each other before, which caused various problems. Due to these changes the seco-cec driver was changed as well: it should include cec-notifier.h, not cec.h. Signed-off-by: Dariusz Marcinkiewicz <darekm@google.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
此提交包含在:

提交者
Mauro Carvalho Chehab

父節點
3d51dc03a4
當前提交
32a847f9fa
@@ -16,7 +16,10 @@
|
||||
#include <linux/string.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#include <drm/drm_connector.h>
|
||||
#include <drm/drm_device.h>
|
||||
#include <drm/drm_edid.h>
|
||||
#include <drm/drm_file.h>
|
||||
|
||||
#include "cec-priv.h"
|
||||
|
||||
@@ -75,6 +78,16 @@ u16 cec_get_edid_phys_addr(const u8 *edid, unsigned int size,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(cec_get_edid_phys_addr);
|
||||
|
||||
void cec_fill_conn_info_from_drm(struct cec_connector_info *conn_info,
|
||||
const struct drm_connector *connector)
|
||||
{
|
||||
memset(conn_info, 0, sizeof(*conn_info));
|
||||
conn_info->type = CEC_CONNECTOR_TYPE_DRM;
|
||||
conn_info->drm.card_no = connector->dev->primary->index;
|
||||
conn_info->drm.connector_id = connector->base.id;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(cec_fill_conn_info_from_drm);
|
||||
|
||||
/*
|
||||
* Queue a new event for this filehandle. If ts == 0, then set it
|
||||
* to the current time.
|
||||
@@ -1598,6 +1611,22 @@ void cec_s_phys_addr_from_edid(struct cec_adapter *adap,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(cec_s_phys_addr_from_edid);
|
||||
|
||||
void cec_s_conn_info(struct cec_adapter *adap,
|
||||
const struct cec_connector_info *conn_info)
|
||||
{
|
||||
if (!(adap->capabilities & CEC_CAP_CONNECTOR_INFO))
|
||||
return;
|
||||
|
||||
mutex_lock(&adap->lock);
|
||||
if (conn_info)
|
||||
adap->conn_info = *conn_info;
|
||||
else
|
||||
memset(&adap->conn_info, 0, sizeof(adap->conn_info));
|
||||
cec_post_state_event(adap);
|
||||
mutex_unlock(&adap->lock);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(cec_s_conn_info);
|
||||
|
||||
/*
|
||||
* Called from either the ioctl or a driver to set the logical addresses.
|
||||
*
|
||||
|
新增問題並參考
封鎖使用者