@@ -93,6 +93,7 @@ enum imx_mu_type {
93
93
struct imx_mu_dcfg {
94
94
int (* tx )(struct imx_mu_priv * priv , struct imx_mu_con_priv * cp , void * data );
95
95
int (* rx )(struct imx_mu_priv * priv , struct imx_mu_con_priv * cp );
96
+ int (* rxdb )(struct imx_mu_priv * priv , struct imx_mu_con_priv * cp );
96
97
void (* init )(struct imx_mu_priv * priv );
97
98
enum imx_mu_type type ;
98
99
u32 xTR ; /* Transmit Register0 */
@@ -179,6 +180,16 @@ static int imx_mu_generic_rx(struct imx_mu_priv *priv,
179
180
return 0 ;
180
181
}
181
182
183
+ static int imx_mu_generic_rxdb (struct imx_mu_priv * priv ,
184
+ struct imx_mu_con_priv * cp )
185
+ {
186
+ imx_mu_write (priv , IMX_MU_xSR_GIPn (priv -> dcfg -> type , cp -> idx ),
187
+ priv -> dcfg -> xSR [IMX_MU_GSR ]);
188
+ mbox_chan_received_data (cp -> chan , NULL );
189
+
190
+ return 0 ;
191
+ }
192
+
182
193
static int imx_mu_specific_tx (struct imx_mu_priv * priv , struct imx_mu_con_priv * cp , void * data )
183
194
{
184
195
u32 * arg = data ;
@@ -329,9 +340,7 @@ static irqreturn_t imx_mu_isr(int irq, void *p)
329
340
priv -> dcfg -> rx (priv , cp );
330
341
} else if ((val == IMX_MU_xSR_GIPn (priv -> dcfg -> type , cp -> idx )) &&
331
342
(cp -> type == IMX_MU_TYPE_RXDB )) {
332
- imx_mu_write (priv , IMX_MU_xSR_GIPn (priv -> dcfg -> type , cp -> idx ),
333
- priv -> dcfg -> xSR [IMX_MU_GSR ]);
334
- mbox_chan_received_data (chan , NULL );
343
+ priv -> dcfg -> rxdb (priv , cp );
335
344
} else {
336
345
dev_warn_ratelimited (priv -> dev , "Not handled interrupt\n" );
337
346
return IRQ_NONE ;
@@ -639,6 +648,7 @@ static int imx_mu_remove(struct platform_device *pdev)
639
648
static const struct imx_mu_dcfg imx_mu_cfg_imx6sx = {
640
649
.tx = imx_mu_generic_tx ,
641
650
.rx = imx_mu_generic_rx ,
651
+ .rxdb = imx_mu_generic_rxdb ,
642
652
.init = imx_mu_init_generic ,
643
653
.xTR = 0x0 ,
644
654
.xRR = 0x10 ,
@@ -649,6 +659,7 @@ static const struct imx_mu_dcfg imx_mu_cfg_imx6sx = {
649
659
static const struct imx_mu_dcfg imx_mu_cfg_imx7ulp = {
650
660
.tx = imx_mu_generic_tx ,
651
661
.rx = imx_mu_generic_rx ,
662
+ .rxdb = imx_mu_generic_rxdb ,
652
663
.init = imx_mu_init_generic ,
653
664
.xTR = 0x20 ,
654
665
.xRR = 0x40 ,
@@ -659,7 +670,9 @@ static const struct imx_mu_dcfg imx_mu_cfg_imx7ulp = {
659
670
static const struct imx_mu_dcfg imx_mu_cfg_imx8ulp = {
660
671
.tx = imx_mu_generic_tx ,
661
672
.rx = imx_mu_generic_rx ,
673
+ .rxdb = imx_mu_generic_rxdb ,
662
674
.init = imx_mu_init_generic ,
675
+ .rxdb = imx_mu_generic_rxdb ,
663
676
.type = IMX_MU_V2 ,
664
677
.xTR = 0x200 ,
665
678
.xRR = 0x280 ,
@@ -682,6 +695,7 @@ static const struct imx_mu_dcfg imx_mu_cfg_imx8_scu = {
682
695
.tx = imx_mu_specific_tx ,
683
696
.rx = imx_mu_specific_rx ,
684
697
.init = imx_mu_init_specific ,
698
+ .rxdb = imx_mu_generic_rxdb ,
685
699
.xTR = 0x0 ,
686
700
.xRR = 0x10 ,
687
701
.xSR = {0x20 , 0x20 , 0x20 , 0x20 },
0 commit comments