All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: linux-media@vger.kernel.org
Subject: [PATCH v2 035/106] ccs: Read CCS static data from firmware binaries
Date: Wed,  7 Oct 2020 11:44:48 +0300	[thread overview]
Message-ID: <20201007084557.25843-28-sakari.ailus@linux.intel.com> (raw)
In-Reply-To: <20201007084557.25843-1-sakari.ailus@linux.intel.com>

Read the CCS static data for sensors and modules. The files are expected
to be found in "ccs" directory.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/media/i2c/ccs/ccs-core.c | 30 ++++++++++++++++++++++++++++++
 drivers/media/i2c/ccs/ccs.h      |  2 ++
 2 files changed, 32 insertions(+)

diff --git a/drivers/media/i2c/ccs/ccs-core.c b/drivers/media/i2c/ccs/ccs-core.c
index 34e86ddbb06a..0cc6e7423f26 100644
--- a/drivers/media/i2c/ccs/ccs-core.c
+++ b/drivers/media/i2c/ccs/ccs-core.c
@@ -16,6 +16,7 @@
 #include <linux/clk.h>
 #include <linux/delay.h>
 #include <linux/device.h>
+#include <linux/firmware.h>
 #include <linux/gpio.h>
 #include <linux/gpio/consumer.h>
 #include <linux/module.h>
@@ -2947,6 +2948,8 @@ static int ccs_get_hwconfig(struct ccs_sensor *sensor, struct device *dev)
 static int ccs_probe(struct i2c_client *client)
 {
 	struct ccs_sensor *sensor;
+	const struct firmware *fw;
+	char filename[40];
 	unsigned int i;
 	int rval;
 
@@ -3036,6 +3039,31 @@ static int ccs_probe(struct i2c_client *client)
 		goto out_power_off;
 	}
 
+	WARN_ON(snprintf(filename, sizeof(filename),
+			 "ccs/ccs-sensor-%4.4x-%4.4x-%4.4x.fw",
+			 sensor->minfo.sensor_mipi_manufacturer_id,
+			 sensor->minfo.sensor_model_id,
+			 sensor->minfo.sensor_revision_number) >=
+		sizeof(filename));
+	rval = request_firmware(&fw, filename, &client->dev);
+	if (!rval) {
+		ccs_data_parse(&sensor->sdata, fw->data, fw->size, &client->dev,
+			       true);
+		release_firmware(fw);
+	}
+
+	WARN_ON(snprintf(filename, sizeof(filename),
+			 "ccs/ccs-module-%4.4x-%4.4x-%4.4x.fw",
+			 sensor->minfo.mipi_manufacturer_id,
+			 sensor->minfo.model_id,
+			 sensor->minfo.revision_number) >= sizeof(filename));
+	rval = request_firmware(&fw, filename, &client->dev);
+	if (!rval) {
+		ccs_data_parse(&sensor->mdata, fw->data, fw->size, &client->dev,
+			       true);
+		release_firmware(fw);
+	}
+
 	rval = ccs_read_all_limits(sensor);
 	if (rval)
 		goto out_power_off;
@@ -3232,6 +3260,8 @@ static int ccs_remove(struct i2c_client *client)
 	ccs_cleanup(sensor);
 	mutex_destroy(&sensor->mutex);
 	kfree(sensor->ccs_limits);
+	kvfree(sensor->sdata.backing);
+	kvfree(sensor->mdata.backing);
 
 	return 0;
 }
diff --git a/drivers/media/i2c/ccs/ccs.h b/drivers/media/i2c/ccs/ccs.h
index ad2ff5a74424..cbcd93b519da 100644
--- a/drivers/media/i2c/ccs/ccs.h
+++ b/drivers/media/i2c/ccs/ccs.h
@@ -16,6 +16,7 @@
 #include <media/v4l2-ctrls.h>
 #include <media/v4l2-subdev.h>
 
+#include "ccs-data.h"
 #include "ccs-quirk.h"
 #include "ccs-regs.h"
 #include "ccs-reg-access.h"
