#include <linux/clk.h>
#include <linux/interconnect.h>
#include <linux/media-bus-format.h>
#include <linux/media.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/of_graph.h>
#include <linux/pm_runtime.h>
#include <linux/pm_domain.h>
#include <linux/slab.h>
#include <linux/videodev2.h>
#include <media/media-device.h>
#include <media/v4l2-async.h>
#include <media/v4l2-device.h>
#include <media/v4l2-mc.h>
#include <media/v4l2-fwnode.h>
#include "camss.h"
#define CAMSS_CLOCK_MARGIN_NUMERATOR …
#define CAMSS_CLOCK_MARGIN_DENOMINATOR …
static const struct parent_dev_ops vfe_parent_dev_ops;
static const struct camss_subdev_resources csiphy_res_8x16[] = …;
static const struct camss_subdev_resources csid_res_8x16[] = …;
static const struct camss_subdev_resources ispif_res_8x16 = …;
static const struct camss_subdev_resources vfe_res_8x16[] = …;
static const struct camss_subdev_resources csiphy_res_8x96[] = …;
static const struct camss_subdev_resources csid_res_8x96[] = …;
static const struct camss_subdev_resources ispif_res_8x96 = …;
static const struct camss_subdev_resources vfe_res_8x96[] = …;
static const struct camss_subdev_resources csiphy_res_660[] = …;
static const struct camss_subdev_resources csid_res_660[] = …;
static const struct camss_subdev_resources ispif_res_660 = …;
static const struct camss_subdev_resources vfe_res_660[] = …;
static const struct camss_subdev_resources csiphy_res_845[] = …;
static const struct camss_subdev_resources csid_res_845[] = …;
static const struct camss_subdev_resources vfe_res_845[] = …;
static const struct camss_subdev_resources csiphy_res_8250[] = …;
static const struct camss_subdev_resources csid_res_8250[] = …;
static const struct camss_subdev_resources vfe_res_8250[] = …;
static const struct resources_icc icc_res_sm8250[] = …;
static const struct camss_subdev_resources csiphy_res_sc8280xp[] = …;
static const struct camss_subdev_resources csid_res_sc8280xp[] = …;
static const struct camss_subdev_resources vfe_res_sc8280xp[] = …;
static const struct resources_icc icc_res_sc8280xp[] = …;
inline void camss_add_clock_margin(u64 *rate)
{ … }
int camss_enable_clocks(int nclocks, struct camss_clock *clock,
struct device *dev)
{ … }
void camss_disable_clocks(int nclocks, struct camss_clock *clock)
{ … }
struct media_entity *camss_find_sensor(struct media_entity *entity)
{ … }
s64 camss_get_link_freq(struct media_entity *entity, unsigned int bpp,
unsigned int lanes)
{ … }
int camss_get_pixel_clock(struct media_entity *entity, u64 *pixel_clock)
{ … }
int camss_pm_domain_on(struct camss *camss, int id)
{ … }
void camss_pm_domain_off(struct camss *camss, int id)
{ … }
static int vfe_parent_dev_ops_get(struct camss *camss, int id)
{ … }
static int vfe_parent_dev_ops_put(struct camss *camss, int id)
{ … }
static void __iomem
*vfe_parent_dev_ops_get_base_address(struct camss *camss, int id)
{ … }
static const struct parent_dev_ops vfe_parent_dev_ops = …;
static int camss_of_parse_endpoint_node(struct device *dev,
struct device_node *node,
struct camss_async_subdev *csd)
{ … }
static int camss_of_parse_ports(struct camss *camss)
{ … }
static int camss_init_subdevices(struct camss *camss)
{ … }
static int camss_link_entities(struct camss *camss)
{ … }
static int camss_register_entities(struct camss *camss)
{ … }
static void camss_unregister_entities(struct camss *camss)
{ … }
static int camss_subdev_notifier_bound(struct v4l2_async_notifier *async,
struct v4l2_subdev *subdev,
struct v4l2_async_connection *asd)
{ … }
static int camss_subdev_notifier_complete(struct v4l2_async_notifier *async)
{ … }
static const struct v4l2_async_notifier_operations camss_subdev_notifier_ops = …;
static const struct media_device_ops camss_media_ops = …;
static int camss_configure_pd(struct camss *camss)
{ … }
static int camss_icc_get(struct camss *camss)
{ … }
static void camss_genpd_subdevice_cleanup(struct camss *camss)
{ … }
static void camss_genpd_cleanup(struct camss *camss)
{ … }
static int camss_probe(struct platform_device *pdev)
{ … }
void camss_delete(struct camss *camss)
{ … }
static void camss_remove(struct platform_device *pdev)
{ … }
static const struct camss_resources msm8916_resources = …;
static const struct camss_resources msm8996_resources = …;
static const struct camss_resources sdm660_resources = …;
static const struct camss_resources sdm845_resources = …;
static const struct camss_resources sm8250_resources = …;
static const struct camss_resources sc8280xp_resources = …;
static const struct of_device_id camss_dt_match[] = …;
MODULE_DEVICE_TABLE(of, camss_dt_match);
static int __maybe_unused camss_runtime_suspend(struct device *dev)
{ … }
static int __maybe_unused camss_runtime_resume(struct device *dev)
{ … }
static const struct dev_pm_ops camss_pm_ops = …;
static struct platform_driver qcom_camss_driver = …;
module_platform_driver(…) …;
MODULE_ALIAS(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;