summaryrefslogtreecommitdiffstats
path: root/drivers/net/wan/cycx_drv.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wan/cycx_drv.c')
-rw-r--r--drivers/net/wan/cycx_drv.c57
1 files changed, 34 insertions, 23 deletions
diff --git a/drivers/net/wan/cycx_drv.c b/drivers/net/wan/cycx_drv.c
index 53cb71837..491b04057 100644
--- a/drivers/net/wan/cycx_drv.c
+++ b/drivers/net/wan/cycx_drv.c
@@ -1,13 +1,13 @@
/*
* cycx_drv.c Cyclom 2X Support Module.
*
-* This module is a library of common hardware-specific
+* This module is a library of common hardware specific
* functions used by the Cyclades Cyclom 2X sync card.
*
-* Copyright: (c) 1998, 1999 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
-*
* Author: Arnaldo Carvalho de Melo <acme@conectiva.com.br>
*
+* Copyright: (c) 1998-2000 Arnaldo Carvalho de Melo
+*
* Based on sdladrv.c by Gene Kozin <genek@compuserve.com>
*
* This program is free software; you can redistribute it and/or
@@ -15,15 +15,16 @@
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
* ============================================================================
-* 1999/11/11 acme set_current_state(TASK_INTERRUPTIBLE), code cleanup
+* 1999/11/11 acme set_current_state(TASK_INTERRUPTIBLE), code
+* cleanup
* 1999/11/08 acme init_cyc2x deleted, doing nothing
* 1999/11/06 acme back to read[bw], write[bw] and memcpy_to and
* fromio to use dpmbase ioremaped
-* 1999/10/26 acme use isa_read[bw], isa_write[bw] and isa_memcpy_to
-* and fromio
+* 1999/10/26 acme use isa_read[bw], isa_write[bw] & isa_memcpy_to
+* & fromio
* 1999/10/23 acme cleanup to only supports cyclom2x: all the other
-* boards are no longer manufactured by cyclades, if
-* someone wants to support them... be my guest!
+* boards are no longer manufactured by cyclades,
+* if someone wants to support them... be my guest!
* 1999/05/28 acme cycx_intack & cycx_intde gone for good
* 1999/05/18 acme lots of unlogged work, submitting to Linus...
* 1999/01/03 acme more judicious use of data types
@@ -65,7 +66,7 @@
#include <asm/io.h> /* read[wl], write[wl], ioremap, iounmap */
#define MOD_VERSION 0
-#define MOD_RELEASE 4
+#define MOD_RELEASE 5
#ifdef MODULE
MODULE_AUTHOR("Arnaldo Carvalho de Melo");
@@ -103,7 +104,8 @@ static u16 checksum(u8 *buf, u32 len);
/* private data */
static char modname[] = "cycx_drv";
static char fullname[] = "Cyclom 2X Support Module";
-static char copyright[] = "(c) 1998, 1999 Arnaldo Carvalho de Melo";
+static char copyright[] = "(c) 1998-2000 Arnaldo Carvalho de Melo "
+ "<acme@conectiva.com.br>";
/* Hardware configuration options.
* These are arrays of configuration options used by verification routines.
@@ -130,8 +132,9 @@ static u32 cycx_2x_irq_options[] = { 7, 3, 5, 9, 10, 11, 12, 15 };
#ifdef MODULE
int init_module(void)
{
- printk(KERN_INFO "%s v%u.%u %s\n",
- fullname, MOD_VERSION, MOD_RELEASE, copyright);
+ printk(KERN_INFO "%s v%u.%u %s\n", fullname, MOD_VERSION, MOD_RELEASE,
+ copyright);
+
return 0;
}
/* Module 'remove' entry point.
@@ -198,6 +201,7 @@ EXPORT_SYMBOL(cycx_down);
int cycx_down(cycxhw_t *hw)
{
iounmap((u32 *)hw->dpmbase);
+
return 0;
}
@@ -226,7 +230,9 @@ int cycx_exec(u32 addr)
while (cyc2x_readw(addr)) {
udelay(1000);
- if (++i > 50) return -1;
+
+ if (++i > 50)
+ return -1;
}
return 0;
@@ -271,7 +277,8 @@ static int memory_exists(u32 addr)
cyc2x_writew(TEST_PATTERN, addr + 0x10);
if (cyc2x_readw(addr + 0x10) == TEST_PATTERN)
- if (cyc2x_readw(addr + 0x10) == TEST_PATTERN) return 1;
+ if (cyc2x_readw(addr + 0x10) == TEST_PATTERN)
+ return 1;
delay_cycx(1);
}
@@ -298,6 +305,7 @@ static int buffer_load(u32 addr, u8 *buffer, u32 cnt)
{
cyc2x_memcpy_toio(addr + DATA_OFFSET, buffer, cnt);
cyc2x_writew(GEN_BOOT_DAT, addr + CMD_OFFSET);
+
return wait_cyc(addr);
}
@@ -434,38 +442,39 @@ static int load_cyc2x(cycxhw_t *hw, cfm_t *cfm, u32 len)
if (((len - sizeof(cfm_t) - 1) != cfm->info.codesize) ||
*/
if (cksum != cfm->checksum) {
- printk(KERN_ERR "%s:" __FUNCTION__ ": firmware corrupted!\n", modname);
+ printk(KERN_ERR "%s:" __FUNCTION__ ": firmware corrupted!\n",
+ modname);
printk(KERN_ERR " cdsize = 0x%x (expected 0x%lx)\n",
- len - sizeof(cfm_t) - 1, cfm->info.codesize);
+ len - sizeof(cfm_t) - 1, cfm->info.codesize);
printk(KERN_ERR " chksum = 0x%x (expected 0x%x)\n",
- cksum, cfm->checksum);
+ cksum, cfm->checksum);
return -EINVAL;
}
/* If everything is ok, set reset, data and code pointers */
- img_hdr = (cycx_header_t*)(((u8*) cfm) + sizeof(cfm_t) - 1);
+ img_hdr = (cycx_header_t*)(((u8*)cfm) + sizeof(cfm_t) - 1);
#ifdef FIRMWARE_DEBUG
printk(KERN_INFO "%s:" __FUNCTION__ ": image sizes\n", modname);
printk(KERN_INFO " reset=%lu\n", img_hdr->reset_size);
printk(KERN_INFO " data=%lu\n", img_hdr->data_size);
printk(KERN_INFO " code=%lu\n", img_hdr->code_size);
#endif
- reset_image = ((u8 *) img_hdr) + sizeof(cycx_header_t);
+ reset_image = ((u8 *)img_hdr) + sizeof(cycx_header_t);
data_image = reset_image + img_hdr->reset_size;
code_image = data_image + img_hdr->data_size;
/*---- Start load ----*/
/* Announce */
printk(KERN_INFO "%s: loading firmware %s (ID=%u)...\n", modname,
- (cfm->descr[0] != '\0') ? cfm->descr : "unknown firmware",
- cfm->info.codeid);
+ cfm->descr[0] ? cfm->descr : "unknown firmware",
+ cfm->info.codeid);
for (i = 0 ; i < 5 ; i++) {
/* Reset Cyclom hardware */
if (!reset_cyc2x(hw->dpmbase)) {
- printk(KERN_ERR "%s: dpm problem or board not "
- "found.\n", modname);
+ printk(KERN_ERR "%s: dpm problem or board not found\n",
+ modname);
return -EINVAL;
}
@@ -536,6 +545,7 @@ static void cycx_bootcfg(cycxhw_t *hw)
static int detect_cyc2x(u32 addr)
{
reset_cyc2x(addr);
+
return memory_exists(addr);
}
@@ -560,6 +570,7 @@ static int reset_cyc2x(u32 addr)
delay_cycx(2);
cyc2x_writeb(0, addr + RST_DISABLE);
delay_cycx(2);
+
return memory_exists(addr);
}