i2c: qup: Add command-line parameter to override SCL frequency
authorAustin Christ <austinwc@codeaurora.org>
Thu, 10 May 2018 16:13:57 +0000 (10:13 -0600)
committerWolfram Sang <wsa@the-dreams.de>
Tue, 29 May 2018 17:58:50 +0000 (19:58 +0200)
Add a module parameter to override SCL frequency provided by firmware.
This can be useful when testing spec compliance for I2C modes or when
debugging issues across multiple operating frequencies.

Signed-off-by: Austin Christ <austinwc@codeaurora.org>
Reviewed-by: Sricharan R <sricharan@codeaurora.org>
Reviewed-by: Andy Gross <andy.gross@linaro.org>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-qup.c

index f87f29f..c1bbeaa 100644 (file)
 /* TAG length for DATA READ in RX FIFO  */
 #define READ_RX_TAGS_LEN               2
 
+static unsigned int scl_freq;
+module_param_named(scl_freq, scl_freq, uint, 0444);
+MODULE_PARM_DESC(scl_freq, "SCL frequency override");
+
 /*
  * count: no of blocks
  * pos: current block number
@@ -1682,10 +1686,15 @@ static int qup_i2c_probe(struct platform_device *pdev)
        init_completion(&qup->xfer);
        platform_set_drvdata(pdev, qup);
 
-       ret = device_property_read_u32(qup->dev, "clock-frequency", &clk_freq);
-       if (ret) {
-               dev_notice(qup->dev, "using default clock-frequency %d",
-                       DEFAULT_CLK_FREQ);
+       if (scl_freq) {
+               dev_notice(qup->dev, "Using override frequency of %u\n", scl_freq);
+               clk_freq = scl_freq;
+       } else {
+               ret = device_property_read_u32(qup->dev, "clock-frequency", &clk_freq);
+               if (ret) {
+                       dev_notice(qup->dev, "using default clock-frequency %d",
+                               DEFAULT_CLK_FREQ);
+               }
        }
 
        if (of_device_is_compatible(pdev->dev.of_node, "qcom,i2c-qup-v1.1.1")) {