Commit 36006b1d authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'ata-6.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata

Pull ata updates from Damien Le Moal:

 - Many cleanups of the pata_parport driver and of its protocol modules
   (Ondrej)

 - Remove unused code (ata_id_xxx() functions) (Sergey)

 - Add Add UniPhier SATA controller DT bindings (Kunihiko)

 - Fix dependencies for the Freescale QorIQ AHCI SATA controller driver
   (Geert)

 - DT property handling improvements (Rob)

* tag 'ata-6.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata: (57 commits)
  ata: pata_parport-bpck6: Declare mode_map as static
  ata: pata_parport-bpck6: Remove dependency on 64BIT
  ata: pata_parport-bpck6: reduce indents in bpck6_open
  ata: pata_parport-bpck6: delete ppc6lnx.c
  ata: pata_parport-bpck6: move defines and mode_map to bpck6.c
  ata: pata_parport-bpck6: move ppc6_wr_data_byte to bpck6.c and rename
  ata: pata_parport-bpck6: move ppc6_rd_data_byte to bpck6.c and rename
  ata: pata_parport-bpck6: move ppc6_send_cmd to bpck6.c and rename
  ata: pata_parport-bpck6: move ppc6_deselect to bpck6.c and rename
  ata: pata_parport-bpck6: merge ppc6_select into bpck6_open
  ata: pata_parport-bpck6: move ppc6_open to bpck6.c and rename
  ata: pata_parport-bpck6: move ppc6_wr_extout to bpck6.c and rename
  ata: pata_parport-bpck6: move ppc6_wait_for_fifo to bpck6.c and rename
  ata: pata_parport-bpck6: merge ppc6_wr_data_blk into bpck6_write_block
  ata: pata_parport-bpck6: merge ppc6_rd_data_blk into bpck6_read_block
  ata: pata_parport-bpck6: merge ppc6_wr_port16_blk into bpck6_write_block
  ata: pata_parport-bpck6: merge ppc6_rd_port16_blk into bpck6_read_block
  ata: pata_parport-bpck6: merge ppc6_wr_port into bpck6_write_regr
  ata: pata_parport-bpck6: merge ppc6_rd_port into bpck6_read_regr
  ata: pata_parport-bpck6: remove ppc6_close
  ...
