#include "irs1125.h"
#include <linux/clk.h>
#include <linux/delay.h>
+#include <linux/firmware.h>
#include <linux/gpio/consumer.h>
#include <linux/i2c.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/of_graph.h>
#include <linux/slab.h>
+#include <linux/types.h>
#include <linux/videodev2.h>
-#include <linux/firmware.h>
+#include <media/v4l2-ctrls.h>
#include <media/v4l2-device.h>
#include <media/v4l2-fwnode.h>
#include <media/v4l2-image-sizes.h>
#include <media/v4l2-mediabus.h>
-#include <media/v4l2-ctrls.h>
#define CHECK_BIT(val, pos) ((val) & BIT(pos))
#define IRS1125_ALTERNATE_FW "irs1125_af.bin"
-#define IRS1125_REG_CSICFG 0xA882
-#define IRS1125_REG_DESIGN_STEP 0xB0AD
-#define IRS1125_REG_EFUSEVAL2 0xB09F
-#define IRS1125_REG_EFUSEVAL3 0xB0A0
-#define IRS1125_REG_EFUSEVAL4 0xB0A1
-#define IRS1125_REG_DMEM_SHADOW 0xC320
+#define IRS1125_REG_SAFE_RECONFIG 0xA850
+#define IRS1125_REG_CSICFG 0xA882
+#define IRS1125_REG_DESIGN_STEP 0xB0AD
+#define IRS1125_REG_EFUSEVAL2 0xB09F
+#define IRS1125_REG_EFUSEVAL3 0xB0A0
+#define IRS1125_REG_EFUSEVAL4 0xB0A1
+#define IRS1125_REG_DMEM_SHADOW 0xC320
-#define IRS1125_DESIGN_STEP_EXPECTED 0x0a12
+#define IRS1125_DESIGN_STEP_EXPECTED 0x0a12
#define IRS1125_ROW_START_DEF 0
#define IRS1125_COLUMN_START_DEF 0
-#define IRS1125_WINDOW_HEIGHT_DEF 288
+#define IRS1125_WINDOW_HEIGHT_DEF 288
#define IRS1125_WINDOW_WIDTH_DEF 352
struct regval_list {
return container_of(sd, struct irs1125, sd);
}
-static struct regval_list irs1125_26MHz[] = {
+static struct regval_list irs1125_26mhz[] = {
{0xB017, 0x0413},
{0xB086, 0x3535},
{0xB0AE, 0xEF02},
{0xFFFF, 100}
};
-static struct regval_list irs1125_seq_cfg[] = {
+static struct regval_list irs1125_seq_cfg_init[] = {
{0xC3A0, 0x823D},
{0xC3A1, 0xB13B},
{0xC3A2, 0x0313},
dev_err(&client->dev, "%s: i2c write error, reg: %x\n",
__func__, reg);
+ dev_dbg(&client->dev, "write addr 0x%04x, val 0x%04x\n", reg, val);
return ret;
}
cnt++;
}
- ret = irs1125_write_array(sd, irs1125_26MHz,
- ARRAY_SIZE(irs1125_26MHz));
+ ret = irs1125_write_array(sd, irs1125_26mhz,
+ ARRAY_SIZE(irs1125_26mhz));
if (ret < 0) {
dev_err(&client->dev, "write sensor default regs error\n");
return ret;
}
release_firmware(fw);
- ret = irs1125_write_array(sd, irs1125_seq_cfg,
- ARRAY_SIZE(irs1125_seq_cfg));
+ ret = irs1125_write_array(sd, irs1125_seq_cfg_init,
+ ARRAY_SIZE(irs1125_seq_cfg_init));
if (ret < 0) {
dev_err(&client->dev, "write default sequence failed\n");
return ret;
}
gpio_num = desc_to_gpio(sensor->reset);
+ dev_dbg(&client->dev, "reset on GPIO num %d\n", gpio_num);
mutex_init(&sensor->lock);