On Fri, Mar 11, 2016 at 11:10:25AM +0800, Wei Ni wrote: > Add Tegra210 specific SOC_THERM driver. > > Signed-off-by: Wei Ni <wni@xxxxxxxxxx> > --- > drivers/thermal/tegra/Makefile | 1 + > drivers/thermal/tegra/soctherm-fuse.c | 11 ++ > drivers/thermal/tegra/soctherm.c | 6 ++ > drivers/thermal/tegra/soctherm.h | 4 + > drivers/thermal/tegra/tegra210-soctherm.c | 173 ++++++++++++++++++++++++++++++ No Kconfig change? > 5 files changed, 195 insertions(+) > create mode 100644 drivers/thermal/tegra/tegra210-soctherm.c > > diff --git a/drivers/thermal/tegra/Makefile b/drivers/thermal/tegra/Makefile > index d5fb15377b97..bf9e028eba28 100644 > --- a/drivers/thermal/tegra/Makefile > +++ b/drivers/thermal/tegra/Makefile > @@ -2,3 +2,4 @@ obj-$(CONFIG_TEGRA_SOCTHERM) += tegra-soctherm.o > > tegra-soctherm-y := soctherm.o soctherm-fuse.o > tegra-soctherm-$(CONFIG_ARCH_TEGRA_124_SOC) += tegra124-soctherm.o > +tegra-soctherm-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-soctherm.o > diff --git a/drivers/thermal/tegra/soctherm-fuse.c b/drivers/thermal/tegra/soctherm-fuse.c > index 931c299ab0e8..29963180c453 100644 > --- a/drivers/thermal/tegra/soctherm-fuse.c > +++ b/drivers/thermal/tegra/soctherm-fuse.c > @@ -28,7 +28,18 @@ > #define FUSE_TSENSOR_COMMON 0x180 > > /* > + * Tegra210: Layout of bits in FUSE_TSENSOR_COMMON: > + * 3 2 1 0 > + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 > + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ > + * | BASE_FT | BASE_CP | SHFT_FT | SHIFT_CP | > + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ > + * > * Tegra12x, etc: > + * In chips prior to Tegra210, this fuse was incorrectly sized as 26 bits, > + * and didn't hold SHIFT_CP in [31:26]. Therefore these missing six bits > + * were obtained via the FUSE_SPARE_REALIGNMENT_REG register [5:0]. > + * > * FUSE_TSENSOR_COMMON: > * 3 2 1 0 > * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 > diff --git a/drivers/thermal/tegra/soctherm.c b/drivers/thermal/tegra/soctherm.c > index f56e5a11384e..52a33760e8e8 100644 > --- a/drivers/thermal/tegra/soctherm.c > +++ b/drivers/thermal/tegra/soctherm.c > @@ -147,6 +147,12 @@ static const struct of_device_id tegra_soctherm_of_match[] = { > .data = &tegra124_soctherm, > }, > #endif > +#ifdef CONFIG_ARCH_TEGRA_210_SOC > + { > + .compatible = "nvidia,tegra210-soctherm", > + .data = &tegra210_soctherm, > + }, > +#endif > { }, > }; > MODULE_DEVICE_TABLE(of, tegra_soctherm_of_match); > diff --git a/drivers/thermal/tegra/soctherm.h b/drivers/thermal/tegra/soctherm.h > index f80ee1492ddb..69d317269af1 100644 > --- a/drivers/thermal/tegra/soctherm.h > +++ b/drivers/thermal/tegra/soctherm.h > @@ -106,5 +106,9 @@ int tegra_calc_tsensor_calib(const struct tegra_tsensor *sensor, > extern const struct tegra_soctherm_soc tegra124_soctherm; > #endif > > +#ifdef CONFIG_ARCH_TEGRA_210_SOC > +extern const struct tegra_soctherm_soc tegra210_soctherm; > +#endif Is CONFIG_ARCH_TEGRA_210_SOC going to be tristate? If only bool, do you need to make the symbol extern? > -- > 1.9.1 >
Attachment:
signature.asc
Description: Digital signature