git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git]
/
drivers
/
scsi
/
arm
/
arxescsi.c
diff --git
a/drivers/scsi/arm/arxescsi.c
b/drivers/scsi/arm/arxescsi.c
index
cd5a63c
..
a289401
100644
(file)
--- a/
drivers/scsi/arm/arxescsi.c
+++ b/
drivers/scsi/arm/arxescsi.c
@@
-33,7
+33,6
@@
#include <asm/dma.h>
#include <asm/io.h>
#include <asm/dma.h>
#include <asm/io.h>
-#include <asm/irq.h>
#include <asm/ecard.h>
#include "../scsi.h"
#include <asm/ecard.h>
#include "../scsi.h"
@@
-43,6
+42,7
@@
struct arxescsi_info {
FAS216_Info info;
struct expansion_card *ec;
struct arxescsi_info {
FAS216_Info info;
struct expansion_card *ec;
+ void __iomem *base;
};
#define DMADATA_OFFSET (0x200)
};
#define DMADATA_OFFSET (0x200)
@@
-64,7
+64,7
@@
struct arxescsi_info {
* Returns : 0 if we should not set CMD_WITHDMA for transfer info command
*/
static fasdmatype_t
* Returns : 0 if we should not set CMD_WITHDMA for transfer info command
*/
static fasdmatype_t
-arxescsi_dma_setup(struct Scsi_Host *host,
Scsi_P
ointer *SCp,
+arxescsi_dma_setup(struct Scsi_Host *host,
struct scsi_p
ointer *SCp,
fasdmadir_t direction, fasdmatype_t min_type)
{
/*
fasdmadir_t direction, fasdmatype_t min_type)
{
/*
@@
-73,7
+73,7
@@
arxescsi_dma_setup(struct Scsi_Host *host, Scsi_Pointer *SCp,
return fasdma_pseudo;
}
return fasdma_pseudo;
}
-static void arxescsi_pseudo_dma_write(unsigned char *addr,
unsigned char
*base)
+static void arxescsi_pseudo_dma_write(unsigned char *addr,
void __iomem
*base)
{
__asm__ __volatile__(
" stmdb sp!, {r0-r12}\n"
{
__asm__ __volatile__(
" stmdb sp!, {r0-r12}\n"
@@
-110,12
+110,12
@@
static void arxescsi_pseudo_dma_write(unsigned char *addr, unsigned char *base)
* transfer - minimum number of bytes we expect to transfer
*/
static void
* transfer - minimum number of bytes we expect to transfer
*/
static void
-arxescsi_dma_pseudo(struct Scsi_Host *host,
Scsi_P
ointer *SCp,
+arxescsi_dma_pseudo(struct Scsi_Host *host,
struct scsi_p
ointer *SCp,
fasdmadir_t direction, int transfer)
{
struct arxescsi_info *info = (struct arxescsi_info *)host->hostdata;
unsigned int length, error = 0;
fasdmadir_t direction, int transfer)
{
struct arxescsi_info *info = (struct arxescsi_info *)host->hostdata;
unsigned int length, error = 0;
-
unsigned char
*base = info->info.scsi.io_base;
+
void __iomem
*base = info->info.scsi.io_base;
unsigned char *addr;
length = SCp->this_residual;
unsigned char *addr;
length = SCp->this_residual;
@@
-196,7
+196,7
@@
arxescsi_dma_pseudo(struct Scsi_Host *host, Scsi_Pointer *SCp,
* Params : host - host
* SCpnt - command
*/
* Params : host - host
* SCpnt - command
*/
-static void arxescsi_dma_stop(struct Scsi_Host *host,
Scsi_P
ointer *SCp)
+static void arxescsi_dma_stop(struct Scsi_Host *host,
struct scsi_p
ointer *SCp)
{
/*
* no DMA to stop
{
/*
* no DMA to stop
@@
-260,7
+260,7
@@
arxescsi_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_t off
return pos;
}
return pos;
}
-static
Scsi_Host_T
emplate arxescsi_template = {
+static
struct scsi_host_t
emplate arxescsi_template = {
.proc_info = arxescsi_proc_info,
.name = "ARXE SCSI card",
.info = arxescsi_info,
.proc_info = arxescsi_proc_info,
.name = "ARXE SCSI card",
.info = arxescsi_info,
@@
-283,17
+283,15
@@
arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id)
struct Scsi_Host *host;
struct arxescsi_info *info;
unsigned long resbase, reslen;
struct Scsi_Host *host;
struct arxescsi_info *info;
unsigned long resbase, reslen;
-
unsigned char
*base;
+
void __iomem
*base;
int ret;
int ret;
- resbase = ecard_resource_start(ec, ECARD_RES_MEMC);
- reslen = ecard_resource_len(ec, ECARD_RES_MEMC);
-
- if (!request_mem_region(resbase, reslen, "arxescsi")) {
- ret = -EBUSY;
+ ret = ecard_request_resources(ec);
+ if (ret)
goto out;
goto out;
- }
+ resbase = ecard_resource_start(ec, ECARD_RES_MEMC);
+ reslen = ecard_resource_len(ec, ECARD_RES_MEMC);
base = ioremap(resbase, reslen);
if (!base) {
ret = -ENOMEM;
base = ioremap(resbase, reslen);
if (!base) {
ret = -ENOMEM;
@@
-306,15
+304,13
@@
arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id)
goto out_unmap;
}
goto out_unmap;
}
- host->base = (unsigned long)base;
- host->irq = NO_IRQ;
- host->dma_channel = NO_DMA;
-
info = (struct arxescsi_info *)host->hostdata;
info->ec = ec;
info = (struct arxescsi_info *)host->hostdata;
info->ec = ec;
+ info->base = base;
info->info.scsi.io_base = base + 0x2000;
info->info.scsi.io_base = base + 0x2000;
- info->info.scsi.irq = host->irq;
+ info->info.scsi.irq = NO_IRQ;
+ info->info.scsi.dma = NO_DMA;
info->info.scsi.io_shift = 5;
info->info.ifcfg.clockrate = 24; /* MHz */
info->info.ifcfg.select_timeout = 255;
info->info.scsi.io_shift = 5;
info->info.ifcfg.clockrate = 24; /* MHz */
info->info.ifcfg.select_timeout = 255;
@@
-345,7
+341,7
@@
arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id)
out_unmap:
iounmap(base);
out_region:
out_unmap:
iounmap(base);
out_region:
-
release_mem_region(resbase, reslen
);
+
ecard_release_resources(ec
);
out:
return ret;
}
out:
return ret;
}
@@
-353,20
+349,16
@@
arxescsi_probe(struct expansion_card *ec, const struct ecard_id *id)
static void __devexit arxescsi_remove(struct expansion_card *ec)
{
struct Scsi_Host *host = ecard_get_drvdata(ec);
static void __devexit arxescsi_remove(struct expansion_card *ec)
{
struct Scsi_Host *host = ecard_get_drvdata(ec);
-
unsigned long resbase, reslen
;
+
struct arxescsi_info *info = (struct arxescsi_info *)host->hostdata
;
ecard_set_drvdata(ec, NULL);
fas216_remove(host);
ecard_set_drvdata(ec, NULL);
fas216_remove(host);
- iounmap((void *)host->base);
-
- resbase = ecard_resource_start(ec, ECARD_RES_MEMC);
- reslen = ecard_resource_len(ec, ECARD_RES_MEMC);
-
- release_mem_region(resbase, reslen);
+ iounmap(info->base);
fas216_release(host);
scsi_host_put(host);
fas216_release(host);
scsi_host_put(host);
+ ecard_release_resources(ec);
}
static const struct ecard_id arxescsi_cids[] = {
}
static const struct ecard_id arxescsi_cids[] = {