.. | .. |
---|
415 | 415 | return ret; |
---|
416 | 416 | } |
---|
417 | 417 | |
---|
418 | | -static int intel_ntb3_link_enable(struct ntb_dev *ntb, |
---|
419 | | - enum ntb_speed max_speed, |
---|
420 | | - enum ntb_width max_width) |
---|
| 418 | +int intel_ntb3_link_enable(struct ntb_dev *ntb, enum ntb_speed max_speed, |
---|
| 419 | + enum ntb_width max_width) |
---|
421 | 420 | { |
---|
422 | 421 | struct intel_ntb_dev *ndev; |
---|
423 | 422 | u32 ntb_ctl; |
---|
.. | .. |
---|
532 | 531 | return 0; |
---|
533 | 532 | } |
---|
534 | 533 | |
---|
535 | | -static int intel_ntb3_peer_db_set(struct ntb_dev *ntb, u64 db_bits) |
---|
| 534 | +int intel_ntb3_peer_db_addr(struct ntb_dev *ntb, phys_addr_t *db_addr, |
---|
| 535 | + resource_size_t *db_size, |
---|
| 536 | + u64 *db_data, int db_bit) |
---|
| 537 | +{ |
---|
| 538 | + phys_addr_t db_addr_base; |
---|
| 539 | + struct intel_ntb_dev *ndev = ntb_ndev(ntb); |
---|
| 540 | + |
---|
| 541 | + if (unlikely(db_bit >= BITS_PER_LONG_LONG)) |
---|
| 542 | + return -EINVAL; |
---|
| 543 | + |
---|
| 544 | + if (unlikely(BIT_ULL(db_bit) & ~ntb_ndev(ntb)->db_valid_mask)) |
---|
| 545 | + return -EINVAL; |
---|
| 546 | + |
---|
| 547 | + ndev_db_addr(ndev, &db_addr_base, db_size, ndev->peer_addr, |
---|
| 548 | + ndev->peer_reg->db_bell); |
---|
| 549 | + |
---|
| 550 | + if (db_addr) { |
---|
| 551 | + *db_addr = db_addr_base + (db_bit * 4); |
---|
| 552 | + dev_dbg(&ndev->ntb.pdev->dev, "Peer db addr %llx db bit %d\n", |
---|
| 553 | + *db_addr, db_bit); |
---|
| 554 | + } |
---|
| 555 | + |
---|
| 556 | + if (db_data) { |
---|
| 557 | + *db_data = 1; |
---|
| 558 | + dev_dbg(&ndev->ntb.pdev->dev, "Peer db data %llx db bit %d\n", |
---|
| 559 | + *db_data, db_bit); |
---|
| 560 | + } |
---|
| 561 | + |
---|
| 562 | + return 0; |
---|
| 563 | +} |
---|
| 564 | + |
---|
| 565 | +int intel_ntb3_peer_db_set(struct ntb_dev *ntb, u64 db_bits) |
---|
536 | 566 | { |
---|
537 | 567 | struct intel_ntb_dev *ndev = ntb_ndev(ntb); |
---|
538 | 568 | int bit; |
---|
.. | .. |
---|
550 | 580 | return 0; |
---|
551 | 581 | } |
---|
552 | 582 | |
---|
553 | | -static u64 intel_ntb3_db_read(struct ntb_dev *ntb) |
---|
| 583 | +u64 intel_ntb3_db_read(struct ntb_dev *ntb) |
---|
554 | 584 | { |
---|
555 | 585 | struct intel_ntb_dev *ndev = ntb_ndev(ntb); |
---|
556 | 586 | |
---|
.. | .. |
---|
559 | 589 | ndev->self_reg->db_clear); |
---|
560 | 590 | } |
---|
561 | 591 | |
---|
562 | | -static int intel_ntb3_db_clear(struct ntb_dev *ntb, u64 db_bits) |
---|
| 592 | +int intel_ntb3_db_clear(struct ntb_dev *ntb, u64 db_bits) |
---|
563 | 593 | { |
---|
564 | 594 | struct intel_ntb_dev *ndev = ntb_ndev(ntb); |
---|
565 | 595 | |
---|
.. | .. |
---|
584 | 614 | .db_clear = intel_ntb3_db_clear, |
---|
585 | 615 | .db_set_mask = intel_ntb_db_set_mask, |
---|
586 | 616 | .db_clear_mask = intel_ntb_db_clear_mask, |
---|
587 | | - .peer_db_addr = intel_ntb_peer_db_addr, |
---|
| 617 | + .peer_db_addr = intel_ntb3_peer_db_addr, |
---|
588 | 618 | .peer_db_set = intel_ntb3_peer_db_set, |
---|
589 | 619 | .spad_is_unsafe = intel_ntb_spad_is_unsafe, |
---|
590 | 620 | .spad_count = intel_ntb_spad_count, |
---|