diff options
author | George Lee <geolee@google.com> | 2021-07-07 15:11:29 -0700 |
---|---|---|
committer | George Lee <geolee@google.com> | 2021-07-07 16:43:37 -0700 |
commit | 393f516340ee24138a1ce819416ae9875c3090e3 (patch) | |
tree | b07eb338d6c54520161b7ec72962dd4b8d62b672 | |
parent | 418bcd71862114b9c810d326c53917a885d24b15 (diff) | |
download | janeiro-393f516340ee24138a1ce819416ae9875c3090e3.tar.gz |
edgetpu: janeiro bcl port tpu clock divider ratio
Bug: 192615175
Signed-off-by: George Lee <geolee@google.com>
Change-Id: I30449656504551a6cb684dc0c30f8031bc608010
-rw-r--r-- | drivers/edgetpu/janeiro-platform.h | 4 | ||||
-rw-r--r-- | drivers/edgetpu/janeiro-pm.c | 12 |
2 files changed, 15 insertions, 1 deletions
diff --git a/drivers/edgetpu/janeiro-platform.h b/drivers/edgetpu/janeiro-platform.h index 196bf75..a051f44 100644 --- a/drivers/edgetpu/janeiro-platform.h +++ b/drivers/edgetpu/janeiro-platform.h @@ -11,6 +11,7 @@ #include <linux/io.h> #include <linux/mutex.h> #include <linux/types.h> +#include <soc/google/bcl.h> #include "edgetpu-internal.h" #include "janeiro-pm.h" @@ -42,6 +43,9 @@ struct janeiro_platform_dev { void __iomem *ssmt_base; struct edgetpu_coherent_mem log_mem; struct edgetpu_coherent_mem trace_mem; +#if IS_ENABLED(CONFIG_GOOGLE_BCL) + struct bcl_device *bcl_dev; +#endif }; #endif /* __JANEIRO_PLATFORM_H__ */ diff --git a/drivers/edgetpu/janeiro-pm.c b/drivers/edgetpu/janeiro-pm.c index ae1938f..acccf9e 100644 --- a/drivers/edgetpu/janeiro-pm.c +++ b/drivers/edgetpu/janeiro-pm.c @@ -10,6 +10,7 @@ #include <linux/iopoll.h> #include <linux/module.h> #include <linux/pm_runtime.h> +#include <soc/google/bcl.h> #include <linux/version.h> #include "edgetpu-config.h" @@ -233,6 +234,7 @@ static int janeiro_set_lpm(struct edgetpu_dev *etdev) static int janeiro_power_up(struct edgetpu_pm *etpm) { struct edgetpu_dev *etdev = etpm->etdev; + struct janeiro_platform_dev *edgetpu_pdev = to_janeiro_dev(etdev); int ret = 0; ret = janeiro_pwr_state_set( @@ -291,8 +293,16 @@ static int janeiro_power_up(struct edgetpu_pm *etpm) break; } - if (ret) + if (ret) { janeiro_power_down(etpm); + } else { +#if IS_ENABLED(CONFIG_GOOGLE_BCL) + if (!edgetpu_pdev->bcl_dev) + edgetpu_pdev->bcl_dev = google_retrieve_bcl_handle(); + if (edgetpu_pdev->bcl_dev) + google_init_tpu_ratio(edgetpu_pdev->bcl_dev); +#endif + } return ret; } |