csi2tx             88 drivers/media/platform/cadence/cdns-csi2tx.c 	void (*dphy_setup)(struct csi2tx_priv *csi2tx);
csi2tx            175 drivers/media/platform/cadence/cdns-csi2tx.c 	struct csi2tx_priv *csi2tx = v4l2_subdev_to_csi2tx(subdev);
csi2tx            181 drivers/media/platform/cadence/cdns-csi2tx.c 	return &csi2tx->pad_fmts[fmt->pad];
csi2tx            233 drivers/media/platform/cadence/cdns-csi2tx.c static void csi2tx_dphy_set_wakeup(struct csi2tx_priv *csi2tx)
csi2tx            236 drivers/media/platform/cadence/cdns-csi2tx.c 	       csi2tx->base + CSI2TX_DPHY_CLK_WAKEUP_REG);
csi2tx            243 drivers/media/platform/cadence/cdns-csi2tx.c static void csi2tx_dphy_init_finish(struct csi2tx_priv *csi2tx, u32 reg)
csi2tx            251 drivers/media/platform/cadence/cdns-csi2tx.c 	for (i = 0; i < csi2tx->num_lanes; i++)
csi2tx            252 drivers/media/platform/cadence/cdns-csi2tx.c 		reg |= CSI2TX_DPHY_CFG_LANE_ENABLE(csi2tx->lanes[i] - 1);
csi2tx            253 drivers/media/platform/cadence/cdns-csi2tx.c 	writel(reg, csi2tx->base + CSI2TX_DPHY_CFG_REG);
csi2tx            260 drivers/media/platform/cadence/cdns-csi2tx.c 	       csi2tx->base + CSI2TX_DPHY_CFG_REG);
csi2tx            264 drivers/media/platform/cadence/cdns-csi2tx.c static void csi2tx_dphy_setup(struct csi2tx_priv *csi2tx)
csi2tx            269 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx_dphy_set_wakeup(csi2tx);
csi2tx            273 drivers/media/platform/cadence/cdns-csi2tx.c 	for (i = 0; i < csi2tx->num_lanes; i++)
csi2tx            274 drivers/media/platform/cadence/cdns-csi2tx.c 		reg |= CSI2TX_DPHY_CFG_LANE_RESET(csi2tx->lanes[i] - 1);
csi2tx            275 drivers/media/platform/cadence/cdns-csi2tx.c 	writel(reg, csi2tx->base + CSI2TX_DPHY_CFG_REG);
csi2tx            277 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx_dphy_init_finish(csi2tx, reg);
csi2tx            281 drivers/media/platform/cadence/cdns-csi2tx.c static void csi2tx_v2_dphy_setup(struct csi2tx_priv *csi2tx)
csi2tx            285 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx_dphy_set_wakeup(csi2tx);
csi2tx            289 drivers/media/platform/cadence/cdns-csi2tx.c 	writel(reg, csi2tx->base + CSI2TX_V2_DPHY_CFG_REG);
csi2tx            291 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx_dphy_init_finish(csi2tx, reg);
csi2tx            294 drivers/media/platform/cadence/cdns-csi2tx.c static void csi2tx_reset(struct csi2tx_priv *csi2tx)
csi2tx            296 drivers/media/platform/cadence/cdns-csi2tx.c 	writel(CSI2TX_CONFIG_SRST_REQ, csi2tx->base + CSI2TX_CONFIG_REG);
csi2tx            301 drivers/media/platform/cadence/cdns-csi2tx.c static int csi2tx_start(struct csi2tx_priv *csi2tx)
csi2tx            303 drivers/media/platform/cadence/cdns-csi2tx.c 	struct media_entity *entity = &csi2tx->subdev.entity;
csi2tx            307 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx_reset(csi2tx);
csi2tx            309 drivers/media/platform/cadence/cdns-csi2tx.c 	writel(CSI2TX_CONFIG_CFG_REQ, csi2tx->base + CSI2TX_CONFIG_REG);
csi2tx            313 drivers/media/platform/cadence/cdns-csi2tx.c 	if (csi2tx->vops && csi2tx->vops->dphy_setup) {
csi2tx            314 drivers/media/platform/cadence/cdns-csi2tx.c 		csi2tx->vops->dphy_setup(csi2tx);
csi2tx            337 drivers/media/platform/cadence/cdns-csi2tx.c 			struct media_pad *pad = &csi2tx->pads[i];
csi2tx            349 drivers/media/platform/cadence/cdns-csi2tx.c 		mfmt = &csi2tx->pad_fmts[pad_idx];
csi2tx            364 drivers/media/platform/cadence/cdns-csi2tx.c 		       csi2tx->base + CSI2TX_DT_CFG_REG(stream));
csi2tx            368 drivers/media/platform/cadence/cdns-csi2tx.c 		       csi2tx->base + CSI2TX_DT_FORMAT_REG(stream));
csi2tx            375 drivers/media/platform/cadence/cdns-csi2tx.c 		       csi2tx->base + CSI2TX_STREAM_IF_CFG_REG(stream));
csi2tx            379 drivers/media/platform/cadence/cdns-csi2tx.c 	writel(0, csi2tx->base + CSI2TX_CONFIG_REG);
csi2tx            384 drivers/media/platform/cadence/cdns-csi2tx.c static void csi2tx_stop(struct csi2tx_priv *csi2tx)
csi2tx            387 drivers/media/platform/cadence/cdns-csi2tx.c 	       csi2tx->base + CSI2TX_CONFIG_REG);
csi2tx            392 drivers/media/platform/cadence/cdns-csi2tx.c 	struct csi2tx_priv *csi2tx = v4l2_subdev_to_csi2tx(subdev);
csi2tx            395 drivers/media/platform/cadence/cdns-csi2tx.c 	mutex_lock(&csi2tx->lock);
csi2tx            402 drivers/media/platform/cadence/cdns-csi2tx.c 		if (!csi2tx->count) {
csi2tx            403 drivers/media/platform/cadence/cdns-csi2tx.c 			ret = csi2tx_start(csi2tx);
csi2tx            408 drivers/media/platform/cadence/cdns-csi2tx.c 		csi2tx->count++;
csi2tx            410 drivers/media/platform/cadence/cdns-csi2tx.c 		csi2tx->count--;
csi2tx            415 drivers/media/platform/cadence/cdns-csi2tx.c 		if (!csi2tx->count)
csi2tx            416 drivers/media/platform/cadence/cdns-csi2tx.c 			csi2tx_stop(csi2tx);
csi2tx            420 drivers/media/platform/cadence/cdns-csi2tx.c 	mutex_unlock(&csi2tx->lock);
csi2tx            433 drivers/media/platform/cadence/cdns-csi2tx.c static int csi2tx_get_resources(struct csi2tx_priv *csi2tx,
csi2tx            441 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx->base = devm_ioremap_resource(&pdev->dev, res);
csi2tx            442 drivers/media/platform/cadence/cdns-csi2tx.c 	if (IS_ERR(csi2tx->base))
csi2tx            443 drivers/media/platform/cadence/cdns-csi2tx.c 		return PTR_ERR(csi2tx->base);
csi2tx            445 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx->p_clk = devm_clk_get(&pdev->dev, "p_clk");
csi2tx            446 drivers/media/platform/cadence/cdns-csi2tx.c 	if (IS_ERR(csi2tx->p_clk)) {
csi2tx            448 drivers/media/platform/cadence/cdns-csi2tx.c 		return PTR_ERR(csi2tx->p_clk);
csi2tx            451 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx->esc_clk = devm_clk_get(&pdev->dev, "esc_clk");
csi2tx            452 drivers/media/platform/cadence/cdns-csi2tx.c 	if (IS_ERR(csi2tx->esc_clk)) {
csi2tx            454 drivers/media/platform/cadence/cdns-csi2tx.c 		return PTR_ERR(csi2tx->esc_clk);
csi2tx            457 drivers/media/platform/cadence/cdns-csi2tx.c 	clk_prepare_enable(csi2tx->p_clk);
csi2tx            458 drivers/media/platform/cadence/cdns-csi2tx.c 	dev_cfg = readl(csi2tx->base + CSI2TX_DEVICE_CONFIG_REG);
csi2tx            459 drivers/media/platform/cadence/cdns-csi2tx.c 	clk_disable_unprepare(csi2tx->p_clk);
csi2tx            461 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx->max_lanes = dev_cfg & CSI2TX_DEVICE_CONFIG_LANES_MASK;
csi2tx            462 drivers/media/platform/cadence/cdns-csi2tx.c 	if (csi2tx->max_lanes > CSI2TX_LANES_MAX) {
csi2tx            464 drivers/media/platform/cadence/cdns-csi2tx.c 			csi2tx->max_lanes);
csi2tx            468 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx->max_streams = (dev_cfg & CSI2TX_DEVICE_CONFIG_STREAMS_MASK) >> 4;
csi2tx            469 drivers/media/platform/cadence/cdns-csi2tx.c 	if (csi2tx->max_streams > CSI2TX_STREAMS_MAX) {
csi2tx            471 drivers/media/platform/cadence/cdns-csi2tx.c 			csi2tx->max_streams);
csi2tx            475 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx->has_internal_dphy = !!(dev_cfg & CSI2TX_DEVICE_CONFIG_HAS_DPHY);
csi2tx            477 drivers/media/platform/cadence/cdns-csi2tx.c 	for (i = 0; i < csi2tx->max_streams; i++) {
csi2tx            481 drivers/media/platform/cadence/cdns-csi2tx.c 		csi2tx->pixel_clk[i] = devm_clk_get(&pdev->dev, clk_name);
csi2tx            482 drivers/media/platform/cadence/cdns-csi2tx.c 		if (IS_ERR(csi2tx->pixel_clk[i])) {
csi2tx            485 drivers/media/platform/cadence/cdns-csi2tx.c 			return PTR_ERR(csi2tx->pixel_clk[i]);
csi2tx            492 drivers/media/platform/cadence/cdns-csi2tx.c static int csi2tx_check_lanes(struct csi2tx_priv *csi2tx)
csi2tx            498 drivers/media/platform/cadence/cdns-csi2tx.c 	ep = of_graph_get_endpoint_by_regs(csi2tx->dev->of_node, 0, 0);
csi2tx            504 drivers/media/platform/cadence/cdns-csi2tx.c 		dev_err(csi2tx->dev, "Could not parse v4l2 endpoint\n");
csi2tx            509 drivers/media/platform/cadence/cdns-csi2tx.c 		dev_err(csi2tx->dev, "Unsupported media bus type: 0x%x\n",
csi2tx            515 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx->num_lanes = v4l2_ep.bus.mipi_csi2.num_data_lanes;
csi2tx            516 drivers/media/platform/cadence/cdns-csi2tx.c 	if (csi2tx->num_lanes > csi2tx->max_lanes) {
csi2tx            517 drivers/media/platform/cadence/cdns-csi2tx.c 		dev_err(csi2tx->dev,
csi2tx            523 drivers/media/platform/cadence/cdns-csi2tx.c 	for (i = 0; i < csi2tx->num_lanes; i++) {
csi2tx            525 drivers/media/platform/cadence/cdns-csi2tx.c 			dev_err(csi2tx->dev, "Invalid lane[%d] number: %u\n",
csi2tx            532 drivers/media/platform/cadence/cdns-csi2tx.c 	memcpy(csi2tx->lanes, v4l2_ep.bus.mipi_csi2.data_lanes,
csi2tx            533 drivers/media/platform/cadence/cdns-csi2tx.c 	       sizeof(csi2tx->lanes));
csi2tx            567 drivers/media/platform/cadence/cdns-csi2tx.c 	struct csi2tx_priv *csi2tx;
csi2tx            572 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx = kzalloc(sizeof(*csi2tx), GFP_KERNEL);
csi2tx            573 drivers/media/platform/cadence/cdns-csi2tx.c 	if (!csi2tx)
csi2tx            575 drivers/media/platform/cadence/cdns-csi2tx.c 	platform_set_drvdata(pdev, csi2tx);
csi2tx            576 drivers/media/platform/cadence/cdns-csi2tx.c 	mutex_init(&csi2tx->lock);
csi2tx            577 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx->dev = &pdev->dev;
csi2tx            579 drivers/media/platform/cadence/cdns-csi2tx.c 	ret = csi2tx_get_resources(csi2tx, pdev);
csi2tx            584 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx->vops = (struct csi2tx_vops *)of_id->data;
csi2tx            586 drivers/media/platform/cadence/cdns-csi2tx.c 	v4l2_subdev_init(&csi2tx->subdev, &csi2tx_subdev_ops);
csi2tx            587 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx->subdev.owner = THIS_MODULE;
csi2tx            588 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx->subdev.dev = &pdev->dev;
csi2tx            589 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
csi2tx            590 drivers/media/platform/cadence/cdns-csi2tx.c 	snprintf(csi2tx->subdev.name, V4L2_SUBDEV_NAME_SIZE, "%s.%s",
csi2tx            593 drivers/media/platform/cadence/cdns-csi2tx.c 	ret = csi2tx_check_lanes(csi2tx);
csi2tx            598 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx->subdev.entity.function = MEDIA_ENT_F_VID_IF_BRIDGE;
csi2tx            599 drivers/media/platform/cadence/cdns-csi2tx.c 	csi2tx->pads[CSI2TX_PAD_SOURCE].flags = MEDIA_PAD_FL_SOURCE;
csi2tx            601 drivers/media/platform/cadence/cdns-csi2tx.c 		csi2tx->pads[i].flags = MEDIA_PAD_FL_SINK;
csi2tx            610 drivers/media/platform/cadence/cdns-csi2tx.c 		csi2tx->pad_fmts[i] = fmt_default;
csi2tx            612 drivers/media/platform/cadence/cdns-csi2tx.c 	ret = media_entity_pads_init(&csi2tx->subdev.entity, CSI2TX_PAD_MAX,
csi2tx            613 drivers/media/platform/cadence/cdns-csi2tx.c 				     csi2tx->pads);
csi2tx            617 drivers/media/platform/cadence/cdns-csi2tx.c 	ret = v4l2_async_register_subdev(&csi2tx->subdev);
csi2tx            623 drivers/media/platform/cadence/cdns-csi2tx.c 		 csi2tx->num_lanes, csi2tx->max_lanes, csi2tx->max_streams,
csi2tx            624 drivers/media/platform/cadence/cdns-csi2tx.c 		 csi2tx->has_internal_dphy ? "internal" : "no");
csi2tx            629 drivers/media/platform/cadence/cdns-csi2tx.c 	kfree(csi2tx);
csi2tx            635 drivers/media/platform/cadence/cdns-csi2tx.c 	struct csi2tx_priv *csi2tx = platform_get_drvdata(pdev);
csi2tx            637 drivers/media/platform/cadence/cdns-csi2tx.c 	v4l2_async_unregister_subdev(&csi2tx->subdev);
csi2tx            638 drivers/media/platform/cadence/cdns-csi2tx.c 	kfree(csi2tx);