Deleted Added
full compact
advansys.c (45846) advansys.c (46581)
1/*
2 * Generic driver for the Advanced Systems Inc. SCSI controllers
3 * Product specific probe and attach routines can be found in:
4 *
5 * i386/isa/adv_isa.c ABP5140, ABP542, ABP5150, ABP842, ABP852
6 * i386/eisa/adv_eisa.c ABP742, ABP752
7 * pci/adv_pci.c ABP920, ABP930, ABP930U, ABP930UA, ABP940, ABP940U,
8 * ABP940UA, ABP950, ABP960, ABP960U, ABP960UA,

--- 18 unchanged lines hidden (view full) ---

27 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 * SUCH DAMAGE.
34 *
1/*
2 * Generic driver for the Advanced Systems Inc. SCSI controllers
3 * Product specific probe and attach routines can be found in:
4 *
5 * i386/isa/adv_isa.c ABP5140, ABP542, ABP5150, ABP842, ABP852
6 * i386/eisa/adv_eisa.c ABP742, ABP752
7 * pci/adv_pci.c ABP920, ABP930, ABP930U, ABP930UA, ABP940, ABP940U,
8 * ABP940UA, ABP950, ABP960, ABP960U, ABP960UA,

--- 18 unchanged lines hidden (view full) ---

27 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 * SUCH DAMAGE.
34 *
35 * $Id: advansys.c,v 1.8 1999/04/07 22:59:12 gibbs Exp $
35 * $Id: advansys.c,v 1.9 1999/04/19 21:27:35 gibbs Exp $
36 */
37/*
38 * Ported from:
39 * advansys.c - Linux Host Driver for AdvanSys SCSI Adapters
40 *
41 * Copyright (c) 1995-1997 Advanced System Products, Inc.
42 * All Rights Reserved.
43 *

--- 188 unchanged lines hidden (view full) ---

232 /* XXX Implement */
233 ccb->ccb_h.status = CAM_REQ_INVALID;
234 xpt_done(ccb);
235 break;
236 case XPT_SET_TRAN_SETTINGS:
237 {
238 struct ccb_trans_settings *cts;
239 target_bit_vector targ_mask;
36 */
37/*
38 * Ported from:
39 * advansys.c - Linux Host Driver for AdvanSys SCSI Adapters
40 *
41 * Copyright (c) 1995-1997 Advanced System Products, Inc.
42 * All Rights Reserved.
43 *

--- 188 unchanged lines hidden (view full) ---

232 /* XXX Implement */
233 ccb->ccb_h.status = CAM_REQ_INVALID;
234 xpt_done(ccb);
235 break;
236 case XPT_SET_TRAN_SETTINGS:
237 {
238 struct ccb_trans_settings *cts;
239 target_bit_vector targ_mask;
240 struct adv_target_transinfo *tconf;
240 struct adv_transinfo *tconf;
241 u_int update_type;
242 int s;
243
244 cts = &ccb->cts;
245 targ_mask = ADV_TID_TO_TARGET_MASK(cts->ccb_h.target_id);
241 u_int update_type;
242 int s;
243
244 cts = &ccb->cts;
245 targ_mask = ADV_TID_TO_TARGET_MASK(cts->ccb_h.target_id);
246 tconf = &adv->tinfo[cts->ccb_h.target_id];
247 update_type = 0;
246 update_type = 0;
248 if ((cts->flags & CCB_TRANS_CURRENT_SETTINGS) != 0)
247
248 /*
249 * The user must specify which type of settings he wishes
250 * to change.
251 */
252 if (((cts->flags & CCB_TRANS_CURRENT_SETTINGS) != 0)
253 && ((cts->flags & CCB_TRANS_USER_SETTINGS) == 0)) {
254 tconf = &adv->tinfo[cts->ccb_h.target_id].current;
249 update_type |= ADV_TRANS_GOAL;
255 update_type |= ADV_TRANS_GOAL;
250 if ((cts->flags & CCB_TRANS_USER_SETTINGS) != 0)
256 } else if (((cts->flags & CCB_TRANS_USER_SETTINGS) != 0)
257 && ((cts->flags & CCB_TRANS_CURRENT_SETTINGS) == 0)) {
258 tconf = &adv->tinfo[cts->ccb_h.target_id].user;
251 update_type |= ADV_TRANS_USER;
259 update_type |= ADV_TRANS_USER;
260 } else {
261 ccb->ccb_h.status = CAM_REQ_INVALID;
262 break;
263 }
252
253 s = splcam();
254
255 if ((update_type & ADV_TRANS_GOAL) != 0) {
256 if ((cts->valid & CCB_TRANS_DISC_VALID) != 0) {
257 if ((cts->flags & CCB_TRANS_DISC_ENB) != 0)
258 adv->disc_enable |= targ_mask;
259 else

--- 21 unchanged lines hidden (view full) ---

281 if ((cts->valid & CCB_TRANS_TQ_VALID) != 0) {
282 if ((cts->flags & CCB_TRANS_TAG_ENB) != 0)
283 adv->user_cmd_qng_enabled |= targ_mask;
284 else
285 adv->user_cmd_qng_enabled &= ~targ_mask;
286 }
287 }
288
264
265 s = splcam();
266
267 if ((update_type & ADV_TRANS_GOAL) != 0) {
268 if ((cts->valid & CCB_TRANS_DISC_VALID) != 0) {
269 if ((cts->flags & CCB_TRANS_DISC_ENB) != 0)
270 adv->disc_enable |= targ_mask;
271 else

--- 21 unchanged lines hidden (view full) ---

293 if ((cts->valid & CCB_TRANS_TQ_VALID) != 0) {
294 if ((cts->flags & CCB_TRANS_TAG_ENB) != 0)
295 adv->user_cmd_qng_enabled |= targ_mask;
296 else
297 adv->user_cmd_qng_enabled &= ~targ_mask;
298 }
299 }
300
289 if ((cts->valid & CCB_TRANS_SYNC_RATE_VALID) != 0) {
301 /*
302 * If the user specifies either the sync rate, or offset,
303 * but not both, the unspecified parameter defaults to its
304 * current value in transfer negotiations.
305 */
306 if (((cts->valid & CCB_TRANS_SYNC_RATE_VALID) != 0)
307 || ((cts->valid & CCB_TRANS_SYNC_OFFSET_VALID) != 0)) {
308 /*
309 * If the user provided a sync rate but no offset,
310 * use the current offset.
311 */
290 if ((cts->valid & CCB_TRANS_SYNC_OFFSET_VALID) == 0)
312 if ((cts->valid & CCB_TRANS_SYNC_OFFSET_VALID) == 0)
291 cts->sync_offset = 0;
313 cts->sync_offset = tconf->offset;
292
314
315 /*
316 * If the user provided an offset but no sync rate,
317 * use the current sync rate.
318 */
319 if ((cts->valid & CCB_TRANS_SYNC_RATE_VALID) == 0)
320 cts->sync_period = tconf->period;
321
293 adv_period_offset_to_sdtr(adv, &cts->sync_period,
294 &cts->sync_offset,
295 cts->ccb_h.target_id);
296
297 adv_set_syncrate(adv, /*struct cam_path */NULL,
298 cts->ccb_h.target_id, cts->sync_period,
299 cts->sync_offset, update_type);
300 }
322 adv_period_offset_to_sdtr(adv, &cts->sync_period,
323 &cts->sync_offset,
324 cts->ccb_h.target_id);
325
326 adv_set_syncrate(adv, /*struct cam_path */NULL,
327 cts->ccb_h.target_id, cts->sync_period,
328 cts->sync_offset, update_type);
329 }
330
301 splx(s);
302 ccb->ccb_h.status = CAM_REQ_CMP;
303 xpt_done(ccb);
304 break;
305 }
306 case XPT_GET_TRAN_SETTINGS:
307 /* Get default/user set transfer settings for the target */
308 {

--- 88 unchanged lines hidden (view full) ---

397 cpi->hba_inquiry = PI_SDTR_ABLE|PI_TAG_ABLE;
398 cpi->target_sprt = 0;
399 cpi->hba_misc = 0;
400 cpi->hba_eng_cnt = 0;
401 cpi->max_target = 7;
402 cpi->max_lun = 7;
403 cpi->initiator_id = adv->scsi_id;
404 cpi->bus_id = cam_sim_bus(sim);
331 splx(s);
332 ccb->ccb_h.status = CAM_REQ_CMP;
333 xpt_done(ccb);
334 break;
335 }
336 case XPT_GET_TRAN_SETTINGS:
337 /* Get default/user set transfer settings for the target */
338 {

--- 88 unchanged lines hidden (view full) ---

427 cpi->hba_inquiry = PI_SDTR_ABLE|PI_TAG_ABLE;
428 cpi->target_sprt = 0;
429 cpi->hba_misc = 0;
430 cpi->hba_eng_cnt = 0;
431 cpi->max_target = 7;
432 cpi->max_lun = 7;
433 cpi->initiator_id = adv->scsi_id;
434 cpi->bus_id = cam_sim_bus(sim);
435 cpi->base_transfer_speed = 3300;
405 strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN);
406 strncpy(cpi->hba_vid, "Advansys", HBA_IDLEN);
407 strncpy(cpi->dev_name, cam_sim_name(sim), DEV_IDLEN);
408 cpi->unit_number = cam_sim_unit(sim);
409 cpi->ccb_h.status = CAM_REQ_CMP;
410 xpt_done(ccb);
411 break;
412 }

--- 908 unchanged lines hidden ---
436 strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN);
437 strncpy(cpi->hba_vid, "Advansys", HBA_IDLEN);
438 strncpy(cpi->dev_name, cam_sim_name(sim), DEV_IDLEN);
439 cpi->unit_number = cam_sim_unit(sim);
440 cpi->ccb_h.status = CAM_REQ_CMP;
441 xpt_done(ccb);
442 break;
443 }

--- 908 unchanged lines hidden ---