@@ -227,6 +228,7 @@ struct ccs_sensor {
 	const struct ccs_csi_data_format *internal_csi_format;
 	u32 default_mbus_frame_fmts;
 	int default_pixel_order;
+	struct ccs_data_container sdata, mdata;
 
 	u8 binning_horizontal;
 	u8 binning_vertical;
-- 
2.27.0


  parent reply	other threads:[~2020-10-07  8:47 UTC|newest]

Thread overview: 146+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-07  8:44 [PATCH v2 000/106] CCS driver Sakari Ailus
2020-10-07  8:44 ` [PATCH v2 001/106] smiapp: Generate CCS register definitions and limits Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 002/106] smiapp: Use CCS register flags Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 003/106] smiapp: Calculate CCS limit offsets and limit buffer size Sakari Ailus
2020-11-05  7:43     ` Mauro Carvalho Chehab
2020-11-05  7:58       ` Mauro Carvalho Chehab
2020-11-05  8:01         ` Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 004/106] smiapp: Remove macros for defining registers, merge definitions Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 005/106] smiapp: Add macros for accessing CCS registers Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 006/106] smiapp: Use MIPI CCS version and manufacturer ID information Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 007/106] smiapp: Read CCS limit values Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 008/106] smiapp: Switch to CCS limits Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 009/106] smiapp: Obtain frame descriptor from " Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 010/106] smiapp: Use CCS limits in reading data format descriptors Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 011/106] smiapp: Use CCS limits in reading binning capabilities Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 012/106] smiapp: Use CCS registers Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 013/106] smiapp: Remove quirk function for writing a single 8-bit register Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 014/106] smiapp: Rename register access functions Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 015/106] smiapp: Internal rename to CCS Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 016/106] smiapp: Differentiate CCS sensors from SMIA in subdev naming Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 017/106] smiapp: Rename as "ccs" Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 018/106] ccs: Remove profile concept Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 019/106] ccs: Give all subdevs a function Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 027/106] ccs: Request for "reset" GPIO Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 028/106] ccs: Add MIPI CCS compatible strings Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 029/106] ccs: Remove the I²C ID table Sakari Ailus
2020-11-05  9:34     ` Mauro Carvalho Chehab
2020-11-18 22:15       ` Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 030/106] ccs: Remove remaining support for platform data Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 031/106] ccs: Make hwcfg part of the device specific struct Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 032/106] ccs: Fix obtaining bus information from firmware Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 033/106] ccs: Add CCS static data parser library Sakari Ailus
2020-11-05 10:50     ` Mauro Carvalho Chehab
2020-11-05 11:18       ` Sakari Ailus
2020-11-05 12:53         ` Mauro Carvalho Chehab
2020-11-16 12:05           ` Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 034/106] ccs: Combine revision number major and minor into one Sakari Ailus
2020-10-07  8:44   ` Sakari Ailus [this message]
2020-11-05 10:56     ` [PATCH v2 035/106] ccs: Read CCS static data from firmware binaries Mauro Carvalho Chehab
2020-10-07  8:44   ` [PATCH v2 036/106] ccs: Stop reading arrays after the first zero Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 037/106] ccs: The functions to get compose or crop rectangle never return NULL Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 038/106] ccs: Replace somewhat harsh internal checks based on BUG with WARN_ON Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 039/106] ccs: Refactor register reading a little Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 040/106] ccs: Make real to integer number conversion optional Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 041/106] ccs: Move limit value real to integer conversion from read to access time Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 042/106] ccs: Read ireal numbers correctly Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 043/106] smiapp-pll: Rename as ccs-pll Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 044/106] ccs-pll: Fix MODULE_LICENSE Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 045/106] ccs: Change my e-mail address Sakari Ailus
2020-10-07  8:44   ` [PATCH v2 046/106] ccs: Add support for manufacturer regs from sensor and module files Sakari Ailus
2020-11-05 11:34     ` Mauro Carvalho Chehab
2020-11-05 11:56       ` Sakari Ailus
2020-11-05 12:46         ` Mauro Carvalho Chehab
2020-10-07  8:45   ` [PATCH v2 047/106] ccs: Use static data read-only registers Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 048/106] ccs: Clean up runtime PM usage Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 049/106] ccs: Wrap long lines, unwrap short ones Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 050/106] ccs: Add device compatible identifiers for telling SMIA and CCS apart Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 051/106] ccs: Use longer pre-I²C sleep for CCS compliant devices Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 052/106] ccs: Remove unnecessary delays from power-up sequence Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 055/106] ccs: Use all regulators Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 056/106] ccs-pll: Don't use div_u64 to divide a 32-bit number Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 057/106] ccs-pll: Split limits and PLL configuration into front and back parts Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 058/106] ccs-pll: Use correct VT divisor for calculating VT SYS divisor Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 059/106] ccs-pll: End search if there are no better values available Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 060/106] ccs-pll: Remove parallel bus support Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 061/106] ccs-pll: Differentiate between CSI-2 D-PHY and C-PHY Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 062/106] ccs-pll: Move the flags field down, away from 8-bit fields Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 063/106] ccs-pll: Document the structs in the header as well as the function Sakari Ailus
2020-11-05 12:18     ` Mauro Carvalho Chehab
2020-12-02 18:02       ` Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 064/106] ccs-pll: Use the BIT macro Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 065/106] ccs-pll: Begin calculation from OP system clock frequency Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 066/106] ccs-pll: Fix condition for pre-PLL divider lower bound Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 067/106] ccs-pll: Avoid overflow in pre-PLL divisor lower bound search Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 068/106] ccs-pll: Fix comment on check against maximum PLL multiplier Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 069/106] ccs-pll: Fix check for PLL multiplier upper bound Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 070/106] ccs-pll: Use explicit 32-bit unsigned type Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 071/106] ccs-pll: Add support for lane speed model Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 072/106] ccs: " Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 073/106] ccs-pll: Add support for decoupled OP domain calculation Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 074/106] ccs-pll: Add support for extended input PLL clock divider Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 075/106] ccs-pll: Support two cycles per pixel on OP domain Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 076/106] ccs-pll: Add support flexible OP PLL pixel clock divider Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 077/106] ccs-pll: Add sanity checks Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 078/106] ccs-pll: Add C-PHY support Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 079/106] ccs-pll: Split off VT subtree calculation Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 080/106] ccs-pll: Check for derating and overrating, support non-derating sensors Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 081/106] ccs-pll: Better separate OP and VT sub-tree calculation Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 082/106] ccs-pll: Print relevant information on PLL tree Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 083/106] ccs-pll: Rework bounds checks Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 084/106] ccs-pll: Make VT divisors 16-bit Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 085/106] ccs-pll: Fix VT post-PLL divisor calculation Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 086/106] ccs-pll: Separate VT divisor limit calculation from the rest Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 087/106] ccs-pll: Add trivial dual PLL support Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 088/106] ccs: Dual " Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 089/106] ccs-pll: Add support for DDR OP system and pixel clocks Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 090/106] ccs: Add support for DDR OP SYS and OP PIX clocks Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 091/106] ccs: Print written register values Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 092/106] ccs-pll: Print pixel rates Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 093/106] ccs: Add support for obtaining C-PHY configuration from firmware Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 094/106] ccs: Add digital gain support Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 095/106] ccs: Add support for old-style SMIA digital gain Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 096/106] ccs: Remove analogue gain field Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 097/106] ccs: Only add analogue gain control if the device supports it Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 098/106] v4l: uapi: Add user control base for CCS controls Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 099/106] v4l: uapi: ccs: Add controls for analogue gain constants Sakari Ailus
2020-11-05 12:41     ` Hans Verkuil
2020-11-05 12:47       ` Sakari Ailus
2020-11-05 12:56     ` Hans Verkuil
2020-11-05 12:58       ` Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 100/106] ccs: Add support for analogue gain coefficient controls Sakari Ailus
2020-11-05 12:46     ` Hans Verkuil
2020-11-05 12:50       ` Hans Verkuil
2020-11-05 12:55       ` Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 101/106] v4l: uapi: ccs: Add controls for CCS alternative analogue gain Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 102/106] ccs: Add support for alternate analogue global gain Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 103/106] ccs: Add debug prints for MSR registers Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 104/106] v4l: uapi: ccs: Add CCS controls for shading correction Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 105/106] ccs: Add shading correction and luminance correction level controls Sakari Ailus
2020-11-05 12:42     ` Mauro Carvalho Chehab
2020-11-05 16:29       ` Sakari Ailus
2020-11-05 13:03     ` Hans Verkuil
2020-11-16 13:50       ` Sakari Ailus
2020-10-07  8:45   ` [PATCH v2 106/106] ccs: Add CCS ACPI device ID Sakari Ailus
2020-11-05 12:44     ` Mauro Carvalho Chehab
2020-11-05  7:19   ` [PATCH v2 001/106] smiapp: Generate CCS register definitions and limits Mauro Carvalho Chehab
2020-11-05  8:01     ` Sakari Ailus
2020-11-05  9:04       ` Mauro Carvalho Chehab
2020-10-07  8:44 ` [PATCH v2 020/106] dt-bindings: nokia,smia: Fix link-frequencies documentation Sakari Ailus
2020-10-07  8:44 ` [PATCH v2 021/106] dt-bindings: nokia,smia: Make vana-supply optional Sakari Ailus
2020-10-07  8:44 ` [PATCH v2 022/106] dt-bindings: nokia,smia: Remove nokia,nvm-size property Sakari Ailus
2020-10-07 16:04   ` Rob Herring
2020-10-07  8:45 ` [PATCH v2 023/106] dt-bindings: nokia,smia: Convert to YAML Sakari Ailus
2020-10-07 16:06   ` Rob Herring
2020-10-07  8:45 ` [PATCH v2 024/106] dt-bindings: nokia,smia: Use better active polarity for reset Sakari Ailus
2020-10-07  8:45 ` [PATCH v2 025/106] dt-bindings: nokia,smia: Amend SMIA bindings with MIPI CCS support Sakari Ailus
2020-10-07 16:07   ` Rob Herring
2020-10-07  8:45 ` [PATCH v2 026/106] dt-bindings: mipi-ccs: Add bus-type for C-PHY support Sakari Ailus
2020-10-07 13:52   ` Rob Herring
2020-10-07 14:46     ` Sakari Ailus
2020-10-07 14:49     ` [PATCH v3 " Sakari Ailus
2020-10-07 16:24       ` Rob Herring
2020-10-07  8:45 ` [PATCH v2 053/106] dt-bindings: mipi,ccs: Don't mention vana voltage Sakari Ailus
2020-10-07 16:07   ` Rob Herring
2020-10-07  8:45 ` [PATCH v2 054/106] dt-bindings: mipi,ccs: Add vcore and vio supplies Sakari Ailus
2020-10-07 16:08   ` Rob Herring

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=20201007084557.25843-28-sakari.ailus@linux.intel.com \
    --to=sakari.ailus@linux.intel.com \
    --cc=linux-media@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.