diff options
author | Arthur Jones <arthur.jones@qlogic.com> | 2008-04-17 00:09:31 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2008-04-17 00:09:31 -0400 |
commit | bb9171448deb1f7ece27674e2e431e4f267fd453 (patch) | |
tree | b042155205bbbe3deb317d65a53a4180fb512435 /drivers/infiniband/hw/ipath/ipath_init_chip.c | |
parent | 8babfa4fb9bfe93d57c700410a4f8be9fbd3edd7 (diff) |
IB/ipath: Misc changes to prepare for IB7220 introduction
The patch adds a number of minor changes to support newer HCAs:
- New send buffer control bits
- New error condition bits
- Locking and initialization changes
- More send buffers
Signed-off-by: Ralph Campbell <ralph.campbell@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/ipath/ipath_init_chip.c')
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_init_chip.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_init_chip.c b/drivers/infiniband/hw/ipath/ipath_init_chip.c index 8d8e572baf6e..c012e05649b3 100644 --- a/drivers/infiniband/hw/ipath/ipath_init_chip.c +++ b/drivers/infiniband/hw/ipath/ipath_init_chip.c | |||
@@ -230,6 +230,15 @@ static int init_chip_first(struct ipath_devdata *dd) | |||
230 | int ret = 0; | 230 | int ret = 0; |
231 | u64 val; | 231 | u64 val; |
232 | 232 | ||
233 | spin_lock_init(&dd->ipath_kernel_tid_lock); | ||
234 | spin_lock_init(&dd->ipath_user_tid_lock); | ||
235 | spin_lock_init(&dd->ipath_sendctrl_lock); | ||
236 | spin_lock_init(&dd->ipath_sdma_lock); | ||
237 | spin_lock_init(&dd->ipath_gpio_lock); | ||
238 | spin_lock_init(&dd->ipath_eep_st_lock); | ||
239 | spin_lock_init(&dd->ipath_sdepb_lock); | ||
240 | mutex_init(&dd->ipath_eep_lock); | ||
241 | |||
233 | /* | 242 | /* |
234 | * skip cfgports stuff because we are not allocating memory, | 243 | * skip cfgports stuff because we are not allocating memory, |
235 | * and we don't want problems if the portcnt changed due to | 244 | * and we don't want problems if the portcnt changed due to |
@@ -319,12 +328,6 @@ static int init_chip_first(struct ipath_devdata *dd) | |||
319 | else ipath_dbg("%u 2k piobufs @ %p\n", | 328 | else ipath_dbg("%u 2k piobufs @ %p\n", |
320 | dd->ipath_piobcnt2k, dd->ipath_pio2kbase); | 329 | dd->ipath_piobcnt2k, dd->ipath_pio2kbase); |
321 | 330 | ||
322 | spin_lock_init(&dd->ipath_user_tid_lock); | ||
323 | spin_lock_init(&dd->ipath_sendctrl_lock); | ||
324 | spin_lock_init(&dd->ipath_gpio_lock); | ||
325 | spin_lock_init(&dd->ipath_eep_st_lock); | ||
326 | mutex_init(&dd->ipath_eep_lock); | ||
327 | |||
328 | done: | 331 | done: |
329 | return ret; | 332 | return ret; |
330 | } | 333 | } |
@@ -553,7 +556,7 @@ static void enable_chip(struct ipath_devdata *dd, int reinit) | |||
553 | 556 | ||
554 | static int init_housekeeping(struct ipath_devdata *dd, int reinit) | 557 | static int init_housekeeping(struct ipath_devdata *dd, int reinit) |
555 | { | 558 | { |
556 | char boardn[32]; | 559 | char boardn[40]; |
557 | int ret = 0; | 560 | int ret = 0; |
558 | 561 | ||
559 | /* | 562 | /* |
@@ -800,7 +803,12 @@ int ipath_init_chip(struct ipath_devdata *dd, int reinit) | |||
800 | dd->ipath_pioupd_thresh = kpiobufs; | 803 | dd->ipath_pioupd_thresh = kpiobufs; |
801 | } | 804 | } |
802 | 805 | ||
803 | dd->ipath_f_early_init(dd); | 806 | ret = dd->ipath_f_early_init(dd); |
807 | if (ret) { | ||
808 | ipath_dev_err(dd, "Early initialization failure\n"); | ||
809 | goto done; | ||
810 | } | ||
811 | |||
804 | /* | 812 | /* |
805 | * Cancel any possible active sends from early driver load. | 813 | * Cancel any possible active sends from early driver load. |
806 | * Follows early_init because some chips have to initialize | 814 | * Follows early_init because some chips have to initialize |