2525
2626#define DEVICE_NAME "aspeed-lpc-snoop"
2727
28- #define NUM_SNOOP_CHANNELS 2
2928#define SNOOP_FIFO_SIZE 2048
3029
3130#define HICR5 0x80
@@ -57,6 +56,12 @@ struct aspeed_lpc_snoop_model_data {
5756 unsigned int has_hicrb_ensnp ;
5857};
5958
59+ enum aspeed_lpc_snoop_index {
60+ ASPEED_LPC_SNOOP_INDEX_0 = 0 ,
61+ ASPEED_LPC_SNOOP_INDEX_1 = 1 ,
62+ ASPEED_LPC_SNOOP_INDEX_MAX = ASPEED_LPC_SNOOP_INDEX_1 ,
63+ };
64+
6065struct aspeed_lpc_snoop_channel {
6166 bool enabled ;
6267 struct kfifo fifo ;
@@ -68,7 +73,7 @@ struct aspeed_lpc_snoop {
6873 struct regmap * regmap ;
6974 int irq ;
7075 struct clk * clk ;
71- struct aspeed_lpc_snoop_channel chan [NUM_SNOOP_CHANNELS ];
76+ struct aspeed_lpc_snoop_channel chan [ASPEED_LPC_SNOOP_INDEX_MAX + 1 ];
7277};
7378
7479static struct aspeed_lpc_snoop_channel * snoop_file_to_chan (struct file * file )
@@ -182,9 +187,10 @@ static int aspeed_lpc_snoop_config_irq(struct aspeed_lpc_snoop *lpc_snoop,
182187 return 0 ;
183188}
184189
190+ __attribute__((nonnull ))
185191static int aspeed_lpc_enable_snoop (struct aspeed_lpc_snoop * lpc_snoop ,
186192 struct device * dev ,
187- int channel , u16 lpc_port )
193+ enum aspeed_lpc_snoop_index channel , u16 lpc_port )
188194{
189195 const struct aspeed_lpc_snoop_model_data * model_data ;
190196 u32 hicr5_en , snpwadr_mask , snpwadr_shift , hicrb_en ;
@@ -251,8 +257,9 @@ static int aspeed_lpc_enable_snoop(struct aspeed_lpc_snoop *lpc_snoop,
251257 return rc ;
252258}
253259
260+ __attribute__((nonnull ))
254261static void aspeed_lpc_disable_snoop (struct aspeed_lpc_snoop * lpc_snoop ,
255- int channel )
262+ enum aspeed_lpc_snoop_index channel )
256263{
257264 if (!lpc_snoop -> chan [channel ].enabled )
258265 return ;
@@ -331,16 +338,16 @@ static int aspeed_lpc_snoop_probe(struct platform_device *pdev)
331338 if (rc )
332339 goto err ;
333340
334- rc = aspeed_lpc_enable_snoop (lpc_snoop , dev , 0 , port );
341+ rc = aspeed_lpc_enable_snoop (lpc_snoop , dev , ASPEED_LPC_SNOOP_INDEX_0 , port );
335342 if (rc )
336343 goto err ;
337344
338345 /* Configuration of 2nd snoop channel port is optional */
339346 if (of_property_read_u32_index (dev -> of_node , "snoop-ports" ,
340347 1 , & port ) == 0 ) {
341- rc = aspeed_lpc_enable_snoop (lpc_snoop , dev , 1 , port );
348+ rc = aspeed_lpc_enable_snoop (lpc_snoop , dev , ASPEED_LPC_SNOOP_INDEX_1 , port );
342349 if (rc ) {
343- aspeed_lpc_disable_snoop (lpc_snoop , 0 );
350+ aspeed_lpc_disable_snoop (lpc_snoop , ASPEED_LPC_SNOOP_INDEX_0 );
344351 goto err ;
345352 }
346353 }
@@ -358,8 +365,8 @@ static void aspeed_lpc_snoop_remove(struct platform_device *pdev)
358365 struct aspeed_lpc_snoop * lpc_snoop = dev_get_drvdata (& pdev -> dev );
359366
360367 /* Disable both snoop channels */
361- aspeed_lpc_disable_snoop (lpc_snoop , 0 );
362- aspeed_lpc_disable_snoop (lpc_snoop , 1 );
368+ aspeed_lpc_disable_snoop (lpc_snoop , ASPEED_LPC_SNOOP_INDEX_0 );
369+ aspeed_lpc_disable_snoop (lpc_snoop , ASPEED_LPC_SNOOP_INDEX_1 );
363370
364371 clk_disable_unprepare (lpc_snoop -> clk );
365372}
0 commit comments