diff options
| -rw-r--r-- | drivers/spi/spi_bfin5xx.c | 78 |
1 files changed, 39 insertions, 39 deletions
diff --git a/drivers/spi/spi_bfin5xx.c b/drivers/spi/spi_bfin5xx.c index a85bcb306590..0e33b5aa35fb 100644 --- a/drivers/spi/spi_bfin5xx.c +++ b/drivers/spi/spi_bfin5xx.c | |||
| @@ -186,7 +186,7 @@ static int flush(struct driver_data *drv_data) | |||
| 186 | 186 | ||
| 187 | /* wait for stop and clear stat */ | 187 | /* wait for stop and clear stat */ |
| 188 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF) && limit--) | 188 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF) && limit--) |
| 189 | continue; | 189 | cpu_relax(); |
| 190 | 190 | ||
| 191 | write_STAT(drv_data, BIT_STAT_CLR); | 191 | write_STAT(drv_data, BIT_STAT_CLR); |
| 192 | 192 | ||
| @@ -262,7 +262,7 @@ static void null_writer(struct driver_data *drv_data) | |||
| 262 | while (drv_data->tx < drv_data->tx_end) { | 262 | while (drv_data->tx < drv_data->tx_end) { |
| 263 | write_TDBR(drv_data, 0); | 263 | write_TDBR(drv_data, 0); |
| 264 | while ((read_STAT(drv_data) & BIT_STAT_TXS)) | 264 | while ((read_STAT(drv_data) & BIT_STAT_TXS)) |
| 265 | continue; | 265 | cpu_relax(); |
| 266 | drv_data->tx += n_bytes; | 266 | drv_data->tx += n_bytes; |
| 267 | } | 267 | } |
| 268 | } | 268 | } |
| @@ -274,7 +274,7 @@ static void null_reader(struct driver_data *drv_data) | |||
| 274 | 274 | ||
| 275 | while (drv_data->rx < drv_data->rx_end) { | 275 | while (drv_data->rx < drv_data->rx_end) { |
| 276 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) | 276 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) |
| 277 | continue; | 277 | cpu_relax(); |
| 278 | dummy_read(drv_data); | 278 | dummy_read(drv_data); |
| 279 | drv_data->rx += n_bytes; | 279 | drv_data->rx += n_bytes; |
| 280 | } | 280 | } |
| @@ -287,12 +287,12 @@ static void u8_writer(struct driver_data *drv_data) | |||
| 287 | 287 | ||
| 288 | /* poll for SPI completion before start */ | 288 | /* poll for SPI completion before start */ |
| 289 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) | 289 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) |
| 290 | continue; | 290 | cpu_relax(); |
| 291 | 291 | ||
| 292 | while (drv_data->tx < drv_data->tx_end) { | 292 | while (drv_data->tx < drv_data->tx_end) { |
| 293 | write_TDBR(drv_data, (*(u8 *) (drv_data->tx))); | 293 | write_TDBR(drv_data, (*(u8 *) (drv_data->tx))); |
| 294 | while (read_STAT(drv_data) & BIT_STAT_TXS) | 294 | while (read_STAT(drv_data) & BIT_STAT_TXS) |
| 295 | continue; | 295 | cpu_relax(); |
| 296 | ++drv_data->tx; | 296 | ++drv_data->tx; |
| 297 | } | 297 | } |
| 298 | } | 298 | } |
| @@ -303,14 +303,14 @@ static void u8_cs_chg_writer(struct driver_data *drv_data) | |||
| 303 | 303 | ||
| 304 | /* poll for SPI completion before start */ | 304 | /* poll for SPI completion before start */ |
| 305 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) | 305 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) |
| 306 | continue; | 306 | cpu_relax(); |
| 307 | 307 | ||
| 308 | while (drv_data->tx < drv_data->tx_end) { | 308 | while (drv_data->tx < drv_data->tx_end) { |
| 309 | cs_active(drv_data, chip); | 309 | cs_active(drv_data, chip); |
| 310 | 310 | ||
| 311 | write_TDBR(drv_data, (*(u8 *) (drv_data->tx))); | 311 | write_TDBR(drv_data, (*(u8 *) (drv_data->tx))); |
| 312 | while (read_STAT(drv_data) & BIT_STAT_TXS) | 312 | while (read_STAT(drv_data) & BIT_STAT_TXS) |
| 313 | continue; | 313 | cpu_relax(); |
| 314 | 314 | ||
| 315 | cs_deactive(drv_data, chip); | 315 | cs_deactive(drv_data, chip); |
| 316 | 316 | ||
| @@ -325,7 +325,7 @@ static void u8_reader(struct driver_data *drv_data) | |||
| 325 | 325 | ||
| 326 | /* poll for SPI completion before start */ | 326 | /* poll for SPI completion before start */ |
| 327 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) | 327 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) |
| 328 | continue; | 328 | cpu_relax(); |
| 329 | 329 | ||
| 330 | /* clear TDBR buffer before read(else it will be shifted out) */ | 330 | /* clear TDBR buffer before read(else it will be shifted out) */ |
| 331 | write_TDBR(drv_data, 0xFFFF); | 331 | write_TDBR(drv_data, 0xFFFF); |
| @@ -334,13 +334,13 @@ static void u8_reader(struct driver_data *drv_data) | |||
| 334 | 334 | ||
| 335 | while (drv_data->rx < drv_data->rx_end - 1) { | 335 | while (drv_data->rx < drv_data->rx_end - 1) { |
| 336 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) | 336 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) |
| 337 | continue; | 337 | cpu_relax(); |
| 338 | *(u8 *) (drv_data->rx) = read_RDBR(drv_data); | 338 | *(u8 *) (drv_data->rx) = read_RDBR(drv_data); |
| 339 | ++drv_data->rx; | 339 | ++drv_data->rx; |
| 340 | } | 340 | } |
| 341 | 341 | ||
| 342 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) | 342 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) |
| 343 | continue; | 343 | cpu_relax(); |
| 344 | *(u8 *) (drv_data->rx) = read_SHAW(drv_data); | 344 | *(u8 *) (drv_data->rx) = read_SHAW(drv_data); |
| 345 | ++drv_data->rx; | 345 | ++drv_data->rx; |
| 346 | } | 346 | } |
| @@ -351,7 +351,7 @@ static void u8_cs_chg_reader(struct driver_data *drv_data) | |||
| 351 | 351 | ||
| 352 | /* poll for SPI completion before start */ | 352 | /* poll for SPI completion before start */ |
| 353 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) | 353 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) |
| 354 | continue; | 354 | cpu_relax(); |
| 355 | 355 | ||
| 356 | /* clear TDBR buffer before read(else it will be shifted out) */ | 356 | /* clear TDBR buffer before read(else it will be shifted out) */ |
| 357 | write_TDBR(drv_data, 0xFFFF); | 357 | write_TDBR(drv_data, 0xFFFF); |
| @@ -363,7 +363,7 @@ static void u8_cs_chg_reader(struct driver_data *drv_data) | |||
| 363 | cs_deactive(drv_data, chip); | 363 | cs_deactive(drv_data, chip); |
| 364 | 364 | ||
| 365 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) | 365 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) |
| 366 | continue; | 366 | cpu_relax(); |
| 367 | cs_active(drv_data, chip); | 367 | cs_active(drv_data, chip); |
| 368 | *(u8 *) (drv_data->rx) = read_RDBR(drv_data); | 368 | *(u8 *) (drv_data->rx) = read_RDBR(drv_data); |
| 369 | ++drv_data->rx; | 369 | ++drv_data->rx; |
| @@ -371,7 +371,7 @@ static void u8_cs_chg_reader(struct driver_data *drv_data) | |||
| 371 | cs_deactive(drv_data, chip); | 371 | cs_deactive(drv_data, chip); |
| 372 | 372 | ||
| 373 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) | 373 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) |
| 374 | continue; | 374 | cpu_relax(); |
| 375 | *(u8 *) (drv_data->rx) = read_SHAW(drv_data); | 375 | *(u8 *) (drv_data->rx) = read_SHAW(drv_data); |
| 376 | ++drv_data->rx; | 376 | ++drv_data->rx; |
| 377 | } | 377 | } |
| @@ -380,15 +380,15 @@ static void u8_duplex(struct driver_data *drv_data) | |||
| 380 | { | 380 | { |
| 381 | /* poll for SPI completion before start */ | 381 | /* poll for SPI completion before start */ |
| 382 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) | 382 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) |
| 383 | continue; | 383 | cpu_relax(); |
| 384 | 384 | ||
| 385 | /* in duplex mode, clk is triggered by writing of TDBR */ | 385 | /* in duplex mode, clk is triggered by writing of TDBR */ |
| 386 | while (drv_data->rx < drv_data->rx_end) { | 386 | while (drv_data->rx < drv_data->rx_end) { |
| 387 | write_TDBR(drv_data, (*(u8 *) (drv_data->tx))); | 387 | write_TDBR(drv_data, (*(u8 *) (drv_data->tx))); |
| 388 | while (read_STAT(drv_data) & BIT_STAT_TXS) | 388 | while (read_STAT(drv_data) & BIT_STAT_TXS) |
| 389 | continue; | 389 | cpu_relax(); |
| 390 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) | 390 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) |
| 391 | continue; | 391 | cpu_relax(); |
| 392 | *(u8 *) (drv_data->rx) = read_RDBR(drv_data); | 392 | *(u8 *) (drv_data->rx) = read_RDBR(drv_data); |
| 393 | ++drv_data->rx; | 393 | ++drv_data->rx; |
| 394 | ++drv_data->tx; | 394 | ++drv_data->tx; |
| @@ -401,16 +401,16 @@ static void u8_cs_chg_duplex(struct driver_data *drv_data) | |||
| 401 | 401 | ||
| 402 | /* poll for SPI completion before start */ | 402 | /* poll for SPI completion before start */ |
| 403 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) | 403 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) |
| 404 | continue; | 404 | cpu_relax(); |
| 405 | 405 | ||
| 406 | while (drv_data->rx < drv_data->rx_end) { | 406 | while (drv_data->rx < drv_data->rx_end) { |
| 407 | cs_active(drv_data, chip); | 407 | cs_active(drv_data, chip); |
| 408 | 408 | ||
| 409 | write_TDBR(drv_data, (*(u8 *) (drv_data->tx))); | 409 | write_TDBR(drv_data, (*(u8 *) (drv_data->tx))); |
| 410 | while (read_STAT(drv_data) & BIT_STAT_TXS) | 410 | while (read_STAT(drv_data) & BIT_STAT_TXS) |
| 411 | continue; | 411 | cpu_relax(); |
| 412 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) | 412 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) |
| 413 | continue; | 413 | cpu_relax(); |
| 414 | *(u8 *) (drv_data->rx) = read_RDBR(drv_data); | 414 | *(u8 *) (drv_data->rx) = read_RDBR(drv_data); |
| 415 | 415 | ||
| 416 | cs_deactive(drv_data, chip); | 416 | cs_deactive(drv_data, chip); |
| @@ -427,12 +427,12 @@ static void u16_writer(struct driver_data *drv_data) | |||
| 427 | 427 | ||
| 428 | /* poll for SPI completion before start */ | 428 | /* poll for SPI completion before start */ |
| 429 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) | 429 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) |
| 430 | continue; | 430 | cpu_relax(); |
| 431 | 431 | ||
| 432 | while (drv_data->tx < drv_data->tx_end) { | 432 | while (drv_data->tx < drv_data->tx_end) { |
| 433 | write_TDBR(drv_data, (*(u16 *) (drv_data->tx))); | 433 | write_TDBR(drv_data, (*(u16 *) (drv_data->tx))); |
| 434 | while ((read_STAT(drv_data) & BIT_STAT_TXS)) | 434 | while ((read_STAT(drv_data) & BIT_STAT_TXS)) |
| 435 | continue; | 435 | cpu_relax(); |
| 436 | drv_data->tx += 2; | 436 | drv_data->tx += 2; |
| 437 | } | 437 | } |
| 438 | } | 438 | } |
| @@ -443,14 +443,14 @@ static void u16_cs_chg_writer(struct driver_data *drv_data) | |||
| 443 | 443 | ||
| 444 | /* poll for SPI completion before start */ | 444 | /* poll for SPI completion before start */ |
| 445 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) | 445 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) |
| 446 | continue; | 446 | cpu_relax(); |
| 447 | 447 | ||
| 448 | while (drv_data->tx < drv_data->tx_end) { | 448 | while (drv_data->tx < drv_data->tx_end) { |
| 449 | cs_active(drv_data, chip); | 449 | cs_active(drv_data, chip); |
| 450 | 450 | ||
| 451 | write_TDBR(drv_data, (*(u16 *) (drv_data->tx))); | 451 | write_TDBR(drv_data, (*(u16 *) (drv_data->tx))); |
| 452 | while ((read_STAT(drv_data) & BIT_STAT_TXS)) | 452 | while ((read_STAT(drv_data) & BIT_STAT_TXS)) |
| 453 | continue; | 453 | cpu_relax(); |
| 454 | 454 | ||
| 455 | cs_deactive(drv_data, chip); | 455 | cs_deactive(drv_data, chip); |
| 456 | 456 | ||
| @@ -465,7 +465,7 @@ static void u16_reader(struct driver_data *drv_data) | |||
| 465 | 465 | ||
| 466 | /* poll for SPI completion before start */ | 466 | /* poll for SPI completion before start */ |
| 467 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) | 467 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) |
| 468 | continue; | 468 | cpu_relax(); |
| 469 | 469 | ||
| 470 | /* clear TDBR buffer before read(else it will be shifted out) */ | 470 | /* clear TDBR buffer before read(else it will be shifted out) */ |
| 471 | write_TDBR(drv_data, 0xFFFF); | 471 | write_TDBR(drv_data, 0xFFFF); |
| @@ -474,13 +474,13 @@ static void u16_reader(struct driver_data *drv_data) | |||
| 474 | 474 | ||
| 475 | while (drv_data->rx < (drv_data->rx_end - 2)) { | 475 | while (drv_data->rx < (drv_data->rx_end - 2)) { |
| 476 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) | 476 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) |
| 477 | continue; | 477 | cpu_relax(); |
| 478 | *(u16 *) (drv_data->rx) = read_RDBR(drv_data); | 478 | *(u16 *) (drv_data->rx) = read_RDBR(drv_data); |
| 479 | drv_data->rx += 2; | 479 | drv_data->rx += 2; |
| 480 | } | 480 | } |
| 481 | 481 | ||
| 482 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) | 482 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) |
| 483 | continue; | 483 | cpu_relax(); |
| 484 | *(u16 *) (drv_data->rx) = read_SHAW(drv_data); | 484 | *(u16 *) (drv_data->rx) = read_SHAW(drv_data); |
| 485 | drv_data->rx += 2; | 485 | drv_data->rx += 2; |
| 486 | } | 486 | } |
| @@ -491,7 +491,7 @@ static void u16_cs_chg_reader(struct driver_data *drv_data) | |||
| 491 | 491 | ||
| 492 | /* poll for SPI completion before start */ | 492 | /* poll for SPI completion before start */ |
| 493 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) | 493 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) |
| 494 | continue; | 494 | cpu_relax(); |
| 495 | 495 | ||
| 496 | /* clear TDBR buffer before read(else it will be shifted out) */ | 496 | /* clear TDBR buffer before read(else it will be shifted out) */ |
| 497 | write_TDBR(drv_data, 0xFFFF); | 497 | write_TDBR(drv_data, 0xFFFF); |
| @@ -503,7 +503,7 @@ static void u16_cs_chg_reader(struct driver_data *drv_data) | |||
| 503 | cs_deactive(drv_data, chip); | 503 | cs_deactive(drv_data, chip); |
| 504 | 504 | ||
| 505 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) | 505 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) |
| 506 | continue; | 506 | cpu_relax(); |
| 507 | cs_active(drv_data, chip); | 507 | cs_active(drv_data, chip); |
| 508 | *(u16 *) (drv_data->rx) = read_RDBR(drv_data); | 508 | *(u16 *) (drv_data->rx) = read_RDBR(drv_data); |
| 509 | drv_data->rx += 2; | 509 | drv_data->rx += 2; |
| @@ -511,7 +511,7 @@ static void u16_cs_chg_reader(struct driver_data *drv_data) | |||
| 511 | cs_deactive(drv_data, chip); | 511 | cs_deactive(drv_data, chip); |
| 512 | 512 | ||
| 513 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) | 513 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) |
| 514 | continue; | 514 | cpu_relax(); |
| 515 | *(u16 *) (drv_data->rx) = read_SHAW(drv_data); | 515 | *(u16 *) (drv_data->rx) = read_SHAW(drv_data); |
| 516 | drv_data->rx += 2; | 516 | drv_data->rx += 2; |
| 517 | } | 517 | } |
| @@ -520,15 +520,15 @@ static void u16_duplex(struct driver_data *drv_data) | |||
| 520 | { | 520 | { |
| 521 | /* poll for SPI completion before start */ | 521 | /* poll for SPI completion before start */ |
| 522 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) | 522 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) |
| 523 | continue; | 523 | cpu_relax(); |
| 524 | 524 | ||
| 525 | /* in duplex mode, clk is triggered by writing of TDBR */ | 525 | /* in duplex mode, clk is triggered by writing of TDBR */ |
| 526 | while (drv_data->tx < drv_data->tx_end) { | 526 | while (drv_data->tx < drv_data->tx_end) { |
| 527 | write_TDBR(drv_data, (*(u16 *) (drv_data->tx))); | 527 | write_TDBR(drv_data, (*(u16 *) (drv_data->tx))); |
| 528 | while (read_STAT(drv_data) & BIT_STAT_TXS) | 528 | while (read_STAT(drv_data) & BIT_STAT_TXS) |
| 529 | continue; | 529 | cpu_relax(); |
| 530 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) | 530 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) |
| 531 | continue; | 531 | cpu_relax(); |
| 532 | *(u16 *) (drv_data->rx) = read_RDBR(drv_data); | 532 | *(u16 *) (drv_data->rx) = read_RDBR(drv_data); |
| 533 | drv_data->rx += 2; | 533 | drv_data->rx += 2; |
| 534 | drv_data->tx += 2; | 534 | drv_data->tx += 2; |
| @@ -541,16 +541,16 @@ static void u16_cs_chg_duplex(struct driver_data *drv_data) | |||
| 541 | 541 | ||
| 542 | /* poll for SPI completion before start */ | 542 | /* poll for SPI completion before start */ |
| 543 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) | 543 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) |
| 544 | continue; | 544 | cpu_relax(); |
| 545 | 545 | ||
| 546 | while (drv_data->tx < drv_data->tx_end) { | 546 | while (drv_data->tx < drv_data->tx_end) { |
| 547 | cs_active(drv_data, chip); | 547 | cs_active(drv_data, chip); |
| 548 | 548 | ||
| 549 | write_TDBR(drv_data, (*(u16 *) (drv_data->tx))); | 549 | write_TDBR(drv_data, (*(u16 *) (drv_data->tx))); |
| 550 | while (read_STAT(drv_data) & BIT_STAT_TXS) | 550 | while (read_STAT(drv_data) & BIT_STAT_TXS) |
| 551 | continue; | 551 | cpu_relax(); |
| 552 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) | 552 | while (!(read_STAT(drv_data) & BIT_STAT_RXS)) |
| 553 | continue; | 553 | cpu_relax(); |
| 554 | *(u16 *) (drv_data->rx) = read_RDBR(drv_data); | 554 | *(u16 *) (drv_data->rx) = read_RDBR(drv_data); |
| 555 | 555 | ||
| 556 | cs_deactive(drv_data, chip); | 556 | cs_deactive(drv_data, chip); |
| @@ -624,7 +624,7 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id) | |||
| 624 | 624 | ||
| 625 | /* Wait for DMA to complete */ | 625 | /* Wait for DMA to complete */ |
| 626 | while (get_dma_curr_irqstat(drv_data->dma_channel) & DMA_RUN) | 626 | while (get_dma_curr_irqstat(drv_data->dma_channel) & DMA_RUN) |
| 627 | continue; | 627 | cpu_relax(); |
| 628 | 628 | ||
| 629 | /* | 629 | /* |
| 630 | * wait for the last transaction shifted out. HRM states: | 630 | * wait for the last transaction shifted out. HRM states: |
| @@ -635,11 +635,11 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id) | |||
| 635 | if (drv_data->tx != NULL) { | 635 | if (drv_data->tx != NULL) { |
| 636 | while ((read_STAT(drv_data) & TXS) || | 636 | while ((read_STAT(drv_data) & TXS) || |
| 637 | (read_STAT(drv_data) & TXS)) | 637 | (read_STAT(drv_data) & TXS)) |
| 638 | continue; | 638 | cpu_relax(); |
| 639 | } | 639 | } |
| 640 | 640 | ||
| 641 | while (!(read_STAT(drv_data) & SPIF)) | 641 | while (!(read_STAT(drv_data) & SPIF)) |
| 642 | continue; | 642 | cpu_relax(); |
| 643 | 643 | ||
| 644 | msg->actual_length += drv_data->len_in_bytes; | 644 | msg->actual_length += drv_data->len_in_bytes; |
| 645 | 645 | ||
| @@ -783,7 +783,7 @@ static void pump_transfers(unsigned long data) | |||
| 783 | 783 | ||
| 784 | /* poll for SPI completion before start */ | 784 | /* poll for SPI completion before start */ |
| 785 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) | 785 | while (!(read_STAT(drv_data) & BIT_STAT_SPIF)) |
| 786 | continue; | 786 | cpu_relax(); |
| 787 | 787 | ||
| 788 | /* dirty hack for autobuffer DMA mode */ | 788 | /* dirty hack for autobuffer DMA mode */ |
| 789 | if (drv_data->tx_dma == 0xFFFF) { | 789 | if (drv_data->tx_dma == 0xFFFF) { |
