media: staging/imx: remove static subdev arrays
authorSteve Longerbeam <slongerbeam@gmail.com>
Fri, 15 Dec 2017 01:04:44 +0000 (20:04 -0500)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Fri, 15 Dec 2017 19:06:58 +0000 (14:06 -0500)
commit9f6a0c59eba91c116f6cd7a487f4929faa07a7f8
tree5bba05427e184f2de26ebb47a7e0911547970270
parent4eef678d32d3d2f5c7e9d6c58f4d78e275638b4f
media: staging/imx: remove static subdev arrays

For more complex OF graphs, there will be more async subdevices
registered. Remove the static subdev[IMX_MEDIA_MAX_SUBDEVS] array,
so that imx-media places no limits on the number of async subdevs
that can be added and registered.

There were two uses for 'struct imx_media_subdev'. First was to act
as the async subdev list to be passed to v4l2_async_notifier_register().

Second was to aid in inheriting subdev controls to the capture devices,
and this is done by creating a list of capture devices that can be reached
from a subdev's source pad. So 'struct imx_media_subdev' also contained
a static array of 'struct imx_media_pad' for placing the capture device
lists at each pad.

'struct imx_media_subdev' has been completely removed. Instead, at async
completion, allocate an array of 'struct imx_media_pad' and attach it to
the subdev's host_priv pointer, in order to support subdev controls
inheritance.

Likewise, remove static async_ptrs[IMX_MEDIA_MAX_SUBDEVS] array.
Instead, allocate a 'struct imx_media_async_subdev' when forming
the async list, and add it to an asd_list list_head in
imx_media_add_async_subdev(). At async completion, allocate the
asd pointer list and pull the asd's off asd_list for
v4l2_async_notifier_register().

Signed-off-by: Steve Longerbeam <steve_longerbeam@mentor.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/staging/media/imx/imx-ic-prp.c
drivers/staging/media/imx/imx-media-csi.c
drivers/staging/media/imx/imx-media-dev.c
drivers/staging/media/imx/imx-media-internal-sd.c
drivers/staging/media/imx/imx-media-of.c
drivers/staging/media/imx/imx-media-utils.c
drivers/staging/media/imx/imx-media.h