mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
media: v4l: async: Make V4L2 async match information a struct
Make V4L2 async match information a struct, making it easier to use it elsewhere outside the scope of struct v4l2_async_subdev. Also remove an obsolete comment --- none of these fields are supposed to be touched by drivers. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Tested-by: Philipp Zabel <p.zabel@pengutronix.de> # imx6qp Tested-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> # rcar + adv746x Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Tested-by: Aishwarya Kothari <aishwarya.kothari@toradex.com> # Apalis i.MX6Q with TC358743 Tested-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> # Renesas RZ/G2L SMARC Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
1c5cd3efa6
commit
f0e10d0a97
@ -212,7 +212,7 @@ v4l2_async_find_match(struct v4l2_async_notifier *notifier,
|
||||
|
||||
list_for_each_entry(asd, ¬ifier->waiting, list) {
|
||||
/* bus_type has been verified valid before */
|
||||
switch (asd->match_type) {
|
||||
switch (asd->match.type) {
|
||||
case V4L2_ASYNC_MATCH_I2C:
|
||||
match = match_i2c;
|
||||
break;
|
||||
@ -237,10 +237,10 @@ v4l2_async_find_match(struct v4l2_async_notifier *notifier,
|
||||
static bool asd_equal(struct v4l2_async_subdev *asd_x,
|
||||
struct v4l2_async_subdev *asd_y)
|
||||
{
|
||||
if (asd_x->match_type != asd_y->match_type)
|
||||
if (asd_x->match.type != asd_y->match.type)
|
||||
return false;
|
||||
|
||||
switch (asd_x->match_type) {
|
||||
switch (asd_x->match.type) {
|
||||
case V4L2_ASYNC_MATCH_I2C:
|
||||
return asd_x->match.i2c.adapter_id ==
|
||||
asd_y->match.i2c.adapter_id &&
|
||||
@ -554,7 +554,7 @@ static int v4l2_async_nf_asd_valid(struct v4l2_async_notifier *notifier,
|
||||
{
|
||||
struct device *dev = notifier_dev(notifier);
|
||||
|
||||
switch (asd->match_type) {
|
||||
switch (asd->match.type) {
|
||||
case V4L2_ASYNC_MATCH_I2C:
|
||||
case V4L2_ASYNC_MATCH_FWNODE:
|
||||
if (v4l2_async_nf_has_async_subdev(notifier, asd, skip_self)) {
|
||||
@ -564,7 +564,7 @@ static int v4l2_async_nf_asd_valid(struct v4l2_async_notifier *notifier,
|
||||
break;
|
||||
default:
|
||||
dev_err(dev, "v4l2-async: Invalid match type %u on %p\n",
|
||||
asd->match_type, asd);
|
||||
asd->match.type, asd);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -690,7 +690,7 @@ static void __v4l2_async_nf_cleanup(struct v4l2_async_notifier *notifier)
|
||||
return;
|
||||
|
||||
list_for_each_entry_safe(asd, tmp, ¬ifier->asd_list, asd_list) {
|
||||
switch (asd->match_type) {
|
||||
switch (asd->match.type) {
|
||||
case V4L2_ASYNC_MATCH_FWNODE:
|
||||
fwnode_handle_put(asd->match.fwnode);
|
||||
break;
|
||||
@ -745,7 +745,7 @@ __v4l2_async_nf_add_fwnode(struct v4l2_async_notifier *notifier,
|
||||
if (!asd)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
asd->match_type = V4L2_ASYNC_MATCH_FWNODE;
|
||||
asd->match.type = V4L2_ASYNC_MATCH_FWNODE;
|
||||
asd->match.fwnode = fwnode_handle_get(fwnode);
|
||||
|
||||
ret = __v4l2_async_nf_add_subdev(notifier, asd);
|
||||
@ -792,7 +792,7 @@ __v4l2_async_nf_add_i2c(struct v4l2_async_notifier *notifier, int adapter_id,
|
||||
if (!asd)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
asd->match_type = V4L2_ASYNC_MATCH_I2C;
|
||||
asd->match.type = V4L2_ASYNC_MATCH_I2C;
|
||||
asd->match.i2c.adapter_id = adapter_id;
|
||||
asd->match.i2c.address = address;
|
||||
|
||||
@ -905,7 +905,7 @@ EXPORT_SYMBOL(v4l2_async_unregister_subdev);
|
||||
static void print_waiting_subdev(struct seq_file *s,
|
||||
struct v4l2_async_subdev *asd)
|
||||
{
|
||||
switch (asd->match_type) {
|
||||
switch (asd->match.type) {
|
||||
case V4L2_ASYNC_MATCH_I2C:
|
||||
seq_printf(s, " [i2c] dev=%d-%04x\n", asd->match.i2c.adapter_id,
|
||||
asd->match.i2c.address);
|
||||
|
@ -34,23 +34,37 @@ enum v4l2_async_match_type {
|
||||
};
|
||||
|
||||
/**
|
||||
* struct v4l2_async_subdev - sub-device descriptor, as known to a bridge
|
||||
* struct v4l2_async_match_desc - async sub-device match information
|
||||
*
|
||||
* @match_type: type of match that will be used
|
||||
* @match: union of per-bus type matching data sets
|
||||
* @match.fwnode:
|
||||
* pointer to &struct fwnode_handle to be matched.
|
||||
* @type: type of match that will be used
|
||||
* @fwnode: pointer to &struct fwnode_handle to be matched.
|
||||
* Used if @match_type is %V4L2_ASYNC_MATCH_FWNODE.
|
||||
* @match.i2c: embedded struct with I2C parameters to be matched.
|
||||
* @i2c: embedded struct with I2C parameters to be matched.
|
||||
* Both @match.i2c.adapter_id and @match.i2c.address
|
||||
* should be matched.
|
||||
* Used if @match_type is %V4L2_ASYNC_MATCH_I2C.
|
||||
* @match.i2c.adapter_id:
|
||||
* @i2c.adapter_id:
|
||||
* I2C adapter ID to be matched.
|
||||
* Used if @match_type is %V4L2_ASYNC_MATCH_I2C.
|
||||
* @match.i2c.address:
|
||||
* @i2c.address:
|
||||
* I2C address to be matched.
|
||||
* Used if @match_type is %V4L2_ASYNC_MATCH_I2C.
|
||||
*/
|
||||
struct v4l2_async_match_desc {
|
||||
enum v4l2_async_match_type type;
|
||||
union {
|
||||
struct fwnode_handle *fwnode;
|
||||
struct {
|
||||
int adapter_id;
|
||||
unsigned short address;
|
||||
} i2c;
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* struct v4l2_async_subdev - sub-device descriptor, as known to a bridge
|
||||
*
|
||||
* @match: struct of match type and per-bus type matching data sets
|
||||
* @asd_list: used to add struct v4l2_async_subdev objects to the
|
||||
* master notifier @asd_list
|
||||
* @list: used to link struct v4l2_async_subdev objects, waiting to be
|
||||
@ -61,16 +75,7 @@ enum v4l2_async_match_type {
|
||||
* v4l2_async_subdev as its first member.
|
||||
*/
|
||||
struct v4l2_async_subdev {
|
||||
enum v4l2_async_match_type match_type;
|
||||
union {
|
||||
struct fwnode_handle *fwnode;
|
||||
struct {
|
||||
int adapter_id;
|
||||
unsigned short address;
|
||||
} i2c;
|
||||
} match;
|
||||
|
||||
/* v4l2-async core private: not to be used by drivers */
|
||||
struct v4l2_async_match_desc match;
|
||||
struct list_head list;
|
||||
struct list_head asd_list;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user