6
6
*/
7
7
8
8
#include <crypto/hash.h>
9
+ #include <linux/debugfs.h>
9
10
#include <linux/crypto.h>
10
11
#include <linux/delay.h>
11
12
#include <linux/firmware.h>
@@ -91,6 +92,9 @@ enum rp2040_gbdg_fixed_size_commands {
91
92
struct rp2040_gbdg {
92
93
struct spi_controller * controller ;
93
94
95
+ struct dentry * debugfs ;
96
+ size_t transfer_progress ;
97
+
94
98
struct i2c_client * client ;
95
99
struct crypto_shash * shash ;
96
100
struct shash_desc * shash_desc ;
@@ -702,6 +706,7 @@ static int rp2040_gbdg_transfer_cached(struct rp2040_gbdg *priv_data,
702
706
return 0 ;
703
707
}
704
708
709
+ priv_data -> transfer_progress = 0 ;
705
710
while (length ) {
706
711
unsigned int xfer = min (length , RP2040_GBDG_BLOCK_SIZE );
707
712
@@ -710,7 +715,9 @@ static int rp2040_gbdg_transfer_cached(struct rp2040_gbdg *priv_data,
710
715
return ret ;
711
716
length -= xfer ;
712
717
data += xfer ;
718
+ priv_data -> transfer_progress += xfer ;
713
719
}
720
+ priv_data -> transfer_progress = 0 ;
714
721
715
722
return 0 ;
716
723
}
@@ -1016,13 +1023,24 @@ static int rp2040_gbdg_power_on(struct rp2040_gbdg *rp2040_gbdg)
1016
1023
return 0 ;
1017
1024
}
1018
1025
1026
+ static int transfer_progress_show (struct seq_file * s , void * data )
1027
+ {
1028
+ struct rp2040_gbdg * rp2040_gbdg = s -> private ;
1029
+
1030
+ seq_printf (s , "%zu\n" , rp2040_gbdg -> transfer_progress );
1031
+ return 0 ;
1032
+ }
1033
+
1034
+ DEFINE_SHOW_ATTRIBUTE (transfer_progress );
1035
+
1019
1036
static int rp2040_gbdg_probe (struct i2c_client * client )
1020
1037
{
1021
1038
struct rp2040_gbdg_device_info info ;
1022
1039
struct spi_controller * controller ;
1023
1040
struct device * dev = & client -> dev ;
1024
1041
struct rp2040_gbdg * rp2040_gbdg ;
1025
1042
struct device_node * np ;
1043
+ char debugfs_name [128 ];
1026
1044
int ret ;
1027
1045
1028
1046
np = dev -> of_node ;
@@ -1136,6 +1154,12 @@ static int rp2040_gbdg_probe(struct i2c_client *client)
1136
1154
1137
1155
rp2040_gbdg_parse_dt (rp2040_gbdg );
1138
1156
1157
+ snprintf (debugfs_name , sizeof (debugfs_name ), "rp2040-spi:%s" ,
1158
+ dev_name (dev ));
1159
+ rp2040_gbdg -> debugfs = debugfs_create_dir (debugfs_name , NULL );
1160
+ debugfs_create_file ("transfer_progress" , 0444 , rp2040_gbdg -> debugfs ,
1161
+ rp2040_gbdg , & transfer_progress_fops );
1162
+
1139
1163
pm_runtime_mark_last_busy (dev );
1140
1164
pm_runtime_put_autosuspend (dev );
1141
1165
0 commit comments