hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/drivers/ntb/hw/intel/ntb_hw_gen3.c
....@@ -415,9 +415,8 @@
415415 return ret;
416416 }
417417
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)
421420 {
422421 struct intel_ntb_dev *ndev;
423422 u32 ntb_ctl;
....@@ -532,7 +531,38 @@
532531 return 0;
533532 }
534533
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)
536566 {
537567 struct intel_ntb_dev *ndev = ntb_ndev(ntb);
538568 int bit;
....@@ -550,7 +580,7 @@
550580 return 0;
551581 }
552582
553
-static u64 intel_ntb3_db_read(struct ntb_dev *ntb)
583
+u64 intel_ntb3_db_read(struct ntb_dev *ntb)
554584 {
555585 struct intel_ntb_dev *ndev = ntb_ndev(ntb);
556586
....@@ -559,7 +589,7 @@
559589 ndev->self_reg->db_clear);
560590 }
561591
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)
563593 {
564594 struct intel_ntb_dev *ndev = ntb_ndev(ntb);
565595
....@@ -584,7 +614,7 @@
584614 .db_clear = intel_ntb3_db_clear,
585615 .db_set_mask = intel_ntb_db_set_mask,
586616 .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,
588618 .peer_db_set = intel_ntb3_peer_db_set,
589619 .spad_is_unsafe = intel_ntb_spad_is_unsafe,
590620 .spad_count = intel_ntb_spad_count,