Răsfoiți Sursa

qcacmn: CFR buffer length calculation for QCN6432

For QCN6432, below factors are taken into account to
calculate the maximum CFR buffer length:

max number of MU users supported = 8
uCode header = (14 + (max number of MU users supported *2) )*4
             = 120 Bytes
Max CVMEM Banks available = 4
Each bank is capable of storing 8KB
Total CVMEM bank size = 4 * 8 = 32KB
Max allowed mode is 320M
Max number of actual tones supported = 1001

Max CFR data len = 1001 * Max NSS * Max Chains * Size of tone
                 = 1001 * 4 * 2 * 4
		 = 32032 Bytes

Max CFR buffer length = Max CFR data len + ucode header
                      = 32032 + 120
		      = 32152 Bytes
CRs-Fixed: 3623934
Change-Id: If859c3a861a5b5698b69ee6afe4d3b8d0b048812
Adwait Nayak 1 an în urmă
părinte
comite
ccbe42985c
1 a modificat fișierele cu 28 adăugiri și 8 ștergeri
  1. 28 8
      target_if/cfr/inc/target_if_cfr_enh.h

+ 28 - 8
target_if/cfr/inc/target_if_cfr_enh.h

@@ -131,22 +131,42 @@
 
 #define STREAMFS_NUM_SUBBUF_SPRUCE 255
 
-/* Max 4 users in MU case for QCN6432 */
-#define QCN6432_CFR_MU_USERS 4
-
-#define QCN6432_MAX_HEADER_LENGTH_WORDS 22
-
-#define QCN6432_MAX_DATA_LENGTH_BYTES 8192
+/* Max 8 users in MU case for QCN6432 */
+#define QCN6432_CFR_MU_USERS 8
+
+/* uCode header = (14 + (max number of MU users supported *2))*4 Bytes */
+#define QCN6432_MAX_HEADER_LENGTH_WORDS 30
+
+/* Maximum number of tones that can be uploaded is 1001
+ * Max data len = Num tones per stream per chain * max chains
+ * max nss * size of tone
+ *              = 1001 * 2 * 4 * 4 = 32032 Bytes
+ * Total length = Max data len + ucode header
+ *              = 32032 + 120 = 32152 Bytes
+ */
+#define QCN6432_MAX_DATA_LENGTH_BYTES 32152
 
 /* Max size :
- * sizeof(csi_cfr_header) + 88 bytes(cfr header) + 8192 bytes(cfr payload)
+ * sizeof(csi_cfr_header) + 120 bytes(ucode header) + 32152 bytes(cfr payload)
  */
 #define STREAMFS_MAX_SUBBUF_QCN6432 \
 	(sizeof(struct csi_cfr_header) + \
 	 (QCN6432_MAX_HEADER_LENGTH_WORDS * 4) + \
 	 QCN6432_MAX_DATA_LENGTH_BYTES)
 
-#define STREAMFS_NUM_SUBBUF_QCN6432 255
+/* The number of buffers allotted by two IPC rings is 103.
+ * Hence, the relayFS should be have more than 103 buffers.
+ * Considering the maximum size of CFR log size to be 8MB
+ * and which should be multiple of relayFS buffer pool memory.
+ *
+ * Size of a relayFS buffer = csi metadata + QCN6432_MAX_DATA_LENGTH_BYTES
+ *                          = 310 + 32152
+ *                          = 32462 Bytes
+ *
+ * Num of streamfs sub buffers = 4MB / 32462B
+ *                             = 128 (approax)
+ */
+#define STREAMFS_NUM_SUBBUF_QCN6432 128
 
 /* Max 4 users in MU case for QCA5332 */
 #define QCA5332_CFR_MU_USERS 4