Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
c1999ccb
Commit
c1999ccb
authored
Dec 27, 2004
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Plain Diff
Merge pobox.com:/garz/repo/libata-dev/sata_uli
into pobox.com:/garz/repo/libata-2.6
parents
a56bb4da
8625350a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
23 additions
and
28 deletions
+23
-28
drivers/scsi/sata_uli.c
drivers/scsi/sata_uli.c
+23
-28
No files found.
drivers/scsi/sata_uli.c
View file @
c1999ccb
...
@@ -32,16 +32,18 @@
...
@@ -32,16 +32,18 @@
#include <linux/libata.h>
#include <linux/libata.h>
#define DRV_NAME "sata_uli"
#define DRV_NAME "sata_uli"
#define DRV_VERSION "0.
2
"
#define DRV_VERSION "0.
5
"
enum
{
enum
{
uli_5289
=
0
,
uli_5289
=
0
,
uli_5287
=
1
,
uli_5287
=
1
,
uli_5281
=
2
,
/* PCI configuration registers */
/* PCI configuration registers */
ULI_SCR_BASE
=
0x90
,
/* sata0 phy SCR registers */
ULI5287_BASE
=
0x90
,
/* sata0 phy SCR registers */
ULI_SATA1_OFS
=
0x10
,
/* offset from sata0->sata1 phy regs */
ULI5287_OFFS
=
0x10
,
/* offset from sata0->sata1 phy regs */
ULI5281_BASE
=
0x60
,
/* sata0 phy SCR registers */
ULI5281_OFFS
=
0x60
,
/* offset from sata0->sata1 phy regs */
};
};
static
int
uli_init_one
(
struct
pci_dev
*
pdev
,
const
struct
pci_device_id
*
ent
);
static
int
uli_init_one
(
struct
pci_dev
*
pdev
,
const
struct
pci_device_id
*
ent
);
...
@@ -51,6 +53,7 @@ static void uli_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val);
...
@@ -51,6 +53,7 @@ static void uli_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val);
static
struct
pci_device_id
uli_pci_tbl
[]
=
{
static
struct
pci_device_id
uli_pci_tbl
[]
=
{
{
PCI_VENDOR_ID_AL
,
0x5289
,
PCI_ANY_ID
,
PCI_ANY_ID
,
0
,
0
,
uli_5289
},
{
PCI_VENDOR_ID_AL
,
0x5289
,
PCI_ANY_ID
,
PCI_ANY_ID
,
0
,
0
,
uli_5289
},
{
PCI_VENDOR_ID_AL
,
0x5287
,
PCI_ANY_ID
,
PCI_ANY_ID
,
0
,
0
,
uli_5287
},
{
PCI_VENDOR_ID_AL
,
0x5287
,
PCI_ANY_ID
,
PCI_ANY_ID
,
0
,
0
,
uli_5287
},
{
PCI_VENDOR_ID_AL
,
0x5281
,
PCI_ANY_ID
,
PCI_ANY_ID
,
0
,
0
,
uli_5281
},
{
}
/* terminate list */
{
}
/* terminate list */
};
};
...
@@ -125,33 +128,15 @@ MODULE_LICENSE("GPL");
...
@@ -125,33 +128,15 @@ MODULE_LICENSE("GPL");
MODULE_DEVICE_TABLE
(
pci
,
uli_pci_tbl
);
MODULE_DEVICE_TABLE
(
pci
,
uli_pci_tbl
);
MODULE_VERSION
(
DRV_VERSION
);
MODULE_VERSION
(
DRV_VERSION
);
static
unsigned
int
get_scr_cfg_addr
(
unsigned
int
port_no
,
unsigned
int
sc_reg
)
static
unsigned
int
get_scr_cfg_addr
(
struct
ata_port
*
ap
,
unsigned
int
sc_reg
)
{
{
unsigned
int
addr
=
ULI_SCR_BASE
+
(
4
*
sc_reg
);
return
ap
->
ioaddr
.
scr_addr
+
(
4
*
sc_reg
);
switch
(
port_no
)
{
case
0
:
break
;
case
1
:
addr
+=
ULI_SATA1_OFS
;
break
;
case
2
:
addr
+=
ULI_SATA1_OFS
*
4
;
break
;
case
3
:
addr
+=
ULI_SATA1_OFS
*
5
;
break
;
default:
BUG
();
break
;
}
return
addr
;
}
}
static
u32
uli_scr_cfg_read
(
struct
ata_port
*
ap
,
unsigned
int
sc_reg
)
static
u32
uli_scr_cfg_read
(
struct
ata_port
*
ap
,
unsigned
int
sc_reg
)
{
{
struct
pci_dev
*
pdev
=
to_pci_dev
(
ap
->
host_set
->
dev
);
struct
pci_dev
*
pdev
=
to_pci_dev
(
ap
->
host_set
->
dev
);
unsigned
int
cfg_addr
=
get_scr_cfg_addr
(
ap
->
port_no
,
sc_reg
);
unsigned
int
cfg_addr
=
get_scr_cfg_addr
(
ap
,
sc_reg
);
u32
val
;
u32
val
;
pci_read_config_dword
(
pdev
,
cfg_addr
,
&
val
);
pci_read_config_dword
(
pdev
,
cfg_addr
,
&
val
);
...
@@ -161,7 +146,7 @@ static u32 uli_scr_cfg_read (struct ata_port *ap, unsigned int sc_reg)
...
@@ -161,7 +146,7 @@ static u32 uli_scr_cfg_read (struct ata_port *ap, unsigned int sc_reg)
static
void
uli_scr_cfg_write
(
struct
ata_port
*
ap
,
unsigned
int
scr
,
u32
val
)
static
void
uli_scr_cfg_write
(
struct
ata_port
*
ap
,
unsigned
int
scr
,
u32
val
)
{
{
struct
pci_dev
*
pdev
=
to_pci_dev
(
ap
->
host_set
->
dev
);
struct
pci_dev
*
pdev
=
to_pci_dev
(
ap
->
host_set
->
dev
);
unsigned
int
cfg_addr
=
get_scr_cfg_addr
(
ap
->
port_no
,
scr
);
unsigned
int
cfg_addr
=
get_scr_cfg_addr
(
ap
,
scr
);
pci_write_config_dword
(
pdev
,
cfg_addr
,
val
);
pci_write_config_dword
(
pdev
,
cfg_addr
,
val
);
}
}
...
@@ -222,9 +207,11 @@ static int uli_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
...
@@ -222,9 +207,11 @@ static int uli_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
rc
=
-
ENOMEM
;
rc
=
-
ENOMEM
;
goto
err_out_regions
;
goto
err_out_regions
;
}
}
switch
(
board_idx
)
{
switch
(
board_idx
)
{
case
uli_5287
:
case
uli_5287
:
probe_ent
->
port
[
0
].
scr_addr
=
ULI5287_BASE
;
probe_ent
->
port
[
1
].
scr_addr
=
ULI5287_BASE
+
ULI5287_OFFS
;
probe_ent
->
n_ports
=
4
;
probe_ent
->
n_ports
=
4
;
probe_ent
->
port
[
2
].
cmd_addr
=
pci_resource_start
(
pdev
,
0
)
+
8
;
probe_ent
->
port
[
2
].
cmd_addr
=
pci_resource_start
(
pdev
,
0
)
+
8
;
...
@@ -232,19 +219,27 @@ static int uli_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
...
@@ -232,19 +219,27 @@ static int uli_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
probe_ent
->
port
[
2
].
ctl_addr
=
probe_ent
->
port
[
2
].
ctl_addr
=
(
pci_resource_start
(
pdev
,
1
)
|
ATA_PCI_CTL_OFS
)
+
4
;
(
pci_resource_start
(
pdev
,
1
)
|
ATA_PCI_CTL_OFS
)
+
4
;
probe_ent
->
port
[
2
].
bmdma_addr
=
pci_resource_start
(
pdev
,
4
)
+
16
;
probe_ent
->
port
[
2
].
bmdma_addr
=
pci_resource_start
(
pdev
,
4
)
+
16
;
probe_ent
->
port
[
2
].
scr_addr
=
ULI5287_BASE
+
ULI5287_OFFS
*
4
;
probe_ent
->
port
[
3
].
cmd_addr
=
pci_resource_start
(
pdev
,
2
)
+
8
;
probe_ent
->
port
[
3
].
cmd_addr
=
pci_resource_start
(
pdev
,
2
)
+
8
;
probe_ent
->
port
[
3
].
altstatus_addr
=
probe_ent
->
port
[
3
].
altstatus_addr
=
probe_ent
->
port
[
3
].
ctl_addr
=
probe_ent
->
port
[
3
].
ctl_addr
=
(
pci_resource_start
(
pdev
,
3
)
|
ATA_PCI_CTL_OFS
)
+
4
;
(
pci_resource_start
(
pdev
,
3
)
|
ATA_PCI_CTL_OFS
)
+
4
;
probe_ent
->
port
[
3
].
bmdma_addr
=
pci_resource_start
(
pdev
,
4
)
+
24
;
probe_ent
->
port
[
3
].
bmdma_addr
=
pci_resource_start
(
pdev
,
4
)
+
24
;
probe_ent
->
port
[
3
].
scr_addr
=
ULI5287_BASE
+
ULI5287_OFFS
*
5
;
ata_std_ports
(
&
probe_ent
->
port
[
2
]);
ata_std_ports
(
&
probe_ent
->
port
[
2
]);
ata_std_ports
(
&
probe_ent
->
port
[
3
]);
ata_std_ports
(
&
probe_ent
->
port
[
3
]);
break
;
break
;
case
uli_5289
:
case
uli_5289
:
/* do nothing; ata_pci_init_native_mode did it all */
probe_ent
->
port
[
0
].
scr_addr
=
ULI5287_BASE
;
probe_ent
->
port
[
1
].
scr_addr
=
ULI5287_BASE
+
ULI5287_OFFS
;
break
;
case
uli_5281
:
probe_ent
->
port
[
0
].
scr_addr
=
ULI5281_BASE
;
probe_ent
->
port
[
1
].
scr_addr
=
ULI5281_BASE
+
ULI5281_OFFS
;
break
;
break
;
default:
default:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment