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
This commit is contained in:
Adwait Nayak
2023-09-11 13:47:54 +05:30
committed by Rahul Choudhary
parent 337f81f1d0
commit ccbe42985c

View File

@@ -131,22 +131,42 @@
#define STREAMFS_NUM_SUBBUF_SPRUCE 255 #define STREAMFS_NUM_SUBBUF_SPRUCE 255
/* Max 4 users in MU case for QCN6432 */ /* Max 8 users in MU case for QCN6432 */
#define QCN6432_CFR_MU_USERS 4 #define QCN6432_CFR_MU_USERS 8
#define QCN6432_MAX_HEADER_LENGTH_WORDS 22 /* uCode header = (14 + (max number of MU users supported *2))*4 Bytes */
#define QCN6432_MAX_HEADER_LENGTH_WORDS 30
#define QCN6432_MAX_DATA_LENGTH_BYTES 8192 /* 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 : /* 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 \ #define STREAMFS_MAX_SUBBUF_QCN6432 \
(sizeof(struct csi_cfr_header) + \ (sizeof(struct csi_cfr_header) + \
(QCN6432_MAX_HEADER_LENGTH_WORDS * 4) + \ (QCN6432_MAX_HEADER_LENGTH_WORDS * 4) + \
QCN6432_MAX_DATA_LENGTH_BYTES) 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 */ /* Max 4 users in MU case for QCA5332 */
#define QCA5332_CFR_MU_USERS 4 #define QCA5332_CFR_MU_USERS 4