2019-06-04 10:11:33 +02:00
// SPDX-License-Identifier: GPL-2.0-only
2017-05-17 17:56:40 -07:00
/*
* Copyright © 2017 Broadcom
*/
# include <linux/seq_file.h>
2019-07-16 08:42:04 +02:00
2017-05-17 17:56:40 -07:00
# include <drm/drm_debugfs.h>
2019-07-16 08:42:04 +02:00
# include <drm/drm_file.h>
2017-05-17 17:56:40 -07:00
# include "pl111_drm.h"
# define REGDEF(reg) { reg, #reg }
static const struct {
u32 reg ;
const char * name ;
} pl111_reg_defs [ ] = {
REGDEF ( CLCD_TIM0 ) ,
REGDEF ( CLCD_TIM1 ) ,
REGDEF ( CLCD_TIM2 ) ,
REGDEF ( CLCD_TIM3 ) ,
REGDEF ( CLCD_UBAS ) ,
2017-09-08 14:47:04 +02:00
REGDEF ( CLCD_LBAS ) ,
2017-05-17 17:56:40 -07:00
REGDEF ( CLCD_PL111_CNTL ) ,
REGDEF ( CLCD_PL111_IENB ) ,
2017-09-08 14:47:04 +02:00
REGDEF ( CLCD_PL111_RIS ) ,
REGDEF ( CLCD_PL111_MIS ) ,
REGDEF ( CLCD_PL111_ICR ) ,
REGDEF ( CLCD_PL111_UCUR ) ,
REGDEF ( CLCD_PL111_LCUR ) ,
2017-05-17 17:56:40 -07:00
} ;
int pl111_debugfs_regs ( struct seq_file * m , void * unused )
{
struct drm_info_node * node = ( struct drm_info_node * ) m - > private ;
struct drm_device * dev = node - > minor - > dev ;
struct pl111_drm_dev_private * priv = dev - > dev_private ;
int i ;
for ( i = 0 ; i < ARRAY_SIZE ( pl111_reg_defs ) ; i + + ) {
seq_printf ( m , " %s (0x%04x): 0x%08x \n " ,
pl111_reg_defs [ i ] . name , pl111_reg_defs [ i ] . reg ,
readl ( priv - > regs + pl111_reg_defs [ i ] . reg ) ) ;
}
return 0 ;
}
static const struct drm_info_list pl111_debugfs_list [ ] = {
{ " regs " , pl111_debugfs_regs , 0 } ,
} ;
2020-03-10 16:31:21 +03:00
void
2017-05-17 17:56:40 -07:00
pl111_debugfs_init ( struct drm_minor * minor )
{
2020-03-10 16:31:16 +03:00
drm_debugfs_create_files ( pl111_debugfs_list ,
ARRAY_SIZE ( pl111_debugfs_list ) ,
minor - > debugfs_root , minor ) ;
2017-05-17 17:56:40 -07:00
}