public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andy@kernel.org>
To: Hans de Goede <hdegoede@redhat.com>
Cc: "Rafael J . Wysocki" <rafael@kernel.org>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Daniel Scally <dan.scally@ideasonboard.com>,
	linux-acpi@vger.kernel.org,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Kate Hsuan <hpa@redhat.com>, Hao Yao <hao.yao@intel.com>,
	Bingbu Cao <bingbu.cao@intel.com>,
	linux-media@vger.kernel.org
Subject: Re: [PATCH v3 10/18] media: ipu-bridge: Add a parse_sensor_fwnode callback to ipu_bridge_init()
Date: Thu, 6 Jul 2023 12:50:07 +0300	[thread overview]
Message-ID: <ZKaOT0CpE8xVSBFo@smile.fi.intel.com> (raw)
In-Reply-To: <20230705213010.390849-11-hdegoede@redhat.com>

On Wed, Jul 05, 2023 at 11:30:02PM +0200, Hans de Goede wrote:
> Add a parse_sensor_fwnode() callback to ipu_bridge_init(), so that
> ipu_bridge_init() can be used with other sensor fwnode parse functions
> then just ipu_bridge_parse_ssdb().
> 
> This will allow the ipu3-bridge code to also be used by the atomisp
> driver.

Reviewed-by: Andy Shevchenko <andy@kernel.org>

> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
> Changes in v3:
> - Add ipu_parse_sensor_fwnode_t type for the callback function
> ---
>  drivers/media/pci/intel/ipu-bridge.c     | 10 ++++++----
>  drivers/media/pci/intel/ipu-bridge.h     | 11 +++++++++--
>  drivers/media/pci/intel/ipu3/ipu3-cio2.c |  2 +-
>  3 files changed, 16 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel/ipu-bridge.c
> index 1f01f2c8b8a6..db67a75ae1b7 100644
> --- a/drivers/media/pci/intel/ipu-bridge.c
> +++ b/drivers/media/pci/intel/ipu-bridge.c
> @@ -148,8 +148,7 @@ static enum v4l2_fwnode_orientation ipu_bridge_parse_orientation(struct acpi_dev
>  	return orientation;
>  }
>  
> -static int ipu_bridge_parse_ssdb(struct acpi_device *adev,
> -				 struct ipu_sensor *sensor)
> +int ipu_bridge_parse_ssdb(struct acpi_device *adev, struct ipu_sensor *sensor)
>  {
>  	struct ipu_sensor_ssdb ssdb = {};
>  	int ret;
> @@ -179,6 +178,7 @@ static int ipu_bridge_parse_ssdb(struct acpi_device *adev,
>  
>  	return 0;
>  }
> +EXPORT_SYMBOL_NS_GPL(ipu_bridge_parse_ssdb, INTEL_IPU_BRIDGE);
>  
>  static void ipu_bridge_create_fwnode_properties(
>  	struct ipu_sensor *sensor,
> @@ -343,7 +343,7 @@ static int ipu_bridge_connect_sensor(const struct ipu_sensor_config *cfg,
>  
>  		sensor = &bridge->sensors[bridge->n_sensors];
>  
> -		ret = ipu_bridge_parse_ssdb(adev, sensor);
> +		ret = bridge->parse_sensor_fwnode(adev, sensor);
>  		if (ret)
>  			goto err_put_adev;
>  
> @@ -441,7 +441,8 @@ static int ipu_bridge_sensors_are_ready(void)
>  	return ready;
>  }
>  
> -int ipu_bridge_init(struct device *dev)
> +int ipu_bridge_init(struct device *dev,
> +		    ipu_parse_sensor_fwnode_t parse_sensor_fwnode)
>  {
>  	struct fwnode_handle *fwnode;
>  	struct ipu_bridge *bridge;
> @@ -459,6 +460,7 @@ int ipu_bridge_init(struct device *dev)
>  		sizeof(bridge->ipu_node_name));
>  	bridge->ipu_hid_node.name = bridge->ipu_node_name;
>  	bridge->dev = dev;
> +	bridge->parse_sensor_fwnode = parse_sensor_fwnode;
>  
>  	ret = software_node_register(&bridge->ipu_hid_node);
>  	if (ret < 0) {
> diff --git a/drivers/media/pci/intel/ipu-bridge.h b/drivers/media/pci/intel/ipu-bridge.h
> index a8b89c4b95bc..7d84b22b2111 100644
> --- a/drivers/media/pci/intel/ipu-bridge.h
> +++ b/drivers/media/pci/intel/ipu-bridge.h
> @@ -140,8 +140,12 @@ struct ipu_sensor {
>  	struct software_node_ref_args vcm_ref[1];
>  };
>  
> +typedef int (*ipu_parse_sensor_fwnode_t)(struct acpi_device *adev,
> +					 struct ipu_sensor *sensor);
> +
>  struct ipu_bridge {
>  	struct device *dev;
> +	ipu_parse_sensor_fwnode_t parse_sensor_fwnode;
>  	char ipu_node_name[ACPI_ID_LEN];
>  	struct software_node ipu_hid_node;
>  	u32 data_lanes[4];
> @@ -150,9 +154,12 @@ struct ipu_bridge {
>  };
>  
>  #if IS_ENABLED(CONFIG_IPU_BRIDGE)
> -int ipu_bridge_init(struct device *dev);
> +int ipu_bridge_init(struct device *dev,
> +		    ipu_parse_sensor_fwnode_t parse_sensor_fwnode);
> +int ipu_bridge_parse_ssdb(struct acpi_device *adev, struct ipu_sensor *sensor);
>  #else
> -static inline int ipu_bridge_init(struct device *dev) { return 0; }
> +/* Use a define to avoid the @parse_sensor_fwnode argument getting evaluated */
> +#define ipu_bridge_init(dev, parse_sensor_fwnode)	(0)
>  #endif
>  
>  #endif
> diff --git a/drivers/media/pci/intel/ipu3/ipu3-cio2.c b/drivers/media/pci/intel/ipu3/ipu3-cio2.c
> index 4068fa0a5ecf..26c4c1375990 100644
> --- a/drivers/media/pci/intel/ipu3/ipu3-cio2.c
> +++ b/drivers/media/pci/intel/ipu3/ipu3-cio2.c
> @@ -1725,7 +1725,7 @@ static int cio2_pci_probe(struct pci_dev *pci_dev,
>  			return -EINVAL;
>  		}
>  
> -		r = ipu_bridge_init(dev);
> +		r = ipu_bridge_init(dev, ipu_bridge_parse_ssdb);
>  		if (r)
>  			return r;
>  	}
> -- 
> 2.41.0
> 

-- 
With Best Regards,
Andy Shevchenko



  reply	other threads:[~2023-07-06  9:50 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-05 21:29 [PATCH v3 00/18] media: ipu-bridge: Shared with atomisp, rework VCM instantiation Hans de Goede
2023-07-05 21:29 ` [PATCH v3 01/18] media: ipu-bridge: Fix null pointer deref on SSDB/PLD parsing warnings Hans de Goede
2023-07-06 13:07   ` Dan Scally
2023-07-05 21:29 ` [PATCH v3 02/18] media: ipu-bridge: Do not use on stack memory for software_node.name field Hans de Goede
2023-07-05 21:29 ` [PATCH v3 03/18] media: ipu-bridge: Move initialization of node_names.vcm to ipu_bridge_init_swnode_names() Hans de Goede
2023-07-05 21:29 ` [PATCH v3 04/18] media: ipu-bridge: Allow building as module Hans de Goede
2023-07-06  9:47   ` Andy Shevchenko
2023-07-05 21:29 ` [PATCH v3 05/18] media: ipu-bridge: Make ipu_bridge_init() take a regular struct device as argument Hans de Goede
2023-07-05 21:29 ` [PATCH v3 06/18] media: ipu-bridge: Store dev pointer in struct ipu_bridge Hans de Goede
2023-07-05 21:29 ` [PATCH v3 07/18] media: ipu-bridge: Only keep PLD around while parsing Hans de Goede
2023-07-05 21:30 ` [PATCH v3 08/18] media: ipu-bridge: Add a ipu_bridge_parse_ssdb() helper function Hans de Goede
2023-07-05 21:30 ` [PATCH v3 09/18] media: ipu-bridge: Drop early setting of sensor->adev Hans de Goede
2023-07-05 21:30 ` [PATCH v3 10/18] media: ipu-bridge: Add a parse_sensor_fwnode callback to ipu_bridge_init() Hans de Goede
2023-07-06  9:50   ` Andy Shevchenko [this message]
2023-07-05 21:30 ` [PATCH v3 11/18] media: ipu-bridge: Move ipu-bridge.h to include/media/ Hans de Goede
2023-07-05 21:30 ` [PATCH v3 12/18] media: ipu-bridge: Add GalaxyCore GC0310 to ipu_supported_sensors[] Hans de Goede
2023-07-05 21:30 ` [PATCH v3 13/18] media: ipu-bridge: Add a runtime-pm device-link between VCM and sensor Hans de Goede
2023-07-05 21:30 ` [PATCH v3 14/18] media: i2c: Add driver for DW9719 VCM Hans de Goede
2023-07-06  7:47   ` Sakari Ailus
2023-07-06  9:14     ` Andy Shevchenko
2023-07-06  9:30       ` Sakari Ailus
2023-07-06 10:06   ` Andy Shevchenko
2023-07-06 10:27     ` Sakari Ailus
2023-07-06 10:48       ` Andy Shevchenko
2023-07-06 11:02         ` Sakari Ailus
2023-07-06 14:34     ` Hans de Goede
2023-07-06 14:47       ` Andy Shevchenko
2023-07-06 11:18   ` Dave Stevenson
2023-07-06 12:34     ` Hans de Goede
2023-07-06 12:52     ` Hans de Goede
2023-07-05 21:30 ` [PATCH v3 15/18] ACPI: bus: Introduce acpi_match_acpi_device() function Hans de Goede
2023-07-06  9:19   ` Andy Shevchenko
2023-07-06 12:29     ` Hans de Goede
2023-07-06 12:40       ` Andy Shevchenko
2023-07-06 13:26       ` Rafael J. Wysocki
2023-07-06 13:28         ` Hans de Goede
2023-07-06 13:31         ` Andy Shevchenko
2023-07-05 21:30 ` [PATCH v3 16/18] media: atomisp: csi2-bridge: Switch to new common ipu_bridge_init() Hans de Goede
2023-07-05 21:30 ` [PATCH v3 17/18] media: atomisp: csi2-bridge: Add dev_name() to acpi_handle_info() logging Hans de Goede
2023-07-06 10:09   ` Andy Shevchenko
2023-07-06 11:12     ` Laurent Pinchart
2023-07-06 12:23       ` Andy Shevchenko
2023-07-06 13:07         ` Laurent Pinchart
2023-07-06 13:22           ` Andy Shevchenko
2023-07-06 13:43           ` Sakari Ailus
2023-07-05 21:30 ` [PATCH v3 18/18] media: atomisp: csi2-bridge: Add support for VCM I2C-client instantiation Hans de Goede
2023-07-06 10:15   ` Andy Shevchenko
2023-07-06 12:31     ` Hans de Goede
2023-07-06 12:42       ` Andy Shevchenko
2023-07-06 12:47         ` Hans de Goede
2023-07-06 12:56           ` Andy Shevchenko
2023-07-06 12:58             ` Hans de Goede

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZKaOT0CpE8xVSBFo@smile.fi.intel.com \
    --to=andy@kernel.org \
    --cc=bingbu.cao@intel.com \
    --cc=dan.scally@ideasonboard.com \
    --cc=hao.yao@intel.com \
    --cc=hdegoede@redhat.com \
    --cc=hpa@redhat.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=rafael@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox