char companion_crc[10];
static int fimc_is_comp_spi_read(struct spi_device *spi,
- void *buf, u16 rx_addr, size_t size)
+ void *buf, u16 rx_addr, size_t size)
{
- unsigned char req_data[4] = { 0x03, };
- int ret;
-
- struct spi_transfer t_c;
- struct spi_transfer t_r;
-
+ unsigned char req_data[4] = { 0x03 };
+ struct spi_transfer t_c = { 0 };
+ struct spi_transfer t_r = { 0 };
struct spi_message m;
-
- memset(&t_c, 0x00, sizeof(t_c));
- memset(&t_r, 0x00, sizeof(t_r));
+ int ret;
req_data[1] = (rx_addr & 0xFF00) >> 8;
req_data[2] = (rx_addr & 0xFF);
spi_message_add_tail(&t_r, &m);
ret = spi_sync(spi, &m);
- if (ret) {
+ if (ret)
err("spi sync error - can't read data");
- return -EIO;
- } else
- return 0;
+
+ return ret;
}
static int fimc_is_comp_spi_single_write(struct spi_device *spi, u16 addr, u16 data)
ret = spi_write(spi, &tx_buf[0], j + 3);
if (ret) {
err("spi write error - can't write data");
- goto p_err;
+ return ret;
}
}
if (ret)
err("spi write error - can't write data");
-
-p_err:
return ret;
}
static int fimc_is_spi_probe(struct spi_device *spi)
{
- int ret = 0;
struct fimc_is_core *core;
+ int ret = 0;
BUG_ON(!fimc_is_dev);
/* spi->bits_per_word = 16; */
if (spi_setup(spi)) {
pr_err("failed to setup spi for fimc_is_spi\n");
- ret = -EINVAL;
- goto exit;
+ return -EINVAL;
}
if (!strncmp(spi->modalias, "fimc_is_spi0", 12))
if (!strncmp(spi->modalias, "fimc_is_spi1", 12)) {
core->spi1 = spi;
ret = of_fimc_is_spi_dt(&spi->dev,&core->spi_gpio, core);
- if (ret) {
+ if (ret)
pr_err("[%s] of_fimc_is_spi_dt parse dt failed\n", __func__);
- return ret;
- }
}
-exit:
return ret;
}
int fimc_is_sec_read_from_header(struct device *dev)
{
- int ret = 0;
struct fimc_is_core *core = dev_get_drvdata(dev);
- u8 header_version[12] = {0, };
+ u8 header_version[12] = { 0 };
+ int ret = 0;
ret = fimc_is_spi_read_by_core(core->spi0, header_version, 0x40, 0x0B);
if (ret < 0) {
- printk(KERN_ERR "failed to fimc_is_spi_read for header version (%d)\n", ret);
+ printk(KERN_ERR "failed to read FROM header version: %d\n", ret);
ret = -EINVAL;
}
if (core->use_module_check) {
if (sysfs_finfo.header_ver[3] != 'L') {
pr_err("Not supported module. Module ver = %s", sysfs_finfo.header_ver);
- return -EIO;
+ return -EIO;
}
}
return ret;
}
-void fimc_is_set_spi_config(struct fimc_is_spi_gpio *spi_gpio, int func, bool ssn) {
+void fimc_is_set_spi_config(struct fimc_is_spi_gpio *spi_gpio, int func, bool ssn)
+{
#if 0
pin_config_set(FIMC_IS_SPI_PINNAME, spi_gpio->spi_sclk,
PINCFG_PACK(PINCFG_TYPE_FUNC, func));
int fimc_is_spi_reset_by_core(struct spi_device *spi, void *buf, u32 rx_addr, size_t size)
{
unsigned char req_rst[1] = { 0x99 };
- int ret;
-
- struct spi_transfer t_c;
- struct spi_transfer t_r;
-
+ struct spi_transfer t_c = { 0 };
struct spi_message m;
-
- memset(&t_c, 0x00, sizeof(t_c));
- memset(&t_r, 0x00, sizeof(t_r));
+ int ret;
t_c.tx_buf = req_rst;
t_c.len = 1;
spi_message_add_tail(&t_c, &m);
ret = spi_sync(spi, &m);
- if (ret) {
+ if (ret)
err("spi sync error - can't get device information");
- return -EIO;
- }
- return 0;
+ return ret;
}
EXPORT_SYMBOL(fimc_is_spi_reset_by_core);
int fimc_is_spi_read_by_core(struct spi_device *spi, void *buf, u32 rx_addr, size_t size)
{
- unsigned char req_data[4] = { 0x03, };
- int ret;
-
- struct spi_transfer t_c;
- struct spi_transfer t_r;
-
+ unsigned char req_data[4] = { 0x03 };
+ struct spi_transfer t_c = { 0 };
+ struct spi_transfer t_r = { 0 };
struct spi_message m;
+ int ret;
- memset(&t_c, 0x00, sizeof(t_c));
- memset(&t_r, 0x00, sizeof(t_r));
-
- req_data[1] = (rx_addr & 0xFF0000) >> 16;
- req_data[2] = (rx_addr & 0xFF00) >> 8;
- req_data[3] = (rx_addr & 0xFF);
+ req_data[1] = (rx_addr & 0xff0000) >> 16;
+ req_data[2] = (rx_addr & 0xff00) >> 8;
+ req_data[3] = (rx_addr & 0xff);
t_c.tx_buf = req_data;
t_c.len = 4;
spi_message_add_tail(&t_r, &m);
spi->max_speed_hz = 48000000;
+
ret = spi_sync(spi, &m);
- if (ret) {
+ if (ret)
err("spi sync error - can't read data");
- return -EIO;
- } else {
- return 0;
- }
+
+ return ret;
}
EXPORT_SYMBOL(fimc_is_spi_read_by_core);
int fimc_is_spi_read_module_id(struct spi_device *spi, void *buf, u16 rx_addr, size_t size)
{
unsigned char req_data[4] = { 0x90, };
+ struct spi_transfer t_c = { 0 };
+ struct spi_transfer t_r = { 0 };
int ret;
-
- struct spi_transfer t_c;
- struct spi_transfer t_r;
-
struct spi_message m;
- memset(&t_c, 0x00, sizeof(t_c));
- memset(&t_r, 0x00, sizeof(t_r));
-
req_data[1] = (rx_addr & 0xFF00) >> 8;
req_data[2] = (rx_addr & 0xFF);
t_r.len = size;
spi_message_init(&m);
+
spi_message_add_tail(&t_c, &m);
spi_message_add_tail(&t_r, &m);
spi->max_speed_hz = 48000000;
ret = spi_sync(spi, &m);
- if (ret) {
+ if (ret)
err("spi sync error - can't read data");
- return -EIO;
- } else {
- return 0;
- }
+
+ return ret;
}
EXPORT_SYMBOL(fimc_is_spi_read_module_id);