media: rkisp1: Save info pointer in rkisp1_device
To make it possible to use the rkisp1_info after probe time (for instance to make code conditional on the ISP version), save it in the main rkisp1_device structure. To achieve this, also move the info structure into the common header, and document it. While at it, drop a NULL check in rkisp1_probe() for the match data as it can't happen. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Dafna Hirschfeld <dafna@fastmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
cdce5b957d
commit
9125aee770
|
@ -91,6 +91,26 @@ enum rkisp1_isp_pad {
|
|||
RKISP1_ISP_PAD_MAX
|
||||
};
|
||||
|
||||
/*
|
||||
* struct rkisp1_info - Model-specific ISP Information
|
||||
*
|
||||
* @clks: array of ISP clock names
|
||||
* @clk_size: number of entries in the @clks array
|
||||
* @isrs: array of ISP interrupt descriptors
|
||||
* @isr_size: number of entries in the @isrs array
|
||||
* @isp_ver: ISP version
|
||||
*
|
||||
* This structure contains information about the ISP specific to a particular
|
||||
* ISP model, version, or integration in a particular SoC.
|
||||
*/
|
||||
struct rkisp1_info {
|
||||
const char * const *clks;
|
||||
unsigned int clk_size;
|
||||
const struct rkisp1_isr_data *isrs;
|
||||
unsigned int isr_size;
|
||||
enum rkisp1_cif_isp_version isp_ver;
|
||||
};
|
||||
|
||||
/*
|
||||
* struct rkisp1_sensor_async - A container for the v4l2_async_subdev to add to the notifier
|
||||
* of the v4l2-async API
|
||||
|
@ -386,6 +406,7 @@ struct rkisp1_debug {
|
|||
* @pipe: media pipeline
|
||||
* @stream_lock: serializes {start/stop}_streaming callbacks between the capture devices.
|
||||
* @debug: debug params to be exposed on debugfs
|
||||
* @info: version-specific ISP information
|
||||
*/
|
||||
struct rkisp1_device {
|
||||
void __iomem *base_addr;
|
||||
|
@ -404,6 +425,7 @@ struct rkisp1_device {
|
|||
struct media_pipeline pipe;
|
||||
struct mutex stream_lock; /* serialize {start/stop}_streaming cb between capture devices */
|
||||
struct rkisp1_debug debug;
|
||||
const struct rkisp1_info *info;
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
@ -105,14 +105,6 @@ struct rkisp1_isr_data {
|
|||
irqreturn_t (*isr)(int irq, void *ctx);
|
||||
};
|
||||
|
||||
struct rkisp1_info {
|
||||
const char * const *clks;
|
||||
unsigned int clk_size;
|
||||
const struct rkisp1_isr_data *isrs;
|
||||
unsigned int isr_size;
|
||||
enum rkisp1_cif_isp_version isp_ver;
|
||||
};
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
* Sensor DT bindings
|
||||
*/
|
||||
|
@ -469,14 +461,13 @@ static int rkisp1_probe(struct platform_device *pdev)
|
|||
int ret, irq;
|
||||
u32 cif_id;
|
||||
|
||||
info = of_device_get_match_data(&pdev->dev);
|
||||
if (!info)
|
||||
return -ENODEV;
|
||||
|
||||
rkisp1 = devm_kzalloc(dev, sizeof(*rkisp1), GFP_KERNEL);
|
||||
if (!rkisp1)
|
||||
return -ENOMEM;
|
||||
|
||||
info = of_device_get_match_data(dev);
|
||||
rkisp1->info = info;
|
||||
|
||||
dev_set_drvdata(dev, rkisp1);
|
||||
rkisp1->dev = dev;
|
||||
|
||||
|
|
Loading…
Reference in New Issue