aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/sata_nv.c
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2006-06-17 02:49:55 -0400
committerJeff Garzik <jeff@garzik.org>2006-06-20 04:59:21 -0400
commit638ebcc81f40b160f5e8b161e690e9b1b9503c1e (patch)
treefc902a4de9705818efb2f93b286fed31d076e6f0 /drivers/scsi/sata_nv.c
parentea6e1e94f2cb9ae54bd1428e1ef3e84a749ceed8 (diff)
[PATCH] sata_nv: kill not-working hotplug code
sata_nv contained hotplug code which is mainly for demonstrating how hotplug event is handled. This patch kills the demo code in prepration for real hotplug implementation. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/scsi/sata_nv.c')
-rw-r--r--drivers/scsi/sata_nv.c169
1 files changed, 0 insertions, 169 deletions
diff --git a/drivers/scsi/sata_nv.c b/drivers/scsi/sata_nv.c
index 90551246aa46..70f81941f76e 100644
--- a/drivers/scsi/sata_nv.c
+++ b/drivers/scsi/sata_nv.c
@@ -64,12 +64,6 @@ enum {
64 NV_INT_STATUS_SDEV_PM = 0x20, 64 NV_INT_STATUS_SDEV_PM = 0x20,
65 NV_INT_STATUS_SDEV_ADDED = 0x40, 65 NV_INT_STATUS_SDEV_ADDED = 0x40,
66 NV_INT_STATUS_SDEV_REMOVED = 0x80, 66 NV_INT_STATUS_SDEV_REMOVED = 0x80,
67 NV_INT_STATUS_PDEV_HOTPLUG = (NV_INT_STATUS_PDEV_ADDED |
68 NV_INT_STATUS_PDEV_REMOVED),
69 NV_INT_STATUS_SDEV_HOTPLUG = (NV_INT_STATUS_SDEV_ADDED |
70 NV_INT_STATUS_SDEV_REMOVED),
71 NV_INT_STATUS_HOTPLUG = (NV_INT_STATUS_PDEV_HOTPLUG |
72 NV_INT_STATUS_SDEV_HOTPLUG),
73 67
74 NV_INT_ENABLE = 0x11, 68 NV_INT_ENABLE = 0x11,
75 NV_INT_ENABLE_CK804 = 0x441, 69 NV_INT_ENABLE_CK804 = 0x441,
@@ -81,12 +75,6 @@ enum {
81 NV_INT_ENABLE_SDEV_PM = 0x20, 75 NV_INT_ENABLE_SDEV_PM = 0x20,
82 NV_INT_ENABLE_SDEV_ADDED = 0x40, 76 NV_INT_ENABLE_SDEV_ADDED = 0x40,
83 NV_INT_ENABLE_SDEV_REMOVED = 0x80, 77 NV_INT_ENABLE_SDEV_REMOVED = 0x80,
84 NV_INT_ENABLE_PDEV_HOTPLUG = (NV_INT_ENABLE_PDEV_ADDED |
85 NV_INT_ENABLE_PDEV_REMOVED),
86 NV_INT_ENABLE_SDEV_HOTPLUG = (NV_INT_ENABLE_SDEV_ADDED |
87 NV_INT_ENABLE_SDEV_REMOVED),
88 NV_INT_ENABLE_HOTPLUG = (NV_INT_ENABLE_PDEV_HOTPLUG |
89 NV_INT_ENABLE_SDEV_HOTPLUG),
90 78
91 NV_INT_CONFIG = 0x12, 79 NV_INT_CONFIG = 0x12,
92 NV_INT_CONFIG_METHD = 0x01, // 0 = INT, 1 = SMI 80 NV_INT_CONFIG_METHD = 0x01, // 0 = INT, 1 = SMI
@@ -102,12 +90,6 @@ static irqreturn_t nv_interrupt (int irq, void *dev_instance,
102static u32 nv_scr_read (struct ata_port *ap, unsigned int sc_reg); 90static u32 nv_scr_read (struct ata_port *ap, unsigned int sc_reg);
103static void nv_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val); 91static void nv_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val);
104static void nv_host_stop (struct ata_host_set *host_set); 92static void nv_host_stop (struct ata_host_set *host_set);
105static void nv_enable_hotplug(struct ata_probe_ent *probe_ent);
106static void nv_disable_hotplug(struct ata_host_set *host_set);
107static int nv_check_hotplug(struct ata_host_set *host_set);
108static void nv_enable_hotplug_ck804(struct ata_probe_ent *probe_ent);
109static void nv_disable_hotplug_ck804(struct ata_host_set *host_set);
110static int nv_check_hotplug_ck804(struct ata_host_set *host_set);
111 93
112enum nv_host_type 94enum nv_host_type
113{ 95{
@@ -158,34 +140,18 @@ static const struct pci_device_id nv_pci_tbl[] = {
158struct nv_host_desc 140struct nv_host_desc
159{ 141{
160 enum nv_host_type host_type; 142 enum nv_host_type host_type;
161 void (*enable_hotplug)(struct ata_probe_ent *probe_ent);
162 void (*disable_hotplug)(struct ata_host_set *host_set);
163 int (*check_hotplug)(struct ata_host_set *host_set);
164
165}; 143};
166static struct nv_host_desc nv_device_tbl[] = { 144static struct nv_host_desc nv_device_tbl[] = {
167 { 145 {
168 .host_type = GENERIC, 146 .host_type = GENERIC,
169 .enable_hotplug = NULL,
170 .disable_hotplug= NULL,
171 .check_hotplug = NULL,
172 }, 147 },
173 { 148 {
174 .host_type = NFORCE2, 149 .host_type = NFORCE2,
175 .enable_hotplug = nv_enable_hotplug,
176 .disable_hotplug= nv_disable_hotplug,
177 .check_hotplug = nv_check_hotplug,
178 }, 150 },
179 { 151 {
180 .host_type = NFORCE3, 152 .host_type = NFORCE3,
181 .enable_hotplug = nv_enable_hotplug,
182 .disable_hotplug= nv_disable_hotplug,
183 .check_hotplug = nv_check_hotplug,
184 }, 153 },
185 { .host_type = CK804, 154 { .host_type = CK804,
186 .enable_hotplug = nv_enable_hotplug_ck804,
187 .disable_hotplug= nv_disable_hotplug_ck804,
188 .check_hotplug = nv_check_hotplug_ck804,
189 }, 155 },
190}; 156};
191 157
@@ -275,7 +241,6 @@ static irqreturn_t nv_interrupt (int irq, void *dev_instance,
275 struct pt_regs *regs) 241 struct pt_regs *regs)
276{ 242{
277 struct ata_host_set *host_set = dev_instance; 243 struct ata_host_set *host_set = dev_instance;
278 struct nv_host *host = host_set->private_data;
279 unsigned int i; 244 unsigned int i;
280 unsigned int handled = 0; 245 unsigned int handled = 0;
281 unsigned long flags; 246 unsigned long flags;
@@ -301,9 +266,6 @@ static irqreturn_t nv_interrupt (int irq, void *dev_instance,
301 266
302 } 267 }
303 268
304 if (host->host_desc->check_hotplug)
305 handled += host->host_desc->check_hotplug(host_set);
306
307 spin_unlock_irqrestore(&host_set->lock, flags); 269 spin_unlock_irqrestore(&host_set->lock, flags);
308 270
309 return IRQ_RETVAL(handled); 271 return IRQ_RETVAL(handled);
@@ -329,10 +291,6 @@ static void nv_host_stop (struct ata_host_set *host_set)
329{ 291{
330 struct nv_host *host = host_set->private_data; 292 struct nv_host *host = host_set->private_data;
331 293
332 // Disable hotplug event interrupts.
333 if (host->host_desc->disable_hotplug)
334 host->host_desc->disable_hotplug(host_set);
335
336 kfree(host); 294 kfree(host);
337 295
338 ata_pci_host_stop(host_set); 296 ata_pci_host_stop(host_set);
@@ -409,10 +367,6 @@ static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
409 if (rc != NV_PORTS) 367 if (rc != NV_PORTS)
410 goto err_out_iounmap; 368 goto err_out_iounmap;
411 369
412 // Enable hotplug event interrupts.
413 if (host->host_desc->enable_hotplug)
414 host->host_desc->enable_hotplug(probe_ent);
415
416 kfree(probe_ent); 370 kfree(probe_ent);
417 371
418 return 0; 372 return 0;
@@ -432,129 +386,6 @@ err_out:
432 return rc; 386 return rc;
433} 387}
434 388
435static void nv_enable_hotplug(struct ata_probe_ent *probe_ent)
436{
437 u8 intr_mask;
438
439 outb(NV_INT_STATUS_HOTPLUG,
440 probe_ent->port[0].scr_addr + NV_INT_STATUS);
441
442 intr_mask = inb(probe_ent->port[0].scr_addr + NV_INT_ENABLE);
443 intr_mask |= NV_INT_ENABLE_HOTPLUG;
444
445 outb(intr_mask, probe_ent->port[0].scr_addr + NV_INT_ENABLE);
446}
447
448static void nv_disable_hotplug(struct ata_host_set *host_set)
449{
450 u8 intr_mask;
451
452 intr_mask = inb(host_set->ports[0]->ioaddr.scr_addr + NV_INT_ENABLE);
453
454 intr_mask &= ~(NV_INT_ENABLE_HOTPLUG);
455
456 outb(intr_mask, host_set->ports[0]->ioaddr.scr_addr + NV_INT_ENABLE);
457}
458
459static int nv_check_hotplug(struct ata_host_set *host_set)
460{
461 u8 intr_status;
462
463 intr_status = inb(host_set->ports[0]->ioaddr.scr_addr + NV_INT_STATUS);
464
465 // Clear interrupt status.
466 outb(0xff, host_set->ports[0]->ioaddr.scr_addr + NV_INT_STATUS);
467
468 if (intr_status & NV_INT_STATUS_HOTPLUG) {
469 if (intr_status & NV_INT_STATUS_PDEV_ADDED)
470 printk(KERN_WARNING "nv_sata: "
471 "Primary device added\n");
472
473 if (intr_status & NV_INT_STATUS_PDEV_REMOVED)
474 printk(KERN_WARNING "nv_sata: "
475 "Primary device removed\n");
476
477 if (intr_status & NV_INT_STATUS_SDEV_ADDED)
478 printk(KERN_WARNING "nv_sata: "
479 "Secondary device added\n");
480
481 if (intr_status & NV_INT_STATUS_SDEV_REMOVED)
482 printk(KERN_WARNING "nv_sata: "
483 "Secondary device removed\n");
484
485 return 1;
486 }
487
488 return 0;
489}
490
491static void nv_enable_hotplug_ck804(struct ata_probe_ent *probe_ent)
492{
493 struct pci_dev *pdev = to_pci_dev(probe_ent->dev);
494 u8 intr_mask;
495 u8 regval;
496
497 pci_read_config_byte(pdev, NV_MCP_SATA_CFG_20, &regval);
498 regval |= NV_MCP_SATA_CFG_20_SATA_SPACE_EN;
499 pci_write_config_byte(pdev, NV_MCP_SATA_CFG_20, regval);
500
501 writeb(NV_INT_STATUS_HOTPLUG, probe_ent->mmio_base + NV_INT_STATUS_CK804);
502
503 intr_mask = readb(probe_ent->mmio_base + NV_INT_ENABLE_CK804);
504 intr_mask |= NV_INT_ENABLE_HOTPLUG;
505
506 writeb(intr_mask, probe_ent->mmio_base + NV_INT_ENABLE_CK804);
507}
508
509static void nv_disable_hotplug_ck804(struct ata_host_set *host_set)
510{
511 struct pci_dev *pdev = to_pci_dev(host_set->dev);
512 u8 intr_mask;
513 u8 regval;
514
515 intr_mask = readb(host_set->mmio_base + NV_INT_ENABLE_CK804);
516
517 intr_mask &= ~(NV_INT_ENABLE_HOTPLUG);
518
519 writeb(intr_mask, host_set->mmio_base + NV_INT_ENABLE_CK804);
520
521 pci_read_config_byte(pdev, NV_MCP_SATA_CFG_20, &regval);
522 regval &= ~NV_MCP_SATA_CFG_20_SATA_SPACE_EN;
523 pci_write_config_byte(pdev, NV_MCP_SATA_CFG_20, regval);
524}
525
526static int nv_check_hotplug_ck804(struct ata_host_set *host_set)
527{
528 u8 intr_status;
529
530 intr_status = readb(host_set->mmio_base + NV_INT_STATUS_CK804);
531
532 // Clear interrupt status.
533 writeb(0xff, host_set->mmio_base + NV_INT_STATUS_CK804);
534
535 if (intr_status & NV_INT_STATUS_HOTPLUG) {
536 if (intr_status & NV_INT_STATUS_PDEV_ADDED)
537 printk(KERN_WARNING "nv_sata: "
538 "Primary device added\n");
539
540 if (intr_status & NV_INT_STATUS_PDEV_REMOVED)
541 printk(KERN_WARNING "nv_sata: "
542 "Primary device removed\n");
543
544 if (intr_status & NV_INT_STATUS_SDEV_ADDED)
545 printk(KERN_WARNING "nv_sata: "
546 "Secondary device added\n");
547
548 if (intr_status & NV_INT_STATUS_SDEV_REMOVED)
549 printk(KERN_WARNING "nv_sata: "
550 "Secondary device removed\n");
551
552 return 1;
553 }
554
555 return 0;
556}
557
558static int __init nv_init(void) 389static int __init nv_init(void)
559{ 390{
560 return pci_module_init(&nv_pci_driver); 391 return pci_module_init(&nv_pci_driver);