Lines Matching +full:no +full:- +full:sd

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * v4l2-spi - SPI helpers for Video4Linux2
8 #include <media/v4l2-common.h>
9 #include <media/v4l2-device.h>
11 void v4l2_spi_subdev_unregister(struct v4l2_subdev *sd) in v4l2_spi_subdev_unregister() argument
13 struct spi_device *spi = v4l2_get_subdevdata(sd); in v4l2_spi_subdev_unregister()
15 if (spi && !spi->dev.of_node && !spi->dev.fwnode) in v4l2_spi_subdev_unregister()
19 void v4l2_spi_subdev_init(struct v4l2_subdev *sd, struct spi_device *spi, in v4l2_spi_subdev_init() argument
22 v4l2_subdev_init(sd, ops); in v4l2_spi_subdev_init()
23 sd->flags |= V4L2_SUBDEV_FL_IS_SPI; in v4l2_spi_subdev_init()
25 sd->owner = spi->dev.driver->owner; in v4l2_spi_subdev_init()
26 sd->dev = &spi->dev; in v4l2_spi_subdev_init()
28 v4l2_set_subdevdata(sd, spi); in v4l2_spi_subdev_init()
29 spi_set_drvdata(spi, sd); in v4l2_spi_subdev_init()
31 snprintf(sd->name, sizeof(sd->name), "%s %s", in v4l2_spi_subdev_init()
32 spi->dev.driver->name, dev_name(&spi->dev)); in v4l2_spi_subdev_init()
40 struct v4l2_subdev *sd = NULL; in v4l2_spi_new_subdev() local
45 if (info->modalias[0]) in v4l2_spi_new_subdev()
46 request_module(info->modalias); in v4l2_spi_new_subdev()
50 if (!spi || !spi->dev.driver) in v4l2_spi_new_subdev()
53 if (!try_module_get(spi->dev.driver->owner)) in v4l2_spi_new_subdev()
56 sd = spi_get_drvdata(spi); in v4l2_spi_new_subdev()
62 if (__v4l2_device_register_subdev(v4l2_dev, sd, sd->owner)) in v4l2_spi_new_subdev()
63 sd = NULL; in v4l2_spi_new_subdev()
66 module_put(spi->dev.driver->owner); in v4l2_spi_new_subdev()
70 * If we have a client but no subdev, then something went wrong and in v4l2_spi_new_subdev()
73 if (!sd) in v4l2_spi_new_subdev()
76 return sd; in v4l2_spi_new_subdev()