hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/ntb/hw/idt/ntb_hw_idt.h
....@@ -4,7 +4,7 @@
44 *
55 * GPL LICENSE SUMMARY
66 *
7
- * Copyright (C) 2016 T-Platforms All Rights Reserved.
7
+ * Copyright (C) 2016-2018 T-Platforms JSC All Rights Reserved.
88 *
99 * This program is free software; you can redistribute it and/or modify it
1010 * under the terms and conditions of the GNU General Public License,
....@@ -47,8 +47,8 @@
4747 #include <linux/pci_ids.h>
4848 #include <linux/interrupt.h>
4949 #include <linux/spinlock.h>
50
+#include <linux/mutex.h>
5051 #include <linux/ntb.h>
51
-
5252
5353 /*
5454 * Macro is used to create the struct pci_device_id that matches
....@@ -688,15 +688,14 @@
688688 * @IDT_NTINTMSK_DBELL: Doorbell interrupt mask bit
689689 * @IDT_NTINTMSK_SEVENT: Switch Event interrupt mask bit
690690 * @IDT_NTINTMSK_TMPSENSOR: Temperature sensor interrupt mask bit
691
- * @IDT_NTINTMSK_ALL: All the useful interrupts mask
691
+ * @IDT_NTINTMSK_ALL: NTB-related interrupts mask
692692 */
693693 #define IDT_NTINTMSK_MSG 0x00000001U
694694 #define IDT_NTINTMSK_DBELL 0x00000002U
695695 #define IDT_NTINTMSK_SEVENT 0x00000008U
696696 #define IDT_NTINTMSK_TMPSENSOR 0x00000080U
697697 #define IDT_NTINTMSK_ALL \
698
- (IDT_NTINTMSK_MSG | IDT_NTINTMSK_DBELL | \
699
- IDT_NTINTMSK_SEVENT | IDT_NTINTMSK_TMPSENSOR)
698
+ (IDT_NTINTMSK_MSG | IDT_NTINTMSK_DBELL | IDT_NTINTMSK_SEVENT)
700699
701700 /*
702701 * NTGSIGNAL register fields related constants
....@@ -886,12 +885,60 @@
886885 #define IDT_SWPxMSGCTL_PART_FLD 4
887886
888887 /*
888
+ * TMPCTL register fields related constants
889
+ * @IDT_TMPCTL_LTH_MASK: Low temperature threshold field mask
890
+ * @IDT_TMPCTL_LTH_FLD: Low temperature threshold field offset
891
+ * @IDT_TMPCTL_MTH_MASK: Middle temperature threshold field mask
892
+ * @IDT_TMPCTL_MTH_FLD: Middle temperature threshold field offset
893
+ * @IDT_TMPCTL_HTH_MASK: High temperature threshold field mask
894
+ * @IDT_TMPCTL_HTH_FLD: High temperature threshold field offset
895
+ * @IDT_TMPCTL_PDOWN: Temperature sensor power down
896
+ */
897
+#define IDT_TMPCTL_LTH_MASK 0x000000FFU
898
+#define IDT_TMPCTL_LTH_FLD 0
899
+#define IDT_TMPCTL_MTH_MASK 0x0000FF00U
900
+#define IDT_TMPCTL_MTH_FLD 8
901
+#define IDT_TMPCTL_HTH_MASK 0x00FF0000U
902
+#define IDT_TMPCTL_HTH_FLD 16
903
+#define IDT_TMPCTL_PDOWN 0x80000000U
904
+
905
+/*
889906 * TMPSTS register fields related constants
890907 * @IDT_TMPSTS_TEMP_MASK: Current temperature field mask
891908 * @IDT_TMPSTS_TEMP_FLD: Current temperature field offset
909
+ * @IDT_TMPSTS_LTEMP_MASK: Lowest temperature field mask
910
+ * @IDT_TMPSTS_LTEMP_FLD: Lowest temperature field offset
911
+ * @IDT_TMPSTS_HTEMP_MASK: Highest temperature field mask
912
+ * @IDT_TMPSTS_HTEMP_FLD: Highest temperature field offset
892913 */
893914 #define IDT_TMPSTS_TEMP_MASK 0x000000FFU
894915 #define IDT_TMPSTS_TEMP_FLD 0
916
+#define IDT_TMPSTS_LTEMP_MASK 0x0000FF00U
917
+#define IDT_TMPSTS_LTEMP_FLD 8
918
+#define IDT_TMPSTS_HTEMP_MASK 0x00FF0000U
919
+#define IDT_TMPSTS_HTEMP_FLD 16
920
+
921
+/*
922
+ * TMPALARM register fields related constants
923
+ * @IDT_TMPALARM_LTEMP_MASK: Lowest temperature field mask
924
+ * @IDT_TMPALARM_LTEMP_FLD: Lowest temperature field offset
925
+ * @IDT_TMPALARM_HTEMP_MASK: Highest temperature field mask
926
+ * @IDT_TMPALARM_HTEMP_FLD: Highest temperature field offset
927
+ * @IDT_TMPALARM_IRQ_MASK: Alarm IRQ status mask
928
+ */
929
+#define IDT_TMPALARM_LTEMP_MASK 0x0000FF00U
930
+#define IDT_TMPALARM_LTEMP_FLD 8
931
+#define IDT_TMPALARM_HTEMP_MASK 0x00FF0000U
932
+#define IDT_TMPALARM_HTEMP_FLD 16
933
+#define IDT_TMPALARM_IRQ_MASK 0x3F000000U
934
+
935
+/*
936
+ * TMPADJ register fields related constants
937
+ * @IDT_TMPADJ_OFFSET_MASK: Temperature value offset field mask
938
+ * @IDT_TMPADJ_OFFSET_FLD: Temperature value offset field offset
939
+ */
940
+#define IDT_TMPADJ_OFFSET_MASK 0x000000FFU
941
+#define IDT_TMPADJ_OFFSET_FLD 0
895942
896943 /*
897944 * Helper macro to get/set the corresponding field value
....@@ -949,6 +996,32 @@
949996 #define IDT_PCIE_REGSIZE 4
950997 #define IDT_TRANS_ALIGN 4
951998 #define IDT_DIR_SIZE_ALIGN 1
999
+
1000
+/*
1001
+ * IDT PCIe-switch temperature sensor value limits
1002
+ * @IDT_TEMP_MIN_MDEG: Minimal integer value of temperature
1003
+ * @IDT_TEMP_MAX_MDEG: Maximal integer value of temperature
1004
+ * @IDT_TEMP_MIN_OFFSET:Minimal integer value of temperature offset
1005
+ * @IDT_TEMP_MAX_OFFSET:Maximal integer value of temperature offset
1006
+ */
1007
+#define IDT_TEMP_MIN_MDEG 0
1008
+#define IDT_TEMP_MAX_MDEG 127500
1009
+#define IDT_TEMP_MIN_OFFSET -64000
1010
+#define IDT_TEMP_MAX_OFFSET 63500
1011
+
1012
+/*
1013
+ * Temperature sensor values enumeration
1014
+ * @IDT_TEMP_CUR: Current temperature
1015
+ * @IDT_TEMP_LOW: Lowest historical temperature
1016
+ * @IDT_TEMP_HIGH: Highest historical temperature
1017
+ * @IDT_TEMP_OFFSET: Current temperature offset
1018
+ */
1019
+enum idt_temp_val {
1020
+ IDT_TEMP_CUR,
1021
+ IDT_TEMP_LOW,
1022
+ IDT_TEMP_HIGH,
1023
+ IDT_TEMP_OFFSET
1024
+};
9521025
9531026 /*
9541027 * IDT Memory Windows type. Depending on the device settings, IDT supports
....@@ -1044,6 +1117,8 @@
10441117 * @msg_mask_lock: Message mask register lock
10451118 * @gasa_lock: GASA registers access lock
10461119 *
1120
+ * @hwmon_mtx: Temperature sensor interface update mutex
1121
+ *
10471122 * @dbgfs_info: DebugFS info node
10481123 */
10491124 struct idt_ntb_dev {
....@@ -1071,6 +1146,8 @@
10711146 spinlock_t msg_mask_lock;
10721147 spinlock_t gasa_lock;
10731148
1149
+ struct mutex hwmon_mtx;
1150
+
10741151 struct dentry *dbgfs_info;
10751152 };
10761153 #define to_ndev_ntb(__ntb) container_of(__ntb, struct idt_ntb_dev, ntb)