diff options
author | Christoph Hellwig <hch@lst.de> | 2005-09-09 10:25:54 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2005-09-19 13:42:31 -0400 |
commit | 82ffb67164064752a56669511545316075b41e1d (patch) | |
tree | 7b5c92f76e25ddf66419668412db147cde35a410 /drivers/message/fusion/mptbase.h | |
parent | 3ed7a4704beb66a155acd67b78b7e9a5674d55fb (diff) |
[SCSI] fusion core changes for SAS support
- various bits for SAS support from the LSI driver.
- use the device private data for the fusion target private data.
this should be using the midlayer target data framework, but we
can't move over to that until fusion has been switched to the
generic DV code
- use target ID and channel from the fusion target private data,
because those in scsi_device will be different for mptsas
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/message/fusion/mptbase.h')
-rw-r--r-- | drivers/message/fusion/mptbase.h | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/drivers/message/fusion/mptbase.h b/drivers/message/fusion/mptbase.h index f4827d923731..bbd21d74ce5c 100644 --- a/drivers/message/fusion/mptbase.h +++ b/drivers/message/fusion/mptbase.h | |||
@@ -65,6 +65,7 @@ | |||
65 | #include "lsi/mpi_fc.h" /* Fibre Channel (lowlevel) support */ | 65 | #include "lsi/mpi_fc.h" /* Fibre Channel (lowlevel) support */ |
66 | #include "lsi/mpi_targ.h" /* SCSI/FCP Target protcol support */ | 66 | #include "lsi/mpi_targ.h" /* SCSI/FCP Target protcol support */ |
67 | #include "lsi/mpi_tool.h" /* Tools support */ | 67 | #include "lsi/mpi_tool.h" /* Tools support */ |
68 | #include "lsi/mpi_sas.h" /* SAS support */ | ||
68 | 69 | ||
69 | /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ | 70 | /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ |
70 | 71 | ||
@@ -477,6 +478,14 @@ typedef struct _ScsiCfgData { | |||
477 | u8 rsvd[1]; | 478 | u8 rsvd[1]; |
478 | } ScsiCfgData; | 479 | } ScsiCfgData; |
479 | 480 | ||
481 | typedef struct _SasCfgData { | ||
482 | u8 ptClear; /* 1 to automatically clear the | ||
483 | * persistent table. | ||
484 | * 0 to disable | ||
485 | * automatic clearing. | ||
486 | */ | ||
487 | }SasCfgData; | ||
488 | |||
480 | /* | 489 | /* |
481 | * Adapter Structure - pci_dev specific. Maximum: MPT_MAX_ADAPTERS | 490 | * Adapter Structure - pci_dev specific. Maximum: MPT_MAX_ADAPTERS |
482 | */ | 491 | */ |
@@ -530,11 +539,15 @@ typedef struct _MPT_ADAPTER | |||
530 | u8 *sense_buf_pool; | 539 | u8 *sense_buf_pool; |
531 | dma_addr_t sense_buf_pool_dma; | 540 | dma_addr_t sense_buf_pool_dma; |
532 | u32 sense_buf_low_dma; | 541 | u32 sense_buf_low_dma; |
542 | u8 *HostPageBuffer; /* SAS - host page buffer support */ | ||
543 | u32 HostPageBuffer_sz; | ||
544 | dma_addr_t HostPageBuffer_dma; | ||
533 | int mtrr_reg; | 545 | int mtrr_reg; |
534 | struct pci_dev *pcidev; /* struct pci_dev pointer */ | 546 | struct pci_dev *pcidev; /* struct pci_dev pointer */ |
535 | u8 __iomem *memmap; /* mmap address */ | 547 | u8 __iomem *memmap; /* mmap address */ |
536 | struct Scsi_Host *sh; /* Scsi Host pointer */ | 548 | struct Scsi_Host *sh; /* Scsi Host pointer */ |
537 | ScsiCfgData spi_data; /* Scsi config. data */ | 549 | ScsiCfgData spi_data; /* Scsi config. data */ |
550 | SasCfgData sas_data; /* Sas config. data */ | ||
538 | MPT_IOCTL *ioctl; /* ioctl data pointer */ | 551 | MPT_IOCTL *ioctl; /* ioctl data pointer */ |
539 | struct proc_dir_entry *ioc_dentry; | 552 | struct proc_dir_entry *ioc_dentry; |
540 | struct _MPT_ADAPTER *alt_ioc; /* ptr to 929 bound adapter port */ | 553 | struct _MPT_ADAPTER *alt_ioc; /* ptr to 929 bound adapter port */ |
@@ -554,31 +567,35 @@ typedef struct _MPT_ADAPTER | |||
554 | #else | 567 | #else |
555 | u32 mfcnt; | 568 | u32 mfcnt; |
556 | #endif | 569 | #endif |
557 | u32 NB_for_64_byte_frame; | 570 | u32 NB_for_64_byte_frame; |
558 | u32 hs_req[MPT_MAX_FRAME_SIZE/sizeof(u32)]; | 571 | u32 hs_req[MPT_MAX_FRAME_SIZE/sizeof(u32)]; |
559 | u16 hs_reply[MPT_MAX_FRAME_SIZE/sizeof(u16)]; | 572 | u16 hs_reply[MPT_MAX_FRAME_SIZE/sizeof(u16)]; |
560 | IOCFactsReply_t facts; | 573 | IOCFactsReply_t facts; |
561 | PortFactsReply_t pfacts[2]; | 574 | PortFactsReply_t pfacts[2]; |
562 | FCPortPage0_t fc_port_page0[2]; | 575 | FCPortPage0_t fc_port_page0[2]; |
576 | struct timer_list persist_timer; /* persist table timer */ | ||
577 | int persist_wait_done; /* persist completion flag */ | ||
578 | u8 persist_reply_frame[MPT_DEFAULT_FRAME_SIZE]; /* persist reply */ | ||
563 | LANPage0_t lan_cnfg_page0; | 579 | LANPage0_t lan_cnfg_page0; |
564 | LANPage1_t lan_cnfg_page1; | 580 | LANPage1_t lan_cnfg_page1; |
565 | /* | 581 | /* |
566 | * Description: errata_flag_1064 | 582 | * Description: errata_flag_1064 |
567 | * If a PCIX read occurs within 1 or 2 cycles after the chip receives | 583 | * If a PCIX read occurs within 1 or 2 cycles after the chip receives |
568 | * a split completion for a read data, an internal address pointer incorrectly | 584 | * a split completion for a read data, an internal address pointer incorrectly |
569 | * increments by 32 bytes | 585 | * increments by 32 bytes |
570 | */ | 586 | */ |
571 | int errata_flag_1064; | 587 | int errata_flag_1064; |
572 | u8 FirstWhoInit; | 588 | u8 FirstWhoInit; |
573 | u8 upload_fw; /* If set, do a fw upload */ | 589 | u8 upload_fw; /* If set, do a fw upload */ |
574 | u8 reload_fw; /* Force a FW Reload on next reset */ | 590 | u8 reload_fw; /* Force a FW Reload on next reset */ |
575 | u8 NBShiftFactor; /* NB Shift Factor based on Block Size (Facts) */ | 591 | u8 NBShiftFactor; /* NB Shift Factor based on Block Size (Facts) */ |
576 | u8 pad1[4]; | 592 | u8 pad1[4]; |
577 | int DoneCtx; | 593 | int DoneCtx; |
578 | int TaskCtx; | 594 | int TaskCtx; |
579 | int InternalCtx; | 595 | int InternalCtx; |
580 | struct list_head list; | 596 | struct list_head list; |
581 | struct net_device *netdev; | 597 | struct net_device *netdev; |
598 | struct list_head sas_topology; | ||
582 | } MPT_ADAPTER; | 599 | } MPT_ADAPTER; |
583 | 600 | ||
584 | /* | 601 | /* |
@@ -964,6 +981,7 @@ extern void mpt_alloc_fw_memory(MPT_ADAPTER *ioc, int size); | |||
964 | extern void mpt_free_fw_memory(MPT_ADAPTER *ioc); | 981 | extern void mpt_free_fw_memory(MPT_ADAPTER *ioc); |
965 | extern int mpt_findImVolumes(MPT_ADAPTER *ioc); | 982 | extern int mpt_findImVolumes(MPT_ADAPTER *ioc); |
966 | extern int mpt_read_ioc_pg_3(MPT_ADAPTER *ioc); | 983 | extern int mpt_read_ioc_pg_3(MPT_ADAPTER *ioc); |
984 | extern int mptbase_sas_persist_operation(MPT_ADAPTER *ioc, u8 persist_opcode); | ||
967 | 985 | ||
968 | /* | 986 | /* |
969 | * Public data decl's... | 987 | * Public data decl's... |