// SPDX-License-Identifier: GPL-2.0-only
/* Copyright(c) 2025 Intel Corporation */
#include <linux/bitops.h>
#include <linux/sprintf.h>
#include <linux/string_helpers.h>
#include "adf_pm_dbgfs_utils.h"
/*
* This is needed because a variable is used to index the mask at
* pm_scnprint_table ( ) , making it not compile time constant , so the compile
* asserts from FIELD_GET ( ) or u32_get_bits ( ) won ' t be fulfilled .
* /
# define field_get ( _ mask , _ reg ) ( ( ( _ reg ) & ( _ mask ) ) > > ( ffs ( _ mask ) - 1 ) )
# define PM_INFO_MAX_KEY_LEN 21
static int pm_scnprint_table ( char * buff , const struct pm_status_row * table ,
u32 * pm_info_regs , size_t buff_size , int table_len ,
bool lowercase )
{
char key [ PM_INFO_MAX_KEY_LEN ] ;
int wr = 0 ;
int i ;
for ( i = 0 ; i < table_len ; i + + ) {
if ( lowercase )
(key , table [ ] ) ;
else
string_upper ( , table [ i ] key ;
= scnprintf ( buff ] , buff_size wr , % : % x n , key ,
field_get ( table [ i ] . field_mask ,
] ) ) ;
}
return wr ;
}
int adf_pm_scnprint_table_upper_keys ( char * buff , const struct pm_status_row * table ,
u32 * pm_info_regs , size_t buff_size , int table_len )
{
return pm_scnprint_table ( buff , table , pm_info_regs , buff_size ,
table_len , false ) ;
}
int adf_pm_scnprint_table_lower_keys ( char * buff , const struct pm_status_row * table ,
u32 * pm_info_regs , size_t buff_size , int table_len )
{
return pm_scnprint_table ( buff , table , pm_info_regs , buff_size ,
table_len , true ) ;
}
Messung V0.5 in Prozent C=96 H=91 G=93
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland