/*
* Abilis Systems Single DVB-T Receiver
* Copyright (C) 2008 Pierrick Hascoet <pierrick.hascoet@abilis.com>
+ * Copyright (C) 2010 Devin Heitmueller <dheitmueller@kernellabs.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
char as102_dt_fw1[] = "as102_data1_dt.hex";
char as102_dt_fw2[] = "as102_data2_dt.hex";
-static unsigned char atohx(unsigned char *dst, char *src) {
+static unsigned char atohx(unsigned char *dst, char *src)
+{
unsigned char value = 0;
char msb = tolower(*src) - '0';
- char lsb = tolower(*(src +1)) - '0';
+ char lsb = tolower(*(src + 1)) - '0';
- if (msb > 9 )
+ if (msb > 9)
msb -= 7;
- if (lsb > 9 )
+ if (lsb > 9)
lsb -= 7;
*dst = value = ((msb & 0xF) << 4) | (lsb & 0xF);
}
/* locate end of line */
- for (src=fw_data; *src != '\n'; src += 2) {
+ for (src = fw_data; *src != '\n'; src += 2) {
atohx(&dst, src);
/* parse line to split addr / data */
switch (count) {
- case 0:
- *dataLength = dst;
- break;
- case 1:
- addr[2] = dst;
- break;
- case 2:
- addr[3] = dst;
- break;
- case 3:
- /* check if data is an address */
- if (dst == 0x04)
- *addr_has_changed = 1;
- else
- *addr_has_changed = 0;
- break;
- case 4:
- case 5:
- if (*addr_has_changed) {
- addr[(count - 4)] = dst;
- } else {
- data[(count - 4)] = dst;
- }
- break;
- default:
+ case 0:
+ *dataLength = dst;
+ break;
+ case 1:
+ addr[2] = dst;
+ break;
+ case 2:
+ addr[3] = dst;
+ break;
+ case 3:
+ /* check if data is an address */
+ if (dst == 0x04)
+ *addr_has_changed = 1;
+ else
+ *addr_has_changed = 0;
+ break;
+ case 4:
+ case 5:
+ if (*addr_has_changed)
+ addr[(count - 4)] = dst;
+ else
data[(count - 4)] = dst;
- break;
+ break;
+ default:
+ data[(count - 4)] = dst;
+ break;
}
count++;
}
/* return read value + ':' + '\n' */
- return ((count * 2) + 2);
+ return (count * 2) + 2;
}
static int as102_firmware_upload(struct as102_bus_adapter_t *bus_adap,
&data_len,
&addr_has_changed);
- if (read_bytes <= 0) {
+ if (read_bytes <= 0)
goto error;
- }
/* detect the end of file */
- if ((total_read_bytes += read_bytes) == firmware->size) {
+ total_read_bytes += read_bytes;
+ if (total_read_bytes == firmware->size) {
fw_pkt.u.request[0] = 0x00;
fw_pkt.u.request[1] = 0x03;
/* send EOF command */
- if ((errno = bus_adap->ops->upload_fw_pkt(bus_adap,(uint8_t *) &fw_pkt, 2, 0)) < 0)
+ errno = bus_adap->ops->upload_fw_pkt(bus_adap,
+ (uint8_t *)
+ &fw_pkt, 2, 0);
+ if (errno < 0)
goto error;
} else {
if (!addr_has_changed) {
data_len += sizeof(fw_pkt.raw.address);
/* send cmd to device */
- if ((errno = bus_adap->ops->upload_fw_pkt(bus_adap, (uint8_t *) &fw_pkt, data_len, 0)) < 0)
+ errno = bus_adap->ops->upload_fw_pkt(bus_adap,
+ (uint8_t *)
+ &fw_pkt,
+ data_len,
+ 0);
+ if (errno < 0)
goto error;
}
}
return (errno == 0) ? total_read_bytes : errno;
}
-int as102_fw_upload(struct as102_bus_adapter_t *bus_adap) {
+int as102_fw_upload(struct as102_bus_adapter_t *bus_adap)
+{
int errno = -EFAULT;
const struct firmware *firmware;
unsigned char *cmd_buf = NULL;
#if defined(CONFIG_FW_LOADER) || defined(CONFIG_FW_LOADER_MODULE)
/* allocate buffer to store firmware upload command and data */
- if ((cmd_buf = kzalloc(MAX_FW_PKT_SIZE, GFP_KERNEL)) == NULL) {
+ cmd_buf = kzalloc(MAX_FW_PKT_SIZE, GFP_KERNEL);
+ if (cmd_buf == NULL) {
errno = -ENOMEM;
goto error;
}
/* request kernel to locate firmware file: part1 */
- if ((errno = request_firmware(&firmware, fw1, &dev->dev)) < 0) {
+ errno = request_firmware(&firmware, fw1, &dev->dev);
+ if (errno < 0) {
printk(KERN_ERR "%s: unable to locate firmware file: %s\n",
DRIVER_NAME, fw1);
goto error;
}
/* initiate firmware upload */
- if ((errno = as102_firmware_upload(bus_adap, cmd_buf, firmware)) < 0) {
+ errno = as102_firmware_upload(bus_adap, cmd_buf, firmware);
+ if (errno < 0) {
printk(KERN_ERR "%s: error during firmware upload part1\n",
DRIVER_NAME);
goto error;
mdelay(100);
/* request kernel to locate firmware file: part2 */
- if ((errno = request_firmware(&firmware, fw2, &dev->dev)) < 0) {
+ errno = request_firmware(&firmware, fw2, &dev->dev);
+ if (errno < 0) {
printk(KERN_ERR "%s: unable to locate firmware file: %s\n",
DRIVER_NAME, fw2);
goto error;
}
/* initiate firmware upload */
- if ((errno = as102_firmware_upload(bus_adap, cmd_buf, firmware)) < 0) {
+ errno = as102_firmware_upload(bus_adap, cmd_buf, firmware);
+ if (errno < 0) {
printk(KERN_ERR "%s: error during firmware upload part2\n",
DRIVER_NAME);
goto error;