diff options
author | Dan Williams <dan.j.williams@intel.com> | 2011-05-10 05:28:46 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2011-07-03 07:04:47 -0400 |
commit | e2f8db509fdd354bb7a68c86515e9d2d8909ccc9 (patch) | |
tree | e27f2d33290b0c6f7ca20e408ce7f8ff9309dc43 /drivers/scsi/isci/host.h | |
parent | d35bc1bd18ab9e986cfb67c5a281a70cfd717f05 (diff) |
isci: uplevel port infrastructure
* Move port configuration agent implementation
* Merge core/scic_sds_port.[ch] into port.[ch]
Reported-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/scsi/isci/host.h')
-rw-r--r-- | drivers/scsi/isci/host.h | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/drivers/scsi/isci/host.h b/drivers/scsi/isci/host.h index 9c5d121ce791..784e1355e8ec 100644 --- a/drivers/scsi/isci/host.h +++ b/drivers/scsi/isci/host.h | |||
@@ -55,7 +55,6 @@ | |||
55 | #ifndef _SCI_HOST_H_ | 55 | #ifndef _SCI_HOST_H_ |
56 | #define _SCI_HOST_H_ | 56 | #define _SCI_HOST_H_ |
57 | 57 | ||
58 | #include "scic_config_parameters.h" | ||
59 | #include "remote_device.h" | 58 | #include "remote_device.h" |
60 | #include "phy.h" | 59 | #include "phy.h" |
61 | #include "pool.h" | 60 | #include "pool.h" |
@@ -64,11 +63,12 @@ | |||
64 | #include "registers.h" | 63 | #include "registers.h" |
65 | #include "scu_unsolicited_frame.h" | 64 | #include "scu_unsolicited_frame.h" |
66 | #include "unsolicited_frame_control.h" | 65 | #include "unsolicited_frame_control.h" |
67 | #include "scic_sds_port_configuration_agent.h" | 66 | #include "probe_roms.h" |
68 | 67 | ||
69 | struct scic_sds_request; | 68 | struct scic_sds_request; |
70 | struct scu_task_context; | 69 | struct scu_task_context; |
71 | 70 | ||
71 | |||
72 | /** | 72 | /** |
73 | * struct scic_power_control - | 73 | * struct scic_power_control - |
74 | * | 74 | * |
@@ -107,6 +107,24 @@ struct scic_power_control { | |||
107 | 107 | ||
108 | }; | 108 | }; |
109 | 109 | ||
110 | struct scic_sds_port_configuration_agent; | ||
111 | typedef void (*port_config_fn)(struct scic_sds_controller *, | ||
112 | struct scic_sds_port_configuration_agent *, | ||
113 | struct scic_sds_port *, struct scic_sds_phy *); | ||
114 | |||
115 | struct scic_sds_port_configuration_agent { | ||
116 | u16 phy_configured_mask; | ||
117 | u16 phy_ready_mask; | ||
118 | struct { | ||
119 | u8 min_index; | ||
120 | u8 max_index; | ||
121 | } phy_valid_port_range[SCI_MAX_PHYS]; | ||
122 | bool timer_pending; | ||
123 | port_config_fn link_up_handler; | ||
124 | port_config_fn link_down_handler; | ||
125 | void *timer; | ||
126 | }; | ||
127 | |||
110 | /** | 128 | /** |
111 | * struct scic_sds_controller - | 129 | * struct scic_sds_controller - |
112 | * | 130 | * |
@@ -800,4 +818,11 @@ u16 scic_controller_allocate_io_tag( | |||
800 | enum sci_status scic_controller_free_io_tag( | 818 | enum sci_status scic_controller_free_io_tag( |
801 | struct scic_sds_controller *scic, | 819 | struct scic_sds_controller *scic, |
802 | u16 io_tag); | 820 | u16 io_tag); |
821 | |||
822 | void scic_sds_port_configuration_agent_construct( | ||
823 | struct scic_sds_port_configuration_agent *port_agent); | ||
824 | |||
825 | enum sci_status scic_sds_port_configuration_agent_initialize( | ||
826 | struct scic_sds_controller *controller, | ||
827 | struct scic_sds_port_configuration_agent *port_agent); | ||
803 | #endif | 828 | #endif |