parents 48dc8100 140b2603
...@@ -30,12 +30,12 @@ select: ...@@ -30,12 +30,12 @@ select:
- marvell,armada-3700-ahci - marvell,armada-3700-ahci
- marvell,armada-8k-ahci - marvell,armada-8k-ahci
- marvell,berlin2q-ahci - marvell,berlin2q-ahci
- socionext,uniphier-pro4-ahci
- socionext,uniphier-pxs2-ahci
- socionext,uniphier-pxs3-ahci
required: required:
- compatible - compatible
allOf:
- $ref: "ahci-common.yaml#"
properties: properties:
compatible: compatible:
oneOf: oneOf:
...@@ -45,6 +45,9 @@ properties: ...@@ -45,6 +45,9 @@ properties:
- marvell,armada-8k-ahci - marvell,armada-8k-ahci
- marvell,berlin2-ahci - marvell,berlin2-ahci
- marvell,berlin2q-ahci - marvell,berlin2q-ahci
- socionext,uniphier-pro4-ahci
- socionext,uniphier-pxs2-ahci
- socionext,uniphier-pxs3-ahci
- const: generic-ahci - const: generic-ahci
- enum: - enum:
- cavium,octeon-7130-ahci - cavium,octeon-7130-ahci
...@@ -74,7 +77,8 @@ properties: ...@@ -74,7 +77,8 @@ properties:
maxItems: 1 maxItems: 1
resets: resets:
maxItems: 1 minItems: 1
maxItems: 3
patternProperties: patternProperties:
"^sata-port@[0-9a-f]+$": "^sata-port@[0-9a-f]+$":
...@@ -91,6 +95,43 @@ required: ...@@ -91,6 +95,43 @@ required:
- reg - reg
- interrupts - interrupts
allOf:
- $ref: ahci-common.yaml#
- if:
properties:
compatible:
contains:
const: socionext,uniphier-pro4-ahci
then:
properties:
resets:
items:
- description: reset line for the parent
- description: reset line for the glue logic
- description: reset line for the controller
required:
- resets
else:
if:
properties:
compatible:
contains:
enum:
- socionext,uniphier-pxs2-ahci
- socionext,uniphier-pxs3-ahci
then:
properties:
resets:
items:
- description: reset for the glue logic
- description: reset for the controller
required:
- resets
else:
properties:
resets:
maxItems: 1
unevaluatedProperties: false unevaluatedProperties: false
examples: examples:
......
...@@ -276,6 +276,7 @@ config AHCI_XGENE ...@@ -276,6 +276,7 @@ config AHCI_XGENE
config AHCI_QORIQ config AHCI_QORIQ
tristate "Freescale QorIQ AHCI SATA support" tristate "Freescale QorIQ AHCI SATA support"
depends on OF depends on OF
depends on SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
select SATA_HOST select SATA_HOST
help help
This option enables support for the Freescale QorIQ AHCI SoC's This option enables support for the Freescale QorIQ AHCI SoC's
......
...@@ -106,7 +106,7 @@ static int mtk_ahci_parse_property(struct ahci_host_priv *hpriv, ...@@ -106,7 +106,7 @@ static int mtk_ahci_parse_property(struct ahci_host_priv *hpriv,
struct device_node *np = dev->of_node; struct device_node *np = dev->of_node;
/* enable SATA function if needed */ /* enable SATA function if needed */
if (of_find_property(np, "mediatek,phy-mode", NULL)) { if (of_property_present(np, "mediatek,phy-mode")) {
plat->mode = syscon_regmap_lookup_by_phandle( plat->mode = syscon_regmap_lookup_by_phandle(
np, "mediatek,phy-mode"); np, "mediatek,phy-mode");
if (IS_ERR(plat->mode)) { if (IS_ERR(plat->mode)) {
......
...@@ -363,7 +363,7 @@ static int ahci_platform_get_phy(struct ahci_host_priv *hpriv, u32 port, ...@@ -363,7 +363,7 @@ static int ahci_platform_get_phy(struct ahci_host_priv *hpriv, u32 port,
switch (rc) { switch (rc) {
case -ENOSYS: case -ENOSYS:
/* No PHY support. Check if PHY is required. */ /* No PHY support. Check if PHY is required. */
if (of_find_property(node, "phys", NULL)) { if (of_property_present(node, "phys")) {
dev_err(dev, dev_err(dev,
"couldn't get PHY in node %pOFn: ENOSYS\n", "couldn't get PHY in node %pOFn: ENOSYS\n",
node); node);
......
...@@ -25,7 +25,7 @@ config PATA_PARPORT_BPCK ...@@ -25,7 +25,7 @@ config PATA_PARPORT_BPCK
config PATA_PARPORT_BPCK6 config PATA_PARPORT_BPCK6
tristate "MicroSolutions backpack (Series 6) protocol" tristate "MicroSolutions backpack (Series 6) protocol"
depends on (PATA_PARPORT) && !64BIT depends on PATA_PARPORT
help help
This option enables support for the Micro Solutions BACKPACK This option enables support for the Micro Solutions BACKPACK
parallel port Series 6 IDE protocol. (Most BACKPACK drives made parallel port Series 6 IDE protocol. (Most BACKPACK drives made
......
...@@ -9,14 +9,6 @@ ...@@ -9,14 +9,6 @@
*/ */
/* Changes:
1.01 GRG 1998.05.05 init_proto, release_proto
*/
#define ATEN_VERSION "1.01"
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/delay.h> #include <linux/delay.h>
...@@ -24,8 +16,7 @@ ...@@ -24,8 +16,7 @@
#include <linux/wait.h> #include <linux/wait.h>
#include <linux/types.h> #include <linux/types.h>
#include <asm/io.h> #include <asm/io.h>
#include "pata_parport.h"
#include <linux/pata_parport.h>
#define j44(a,b) ((((a>>4)&0x0f)|(b&0xf0))^0x88) #define j44(a,b) ((((a>>4)&0x0f)|(b&0xf0))^0x88)
...@@ -35,7 +26,7 @@ ...@@ -35,7 +26,7 @@
static int cont_map[2] = { 0x08, 0x20 }; static int cont_map[2] = { 0x08, 0x20 };
static void aten_write_regr( PIA *pi, int cont, int regr, int val) static void aten_write_regr(struct pi_adapter *pi, int cont, int regr, int val)
{ int r; { int r;
...@@ -44,7 +35,7 @@ static void aten_write_regr( PIA *pi, int cont, int regr, int val) ...@@ -44,7 +35,7 @@ static void aten_write_regr( PIA *pi, int cont, int regr, int val)
w0(r); w2(0xe); w2(6); w0(val); w2(7); w2(6); w2(0xc); w0(r); w2(0xe); w2(6); w0(val); w2(7); w2(6); w2(0xc);
} }
static int aten_read_regr( PIA *pi, int cont, int regr ) static int aten_read_regr(struct pi_adapter *pi, int cont, int regr)
{ int a, b, r; { int a, b, r;
...@@ -67,7 +58,7 @@ static int aten_read_regr( PIA *pi, int cont, int regr ) ...@@ -67,7 +58,7 @@ static int aten_read_regr( PIA *pi, int cont, int regr )
return -1; return -1;
} }
static void aten_read_block( PIA *pi, char * buf, int count ) static void aten_read_block(struct pi_adapter *pi, char *buf, int count)
{ int k, a, b, c, d; { int k, a, b, c, d;
...@@ -95,7 +86,7 @@ static void aten_read_block( PIA *pi, char * buf, int count ) ...@@ -95,7 +86,7 @@ static void aten_read_block( PIA *pi, char * buf, int count )
} }
} }
static void aten_write_block( PIA *pi, char * buf, int count ) static void aten_write_block(struct pi_adapter *pi, char *buf, int count)
{ int k; { int k;
...@@ -107,28 +98,25 @@ static void aten_write_block( PIA *pi, char * buf, int count ) ...@@ -107,28 +98,25 @@ static void aten_write_block( PIA *pi, char * buf, int count )
w2(0xc); w2(0xc);
} }
static void aten_connect ( PIA *pi ) static void aten_connect(struct pi_adapter *pi)
{ pi->saved_r0 = r0(); { pi->saved_r0 = r0();
pi->saved_r2 = r2(); pi->saved_r2 = r2();
w2(0xc); w2(0xc);
} }
static void aten_disconnect ( PIA *pi ) static void aten_disconnect(struct pi_adapter *pi)
{ w0(pi->saved_r0); { w0(pi->saved_r0);
w2(pi->saved_r2); w2(pi->saved_r2);
} }
static void aten_log_adapter( PIA *pi, char * scratch, int verbose ) static void aten_log_adapter(struct pi_adapter *pi)
{ char *mode_string[2] = {"4-bit","8-bit"}; { char *mode_string[2] = {"4-bit","8-bit"};
printk("%s: aten %s, ATEN EH-100 at 0x%x, ", dev_info(&pi->dev, "ATEN EH-100 at 0x%x, mode %d (%s), delay %d\n",
pi->device,ATEN_VERSION,pi->port); pi->port, pi->mode, mode_string[pi->mode], pi->delay);
printk("mode %d (%s), delay %d\n",pi->mode,
mode_string[pi->mode],pi->delay);
} }
static struct pi_protocol aten = { static struct pi_protocol aten = {
...@@ -147,16 +135,5 @@ static struct pi_protocol aten = { ...@@ -147,16 +135,5 @@ static struct pi_protocol aten = {
.log_adapter = aten_log_adapter, .log_adapter = aten_log_adapter,
}; };
static int __init aten_init(void)
{
return paride_register(&aten);
}
static void __exit aten_exit(void)
{
paride_unregister( &aten );
}
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
module_init(aten_init) module_pata_parport_driver(aten);
module_exit(aten_exit)
...@@ -7,15 +7,6 @@ ...@@ -7,15 +7,6 @@
*/ */
/* Changes:
1.01 GRG 1998.05.05 init_proto, release_proto, pi->delay
1.02 GRG 1998.08.15 default pi->delay returned to 4
*/
#define BPCK_VERSION "1.02"
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/delay.h> #include <linux/delay.h>
...@@ -23,8 +14,7 @@ ...@@ -23,8 +14,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <asm/io.h> #include <asm/io.h>
#include "pata_parport.h"
#include <linux/pata_parport.h>
#undef r2 #undef r2
#undef w2 #undef w2
...@@ -46,7 +36,7 @@ ...@@ -46,7 +36,7 @@
static int cont_map[3] = { 0x40, 0x48, 0 }; static int cont_map[3] = { 0x40, 0x48, 0 };
static int bpck_read_regr( PIA *pi, int cont, int regr ) static int bpck_read_regr(struct pi_adapter *pi, int cont, int regr)
{ int r, l, h; { int r, l, h;
...@@ -77,7 +67,7 @@ static int bpck_read_regr( PIA *pi, int cont, int regr ) ...@@ -77,7 +67,7 @@ static int bpck_read_regr( PIA *pi, int cont, int regr )
return -1; return -1;
} }
static void bpck_write_regr( PIA *pi, int cont, int regr, int val ) static void bpck_write_regr(struct pi_adapter *pi, int cont, int regr, int val)
{ int r; { int r;
...@@ -106,7 +96,7 @@ static void bpck_write_regr( PIA *pi, int cont, int regr, int val ) ...@@ -106,7 +96,7 @@ static void bpck_write_regr( PIA *pi, int cont, int regr, int val )
#define WR(r,v) bpck_write_regr(pi,2,r,v) #define WR(r,v) bpck_write_regr(pi,2,r,v)
#define RR(r) (bpck_read_regr(pi,2,r)) #define RR(r) (bpck_read_regr(pi,2,r))
static void bpck_write_block( PIA *pi, char * buf, int count ) static void bpck_write_block(struct pi_adapter *pi, char *buf, int count)
{ int i; { int i;
...@@ -147,7 +137,7 @@ static void bpck_write_block( PIA *pi, char * buf, int count ) ...@@ -147,7 +137,7 @@ static void bpck_write_block( PIA *pi, char * buf, int count )
} }
} }
static void bpck_read_block( PIA *pi, char * buf, int count ) static void bpck_read_block(struct pi_adapter *pi, char *buf, int count)
{ int i, l, h; { int i, l, h;
...@@ -194,7 +184,7 @@ static void bpck_read_block( PIA *pi, char * buf, int count ) ...@@ -194,7 +184,7 @@ static void bpck_read_block( PIA *pi, char * buf, int count )
} }
} }
static int bpck_probe_unit ( PIA *pi ) static int bpck_probe_unit(struct pi_adapter *pi)
{ int o1, o0, f7, id; { int o1, o0, f7, id;
int t, s; int t, s;
...@@ -217,7 +207,7 @@ static int bpck_probe_unit ( PIA *pi ) ...@@ -217,7 +207,7 @@ static int bpck_probe_unit ( PIA *pi )
return 1; return 1;
} }
static void bpck_connect ( PIA *pi ) static void bpck_connect(struct pi_adapter *pi)
{ pi->saved_r0 = r0(); { pi->saved_r0 = r0();
w0(0xff-pi->unit); w2(4); w0(pi->unit); w0(0xff-pi->unit); w2(4); w0(pi->unit);
...@@ -241,24 +231,24 @@ static void bpck_connect ( PIA *pi ) ...@@ -241,24 +231,24 @@ static void bpck_connect ( PIA *pi )
WR(5,8); WR(5,8);
if (pi->devtype == PI_PCD) { /* if (pi->devtype == PI_PCD) { possibly wrong, purpose unknown */
WR(0x46,0x10); /* fiddle with ESS logic ??? */ WR(0x46,0x10); /* fiddle with ESS logic ??? */
WR(0x4c,0x38); WR(0x4c,0x38);
WR(0x4d,0x88); WR(0x4d,0x88);
WR(0x46,0xa0); WR(0x46,0xa0);
WR(0x41,0); WR(0x41,0);
WR(0x4e,8); WR(0x4e,8);
} /* }*/
} }
static void bpck_disconnect ( PIA *pi ) static void bpck_disconnect(struct pi_adapter *pi)
{ w0(0); { w0(0);
if (pi->mode >= 2) { w2(9); w2(0); } else t2(2); if (pi->mode >= 2) { w2(9); w2(0); } else t2(2);
w2(0x4c); w0(pi->saved_r0); w2(0x4c); w0(pi->saved_r0);
} }
static void bpck_force_spp ( PIA *pi ) static void bpck_force_spp(struct pi_adapter *pi)
/* This fakes the EPP protocol to turn off EPP ... */ /* This fakes the EPP protocol to turn off EPP ... */
...@@ -276,7 +266,7 @@ static void bpck_force_spp ( PIA *pi ) ...@@ -276,7 +266,7 @@ static void bpck_force_spp ( PIA *pi )
#define TEST_LEN 16 #define TEST_LEN 16
static int bpck_test_proto( PIA *pi, char * scratch, int verbose ) static int bpck_test_proto(struct pi_adapter *pi)
{ int i, e, l, h, om; { int i, e, l, h, om;
char buf[TEST_LEN]; char buf[TEST_LEN];
...@@ -334,19 +324,16 @@ static int bpck_test_proto( PIA *pi, char * scratch, int verbose ) ...@@ -334,19 +324,16 @@ static int bpck_test_proto( PIA *pi, char * scratch, int verbose )
} }
if (verbose) { dev_dbg(&pi->dev, "bpck: 0x%x unit %d mode %d: ",
printk("%s: bpck: 0x%x unit %d mode %d: ", pi->port, pi->unit, pi->mode);
pi->device,pi->port,pi->unit,pi->mode); print_hex_dump_debug("bpck: ", DUMP_PREFIX_NONE, TEST_LEN, 1, buf, TEST_LEN, false);
for (i=0;i<TEST_LEN;i++) printk("%3d",buf[i]);
printk("\n");
}
e = 0; e = 0;
for (i=0;i<TEST_LEN;i++) if (buf[i] != (i+1)) e++; for (i=0;i<TEST_LEN;i++) if (buf[i] != (i+1)) e++;
return e; return e;
} }
static void bpck_read_eeprom ( PIA *pi, char * buf ) static void bpck_read_eeprom(struct pi_adapter *pi, char *buf)
{ int i, j, k, p, v, f, om, od; { int i, j, k, p, v, f, om, od;
...@@ -397,7 +384,7 @@ static void bpck_read_eeprom ( PIA *pi, char * buf ) ...@@ -397,7 +384,7 @@ static void bpck_read_eeprom ( PIA *pi, char * buf )
pi->mode = om; pi->delay = od; pi->mode = om; pi->delay = od;
} }
static int bpck_test_port ( PIA *pi ) /* check for 8-bit port */ static int bpck_test_port(struct pi_adapter *pi) /* check for 8-bit port */
{ int i, r, m; { int i, r, m;
...@@ -416,31 +403,17 @@ static int bpck_test_port ( PIA *pi ) /* check for 8-bit port */ ...@@ -416,31 +403,17 @@ static int bpck_test_port ( PIA *pi ) /* check for 8-bit port */
return 5; return 5;
} }
static void bpck_log_adapter( PIA *pi, char * scratch, int verbose ) static void bpck_log_adapter(struct pi_adapter *pi)
{ char *mode_string[5] = { "4-bit","8-bit","EPP-8", { char *mode_string[5] = { "4-bit","8-bit","EPP-8",
"EPP-16","EPP-32" }; "EPP-16","EPP-32" };
char scratch[128];
#ifdef DUMP_EEPROM
int i;
#endif
bpck_read_eeprom(pi,scratch); bpck_read_eeprom(pi,scratch);
print_hex_dump_bytes("bpck EEPROM: ", DUMP_PREFIX_NONE, scratch, 128);
#ifdef DUMP_EEPROM dev_info(&pi->dev, "backpack %8.8s unit %d at 0x%x, mode %d (%s), delay %d\n",
if (verbose) { &scratch[110], pi->unit, pi->port, pi->mode,
for(i=0;i<128;i++) mode_string[pi->mode], pi->delay);
if ((scratch[i] < ' ') || (scratch[i] > '~'))
scratch[i] = '.';
printk("%s: bpck EEPROM: %64.64s\n",pi->device,scratch);
printk("%s: %64.64s\n",pi->device,&scratch[64]);
}
#endif
printk("%s: bpck %s, backpack %8.8s unit %d",
pi->device,BPCK_VERSION,&scratch[110],pi->unit);
printk(" at 0x%x, mode %d (%s), delay %d\n",pi->port,
pi->mode,mode_string[pi->mode],pi->delay);
} }
static struct pi_protocol bpck = { static struct pi_protocol bpck = {
...@@ -462,16 +435,5 @@ static struct pi_protocol bpck = { ...@@ -462,16 +435,5 @@ static struct pi_protocol bpck = {
.log_adapter = bpck_log_adapter, .log_adapter = bpck_log_adapter,
}; };
static int __init bpck_init(void)
{
return paride_register(&bpck);
}
static void __exit bpck_exit(void)
{
paride_unregister(&bpck);
}
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
module_init(bpck_init) module_pata_parport_driver(bpck);
module_exit(bpck_exit)
This diff is collapsed.
...@@ -8,14 +8,6 @@ ...@@ -8,14 +8,6 @@
use this adapter. use this adapter.
*/ */
/* Changes:
1.01 GRG 1998.05.05 init_proto, release_proto
*/
#define COMM_VERSION "1.01"
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/delay.h> #include <linux/delay.h>
...@@ -23,8 +15,7 @@ ...@@ -23,8 +15,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <asm/io.h> #include <asm/io.h>
#include "pata_parport.h"
#include <linux/pata_parport.h>
/* mode codes: 0 nybble reads, 8-bit writes /* mode codes: 0 nybble reads, 8-bit writes
1 8-bit reads and writes 1 8-bit reads and writes
...@@ -42,7 +33,7 @@ ...@@ -42,7 +33,7 @@
static int cont_map[2] = { 0x08, 0x10 }; static int cont_map[2] = { 0x08, 0x10 };
static int comm_read_regr( PIA *pi, int cont, int regr ) static int comm_read_regr(struct pi_adapter *pi, int cont, int regr)
{ int l, h, r; { int l, h, r;
...@@ -68,7 +59,7 @@ static int comm_read_regr( PIA *pi, int cont, int regr ) ...@@ -68,7 +59,7 @@ static int comm_read_regr( PIA *pi, int cont, int regr )
return -1; return -1;
} }
static void comm_write_regr( PIA *pi, int cont, int regr, int val ) static void comm_write_regr(struct pi_adapter *pi, int cont, int regr, int val)
{ int r; { int r;
...@@ -87,7 +78,7 @@ static void comm_write_regr( PIA *pi, int cont, int regr, int val ) ...@@ -87,7 +78,7 @@ static void comm_write_regr( PIA *pi, int cont, int regr, int val )
} }
} }
static void comm_connect ( PIA *pi ) static void comm_connect(struct pi_adapter *pi)
{ pi->saved_r0 = r0(); { pi->saved_r0 = r0();
pi->saved_r2 = r2(); pi->saved_r2 = r2();
...@@ -98,14 +89,14 @@ static void comm_connect ( PIA *pi ) ...@@ -98,14 +89,14 @@ static void comm_connect ( PIA *pi )
w2(4); w0(0xe0); w2(0xc); w2(0xc); w2(4); w2(4); w0(0xe0); w2(0xc); w2(0xc); w2(4);
} }
static void comm_disconnect ( PIA *pi ) static void comm_disconnect(struct pi_adapter *pi)
{ w2(0); w2(0); w2(0); w2(4); { w2(0); w2(0); w2(0); w2(4);
w0(pi->saved_r0); w0(pi->saved_r0);
w2(pi->saved_r2); w2(pi->saved_r2);
} }
static void comm_read_block( PIA *pi, char * buf, int count ) static void comm_read_block(struct pi_adapter *pi, char *buf, int count)
{ int i, l, h; { int i, l, h;
...@@ -146,7 +137,7 @@ static void comm_read_block( PIA *pi, char * buf, int count ) ...@@ -146,7 +137,7 @@ static void comm_read_block( PIA *pi, char * buf, int count )
/* NB: Watch out for the byte swapped writes ! */ /* NB: Watch out for the byte swapped writes ! */
static void comm_write_block( PIA *pi, char * buf, int count ) static void comm_write_block(struct pi_adapter *pi, char *buf, int count)
{ int k; { int k;
...@@ -165,26 +156,26 @@ static void comm_write_block( PIA *pi, char * buf, int count ) ...@@ -165,26 +156,26 @@ static void comm_write_block( PIA *pi, char * buf, int count )
break; break;
case 3: w3(0x48); (void)r1(); case 3: w3(0x48); (void)r1();
for (k=0;k<count/2;k++) w4w(pi_swab16(buf,k)); for (k = 0; k < count / 2; k++)
w4w(swab16(((u16 *)buf)[k]));
break; break;
case 4: w3(0x48); (void)r1(); case 4: w3(0x48); (void)r1();
for (k=0;k<count/4;k++) w4l(pi_swab32(buf,k)); for (k = 0; k < count / 4; k++)
w4l(swab16(((u16 *)buf)[2 * k]) |
swab16(((u16 *)buf)[2 * k + 1]) << 16);
break; break;
} }
} }
static void comm_log_adapter( PIA *pi, char * scratch, int verbose ) static void comm_log_adapter(struct pi_adapter *pi)
{ char *mode_string[5] = {"4-bit","8-bit","EPP-8","EPP-16","EPP-32"}; { char *mode_string[5] = {"4-bit","8-bit","EPP-8","EPP-16","EPP-32"};
printk("%s: comm %s, DataStor Commuter at 0x%x, ", dev_info(&pi->dev, "DataStor Commuter at 0x%x, mode %d (%s), delay %d\n",
pi->device,COMM_VERSION,pi->port); pi->port, pi->mode, mode_string[pi->mode], pi->delay);
printk("mode %d (%s), delay %d\n",pi->mode,
mode_string[pi->mode],pi->delay);
} }
static struct pi_protocol comm = { static struct pi_protocol comm = {
...@@ -203,16 +194,5 @@ static struct pi_protocol comm = { ...@@ -203,16 +194,5 @@ static struct pi_protocol comm = {
.log_adapter = comm_log_adapter, .log_adapter = comm_log_adapter,
}; };
static int __init comm_init(void)
{
return paride_register(&comm);
}
static void __exit comm_exit(void)
{
paride_unregister(&comm);
}
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
module_init(comm_init) module_pata_parport_driver(comm);
module_exit(comm_exit)
...@@ -7,14 +7,6 @@ ...@@ -7,14 +7,6 @@
*/ */
/* Changes:
1.01 GRG 1998.05.06 init_proto, release_proto
*/
#define DSTR_VERSION "1.01"
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/delay.h> #include <linux/delay.h>
...@@ -22,8 +14,7 @@ ...@@ -22,8 +14,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <asm/io.h> #include <asm/io.h>
#include "pata_parport.h"
#include <linux/pata_parport.h>
/* mode codes: 0 nybble reads, 8-bit writes /* mode codes: 0 nybble reads, 8-bit writes
1 8-bit reads and writes 1 8-bit reads and writes
...@@ -44,7 +35,7 @@ ...@@ -44,7 +35,7 @@
static int cont_map[2] = { 0x20, 0x40 }; static int cont_map[2] = { 0x20, 0x40 };
static int dstr_read_regr( PIA *pi, int cont, int regr ) static int dstr_read_regr(struct pi_adapter *pi, int cont, int regr)
{ int a, b, r; { int a, b, r;
...@@ -71,7 +62,7 @@ static int dstr_read_regr( PIA *pi, int cont, int regr ) ...@@ -71,7 +62,7 @@ static int dstr_read_regr( PIA *pi, int cont, int regr )
return -1; return -1;
} }
static void dstr_write_regr( PIA *pi, int cont, int regr, int val ) static void dstr_write_regr(struct pi_adapter *pi, int cont, int regr, int val)
{ int r; { int r;
...@@ -98,21 +89,21 @@ static void dstr_write_regr( PIA *pi, int cont, int regr, int val ) ...@@ -98,21 +89,21 @@ static void dstr_write_regr( PIA *pi, int cont, int regr, int val )
w0(0xaa);w0(0x55);w0(0);w0(0xff);w0(0x87);w0(0x78);\ w0(0xaa);w0(0x55);w0(0);w0(0xff);w0(0x87);w0(0x78);\
w0(x);w2(5);w2(4); w0(x);w2(5);w2(4);
static void dstr_connect ( PIA *pi ) static void dstr_connect(struct pi_adapter *pi)
{ pi->saved_r0 = r0(); { pi->saved_r0 = r0();
pi->saved_r2 = r2(); pi->saved_r2 = r2();
w2(4); CCP(0xe0); w0(0xff); w2(4); CCP(0xe0); w0(0xff);
} }
static void dstr_disconnect ( PIA *pi ) static void dstr_disconnect(struct pi_adapter *pi)
{ CCP(0x30); { CCP(0x30);
w0(pi->saved_r0); w0(pi->saved_r0);
w2(pi->saved_r2); w2(pi->saved_r2);
} }
static void dstr_read_block( PIA *pi, char * buf, int count ) static void dstr_read_block(struct pi_adapter *pi, char *buf, int count)
{ int k, a, b; { int k, a, b;
...@@ -154,7 +145,7 @@ static void dstr_read_block( PIA *pi, char * buf, int count ) ...@@ -154,7 +145,7 @@ static void dstr_read_block( PIA *pi, char * buf, int count )
} }
} }
static void dstr_write_block( PIA *pi, char * buf, int count ) static void dstr_write_block(struct pi_adapter *pi, char *buf, int count)
{ int k; { int k;
...@@ -190,16 +181,13 @@ static void dstr_write_block( PIA *pi, char * buf, int count ) ...@@ -190,16 +181,13 @@ static void dstr_write_block( PIA *pi, char * buf, int count )
} }
static void dstr_log_adapter( PIA *pi, char * scratch, int verbose ) static void dstr_log_adapter(struct pi_adapter *pi)
{ char *mode_string[5] = {"4-bit","8-bit","EPP-8", { char *mode_string[5] = {"4-bit","8-bit","EPP-8",
"EPP-16","EPP-32"}; "EPP-16","EPP-32"};
printk("%s: dstr %s, DataStor EP2000 at 0x%x, ", dev_info(&pi->dev, "DataStor EP2000 at 0x%x, mode %d (%s), delay %d\n",
pi->device,DSTR_VERSION,pi->port); pi->port, pi->mode, mode_string[pi->mode], pi->delay);
printk("mode %d (%s), delay %d\n",pi->mode,
mode_string[pi->mode],pi->delay);
} }
static struct pi_protocol dstr = { static struct pi_protocol dstr = {
...@@ -218,16 +206,5 @@ static struct pi_protocol dstr = { ...@@ -218,16 +206,5 @@ static struct pi_protocol dstr = {
.log_adapter = dstr_log_adapter, .log_adapter = dstr_log_adapter,
}; };
static int __init dstr_init(void)
{
return paride_register(&dstr);
}
static void __exit dstr_exit(void)
{
paride_unregister(&dstr);
}
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
module_init(dstr_init) module_pata_parport_driver(dstr);
module_exit(dstr_exit)
...@@ -9,15 +9,6 @@ ...@@ -9,15 +9,6 @@
*/ */
/* Changes:
1.01 GRG 1998.05.06 init_proto, release_proto
1.02 Joshua b. Jore CPP(renamed), epat_connect, epat_disconnect
*/
#define EPAT_VERSION "1.02"
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/delay.h> #include <linux/delay.h>
...@@ -25,8 +16,7 @@ ...@@ -25,8 +16,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <asm/io.h> #include <asm/io.h>
#include "pata_parport.h"
#include <linux/pata_parport.h>
#define j44(a,b) (((a>>4)&0x0f)+(b&0xf0)) #define j44(a,b) (((a>>4)&0x0f)+(b&0xf0))
#define j53(a,b) (((a>>3)&0x1f)+((b<<4)&0xe0)) #define j53(a,b) (((a>>3)&0x1f)+((b<<4)&0xe0))
...@@ -44,7 +34,7 @@ MODULE_PARM_DESC(epatc8, "support for the Shuttle EP1284 chip, " ...@@ -44,7 +34,7 @@ MODULE_PARM_DESC(epatc8, "support for the Shuttle EP1284 chip, "
static int cont_map[3] = { 0x18, 0x10, 0 }; static int cont_map[3] = { 0x18, 0x10, 0 };
static void epat_write_regr( PIA *pi, int cont, int regr, int val) static void epat_write_regr(struct pi_adapter *pi, int cont, int regr, int val)
{ int r; { int r;
...@@ -65,7 +55,7 @@ static void epat_write_regr( PIA *pi, int cont, int regr, int val) ...@@ -65,7 +55,7 @@ static void epat_write_regr( PIA *pi, int cont, int regr, int val)
} }
} }
static int epat_read_regr( PIA *pi, int cont, int regr ) static int epat_read_regr(struct pi_adapter *pi, int cont, int regr)
{ int a, b, r; { int a, b, r;
...@@ -94,7 +84,7 @@ static int epat_read_regr( PIA *pi, int cont, int regr ) ...@@ -94,7 +84,7 @@ static int epat_read_regr( PIA *pi, int cont, int regr )
return -1; /* never gets here */ return -1; /* never gets here */
} }
static void epat_read_block( PIA *pi, char * buf, int count ) static void epat_read_block(struct pi_adapter *pi, char *buf, int count)
{ int k, ph, a, b; { int k, ph, a, b;
...@@ -159,7 +149,7 @@ static void epat_read_block( PIA *pi, char * buf, int count ) ...@@ -159,7 +149,7 @@ static void epat_read_block( PIA *pi, char * buf, int count )
} }
} }
static void epat_write_block( PIA *pi, char * buf, int count ) static void epat_write_block(struct pi_adapter *pi, char *buf, int count)
{ int ph, k; { int ph, k;
...@@ -210,7 +200,7 @@ static void epat_write_block( PIA *pi, char * buf, int count ) ...@@ -210,7 +200,7 @@ static void epat_write_block( PIA *pi, char * buf, int count )
#define CPP(x) w2(4);w0(0x22);w0(0xaa);w0(0x55);w0(0);w0(0xff);\ #define CPP(x) w2(4);w0(0x22);w0(0xaa);w0(0x55);w0(0);w0(0xff);\
w0(0x87);w0(0x78);w0(x);w2(4);w2(5);w2(4);w0(0xff); w0(0x87);w0(0x78);w0(x);w2(4);w2(5);w2(4);w0(0xff);
static void epat_connect ( PIA *pi ) static void epat_connect(struct pi_adapter *pi)
{ pi->saved_r0 = r0(); { pi->saved_r0 = r0();
pi->saved_r2 = r2(); pi->saved_r2 = r2();
...@@ -242,16 +232,17 @@ static void epat_connect ( PIA *pi ) ...@@ -242,16 +232,17 @@ static void epat_connect ( PIA *pi )
} }
} }
static void epat_disconnect (PIA *pi) static void epat_disconnect(struct pi_adapter *pi)
{ CPP(0x30); { CPP(0x30);
w0(pi->saved_r0); w0(pi->saved_r0);
w2(pi->saved_r2); w2(pi->saved_r2);
} }
static int epat_test_proto( PIA *pi, char * scratch, int verbose ) static int epat_test_proto(struct pi_adapter *pi)
{ int k, j, f, cc; { int k, j, f, cc;
int e[2] = {0,0}; int e[2] = {0,0};
char scratch[512];
epat_connect(pi); epat_connect(pi);
cc = RR(0xd); cc = RR(0xd);
...@@ -279,15 +270,13 @@ static int epat_test_proto( PIA *pi, char * scratch, int verbose ) ...@@ -279,15 +270,13 @@ static int epat_test_proto( PIA *pi, char * scratch, int verbose )
} }
epat_disconnect(pi); epat_disconnect(pi);
if (verbose) { dev_dbg(&pi->dev, "epat: port 0x%x, mode %d, ccr %x, test=(%d,%d,%d)\n",
printk("%s: epat: port 0x%x, mode %d, ccr %x, test=(%d,%d,%d)\n", pi->port, pi->mode, cc, e[0], e[1], f);
pi->device,pi->port,pi->mode,cc,e[0],e[1],f);
}
return (e[0] && e[1]) || f; return (e[0] && e[1]) || f;
} }
static void epat_log_adapter( PIA *pi, char * scratch, int verbose ) static void epat_log_adapter(struct pi_adapter *pi)
{ int ver; { int ver;
char *mode_string[6] = char *mode_string[6] =
...@@ -298,11 +287,8 @@ static void epat_log_adapter( PIA *pi, char * scratch, int verbose ) ...@@ -298,11 +287,8 @@ static void epat_log_adapter( PIA *pi, char * scratch, int verbose )
ver = RR(0xb); ver = RR(0xb);
epat_disconnect(pi); epat_disconnect(pi);
printk("%s: epat %s, Shuttle EPAT chip %x at 0x%x, ", dev_info(&pi->dev, "Shuttle EPAT chip %x at 0x%x, mode %d (%s), delay %d\n",
pi->device,EPAT_VERSION,ver,pi->port); ver, pi->port, pi->mode, mode_string[pi->mode], pi->delay);
printk("mode %d (%s), delay %d\n",pi->mode,
mode_string[pi->mode],pi->delay);
} }
static struct pi_protocol epat = { static struct pi_protocol epat = {
...@@ -324,15 +310,15 @@ static struct pi_protocol epat = { ...@@ -324,15 +310,15 @@ static struct pi_protocol epat = {
static int __init epat_init(void) static int __init epat_init(void)
{ {
#ifdef CONFIG_PARIDE_EPATC8 #ifdef CONFIG_PATA_PARPORT_EPATC8
epatc8 = 1; epatc8 = 1;
#endif #endif
return paride_register(&epat); return pata_parport_register_driver(&epat);
} }
static void __exit epat_exit(void) static void __exit epat_exit(void)
{ {
paride_unregister(&epat); pata_parport_unregister_driver(&epat);
} }
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
......
...@@ -10,15 +10,6 @@ ...@@ -10,15 +10,6 @@
*/ */
/* Changes:
1.01 GRG 1998.05.06 init_proto, release_proto
1.02 GRG 1998.06.17 support older versions of EPIA
*/
#define EPIA_VERSION "1.02"
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/delay.h> #include <linux/delay.h>
...@@ -26,8 +17,7 @@ ...@@ -26,8 +17,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <asm/io.h> #include <asm/io.h>
#include "pata_parport.h"
#include <linux/pata_parport.h>
/* mode codes: 0 nybble reads on port 1, 8-bit writes /* mode codes: 0 nybble reads on port 1, 8-bit writes
1 5/3 reads on ports 1 & 2, 8-bit writes 1 5/3 reads on ports 1 & 2, 8-bit writes
...@@ -46,7 +36,7 @@ ...@@ -46,7 +36,7 @@
static int cont_map[2] = { 0, 0x80 }; static int cont_map[2] = { 0, 0x80 };
static int epia_read_regr( PIA *pi, int cont, int regr ) static int epia_read_regr(struct pi_adapter *pi, int cont, int regr)
{ int a, b, r; { int a, b, r;
...@@ -79,7 +69,7 @@ static int epia_read_regr( PIA *pi, int cont, int regr ) ...@@ -79,7 +69,7 @@ static int epia_read_regr( PIA *pi, int cont, int regr )
return -1; return -1;
} }
static void epia_write_regr( PIA *pi, int cont, int regr, int val) static void epia_write_regr(struct pi_adapter *pi, int cont, int regr, int val)
{ int r; { int r;
...@@ -110,7 +100,7 @@ static void epia_write_regr( PIA *pi, int cont, int regr, int val) ...@@ -110,7 +100,7 @@ static void epia_write_regr( PIA *pi, int cont, int regr, int val)
2048 byte reads (the last two being used in the CDrom drivers. 2048 byte reads (the last two being used in the CDrom drivers.
*/ */
static void epia_connect ( PIA *pi ) static void epia_connect(struct pi_adapter *pi)
{ pi->saved_r0 = r0(); { pi->saved_r0 = r0();
pi->saved_r2 = r2(); pi->saved_r2 = r2();
...@@ -124,7 +114,7 @@ static void epia_connect ( PIA *pi ) ...@@ -124,7 +114,7 @@ static void epia_connect ( PIA *pi )
WR(0x86,8); WR(0x86,8);
} }
static void epia_disconnect ( PIA *pi ) static void epia_disconnect(struct pi_adapter *pi)
{ /* WR(0x84,0x10); */ { /* WR(0x84,0x10); */
w0(pi->saved_r0); w0(pi->saved_r0);
...@@ -133,7 +123,7 @@ static void epia_disconnect ( PIA *pi ) ...@@ -133,7 +123,7 @@ static void epia_disconnect ( PIA *pi )
w2(pi->saved_r2); w2(pi->saved_r2);
} }
static void epia_read_block( PIA *pi, char * buf, int count ) static void epia_read_block(struct pi_adapter *pi, char *buf, int count)
{ int k, ph, a, b; { int k, ph, a, b;
...@@ -193,7 +183,7 @@ static void epia_read_block( PIA *pi, char * buf, int count ) ...@@ -193,7 +183,7 @@ static void epia_read_block( PIA *pi, char * buf, int count )
} }
} }
static void epia_write_block( PIA *pi, char * buf, int count ) static void epia_write_block(struct pi_adapter *pi, char *buf, int count)
{ int ph, k, last, d; { int ph, k, last, d;
...@@ -234,10 +224,11 @@ static void epia_write_block( PIA *pi, char * buf, int count ) ...@@ -234,10 +224,11 @@ static void epia_write_block( PIA *pi, char * buf, int count )
} }
static int epia_test_proto( PIA *pi, char * scratch, int verbose ) static int epia_test_proto(struct pi_adapter *pi)
{ int j, k, f; { int j, k, f;
int e[2] = {0,0}; int e[2] = {0,0};
char scratch[512];
epia_connect(pi); epia_connect(pi);
for (j=0;j<2;j++) { for (j=0;j<2;j++) {
...@@ -262,26 +253,21 @@ static int epia_test_proto( PIA *pi, char * scratch, int verbose ) ...@@ -262,26 +253,21 @@ static int epia_test_proto( PIA *pi, char * scratch, int verbose )
WR(0x84,0); WR(0x84,0);
epia_disconnect(pi); epia_disconnect(pi);
if (verbose) { dev_dbg(&pi->dev, "epia: port 0x%x, mode %d, test=(%d,%d,%d)\n",
printk("%s: epia: port 0x%x, mode %d, test=(%d,%d,%d)\n", pi->port, pi->mode, e[0], e[1], f);
pi->device,pi->port,pi->mode,e[0],e[1],f);
}
return (e[0] && e[1]) || f; return (e[0] && e[1]) || f;
} }
static void epia_log_adapter( PIA *pi, char * scratch, int verbose ) static void epia_log_adapter(struct pi_adapter *pi)
{ char *mode_string[6] = {"4-bit","5/3","8-bit", { char *mode_string[6] = {"4-bit","5/3","8-bit",
"EPP-8","EPP-16","EPP-32"}; "EPP-8","EPP-16","EPP-32"};
printk("%s: epia %s, Shuttle EPIA at 0x%x, ", dev_info(&pi->dev, "Shuttle EPIA at 0x%x, mode %d (%s), delay %d\n",
pi->device,EPIA_VERSION,pi->port); pi->port, pi->mode, mode_string[pi->mode], pi->delay);
printk("mode %d (%s), delay %d\n",pi->mode,
mode_string[pi->mode],pi->delay);
} }
static struct pi_protocol epia = { static struct pi_protocol epia = {
...@@ -301,16 +287,5 @@ static struct pi_protocol epia = { ...@@ -301,16 +287,5 @@ static struct pi_protocol epia = {
.log_adapter = epia_log_adapter, .log_adapter = epia_log_adapter,
}; };
static int __init epia_init(void)
{
return paride_register(&epia);
}
static void __exit epia_exit(void)
{
paride_unregister(&epia);
}
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
module_init(epia_init) module_pata_parport_driver(epia);
module_exit(epia_exit)
...@@ -13,8 +13,6 @@ ...@@ -13,8 +13,6 @@
*/ */
#define FIT2_VERSION "1.0"
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/delay.h> #include <linux/delay.h>
...@@ -22,8 +20,7 @@ ...@@ -22,8 +20,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <asm/io.h> #include <asm/io.h>
#include "pata_parport.h"
#include <linux/pata_parport.h>
#define j44(a,b) (((a>>4)&0x0f)|(b&0xf0)) #define j44(a,b) (((a>>4)&0x0f)|(b&0xf0))
...@@ -37,13 +34,13 @@ devices. ...@@ -37,13 +34,13 @@ devices.
*/ */
static void fit2_write_regr( PIA *pi, int cont, int regr, int val) static void fit2_write_regr(struct pi_adapter *pi, int cont, int regr, int val)
{ if (cont == 1) return; { if (cont == 1) return;
w2(0xc); w0(regr); w2(4); w0(val); w2(5); w0(0); w2(4); w2(0xc); w0(regr); w2(4); w0(val); w2(5); w0(0); w2(4);
} }
static int fit2_read_regr( PIA *pi, int cont, int regr ) static int fit2_read_regr(struct pi_adapter *pi, int cont, int regr)
{ int a, b, r; { int a, b, r;
...@@ -61,7 +58,7 @@ static int fit2_read_regr( PIA *pi, int cont, int regr ) ...@@ -61,7 +58,7 @@ static int fit2_read_regr( PIA *pi, int cont, int regr )
} }
static void fit2_read_block( PIA *pi, char * buf, int count ) static void fit2_read_block(struct pi_adapter *pi, char *buf, int count)
{ int k, a, b, c, d; { int k, a, b, c, d;
...@@ -87,7 +84,7 @@ static void fit2_read_block( PIA *pi, char * buf, int count ) ...@@ -87,7 +84,7 @@ static void fit2_read_block( PIA *pi, char * buf, int count )
} }
static void fit2_write_block( PIA *pi, char * buf, int count ) static void fit2_write_block(struct pi_adapter *pi, char *buf, int count)
{ int k; { int k;
...@@ -100,23 +97,24 @@ static void fit2_write_block( PIA *pi, char * buf, int count ) ...@@ -100,23 +97,24 @@ static void fit2_write_block( PIA *pi, char * buf, int count )
w2(4); w2(4);
} }
static void fit2_connect ( PIA *pi ) static void fit2_connect(struct pi_adapter *pi)
{ pi->saved_r0 = r0(); { pi->saved_r0 = r0();
pi->saved_r2 = r2(); pi->saved_r2 = r2();
w2(0xcc); w2(0xcc);
} }
static void fit2_disconnect ( PIA *pi ) static void fit2_disconnect(struct pi_adapter *pi)
{ w0(pi->saved_r0); { w0(pi->saved_r0);
w2(pi->saved_r2); w2(pi->saved_r2);
} }
static void fit2_log_adapter( PIA *pi, char * scratch, int verbose ) static void fit2_log_adapter(struct pi_adapter *pi)
{ printk("%s: fit2 %s, FIT 2000 adapter at 0x%x, delay %d\n", {
pi->device,FIT2_VERSION,pi->port,pi->delay); dev_info(&pi->dev, "FIT 2000 adapter at 0x%x, delay %d\n",
pi->port, pi->delay);
} }
...@@ -136,16 +134,5 @@ static struct pi_protocol fit2 = { ...@@ -136,16 +134,5 @@ static struct pi_protocol fit2 = {
.log_adapter = fit2_log_adapter, .log_adapter = fit2_log_adapter,
}; };
static int __init fit2_init(void)
{
return paride_register(&fit2);
}
static void __exit fit2_exit(void)
{
paride_unregister(&fit2);
}
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
module_init(fit2_init) module_pata_parport_driver(fit2);
module_exit(fit2_exit)
...@@ -17,8 +17,6 @@ ...@@ -17,8 +17,6 @@
*/ */
#define FIT3_VERSION "1.0"
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/delay.h> #include <linux/delay.h>
...@@ -26,8 +24,7 @@ ...@@ -26,8 +24,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <asm/io.h> #include <asm/io.h>
#include "pata_parport.h"
#include <linux/pata_parport.h>
#define j44(a,b) (((a>>3)&0x0f)|((b<<1)&0xf0)) #define j44(a,b) (((a>>3)&0x0f)|((b<<1)&0xf0))
...@@ -39,7 +36,7 @@ ...@@ -39,7 +36,7 @@
*/ */
static void fit3_write_regr( PIA *pi, int cont, int regr, int val) static void fit3_write_regr(struct pi_adapter *pi, int cont, int regr, int val)
{ if (cont == 1) return; { if (cont == 1) return;
...@@ -59,7 +56,7 @@ static void fit3_write_regr( PIA *pi, int cont, int regr, int val) ...@@ -59,7 +56,7 @@ static void fit3_write_regr( PIA *pi, int cont, int regr, int val)
} }
} }
static int fit3_read_regr( PIA *pi, int cont, int regr ) static int fit3_read_regr(struct pi_adapter *pi, int cont, int regr)
{ int a, b; { int a, b;
...@@ -92,7 +89,7 @@ static int fit3_read_regr( PIA *pi, int cont, int regr ) ...@@ -92,7 +89,7 @@ static int fit3_read_regr( PIA *pi, int cont, int regr )
} }
static void fit3_read_block( PIA *pi, char * buf, int count ) static void fit3_read_block(struct pi_adapter *pi, char *buf, int count)
{ int k, a, b, c, d; { int k, a, b, c, d;
...@@ -131,7 +128,7 @@ static void fit3_read_block( PIA *pi, char * buf, int count ) ...@@ -131,7 +128,7 @@ static void fit3_read_block( PIA *pi, char * buf, int count )
} }
} }
static void fit3_write_block( PIA *pi, char * buf, int count ) static void fit3_write_block(struct pi_adapter *pi, char *buf, int count)
{ int k; { int k;
...@@ -152,7 +149,7 @@ static void fit3_write_block( PIA *pi, char * buf, int count ) ...@@ -152,7 +149,7 @@ static void fit3_write_block( PIA *pi, char * buf, int count )
} }
} }
static void fit3_connect ( PIA *pi ) static void fit3_connect(struct pi_adapter *pi)
{ pi->saved_r0 = r0(); { pi->saved_r0 = r0();
pi->saved_r2 = r2(); pi->saved_r2 = r2();
...@@ -162,22 +159,19 @@ static void fit3_connect ( PIA *pi ) ...@@ -162,22 +159,19 @@ static void fit3_connect ( PIA *pi )
} }
} }
static void fit3_disconnect ( PIA *pi ) static void fit3_disconnect(struct pi_adapter *pi)
{ w2(0xc); w0(0xa); w2(0x8); w2(0xc); { w2(0xc); w0(0xa); w2(0x8); w2(0xc);
w0(pi->saved_r0); w0(pi->saved_r0);
w2(pi->saved_r2); w2(pi->saved_r2);
} }
static void fit3_log_adapter( PIA *pi, char * scratch, int verbose ) static void fit3_log_adapter(struct pi_adapter *pi)
{ char *mode_string[3] = {"4-bit","8-bit","EPP"}; { char *mode_string[3] = {"4-bit","8-bit","EPP"};
printk("%s: fit3 %s, FIT 3000 adapter at 0x%x, " dev_info(&pi->dev, "FIT 3000 adapter at 0x%x, mode %d (%s), delay %d\n",
"mode %d (%s), delay %d\n", pi->port, pi->mode, mode_string[pi->mode], pi->delay);
pi->device,FIT3_VERSION,pi->port,
pi->mode,mode_string[pi->mode],pi->delay);
} }
static struct pi_protocol fit3 = { static struct pi_protocol fit3 = {
...@@ -196,16 +190,5 @@ static struct pi_protocol fit3 = { ...@@ -196,16 +190,5 @@ static struct pi_protocol fit3 = {
.log_adapter = fit3_log_adapter, .log_adapter = fit3_log_adapter,
}; };
static int __init fit3_init(void)
{
return paride_register(&fit3);
}
static void __exit fit3_exit(void)
{
paride_unregister(&fit3);
}
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
module_init(fit3_init) module_pata_parport_driver(fit3);
module_exit(fit3_exit)
...@@ -20,13 +20,6 @@ ...@@ -20,13 +20,6 @@
*/ */
/* Changes:
1.01 GRG 1998.12.20 Added support for soft power switch
*/
#define FRIQ_VERSION "1.01"
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/delay.h> #include <linux/delay.h>
...@@ -34,8 +27,7 @@ ...@@ -34,8 +27,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <asm/io.h> #include <asm/io.h>
#include "pata_parport.h"
#include <linux/pata_parport.h>
#define CMD(x) w2(4);w0(0xff);w0(0xff);w0(0x73);w0(0x73);\ #define CMD(x) w2(4);w0(0xff);w0(0xff);w0(0x73);w0(0x73);\
w0(0xc9);w0(0xc9);w0(0x26);w0(0x26);w0(x);w0(x); w0(0xc9);w0(0xc9);w0(0x26);w0(0x26);w0(x);w0(x);
...@@ -48,7 +40,7 @@ ...@@ -48,7 +40,7 @@
static int cont_map[2] = { 0x08, 0x10 }; static int cont_map[2] = { 0x08, 0x10 };
static int friq_read_regr( PIA *pi, int cont, int regr ) static int friq_read_regr(struct pi_adapter *pi, int cont, int regr)
{ int h,l,r; { int h,l,r;
...@@ -63,7 +55,7 @@ static int friq_read_regr( PIA *pi, int cont, int regr ) ...@@ -63,7 +55,7 @@ static int friq_read_regr( PIA *pi, int cont, int regr )
} }
static void friq_write_regr( PIA *pi, int cont, int regr, int val) static void friq_write_regr(struct pi_adapter *pi, int cont, int regr, int val)
{ int r; { int r;
...@@ -74,7 +66,7 @@ static void friq_write_regr( PIA *pi, int cont, int regr, int val) ...@@ -74,7 +66,7 @@ static void friq_write_regr( PIA *pi, int cont, int regr, int val)
w2(5);w2(7);w2(5);w2(4); w2(5);w2(7);w2(5);w2(4);
} }
static void friq_read_block_int( PIA *pi, char * buf, int count, int regr ) static void friq_read_block_int(struct pi_adapter *pi, char *buf, int count, int regr)
{ int h, l, k, ph; { int h, l, k, ph;
...@@ -129,12 +121,12 @@ static void friq_read_block_int( PIA *pi, char * buf, int count, int regr ) ...@@ -129,12 +121,12 @@ static void friq_read_block_int( PIA *pi, char * buf, int count, int regr )
} }
} }
static void friq_read_block( PIA *pi, char * buf, int count) static void friq_read_block(struct pi_adapter *pi, char *buf, int count)
{ friq_read_block_int(pi,buf,count,0x08); { friq_read_block_int(pi,buf,count,0x08);
} }
static void friq_write_block( PIA *pi, char * buf, int count ) static void friq_write_block(struct pi_adapter *pi, char *buf, int count)
{ int k; { int k;
...@@ -166,24 +158,25 @@ static void friq_write_block( PIA *pi, char * buf, int count ) ...@@ -166,24 +158,25 @@ static void friq_write_block( PIA *pi, char * buf, int count )
} }
} }
static void friq_connect ( PIA *pi ) static void friq_connect(struct pi_adapter *pi)
{ pi->saved_r0 = r0(); { pi->saved_r0 = r0();
pi->saved_r2 = r2(); pi->saved_r2 = r2();
w2(4); w2(4);
} }
static void friq_disconnect ( PIA *pi ) static void friq_disconnect(struct pi_adapter *pi)
{ CMD(0x20); { CMD(0x20);
w0(pi->saved_r0); w0(pi->saved_r0);
w2(pi->saved_r2); w2(pi->saved_r2);
} }
static int friq_test_proto( PIA *pi, char * scratch, int verbose ) static int friq_test_proto(struct pi_adapter *pi)
{ int j, k, r; { int j, k, r;
int e[2] = {0,0}; int e[2] = {0,0};
char scratch[512];
pi->saved_r0 = r0(); pi->saved_r0 = r0();
w0(0xff); udelay(20); CMD(0x3d); /* turn the power on */ w0(0xff); udelay(20); CMD(0x3d); /* turn the power on */
...@@ -207,24 +200,20 @@ static int friq_test_proto( PIA *pi, char * scratch, int verbose ) ...@@ -207,24 +200,20 @@ static int friq_test_proto( PIA *pi, char * scratch, int verbose )
for (k=0;k<128;k++) if (scratch[k] != k) r++; for (k=0;k<128;k++) if (scratch[k] != k) r++;
friq_disconnect(pi); friq_disconnect(pi);
if (verbose) { dev_dbg(&pi->dev, "friq: port 0x%x, mode %d, test=(%d,%d,%d)\n",
printk("%s: friq: port 0x%x, mode %d, test=(%d,%d,%d)\n", pi->port, pi->mode, e[0], e[1], r);
pi->device,pi->port,pi->mode,e[0],e[1],r);
}
return (r || (e[0] && e[1])); return (r || (e[0] && e[1]));
} }
static void friq_log_adapter( PIA *pi, char * scratch, int verbose ) static void friq_log_adapter(struct pi_adapter *pi)
{ char *mode_string[6] = {"4-bit","8-bit", { char *mode_string[6] = {"4-bit","8-bit",
"EPP-8","EPP-16","EPP-32"}; "EPP-8","EPP-16","EPP-32"};
printk("%s: friq %s, Freecom IQ ASIC-2 adapter at 0x%x, ", pi->device, dev_info(&pi->dev, "Freecom IQ ASIC-2 adapter at 0x%x, mode %d (%s), delay %d\n",
FRIQ_VERSION,pi->port); pi->port, pi->mode, mode_string[pi->mode], pi->delay);
printk("mode %d (%s), delay %d\n",pi->mode,
mode_string[pi->mode],pi->delay);
pi->private = 1; pi->private = 1;
friq_connect(pi); friq_connect(pi);
...@@ -233,7 +222,7 @@ static void friq_log_adapter( PIA *pi, char * scratch, int verbose ) ...@@ -233,7 +222,7 @@ static void friq_log_adapter( PIA *pi, char * scratch, int verbose )
} }
static void friq_release_proto( PIA *pi) static void friq_release_proto(struct pi_adapter *pi)
{ {
if (pi->private) { /* turn off the power */ if (pi->private) { /* turn off the power */
friq_connect(pi); friq_connect(pi);
...@@ -261,16 +250,5 @@ static struct pi_protocol friq = { ...@@ -261,16 +250,5 @@ static struct pi_protocol friq = {
.release_proto = friq_release_proto, .release_proto = friq_release_proto,
}; };
static int __init friq_init(void)
{
return paride_register(&friq);
}
static void __exit friq_exit(void)
{
paride_unregister(&friq);
}
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
module_init(friq_init) module_pata_parport_driver(friq);
module_exit(friq_exit)
...@@ -13,18 +13,6 @@ ...@@ -13,18 +13,6 @@
*/ */
/* Changes:
1.01 GRG 1998.05.06 init_proto, release_proto
fix chip detect
added EPP-16 and EPP-32
1.02 GRG 1998.09.23 added hard reset to initialisation process
1.03 GRG 1998.12.14 made hard reset conditional
*/
#define FRPW_VERSION "1.03"
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/delay.h> #include <linux/delay.h>
...@@ -32,8 +20,7 @@ ...@@ -32,8 +20,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <asm/io.h> #include <asm/io.h>
#include "pata_parport.h"
#include <linux/pata_parport.h>
#define cec4 w2(0xc);w2(0xe);w2(0xe);w2(0xc);w2(4);w2(4);w2(4); #define cec4 w2(0xc);w2(0xe);w2(0xe);w2(0xc);w2(4);w2(4);w2(4);
#define j44(l,h) (((l>>4)&0x0f)|(h&0xf0)) #define j44(l,h) (((l>>4)&0x0f)|(h&0xf0))
...@@ -44,7 +31,7 @@ ...@@ -44,7 +31,7 @@
static int cont_map[2] = { 0x08, 0x10 }; static int cont_map[2] = { 0x08, 0x10 };
static int frpw_read_regr( PIA *pi, int cont, int regr ) static int frpw_read_regr(struct pi_adapter *pi, int cont, int regr)
{ int h,l,r; { int h,l,r;
...@@ -60,7 +47,7 @@ static int frpw_read_regr( PIA *pi, int cont, int regr ) ...@@ -60,7 +47,7 @@ static int frpw_read_regr( PIA *pi, int cont, int regr )
} }
static void frpw_write_regr( PIA *pi, int cont, int regr, int val) static void frpw_write_regr(struct pi_adapter *pi, int cont, int regr, int val)
{ int r; { int r;
...@@ -71,7 +58,7 @@ static void frpw_write_regr( PIA *pi, int cont, int regr, int val) ...@@ -71,7 +58,7 @@ static void frpw_write_regr( PIA *pi, int cont, int regr, int val)
w2(5);w2(7);w2(5);w2(4); w2(5);w2(7);w2(5);w2(4);
} }
static void frpw_read_block_int( PIA *pi, char * buf, int count, int regr ) static void frpw_read_block_int(struct pi_adapter *pi, char *buf, int count, int regr)
{ int h, l, k, ph; { int h, l, k, ph;
...@@ -132,12 +119,12 @@ static void frpw_read_block_int( PIA *pi, char * buf, int count, int regr ) ...@@ -132,12 +119,12 @@ static void frpw_read_block_int( PIA *pi, char * buf, int count, int regr )
} }
} }
static void frpw_read_block( PIA *pi, char * buf, int count) static void frpw_read_block(struct pi_adapter *pi, char *buf, int count)
{ frpw_read_block_int(pi,buf,count,0x08); { frpw_read_block_int(pi,buf,count,0x08);
} }
static void frpw_write_block( PIA *pi, char * buf, int count ) static void frpw_write_block(struct pi_adapter *pi, char *buf, int count)
{ int k; { int k;
...@@ -170,14 +157,14 @@ static void frpw_write_block( PIA *pi, char * buf, int count ) ...@@ -170,14 +157,14 @@ static void frpw_write_block( PIA *pi, char * buf, int count )
} }
} }
static void frpw_connect ( PIA *pi ) static void frpw_connect(struct pi_adapter *pi)
{ pi->saved_r0 = r0(); { pi->saved_r0 = r0();
pi->saved_r2 = r2(); pi->saved_r2 = r2();
w2(4); w2(4);
} }
static void frpw_disconnect ( PIA *pi ) static void frpw_disconnect(struct pi_adapter *pi)
{ w2(4); w0(0x20); cec4; { w2(4); w0(0x20); cec4;
w0(pi->saved_r0); w0(pi->saved_r0);
...@@ -188,7 +175,7 @@ static void frpw_disconnect ( PIA *pi ) ...@@ -188,7 +175,7 @@ static void frpw_disconnect ( PIA *pi )
between the Xilinx and ASIC implementations of the Freecom adapter. between the Xilinx and ASIC implementations of the Freecom adapter.
*/ */
static int frpw_test_pnp ( PIA *pi ) static int frpw_test_pnp(struct pi_adapter *pi)
/* returns chip_type: 0 = Xilinx, 1 = ASIC */ /* returns chip_type: 0 = Xilinx, 1 = ASIC */
...@@ -221,25 +208,22 @@ static int frpw_test_pnp ( PIA *pi ) ...@@ -221,25 +208,22 @@ static int frpw_test_pnp ( PIA *pi )
a hack :-( a hack :-(
*/ */
static int frpw_test_proto( PIA *pi, char * scratch, int verbose ) static int frpw_test_proto(struct pi_adapter *pi)
{ int j, k, r; { int j, k, r;
int e[2] = {0,0}; int e[2] = {0,0};
char scratch[512];
if ((pi->private>>1) != pi->port) if ((pi->private>>1) != pi->port)
pi->private = frpw_test_pnp(pi) + 2*pi->port; pi->private = frpw_test_pnp(pi) + 2*pi->port;
if (((pi->private%2) == 0) && (pi->mode > 2)) { if (((pi->private%2) == 0) && (pi->mode > 2)) {
if (verbose) dev_dbg(&pi->dev, "frpw: Xilinx does not support mode %d\n", pi->mode);
printk("%s: frpw: Xilinx does not support mode %d\n",
pi->device, pi->mode);
return 1; return 1;
} }
if (((pi->private%2) == 1) && (pi->mode == 2)) { if (((pi->private%2) == 1) && (pi->mode == 2)) {
if (verbose) dev_dbg(&pi->dev, "frpw: ASIC does not support mode 2\n");
printk("%s: frpw: ASIC does not support mode 2\n",
pi->device);
return 1; return 1;
} }
...@@ -260,25 +244,21 @@ static int frpw_test_proto( PIA *pi, char * scratch, int verbose ) ...@@ -260,25 +244,21 @@ static int frpw_test_proto( PIA *pi, char * scratch, int verbose )
for (k=0;k<128;k++) if (scratch[k] != k) r++; for (k=0;k<128;k++) if (scratch[k] != k) r++;
frpw_disconnect(pi); frpw_disconnect(pi);
if (verbose) { dev_dbg(&pi->dev, "frpw: port 0x%x, chip %ld, mode %d, test=(%d,%d,%d)\n",
printk("%s: frpw: port 0x%x, chip %ld, mode %d, test=(%d,%d,%d)\n", pi->port, (pi->private%2), pi->mode, e[0], e[1], r);
pi->device,pi->port,(pi->private%2),pi->mode,e[0],e[1],r);
}
return (r || (e[0] && e[1])); return (r || (e[0] && e[1]));
} }
static void frpw_log_adapter( PIA *pi, char * scratch, int verbose ) static void frpw_log_adapter(struct pi_adapter *pi)
{ char *mode_string[6] = {"4-bit","8-bit","EPP", { char *mode_string[6] = {"4-bit","8-bit","EPP",
"EPP-8","EPP-16","EPP-32"}; "EPP-8","EPP-16","EPP-32"};
printk("%s: frpw %s, Freecom (%s) adapter at 0x%x, ", pi->device, dev_info(&pi->dev, "Freecom (%s) adapter at 0x%x, mode %d (%s), delay %d\n",
FRPW_VERSION,((pi->private%2) == 0)?"Xilinx":"ASIC",pi->port); ((pi->private % 2) == 0) ? "Xilinx" : "ASIC",
printk("mode %d (%s), delay %d\n",pi->mode, pi->port, pi->mode, mode_string[pi->mode], pi->delay);
mode_string[pi->mode],pi->delay);
} }
static struct pi_protocol frpw = { static struct pi_protocol frpw = {
...@@ -298,16 +278,5 @@ static struct pi_protocol frpw = { ...@@ -298,16 +278,5 @@ static struct pi_protocol frpw = {
.log_adapter = frpw_log_adapter, .log_adapter = frpw_log_adapter,
}; };
static int __init frpw_init(void)
{
return paride_register(&frpw);
}
static void __exit frpw_exit(void)
{
paride_unregister(&frpw);
}
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
module_init(frpw_init) module_pata_parport_driver(frpw);
module_exit(frpw_exit)
...@@ -12,14 +12,6 @@ ...@@ -12,14 +12,6 @@
*/ */
/* Changes:
1.01 GRG 1998.05.06 init_proto, release_proto
*/
#define KBIC_VERSION "1.01"
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/delay.h> #include <linux/delay.h>
...@@ -27,8 +19,7 @@ ...@@ -27,8 +19,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <asm/io.h> #include <asm/io.h>
#include "pata_parport.h"
#include <linux/pata_parport.h>
#define r12w() (delay_p,inw(pi->port+1)&0xffff) #define r12w() (delay_p,inw(pi->port+1)&0xffff)
...@@ -42,7 +33,7 @@ ...@@ -42,7 +33,7 @@
static int cont_map[2] = { 0x80, 0x40 }; static int cont_map[2] = { 0x80, 0x40 };
static int kbic_read_regr( PIA *pi, int cont, int regr ) static int kbic_read_regr(struct pi_adapter *pi, int cont, int regr)
{ int a, b, s; { int a, b, s;
...@@ -72,7 +63,7 @@ static int kbic_read_regr( PIA *pi, int cont, int regr ) ...@@ -72,7 +63,7 @@ static int kbic_read_regr( PIA *pi, int cont, int regr )
return -1; return -1;
} }
static void kbic_write_regr( PIA *pi, int cont, int regr, int val) static void kbic_write_regr(struct pi_adapter *pi, int cont, int regr, int val)
{ int s; { int s;
...@@ -96,14 +87,14 @@ static void kbic_write_regr( PIA *pi, int cont, int regr, int val) ...@@ -96,14 +87,14 @@ static void kbic_write_regr( PIA *pi, int cont, int regr, int val)
} }
} }
static void k951_connect ( PIA *pi ) static void k951_connect(struct pi_adapter *pi)
{ pi->saved_r0 = r0(); { pi->saved_r0 = r0();
pi->saved_r2 = r2(); pi->saved_r2 = r2();
w2(4); w2(4);
} }
static void k951_disconnect ( PIA *pi ) static void k951_disconnect(struct pi_adapter *pi)
{ w0(pi->saved_r0); { w0(pi->saved_r0);
w2(pi->saved_r2); w2(pi->saved_r2);
...@@ -112,7 +103,7 @@ static void k951_disconnect ( PIA *pi ) ...@@ -112,7 +103,7 @@ static void k951_disconnect ( PIA *pi )
#define CCP(x) w2(0xc4);w0(0xaa);w0(0x55);w0(0);w0(0xff);w0(0x87);\ #define CCP(x) w2(0xc4);w0(0xaa);w0(0x55);w0(0);w0(0xff);w0(0x87);\
w0(0x78);w0(x);w2(0xc5);w2(0xc4);w0(0xff); w0(0x78);w0(x);w2(0xc5);w2(0xc4);w0(0xff);
static void k971_connect ( PIA *pi ) static void k971_connect(struct pi_adapter *pi)
{ pi->saved_r0 = r0(); { pi->saved_r0 = r0();
pi->saved_r2 = r2(); pi->saved_r2 = r2();
...@@ -120,7 +111,7 @@ static void k971_connect ( PIA *pi ) ...@@ -120,7 +111,7 @@ static void k971_connect ( PIA *pi )
w2(4); w2(4);
} }
static void k971_disconnect ( PIA *pi ) static void k971_disconnect(struct pi_adapter *pi)
{ CCP(0x30); { CCP(0x30);
w0(pi->saved_r0); w0(pi->saved_r0);
...@@ -131,7 +122,7 @@ static void k971_disconnect ( PIA *pi ) ...@@ -131,7 +122,7 @@ static void k971_disconnect ( PIA *pi )
have this property. have this property.
*/ */
static void kbic_read_block( PIA *pi, char * buf, int count ) static void kbic_read_block(struct pi_adapter *pi, char *buf, int count)
{ int k, a, b; { int k, a, b;
...@@ -189,7 +180,7 @@ static void kbic_read_block( PIA *pi, char * buf, int count ) ...@@ -189,7 +180,7 @@ static void kbic_read_block( PIA *pi, char * buf, int count )
} }
} }
static void kbic_write_block( PIA *pi, char * buf, int count ) static void kbic_write_block(struct pi_adapter *pi, char *buf, int count)
{ int k; { int k;
...@@ -213,12 +204,15 @@ static void kbic_write_block( PIA *pi, char * buf, int count ) ...@@ -213,12 +204,15 @@ static void kbic_write_block( PIA *pi, char * buf, int count )
break; break;
case 4: w0(0xa0); w2(4); w2(6); w2(4); w3(0); case 4: w0(0xa0); w2(4); w2(6); w2(4); w3(0);
for(k=0;k<count/2;k++) w4w(pi_swab16(buf,k)); for (k = 0; k < count / 2; k++)
w4w(swab16(((u16 *)buf)[k]));
w2(4); w2(0); w2(4); w2(4); w2(0); w2(4);
break; break;
case 5: w0(0xa0); w2(4); w2(6); w2(4); w3(0); case 5: w0(0xa0); w2(4); w2(6); w2(4); w3(0);
for(k=0;k<count/4;k++) w4l(pi_swab32(buf,k)); for (k = 0; k < count / 4; k++)
w4l(swab16(((u16 *)buf)[2 * k]) |
swab16(((u16 *)buf)[2 * k + 1]) << 16);
w2(4); w2(0); w2(4); w2(4); w2(0); w2(4);
break; break;
...@@ -226,27 +220,23 @@ static void kbic_write_block( PIA *pi, char * buf, int count ) ...@@ -226,27 +220,23 @@ static void kbic_write_block( PIA *pi, char * buf, int count )
} }
static void kbic_log_adapter( PIA *pi, char * scratch, static void kbic_log_adapter(struct pi_adapter *pi, char *chip)
int verbose, char * chip )
{ char *mode_string[6] = {"4-bit","5/3","8-bit", { char *mode_string[6] = {"4-bit","5/3","8-bit",
"EPP-8","EPP_16","EPP-32"}; "EPP-8","EPP_16","EPP-32"};
printk("%s: kbic %s, KingByte %s at 0x%x, ", dev_info(&pi->dev, "KingByte %s at 0x%x, mode %d (%s), delay %d\n",
pi->device,KBIC_VERSION,chip,pi->port); chip, pi->port, pi->mode, mode_string[pi->mode], pi->delay);
printk("mode %d (%s), delay %d\n",pi->mode,
mode_string[pi->mode],pi->delay);
} }
static void k951_log_adapter( PIA *pi, char * scratch, int verbose ) static void k951_log_adapter(struct pi_adapter *pi)
{
{ kbic_log_adapter(pi,scratch,verbose,"KBIC-951A"); kbic_log_adapter(pi, "KBIC-951A");
} }
static void k971_log_adapter( PIA *pi, char * scratch, int verbose ) static void k971_log_adapter(struct pi_adapter *pi)
{
{ kbic_log_adapter(pi,scratch,verbose,"KBIC-971A"); kbic_log_adapter(pi, "KBIC-971A");
} }
static struct pi_protocol k951 = { static struct pi_protocol k951 = {
...@@ -285,19 +275,19 @@ static int __init kbic_init(void) ...@@ -285,19 +275,19 @@ static int __init kbic_init(void)
{ {
int rv; int rv;
rv = paride_register(&k951); rv = pata_parport_register_driver(&k951);
if (rv < 0) if (rv < 0)
return rv; return rv;
rv = paride_register(&k971); rv = pata_parport_register_driver(&k971);
if (rv < 0) if (rv < 0)
paride_unregister(&k951); pata_parport_unregister_driver(&k951);
return rv; return rv;
} }
static void __exit kbic_exit(void) static void __exit kbic_exit(void)
{ {
paride_unregister(&k951); pata_parport_unregister_driver(&k951);
paride_unregister(&k971); pata_parport_unregister_driver(&k971);
} }
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
......
...@@ -9,8 +9,6 @@ ...@@ -9,8 +9,6 @@
*/ */
#define KTTI_VERSION "1.0"
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/delay.h> #include <linux/delay.h>
...@@ -18,8 +16,7 @@ ...@@ -18,8 +16,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <asm/io.h> #include <asm/io.h>
#include "pata_parport.h"
#include <linux/pata_parport.h>
#define j44(a,b) (((a>>4)&0x0f)|(b&0xf0)) #define j44(a,b) (((a>>4)&0x0f)|(b&0xf0))
...@@ -29,7 +26,7 @@ ...@@ -29,7 +26,7 @@
static int cont_map[2] = { 0x10, 0x08 }; static int cont_map[2] = { 0x10, 0x08 };
static void ktti_write_regr( PIA *pi, int cont, int regr, int val) static void ktti_write_regr(struct pi_adapter *pi, int cont, int regr, int val)
{ int r; { int r;
...@@ -39,7 +36,7 @@ static void ktti_write_regr( PIA *pi, int cont, int regr, int val) ...@@ -39,7 +36,7 @@ static void ktti_write_regr( PIA *pi, int cont, int regr, int val)
w0(val); w2(3); w0(0); w2(6); w2(0xb); w0(val); w2(3); w0(0); w2(6); w2(0xb);
} }
static int ktti_read_regr( PIA *pi, int cont, int regr ) static int ktti_read_regr(struct pi_adapter *pi, int cont, int regr)
{ int a, b, r; { int a, b, r;
...@@ -51,7 +48,7 @@ static int ktti_read_regr( PIA *pi, int cont, int regr ) ...@@ -51,7 +48,7 @@ static int ktti_read_regr( PIA *pi, int cont, int regr )
} }
static void ktti_read_block( PIA *pi, char * buf, int count ) static void ktti_read_block(struct pi_adapter *pi, char *buf, int count)
{ int k, a, b; { int k, a, b;
...@@ -64,7 +61,7 @@ static void ktti_read_block( PIA *pi, char * buf, int count ) ...@@ -64,7 +61,7 @@ static void ktti_read_block( PIA *pi, char * buf, int count )
} }
} }
static void ktti_write_block( PIA *pi, char * buf, int count ) static void ktti_write_block(struct pi_adapter *pi, char *buf, int count)
{ int k; { int k;
...@@ -76,25 +73,25 @@ static void ktti_write_block( PIA *pi, char * buf, int count ) ...@@ -76,25 +73,25 @@ static void ktti_write_block( PIA *pi, char * buf, int count )
} }
} }
static void ktti_connect ( PIA *pi ) static void ktti_connect(struct pi_adapter *pi)
{ pi->saved_r0 = r0(); { pi->saved_r0 = r0();
pi->saved_r2 = r2(); pi->saved_r2 = r2();
w2(0xb); w2(0xa); w0(0); w2(3); w2(6); w2(0xb); w2(0xa); w0(0); w2(3); w2(6);
} }
static void ktti_disconnect ( PIA *pi ) static void ktti_disconnect(struct pi_adapter *pi)
{ w2(0xb); w2(0xa); w0(0xa0); w2(3); w2(4); { w2(0xb); w2(0xa); w0(0xa0); w2(3); w2(4);
w0(pi->saved_r0); w0(pi->saved_r0);
w2(pi->saved_r2); w2(pi->saved_r2);
} }
static void ktti_log_adapter( PIA *pi, char * scratch, int verbose ) static void ktti_log_adapter(struct pi_adapter *pi)
{ printk("%s: ktti %s, KT adapter at 0x%x, delay %d\n",
pi->device,KTTI_VERSION,pi->port,pi->delay);
{
dev_info(&pi->dev, "KT adapter at 0x%x, delay %d\n",
pi->port, pi->delay);
} }
static struct pi_protocol ktti = { static struct pi_protocol ktti = {
...@@ -113,16 +110,5 @@ static struct pi_protocol ktti = { ...@@ -113,16 +110,5 @@ static struct pi_protocol ktti = {
.log_adapter = ktti_log_adapter, .log_adapter = ktti_log_adapter,
}; };
static int __init ktti_init(void)
{
return paride_register(&ktti);
}
static void __exit ktti_exit(void)
{
paride_unregister(&ktti);
}
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
module_init(ktti_init) module_pata_parport_driver(ktti);
module_exit(ktti_exit)
...@@ -6,14 +6,6 @@ ...@@ -6,14 +6,6 @@
Onspec 90c20 parallel to IDE adapter. Onspec 90c20 parallel to IDE adapter.
*/ */
/* Changes:
1.01 GRG 1998.05.06 init_proto, release_proto
*/
#define ON20_VERSION "1.01"
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/delay.h> #include <linux/delay.h>
...@@ -21,8 +13,7 @@ ...@@ -21,8 +13,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <asm/io.h> #include <asm/io.h>
#include "pata_parport.h"
#include <linux/pata_parport.h>
#define op(f) w2(4);w0(f);w2(5);w2(0xd);w2(5);w2(0xd);w2(5);w2(4); #define op(f) w2(4);w0(f);w2(5);w2(0xd);w2(5);w2(0xd);w2(5);w2(4);
#define vl(v) w2(4);w0(v);w2(5);w2(7);w2(5);w2(4); #define vl(v) w2(4);w0(v);w2(5);w2(7);w2(5);w2(4);
...@@ -33,7 +24,7 @@ ...@@ -33,7 +24,7 @@
cont = 1 - access the IDE command set cont = 1 - access the IDE command set
*/ */
static int on20_read_regr( PIA *pi, int cont, int regr ) static int on20_read_regr(struct pi_adapter *pi, int cont, int regr)
{ int h,l, r ; { int h,l, r ;
...@@ -56,7 +47,7 @@ static int on20_read_regr( PIA *pi, int cont, int regr ) ...@@ -56,7 +47,7 @@ static int on20_read_regr( PIA *pi, int cont, int regr )
return -1; return -1;
} }
static void on20_write_regr( PIA *pi, int cont, int regr, int val ) static void on20_write_regr(struct pi_adapter *pi, int cont, int regr, int val)
{ int r; { int r;
...@@ -67,7 +58,7 @@ static void on20_write_regr( PIA *pi, int cont, int regr, int val ) ...@@ -67,7 +58,7 @@ static void on20_write_regr( PIA *pi, int cont, int regr, int val )
op(0); vl(val); op(0); vl(val);
} }
static void on20_connect ( PIA *pi) static void on20_connect(struct pi_adapter *pi)
{ pi->saved_r0 = r0(); { pi->saved_r0 = r0();
pi->saved_r2 = r2(); pi->saved_r2 = r2();
...@@ -77,14 +68,14 @@ static void on20_connect ( PIA *pi) ...@@ -77,14 +68,14 @@ static void on20_connect ( PIA *pi)
else { op(2); vl(0); op(2); vl(8); } else { op(2); vl(0); op(2); vl(8); }
} }
static void on20_disconnect ( PIA *pi ) static void on20_disconnect(struct pi_adapter *pi)
{ w2(4);w0(7);w2(4);w2(0xc);w2(4); { w2(4);w0(7);w2(4);w2(0xc);w2(4);
w0(pi->saved_r0); w0(pi->saved_r0);
w2(pi->saved_r2); w2(pi->saved_r2);
} }
static void on20_read_block( PIA *pi, char * buf, int count ) static void on20_read_block(struct pi_adapter *pi, char *buf, int count)
{ int k, l, h; { int k, l, h;
...@@ -101,7 +92,7 @@ static void on20_read_block( PIA *pi, char * buf, int count ) ...@@ -101,7 +92,7 @@ static void on20_read_block( PIA *pi, char * buf, int count )
w2(4); w2(4);
} }
static void on20_write_block( PIA *pi, char * buf, int count ) static void on20_write_block(struct pi_adapter *pi, char *buf, int count)
{ int k; { int k;
...@@ -111,15 +102,12 @@ static void on20_write_block( PIA *pi, char * buf, int count ) ...@@ -111,15 +102,12 @@ static void on20_write_block( PIA *pi, char * buf, int count )
w2(4); w2(4);
} }
static void on20_log_adapter( PIA *pi, char * scratch, int verbose ) static void on20_log_adapter(struct pi_adapter *pi)
{ char *mode_string[2] = {"4-bit","8-bit"}; { char *mode_string[2] = {"4-bit","8-bit"};
printk("%s: on20 %s, OnSpec 90c20 at 0x%x, ", dev_info(&pi->dev, "OnSpec 90c20 at 0x%x, mode %d (%s), delay %d\n",
pi->device,ON20_VERSION,pi->port); pi->port, pi->mode, mode_string[pi->mode], pi->delay);
printk("mode %d (%s), delay %d\n",pi->mode,
mode_string[pi->mode],pi->delay);
} }
static struct pi_protocol on20 = { static struct pi_protocol on20 = {
...@@ -138,16 +126,5 @@ static struct pi_protocol on20 = { ...@@ -138,16 +126,5 @@ static struct pi_protocol on20 = {
.log_adapter = on20_log_adapter, .log_adapter = on20_log_adapter,
}; };
static int __init on20_init(void)
{
return paride_register(&on20);
}
static void __exit on20_exit(void)
{
paride_unregister(&on20);
}
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
module_init(on20_init) module_pata_parport_driver(on20);
module_exit(on20_exit)
...@@ -7,17 +7,6 @@ ...@@ -7,17 +7,6 @@
*/ */
/* Changes:
1.01 GRG 1998.05.06 init_proto, release_proto
1.02 GRG 1998.09.23 updates for the -E rev chip
1.03 GRG 1998.12.14 fix for slave drives
1.04 GRG 1998.12.20 yet another bug fix
*/
#define ON26_VERSION "1.04"
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/delay.h> #include <linux/delay.h>
...@@ -25,8 +14,7 @@ ...@@ -25,8 +14,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <asm/io.h> #include <asm/io.h>
#include "pata_parport.h"
#include <linux/pata_parport.h>
/* mode codes: 0 nybble reads, 8-bit writes /* mode codes: 0 nybble reads, 8-bit writes
1 8-bit reads and writes 1 8-bit reads and writes
...@@ -44,7 +32,7 @@ ...@@ -44,7 +32,7 @@
cont = 1 - access the IDE command set cont = 1 - access the IDE command set
*/ */
static int on26_read_regr( PIA *pi, int cont, int regr ) static int on26_read_regr(struct pi_adapter *pi, int cont, int regr)
{ int a, b, r; { int a, b, r;
...@@ -73,7 +61,7 @@ static int on26_read_regr( PIA *pi, int cont, int regr ) ...@@ -73,7 +61,7 @@ static int on26_read_regr( PIA *pi, int cont, int regr )
return -1; return -1;
} }
static void on26_write_regr( PIA *pi, int cont, int regr, int val ) static void on26_write_regr(struct pi_adapter *pi, int cont, int regr, int val)
{ int r; { int r;
...@@ -99,7 +87,7 @@ static void on26_write_regr( PIA *pi, int cont, int regr, int val ) ...@@ -99,7 +87,7 @@ static void on26_write_regr( PIA *pi, int cont, int regr, int val )
#define CCP(x) w0(0xfe);w0(0xaa);w0(0x55);w0(0);w0(0xff);\ #define CCP(x) w0(0xfe);w0(0xaa);w0(0x55);w0(0);w0(0xff);\
w0(0x87);w0(0x78);w0(x);w2(4);w2(5);w2(4);w0(0xff); w0(0x87);w0(0x78);w0(x);w2(4);w2(5);w2(4);w0(0xff);
static void on26_connect ( PIA *pi ) static void on26_connect(struct pi_adapter *pi)
{ int x; { int x;
...@@ -113,7 +101,7 @@ static void on26_connect ( PIA *pi ) ...@@ -113,7 +101,7 @@ static void on26_connect ( PIA *pi )
w0(2); P1; w0(x); P2; w0(2); P1; w0(x); P2;
} }
static void on26_disconnect ( PIA *pi ) static void on26_disconnect(struct pi_adapter *pi)
{ if (pi->mode >= 2) { w3(4); w3(4); w3(4); w3(4); } { if (pi->mode >= 2) { w3(4); w3(4); w3(4); w3(4); }
else { w0(4); P1; w0(4); P1; } else { w0(4); P1; w0(4); P1; }
...@@ -124,7 +112,7 @@ static void on26_disconnect ( PIA *pi ) ...@@ -124,7 +112,7 @@ static void on26_disconnect ( PIA *pi )
#define RESET_WAIT 200 #define RESET_WAIT 200
static int on26_test_port( PIA *pi) /* hard reset */ static int on26_test_port(struct pi_adapter *pi) /* hard reset */
{ int i, m, d, x=0, y=0; { int i, m, d, x=0, y=0;
...@@ -167,7 +155,7 @@ static int on26_test_port( PIA *pi) /* hard reset */ ...@@ -167,7 +155,7 @@ static int on26_test_port( PIA *pi) /* hard reset */
} }
if (i == RESET_WAIT) if (i == RESET_WAIT)
printk("on26: Device reset failed (%x,%x)\n",x,y); dev_err(&pi->dev, "on26: Device reset failed (%x,%x)\n", x, y);
w0(4); P1; w0(4); P1; w0(4); P1; w0(4); P1;
} }
...@@ -183,7 +171,7 @@ static int on26_test_port( PIA *pi) /* hard reset */ ...@@ -183,7 +171,7 @@ static int on26_test_port( PIA *pi) /* hard reset */
} }
static void on26_read_block( PIA *pi, char * buf, int count ) static void on26_read_block(struct pi_adapter *pi, char *buf, int count)
{ int k, a, b; { int k, a, b;
...@@ -232,7 +220,7 @@ static void on26_read_block( PIA *pi, char * buf, int count ) ...@@ -232,7 +220,7 @@ static void on26_read_block( PIA *pi, char * buf, int count )
} }
} }
static void on26_write_block( PIA *pi, char * buf, int count ) static void on26_write_block(struct pi_adapter *pi, char *buf, int count)
{ int k; { int k;
...@@ -275,16 +263,13 @@ static void on26_write_block( PIA *pi, char * buf, int count ) ...@@ -275,16 +263,13 @@ static void on26_write_block( PIA *pi, char * buf, int count )
} }
static void on26_log_adapter( PIA *pi, char * scratch, int verbose ) static void on26_log_adapter(struct pi_adapter *pi)
{ char *mode_string[5] = {"4-bit","8-bit","EPP-8", { char *mode_string[5] = {"4-bit","8-bit","EPP-8",
"EPP-16","EPP-32"}; "EPP-16","EPP-32"};
printk("%s: on26 %s, OnSpec 90c26 at 0x%x, ", dev_info(&pi->dev, "OnSpec 90c26 at 0x%x, mode %d (%s), delay %d\n",
pi->device,ON26_VERSION,pi->port); pi->port, pi->mode, mode_string[pi->mode], pi->delay);
printk("mode %d (%s), delay %d\n",pi->mode,
mode_string[pi->mode],pi->delay);
} }
static struct pi_protocol on26 = { static struct pi_protocol on26 = {
...@@ -304,16 +289,5 @@ static struct pi_protocol on26 = { ...@@ -304,16 +289,5 @@ static struct pi_protocol on26 = {
.log_adapter = on26_log_adapter, .log_adapter = on26_log_adapter,
}; };
static int __init on26_init(void)
{
return paride_register(&on26);
}
static void __exit on26_exit(void)
{
paride_unregister(&on26);
}
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
module_init(on26_init) module_pata_parport_driver(on26);
module_exit(on26_exit)
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/parport.h> #include <linux/parport.h>
#include <linux/pata_parport.h> #include "pata_parport.h"
#define DRV_NAME "pata_parport" #define DRV_NAME "pata_parport"
...@@ -276,7 +276,7 @@ static void pi_release(struct pi_adapter *pi) ...@@ -276,7 +276,7 @@ static void pi_release(struct pi_adapter *pi)
module_put(pi->proto->owner); module_put(pi->proto->owner);
} }
static int default_test_proto(struct pi_adapter *pi, char *scratch) static int default_test_proto(struct pi_adapter *pi)
{ {
int j, k; int j, k;
int e[2] = { 0, 0 }; int e[2] = { 0, 0 };
...@@ -300,21 +300,21 @@ static int default_test_proto(struct pi_adapter *pi, char *scratch) ...@@ -300,21 +300,21 @@ static int default_test_proto(struct pi_adapter *pi, char *scratch)
return e[0] && e[1]; /* not here if both > 0 */ return e[0] && e[1]; /* not here if both > 0 */
} }
static int pi_test_proto(struct pi_adapter *pi, char *scratch) static int pi_test_proto(struct pi_adapter *pi)
{ {
int res; int res;
parport_claim_or_block(pi->pardev); parport_claim_or_block(pi->pardev);
if (pi->proto->test_proto) if (pi->proto->test_proto)
res = pi->proto->test_proto(pi, scratch, 1); res = pi->proto->test_proto(pi);
else else
res = default_test_proto(pi, scratch); res = default_test_proto(pi);
parport_release(pi->pardev); parport_release(pi->pardev);
return res; return res;
} }
static bool pi_probe_mode(struct pi_adapter *pi, int max, char *scratch) static bool pi_probe_mode(struct pi_adapter *pi, int max)
{ {
int best, range; int best, range;
...@@ -326,7 +326,7 @@ static bool pi_probe_mode(struct pi_adapter *pi, int max, char *scratch) ...@@ -326,7 +326,7 @@ static bool pi_probe_mode(struct pi_adapter *pi, int max, char *scratch)
range = 8; range = 8;
if (range == 8 && pi->port % 8) if (range == 8 && pi->port % 8)
return false; return false;
return !pi_test_proto(pi, scratch); return !pi_test_proto(pi);
} }
best = -1; best = -1;
for (pi->mode = 0; pi->mode < max; pi->mode++) { for (pi->mode = 0; pi->mode < max; pi->mode++) {
...@@ -335,14 +335,14 @@ static bool pi_probe_mode(struct pi_adapter *pi, int max, char *scratch) ...@@ -335,14 +335,14 @@ static bool pi_probe_mode(struct pi_adapter *pi, int max, char *scratch)
range = 8; range = 8;
if (range == 8 && pi->port % 8) if (range == 8 && pi->port % 8)
break; break;
if (!pi_test_proto(pi, scratch)) if (!pi_test_proto(pi))
best = pi->mode; best = pi->mode;
} }
pi->mode = best; pi->mode = best;
return best > -1; return best > -1;
} }
static bool pi_probe_unit(struct pi_adapter *pi, int unit, char *scratch) static bool pi_probe_unit(struct pi_adapter *pi, int unit)
{ {
int max, s, e; int max, s, e;
...@@ -367,14 +367,14 @@ static bool pi_probe_unit(struct pi_adapter *pi, int unit, char *scratch) ...@@ -367,14 +367,14 @@ static bool pi_probe_unit(struct pi_adapter *pi, int unit, char *scratch)
for (pi->unit = s; pi->unit < e; pi->unit++) { for (pi->unit = s; pi->unit < e; pi->unit++) {
if (pi->proto->probe_unit(pi)) { if (pi->proto->probe_unit(pi)) {
parport_release(pi->pardev); parport_release(pi->pardev);
return pi_probe_mode(pi, max, scratch); return pi_probe_mode(pi, max);
} }
} }
parport_release(pi->pardev); parport_release(pi->pardev);
return false; return false;
} }
return pi_probe_mode(pi, max, scratch); return pi_probe_mode(pi, max);
} }
static void pata_parport_dev_release(struct device *dev) static void pata_parport_dev_release(struct device *dev)
...@@ -420,7 +420,6 @@ static struct pi_adapter *pi_init_one(struct parport *parport, ...@@ -420,7 +420,6 @@ static struct pi_adapter *pi_init_one(struct parport *parport,
struct pi_protocol *pr, int mode, int unit, int delay) struct pi_protocol *pr, int mode, int unit, int delay)
{ {
struct pardev_cb par_cb = { }; struct pardev_cb par_cb = { };
char scratch[512];
const struct ata_port_info *ppi[] = { &pata_parport_port_info }; const struct ata_port_info *ppi[] = { &pata_parport_port_info };
struct ata_host *host; struct ata_host *host;
struct pi_adapter *pi; struct pi_adapter *pi;
...@@ -473,12 +472,12 @@ static struct pi_adapter *pi_init_one(struct parport *parport, ...@@ -473,12 +472,12 @@ static struct pi_adapter *pi_init_one(struct parport *parport,
if (!pi->pardev) if (!pi->pardev)
goto out_module_put; goto out_module_put;
if (!pi_probe_unit(pi, unit, scratch)) { if (!pi_probe_unit(pi, unit)) {
dev_info(&pi->dev, "Adapter not found\n"); dev_info(&pi->dev, "Adapter not found\n");
goto out_unreg_parport; goto out_unreg_parport;
} }
pi->proto->log_adapter(pi, scratch, 1); pi->proto->log_adapter(pi);
host = ata_host_alloc_pinfo(&pi->pardev->dev, ppi, 1); host = ata_host_alloc_pinfo(&pi->pardev->dev, ppi, 1);
if (!host) if (!host)
...@@ -534,7 +533,7 @@ int pata_parport_register_driver(struct pi_protocol *pr) ...@@ -534,7 +533,7 @@ int pata_parport_register_driver(struct pi_protocol *pr)
if (probe) { if (probe) {
/* probe all parports using this protocol */ /* probe all parports using this protocol */
idr_for_each_entry(&parport_list, parport, port_num) idr_for_each_entry(&parport_list, parport, port_num)
pi_init_one(parport, pr, -1, 0, -1); pi_init_one(parport, pr, -1, -1, -1);
} }
mutex_unlock(&pi_mutex); mutex_unlock(&pi_mutex);
...@@ -669,7 +668,7 @@ static void pata_parport_attach(struct parport *port) ...@@ -669,7 +668,7 @@ static void pata_parport_attach(struct parport *port)
if (probe) { if (probe) {
/* probe this port using all protocols */ /* probe this port using all protocols */
idr_for_each_entry(&protocols, pr, pr_num) idr_for_each_entry(&protocols, pr, pr_num)
pi_init_one(port, pr, -1, 0, -1); pi_init_one(port, pr, -1, -1, -1);
} }
mutex_unlock(&pi_mutex); mutex_unlock(&pi_mutex);
} }
......
...@@ -11,16 +11,12 @@ ...@@ -11,16 +11,12 @@
#include <linux/libata.h> #include <linux/libata.h>
#define PI_PCD 1 /* dummy for paride protocol modules */
struct pi_adapter { struct pi_adapter {
struct device dev; struct device dev;
struct pi_protocol *proto; /* adapter protocol */ struct pi_protocol *proto; /* adapter protocol */
int port; /* base address of parallel port */ int port; /* base address of parallel port */
int mode; /* transfer mode in use */ int mode; /* transfer mode in use */
int delay; /* adapter delay setting */ int delay; /* adapter delay setting */
int devtype; /* dummy for paride protocol modules */
char *device; /* dummy for paride protocol modules */
int unit; /* unit number for chained adapters */ int unit; /* unit number for chained adapters */
int saved_r0; /* saved port state */ int saved_r0; /* saved port state */
int saved_r2; /* saved port state */ int saved_r2; /* saved port state */
...@@ -28,8 +24,6 @@ struct pi_adapter { ...@@ -28,8 +24,6 @@ struct pi_adapter {
struct pardevice *pardev; /* pointer to pardevice */ struct pardevice *pardev; /* pointer to pardevice */
}; };
typedef struct pi_adapter PIA; /* for paride protocol modules */
/* registers are addressed as (cont,regr) /* registers are addressed as (cont,regr)
* cont: 0 for command register file, 1 for control register(s) * cont: 0 for command register file, 1 for control register(s)
* regr: 0-7 for register number. * regr: 0-7 for register number.
...@@ -54,23 +48,6 @@ typedef struct pi_adapter PIA; /* for paride protocol modules */ ...@@ -54,23 +48,6 @@ typedef struct pi_adapter PIA; /* for paride protocol modules */
#define r4w() (delay_p, inw(pi->port + 4)) #define r4w() (delay_p, inw(pi->port + 4))
#define r4l() (delay_p, inl(pi->port + 4)) #define r4l() (delay_p, inl(pi->port + 4))
static inline u16 pi_swab16(char *b, int k)
{
union { u16 u; char t[2]; } r;
r.t[0] = b[2 * k + 1]; r.t[1] = b[2 * k];
return r.u;
}
static inline u32 pi_swab32(char *b, int k)
{
union { u32 u; char f[4]; } r;
r.f[0] = b[4 * k + 1]; r.f[1] = b[4 * k];
r.f[2] = b[4 * k + 3]; r.f[3] = b[4 * k + 2];
return r.u;
}
struct pi_protocol { struct pi_protocol {
char name[8]; char name[8];
...@@ -90,8 +67,8 @@ struct pi_protocol { ...@@ -90,8 +67,8 @@ struct pi_protocol {
int (*test_port)(struct pi_adapter *pi); int (*test_port)(struct pi_adapter *pi);
int (*probe_unit)(struct pi_adapter *pi); int (*probe_unit)(struct pi_adapter *pi);
int (*test_proto)(struct pi_adapter *pi, char *scratch, int verbose); int (*test_proto)(struct pi_adapter *pi);
void (*log_adapter)(struct pi_adapter *pi, char *scratch, int verbose); void (*log_adapter)(struct pi_adapter *pi);
int (*init_proto)(struct pi_adapter *pi); int (*init_proto)(struct pi_adapter *pi);
void (*release_proto)(struct pi_adapter *pi); void (*release_proto)(struct pi_adapter *pi);
...@@ -104,8 +81,16 @@ struct pi_protocol { ...@@ -104,8 +81,16 @@ struct pi_protocol {
int pata_parport_register_driver(struct pi_protocol *pr); int pata_parport_register_driver(struct pi_protocol *pr);
void pata_parport_unregister_driver(struct pi_protocol *pr); void pata_parport_unregister_driver(struct pi_protocol *pr);
/* defines for old paride protocol modules */
#define paride_register pata_parport_register_driver /**
#define paride_unregister pata_parport_unregister_driver * module_pata_parport_driver() - Helper macro for registering a pata_parport driver
* @__pi_protocol: pi_protocol struct
*
* Helper macro for pata_parport drivers which do not do anything special in module
* init/exit. This eliminates a lot of boilerplate. Each module may only
* use this macro once, and calling it replaces module_init() and module_exit()
*/
#define module_pata_parport_driver(__pi_protocol) \
module_driver(__pi_protocol, pata_parport_register_driver, pata_parport_unregister_driver)
#endif /* LINUX_PATA_PARPORT_H */ #endif /* LINUX_PATA_PARPORT_H */
This diff is collapsed.
...@@ -810,7 +810,7 @@ static int sata_dwc_dma_get_channel(struct sata_dwc_device_port *hsdevp) ...@@ -810,7 +810,7 @@ static int sata_dwc_dma_get_channel(struct sata_dwc_device_port *hsdevp)
struct device *dev = hsdev->dev; struct device *dev = hsdev->dev;
#ifdef CONFIG_SATA_DWC_OLD_DMA #ifdef CONFIG_SATA_DWC_OLD_DMA
if (!of_find_property(dev->of_node, "dmas", NULL)) if (!of_property_present(dev->of_node, "dmas"))
return sata_dwc_dma_get_channel_old(hsdevp); return sata_dwc_dma_get_channel_old(hsdevp);
#endif #endif
...@@ -1180,7 +1180,7 @@ static int sata_dwc_probe(struct platform_device *ofdev) ...@@ -1180,7 +1180,7 @@ static int sata_dwc_probe(struct platform_device *ofdev)
} }
#ifdef CONFIG_SATA_DWC_OLD_DMA #ifdef CONFIG_SATA_DWC_OLD_DMA
if (!of_find_property(np, "dmas", NULL)) { if (!of_property_present(np, "dmas")) {
err = sata_dwc_dma_init_old(ofdev, hsdev); err = sata_dwc_dma_init_old(ofdev, hsdev);
if (err) if (err)
return err; return err;
......
...@@ -305,9 +305,15 @@ static size_t parport_pc_epp_read_data(struct parport *port, void *buf, ...@@ -305,9 +305,15 @@ static size_t parport_pc_epp_read_data(struct parport *port, void *buf,
} }
return got; return got;
} }
if ((flags & PARPORT_EPP_FAST) && (length > 1)) { if ((length > 1) && ((flags & PARPORT_EPP_FAST_32)
if (!(((long)buf | length) & 0x03)) || flags & PARPORT_EPP_FAST_16
|| flags & PARPORT_EPP_FAST_8)) {
if ((flags & PARPORT_EPP_FAST_32)
&& !(((long)buf | length) & 0x03))
insl(EPPDATA(port), buf, (length >> 2)); insl(EPPDATA(port), buf, (length >> 2));
else if ((flags & PARPORT_EPP_FAST_16)
&& !(((long)buf | length) & 0x01))
insw(EPPDATA(port), buf, length >> 1);
else else
insb(EPPDATA(port), buf, length); insb(EPPDATA(port), buf, length);
if (inb(STATUS(port)) & 0x01) { if (inb(STATUS(port)) & 0x01) {
...@@ -334,9 +340,15 @@ static size_t parport_pc_epp_write_data(struct parport *port, const void *buf, ...@@ -334,9 +340,15 @@ static size_t parport_pc_epp_write_data(struct parport *port, const void *buf,
{ {
size_t written = 0; size_t written = 0;
if ((flags & PARPORT_EPP_FAST) && (length > 1)) { if ((length > 1) && ((flags & PARPORT_EPP_FAST_32)
if (!(((long)buf | length) & 0x03)) || flags & PARPORT_EPP_FAST_16
|| flags & PARPORT_EPP_FAST_8)) {
if ((flags & PARPORT_EPP_FAST_32)
&& !(((long)buf | length) & 0x03))
outsl(EPPDATA(port), buf, (length >> 2)); outsl(EPPDATA(port), buf, (length >> 2));
else if ((flags & PARPORT_EPP_FAST_16)
&& !(((long)buf | length) & 0x01))
outsw(EPPDATA(port), buf, length >> 1);
else else
outsb(EPPDATA(port), buf, length); outsb(EPPDATA(port), buf, length);
if (inb(STATUS(port)) & 0x01) { if (inb(STATUS(port)) & 0x01) {
......
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
#include <linux/bits.h> #include <linux/bits.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/types.h> #include <linux/types.h>
#include <asm/byteorder.h>
/* defines only for the constants which don't work well as enums */ /* defines only for the constants which don't work well as enums */
#define ATA_DMA_BOUNDARY 0xffffUL #define ATA_DMA_BOUNDARY 0xffffUL
...@@ -1017,76 +1016,6 @@ static inline bool atapi_id_dmadir(const u16 *dev_id) ...@@ -1017,76 +1016,6 @@ static inline bool atapi_id_dmadir(const u16 *dev_id)
return ata_id_major_version(dev_id) >= 7 && (dev_id[62] & 0x8000); return ata_id_major_version(dev_id) >= 7 && (dev_id[62] & 0x8000);
} }
/*
* ata_id_is_lba_capacity_ok() performs a sanity check on
* the claimed LBA capacity value for the device.
*
* Returns 1 if LBA capacity looks sensible, 0 otherwise.
*
* It is called only once for each device.
*/
static inline bool ata_id_is_lba_capacity_ok(u16 *id)
{
unsigned long lba_sects, chs_sects, head, tail;
/* No non-LBA info .. so valid! */
if (id[ATA_ID_CYLS] == 0)
return true;
lba_sects = ata_id_u32(id, ATA_ID_LBA_CAPACITY);
/*
* The ATA spec tells large drives to return
* C/H/S = 16383/16/63 independent of their size.
* Some drives can be jumpered to use 15 heads instead of 16.
* Some drives can be jumpered to use 4092 cyls instead of 16383.
*/
if ((id[ATA_ID_CYLS] == 16383 ||
(id[ATA_ID_CYLS] == 4092 && id[ATA_ID_CUR_CYLS] == 16383)) &&
id[ATA_ID_SECTORS] == 63 &&
(id[ATA_ID_HEADS] == 15 || id[ATA_ID_HEADS] == 16) &&
(lba_sects >= 16383 * 63 * id[ATA_ID_HEADS]))
return true;
chs_sects = id[ATA_ID_CYLS] * id[ATA_ID_HEADS] * id[ATA_ID_SECTORS];
/* perform a rough sanity check on lba_sects: within 10% is OK */
if (lba_sects - chs_sects < chs_sects/10)
return true;
/* some drives have the word order reversed */
head = (lba_sects >> 16) & 0xffff;
tail = lba_sects & 0xffff;
lba_sects = head | (tail << 16);
if (lba_sects - chs_sects < chs_sects/10) {
*(__le32 *)&id[ATA_ID_LBA_CAPACITY] = __cpu_to_le32(lba_sects);
return true; /* LBA capacity is (now) good */
}
return false; /* LBA capacity value may be bad */
}
static inline void ata_id_to_hd_driveid(u16 *id)
{
#ifdef __BIG_ENDIAN
/* accessed in struct hd_driveid as 8-bit values */
id[ATA_ID_MAX_MULTSECT] = __cpu_to_le16(id[ATA_ID_MAX_MULTSECT]);
id[ATA_ID_CAPABILITY] = __cpu_to_le16(id[ATA_ID_CAPABILITY]);
id[ATA_ID_OLD_PIO_MODES] = __cpu_to_le16(id[ATA_ID_OLD_PIO_MODES]);
id[ATA_ID_OLD_DMA_MODES] = __cpu_to_le16(id[ATA_ID_OLD_DMA_MODES]);
id[ATA_ID_MULTSECT] = __cpu_to_le16(id[ATA_ID_MULTSECT]);
/* as 32-bit values */
*(u32 *)&id[ATA_ID_LBA_CAPACITY] = ata_id_u32(id, ATA_ID_LBA_CAPACITY);
*(u32 *)&id[ATA_ID_SPG] = ata_id_u32(id, ATA_ID_SPG);
/* as 64-bit value */
*(u64 *)&id[ATA_ID_LBA_CAPACITY_2] =
ata_id_u64(id, ATA_ID_LBA_CAPACITY_2);
#endif
}
static inline bool ata_ok(u8 status) static inline bool ata_ok(u8 status)
{ {
return ((status & (ATA_BUSY | ATA_DRDY | ATA_DF | ATA_DRQ | ATA_ERR)) return ((status & (ATA_BUSY | ATA_DRDY | ATA_DF | ATA_DRQ | ATA_ERR))
......
...@@ -90,6 +90,9 @@ typedef enum { ...@@ -90,6 +90,9 @@ typedef enum {
/* Flags for block transfer operations. */ /* Flags for block transfer operations. */
#define PARPORT_EPP_FAST (1<<0) /* Unreliable counts. */ #define PARPORT_EPP_FAST (1<<0) /* Unreliable counts. */
#define PARPORT_W91284PIC (1<<1) /* have a Warp9 w91284pic in the device */ #define PARPORT_W91284PIC (1<<1) /* have a Warp9 w91284pic in the device */
#define PARPORT_EPP_FAST_32 PARPORT_EPP_FAST /* 32-bit EPP transfers */
#define PARPORT_EPP_FAST_16 (1<<2) /* 16-bit EPP transfers */
#define PARPORT_EPP_FAST_8 (1<<3) /* 8-bit EPP transfers */
/* The rest is for the kernel only */ /* The rest is for the kernel only */
#endif /* _UAPI_PARPORT_H_ */ #endif /* _UAPI_PARPORT_H_ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment