summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2012-09-19 10:24:11 +0000
committerHans de Goede <hdegoede@redhat.com>2012-09-19 10:24:11 +0000
commit14db1e171a4a730a62abead6e631d6aab1c8b091 (patch)
treed7f47853c543ba7ace17d3e27327a954daf9c178
parentba42e0394b6ee232ea3e8414a219437ecc377948 (diff)
downloadlibgphoto2-14db1e171a4a730a62abead6e631d6aab1c8b091.tar.gz
ax203: ax203_send_eeprom_cmd() add extra_arg
git-svn-id: https://svn.code.sf.net/p/gphoto/code/branches/libgphoto2-2_4/libgphoto2@14106 67ed7778-7388-44ab-90cf-0a291f65f57c
-rw-r--r--camlibs/ax203/ax203.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/camlibs/ax203/ax203.c b/camlibs/ax203/ax203.c
index c3721b9b8..9317fd4cd 100644
--- a/camlibs/ax203/ax203.c
+++ b/camlibs/ax203/ax203.c
@@ -123,7 +123,7 @@ ax203_send_cmd(Camera *camera, int to_dev, char *cmd, int cmd_size,
static int
ax203_send_eeprom_cmd(Camera *camera, int to_dev,
char *eeprom_cmd, int eeprom_cmd_size,
- char *data, int data_size)
+ char *data, int data_size, char extra_arg)
{
char cmd_buffer[16];
int i;
@@ -143,6 +143,8 @@ ax203_send_eeprom_cmd(Camera *camera, int to_dev,
for (i = 0; i < eeprom_cmd_size; i++)
cmd_buffer[10 + i] = eeprom_cmd[i];
+ cmd_buffer[15] = extra_arg;
+
return ax203_send_cmd (camera, to_dev, cmd_buffer, sizeof(cmd_buffer),
data, data_size);
}
@@ -273,7 +275,7 @@ ax203_eeprom_device_identification(Camera *camera, char *buf)
{
char cmd = SPI_EEPROM_RDID;
- return ax203_send_eeprom_cmd (camera, 0, &cmd, 1, buf, 4);
+ return ax203_send_eeprom_cmd (camera, 0, &cmd, 1, buf, 4, 0);
}
static int
@@ -281,7 +283,7 @@ ax203_eeprom_release_from_deep_powerdown(Camera *camera)
{
char cmd = SPI_EEPROM_RDP;
- return ax203_send_eeprom_cmd (camera, 1, &cmd, 1, NULL, 0);
+ return ax203_send_eeprom_cmd (camera, 1, &cmd, 1, NULL, 0, 0);
}
static int
@@ -295,11 +297,12 @@ ax203_eeprom_read(Camera *camera, int address, char *buf, int buf_size)
cmd[3] = (address) & 0xff;
return ax203_send_eeprom_cmd (camera, 0, cmd, sizeof(cmd), buf,
- buf_size);
+ buf_size, 0);
}
static int
-ax203_eeprom_program_page(Camera *camera, int address, char *buf, int buf_size)
+ax203_eeprom_program_page(Camera *camera, int address, char *buf, int buf_size,
+ char extra_arg)
{
char cmd[4];
@@ -309,7 +312,7 @@ ax203_eeprom_program_page(Camera *camera, int address, char *buf, int buf_size)
cmd[3] = (address) & 0xff;
return ax203_send_eeprom_cmd (camera, 1, cmd, sizeof(cmd), buf,
- buf_size);
+ buf_size, extra_arg);
}
static int
@@ -317,7 +320,7 @@ ax203_eeprom_write_enable(Camera *camera)
{
char cmd = SPI_EEPROM_WREN;
- return ax203_send_eeprom_cmd (camera, 1, &cmd, 1, NULL, 0);
+ return ax203_send_eeprom_cmd (camera, 1, &cmd, 1, NULL, 0, 0);
}
static int
@@ -328,7 +331,7 @@ ax203_eeprom_clear_block_protection(Camera *camera)
cmd[0] = SPI_EEPROM_WRSR;
cmd[1] = 0;
- return ax203_send_eeprom_cmd (camera, 1, cmd, sizeof(cmd), NULL, 0);
+ return ax203_send_eeprom_cmd (camera, 1, cmd, sizeof(cmd), NULL, 0, 0);
}
static int
@@ -341,7 +344,7 @@ ax203_eeprom_erase_4k_sector(Camera *camera, int address)
cmd[2] = (address >> 8) & 0xff;
cmd[3] = (address) & 0xff;
- return ax203_send_eeprom_cmd (camera, 1, cmd, sizeof(cmd), NULL, 0);
+ return ax203_send_eeprom_cmd (camera, 1, cmd, sizeof(cmd), NULL, 0, 0);
}
static int
@@ -354,7 +357,7 @@ ax203_eeprom_erase_64k_sector(Camera *camera, int address)
cmd[2] = (address >> 8) & 0xff;
cmd[3] = (address) & 0xff;
- return ax203_send_eeprom_cmd (camera, 1, cmd, sizeof(cmd), NULL, 0);
+ return ax203_send_eeprom_cmd (camera, 1, cmd, sizeof(cmd), NULL, 0, 0);
}
static int
@@ -380,7 +383,8 @@ ax203_eeprom_wait_ready(Camera *camera)
}
while (1) {
- CHECK (ax203_send_eeprom_cmd (camera, 0, &cmd, 1, buf, count))
+ CHECK (ax203_send_eeprom_cmd (camera, 0, &cmd, 1,
+ buf, count, 0))
/* We only need to check the last read */
if (!(buf[count - 1] & 0x01)) /* Check write in progress bit */
break; /* No write in progress, done waiting */
@@ -445,7 +449,7 @@ ax203_write_sector(Camera *camera, int sector, char *buf)
for (i = 0; i < SPI_EEPROM_SECTOR_SIZE; i += 256) {
CHECK (ax203_eeprom_write_enable (camera))
CHECK (ax203_eeprom_program_page (camera, base + i,
- buf + i, 256))
+ buf + i, 256, 0))
CHECK (ax203_eeprom_wait_ready (camera))
}
}
@@ -1599,7 +1603,7 @@ ax203_commit_block_ax3003(Camera *camera, int bss)
CHECK (ax203_eeprom_write_enable (camera))
CHECK (ax203_eeprom_program_page (camera, address,
camera->pl->mem + address,
- SPI_EEPROM_BLOCK_SIZE))
+ SPI_EEPROM_BLOCK_SIZE, 0))
CHECK (ax203_eeprom_wait_ready (camera))
for (i = 0; i < block_sector_size; i++)