@@ -557,6 +557,22 @@ static int geni_i2c_probe(struct platform_device *pdev)
557
557
gi2c -> adap .dev .of_node = dev -> of_node ;
558
558
strlcpy (gi2c -> adap .name , "Geni-I2C" , sizeof (gi2c -> adap .name ));
559
559
560
+ ret = geni_icc_get (& gi2c -> se , "qup-memory" );
561
+ if (ret )
562
+ return ret ;
563
+ /*
564
+ * Set the bus quota for core and cpu to a reasonable value for
565
+ * register access.
566
+ * Set quota for DDR based on bus speed.
567
+ */
568
+ gi2c -> se .icc_paths [GENI_TO_CORE ].avg_bw = GENI_DEFAULT_BW ;
569
+ gi2c -> se .icc_paths [CPU_TO_GENI ].avg_bw = GENI_DEFAULT_BW ;
570
+ gi2c -> se .icc_paths [GENI_TO_DDR ].avg_bw = Bps_to_icc (gi2c -> clk_freq_out );
571
+
572
+ ret = geni_icc_set_bw (& gi2c -> se );
573
+ if (ret )
574
+ return ret ;
575
+
560
576
ret = geni_se_resources_on (& gi2c -> se );
561
577
if (ret ) {
562
578
dev_err (dev , "Error turning on resources %d\n" , ret );
@@ -579,6 +595,10 @@ static int geni_i2c_probe(struct platform_device *pdev)
579
595
return ret ;
580
596
}
581
597
598
+ ret = geni_icc_disable (& gi2c -> se );
599
+ if (ret )
600
+ return ret ;
601
+
582
602
dev_dbg (dev , "i2c fifo/se-dma mode. fifo depth:%d\n" , tx_depth );
583
603
584
604
gi2c -> suspended = 1 ;
@@ -623,14 +643,18 @@ static int __maybe_unused geni_i2c_runtime_suspend(struct device *dev)
623
643
gi2c -> suspended = 1 ;
624
644
}
625
645
626
- return 0 ;
646
+ return geni_icc_disable ( & gi2c -> se ) ;
627
647
}
628
648
629
649
static int __maybe_unused geni_i2c_runtime_resume (struct device * dev )
630
650
{
631
651
int ret ;
632
652
struct geni_i2c_dev * gi2c = dev_get_drvdata (dev );
633
653
654
+ ret = geni_icc_enable (& gi2c -> se );
655
+ if (ret )
656
+ return ret ;
657
+
634
658
ret = geni_se_resources_on (& gi2c -> se );
635
659
if (ret )
636
660
return ret ;
0 commit comments