* [U-Boot] [PATCH 0/3] Add I2C driver for Tegra30 Cardhu
@ 2012-12-22 0:16 Tom Warren
2012-12-22 0:16 ` [U-Boot] [PATCH 1/3] Tegra30: clocks: Fix clock tables for I2C and other periphs Tom Warren
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Tom Warren @ 2012-12-22 0:16 UTC (permalink / raw)
To: u-boot
Add/update clock tables and enable I2C driver support for the
Tegra30 Cardhu board. This uses the standard Tegra I2C driver.
5 controllers are supported, although all may not have devices
behind them on every board.
Tom Warren (3):
Tegra30: clocks: Fix clock tables for I2C and other periphs
Tegra30: fdt: Update DT files with I2C info for T30/Cardhu
Tegra30: I2C: Enable I2C driver on Cardhu
arch/arm/cpu/tegra30-common/clock.c | 78 ++++++++++++----------
arch/arm/dts/tegra30.dtsi | 61 +++++++++++++++++
arch/arm/include/asm/arch-tegra30/clock-tables.h | 4 +
board/nvidia/dts/tegra30-cardhu.dts | 41 +++++++++++
include/configs/cardhu.h | 9 +++
include/configs/tegra30-common.h | 3 +
6 files changed, 162 insertions(+), 34 deletions(-)
^ permalink raw reply [flat|nested] 10+ messages in thread* [U-Boot] [PATCH 1/3] Tegra30: clocks: Fix clock tables for I2C and other periphs 2012-12-22 0:16 [U-Boot] [PATCH 0/3] Add I2C driver for Tegra30 Cardhu Tom Warren @ 2012-12-22 0:16 ` Tom Warren 2013-01-02 20:35 ` Stephen Warren 2012-12-22 0:16 ` [U-Boot] [PATCH 2/3] Tegra30: fdt: Update DT files with I2C info for T30/Cardhu Tom Warren 2012-12-22 0:16 ` [U-Boot] [PATCH 3/3] Tegra30: I2C: Enable I2C driver on Cardhu Tom Warren 2 siblings, 1 reply; 10+ messages in thread From: Tom Warren @ 2012-12-22 0:16 UTC (permalink / raw) To: u-boot Add 16-bit divider support (I2C) to periph table, annotate and correct some entries, and fix clk_id lookup function. Signed-off-by: Tom Warren <twarren@nvidia.com> --- arch/arm/cpu/tegra30-common/clock.c | 78 ++++++++++++---------- arch/arm/include/asm/arch-tegra30/clock-tables.h | 4 + 2 files changed, 48 insertions(+), 34 deletions(-) diff --git a/arch/arm/cpu/tegra30-common/clock.c b/arch/arm/cpu/tegra30-common/clock.c index 5db9d20..c67a2e1 100644 --- a/arch/arm/cpu/tegra30-common/clock.c +++ b/arch/arm/cpu/tegra30-common/clock.c @@ -63,6 +63,7 @@ enum clock_type_id { CLOCK_TYPE_MCPT, CLOCK_TYPE_PCM, CLOCK_TYPE_PCMT, + CLOCK_TYPE_PCMT16, CLOCK_TYPE_PDCT, CLOCK_TYPE_ACPT, CLOCK_TYPE_ASPTE, @@ -114,6 +115,9 @@ static enum clock_id clock_source[CLOCK_TYPE_COUNT][CLOCK_MAX_MUX+1] = { { CLK(PERIPH), CLK(CGENERAL), CLK(MEMORY), CLK(OSC), CLK(NONE), CLK(NONE), CLK(NONE), CLK(NONE), MASK_BITS_31_30}, + { CLK(PERIPH), CLK(CGENERAL), CLK(MEMORY), CLK(OSC), + CLK(NONE), CLK(NONE), CLK(NONE), CLK(NONE), + MASK_BITS_31_30}, { CLK(PERIPH), CLK(DISPLAY), CLK(CGENERAL), CLK(OSC), CLK(NONE), CLK(NONE), CLK(NONE), CLK(NONE), MASK_BITS_31_30}, @@ -146,15 +150,15 @@ static enum clock_type_id clock_periph_type[PERIPHC_COUNT] = { TYPE(PERIPHC_I2S2, CLOCK_TYPE_AXPT), TYPE(PERIPHC_SPDIF_OUT, CLOCK_TYPE_AXPT), TYPE(PERIPHC_SPDIF_IN, CLOCK_TYPE_PCM), - TYPE(PERIPHC_PWM, CLOCK_TYPE_PCST), + TYPE(PERIPHC_PWM, CLOCK_TYPE_PCST), /* only PWM uses b29:28 */ TYPE(PERIPHC_NONE, CLOCK_TYPE_NONE), TYPE(PERIPHC_SBC2, CLOCK_TYPE_PCMT), TYPE(PERIPHC_SBC3, CLOCK_TYPE_PCMT), /* 0x08 */ TYPE(PERIPHC_NONE, CLOCK_TYPE_NONE), - TYPE(PERIPHC_I2C1, CLOCK_TYPE_PCMT), - TYPE(PERIPHC_DVC_I2C, CLOCK_TYPE_PCMT), + TYPE(PERIPHC_I2C1, CLOCK_TYPE_PCMT16), + TYPE(PERIPHC_DVC_I2C, CLOCK_TYPE_PCMT16), TYPE(PERIPHC_NONE, CLOCK_TYPE_NONE), TYPE(PERIPHC_NONE, CLOCK_TYPE_NONE), TYPE(PERIPHC_SBC1, CLOCK_TYPE_PCMT), @@ -177,7 +181,7 @@ static enum clock_type_id clock_periph_type[PERIPHC_COUNT] = { TYPE(PERIPHC_VFIR, CLOCK_TYPE_PCMT), TYPE(PERIPHC_EPP, CLOCK_TYPE_MCPA), TYPE(PERIPHC_MPE, CLOCK_TYPE_MCPA), - TYPE(PERIPHC_MIPI, CLOCK_TYPE_PCMT), + TYPE(PERIPHC_MIPI, CLOCK_TYPE_PCMT), /* MIPI base-band HSI */ TYPE(PERIPHC_UART1, CLOCK_TYPE_PCMT), TYPE(PERIPHC_UART2, CLOCK_TYPE_PCMT), @@ -188,7 +192,7 @@ static enum clock_type_id clock_periph_type[PERIPHC_COUNT] = { TYPE(PERIPHC_HDMI, CLOCK_TYPE_PMDACD2T), TYPE(PERIPHC_NONE, CLOCK_TYPE_NONE), TYPE(PERIPHC_TVDAC, CLOCK_TYPE_PDCT), - TYPE(PERIPHC_I2C2, CLOCK_TYPE_PCMT), + TYPE(PERIPHC_I2C2, CLOCK_TYPE_PCMT16), TYPE(PERIPHC_EMC, CLOCK_TYPE_MCPT), /* 0x28 */ @@ -198,7 +202,7 @@ static enum clock_type_id clock_periph_type[PERIPHC_COUNT] = { TYPE(PERIPHC_NONE, CLOCK_TYPE_NONE), TYPE(PERIPHC_NONE, CLOCK_TYPE_NONE), TYPE(PERIPHC_SBC4, CLOCK_TYPE_PCMT), - TYPE(PERIPHC_I2C3, CLOCK_TYPE_PCMT), + TYPE(PERIPHC_I2C3, CLOCK_TYPE_PCMT16), TYPE(PERIPHC_SDMMC3, CLOCK_TYPE_PCMT), /* 0x30 */ @@ -211,13 +215,13 @@ static enum clock_type_id clock_periph_type[PERIPHC_COUNT] = { TYPE(PERIPHC_I2S0, CLOCK_TYPE_AXPT), TYPE(PERIPHC_NONE, CLOCK_TYPE_NONE), - /* 0x38h */ + /* 0x38h */ /* Jumps to reg offset 0x3B0h - new for T30 */ TYPE(PERIPHC_G3D2, CLOCK_TYPE_MCPA), TYPE(PERIPHC_MSELECT, CLOCK_TYPE_PCMT), - TYPE(PERIPHC_TSENSOR, CLOCK_TYPE_PCM), + TYPE(PERIPHC_TSENSOR, CLOCK_TYPE_PCST), /* s/b PCTS */ TYPE(PERIPHC_I2S3, CLOCK_TYPE_AXPT), TYPE(PERIPHC_I2S4, CLOCK_TYPE_AXPT), - TYPE(PERIPHC_I2C4, CLOCK_TYPE_PCMT), + TYPE(PERIPHC_I2C4, CLOCK_TYPE_PCMT16), TYPE(PERIPHC_SBC5, CLOCK_TYPE_PCMT), TYPE(PERIPHC_SBC6, CLOCK_TYPE_PCMT), @@ -228,21 +232,25 @@ static enum clock_type_id clock_periph_type[PERIPHC_COUNT] = { TYPE(PERIPHC_DAM1, CLOCK_TYPE_ACPT), TYPE(PERIPHC_DAM2, CLOCK_TYPE_ACPT), TYPE(PERIPHC_HDA2CODEC2X, CLOCK_TYPE_PCMT), - TYPE(PERIPHC_ACTMON, CLOCK_TYPE_PCM), + TYPE(PERIPHC_ACTMON, CLOCK_TYPE_PCST), /* MASK 31:30 */ TYPE(PERIPHC_EXTPERIPH1, CLOCK_TYPE_ASPTE), /* 0x48 */ TYPE(PERIPHC_EXTPERIPH2, CLOCK_TYPE_ASPTE), TYPE(PERIPHC_EXTPERIPH3, CLOCK_TYPE_ASPTE), TYPE(PERIPHC_NANDSPEED, CLOCK_TYPE_PCMT), - TYPE(PERIPHC_I2CSLOW, CLOCK_TYPE_PCMT), + TYPE(PERIPHC_I2CSLOW, CLOCK_TYPE_PCST), /* MASK 31:30 */ TYPE(PERIPHC_SYS, CLOCK_TYPE_NONE), TYPE(PERIPHC_SPEEDO, CLOCK_TYPE_PCMT), TYPE(PERIPHC_NONE, CLOCK_TYPE_NONE), TYPE(PERIPHC_NONE, CLOCK_TYPE_NONE), /* 0x50 */ - TYPE(PERIPHC_SATAOOB, CLOCK_TYPE_PCMT), + TYPE(PERIPHC_NONE, CLOCK_TYPE_NONE), + TYPE(PERIPHC_NONE, CLOCK_TYPE_NONE), + TYPE(PERIPHC_NONE, CLOCK_TYPE_NONE), + TYPE(PERIPHC_NONE, CLOCK_TYPE_NONE), + TYPE(PERIPHC_SATAOOB, CLOCK_TYPE_PCMT), /* offset 0x420h */ TYPE(PERIPHC_SATA, CLOCK_TYPE_PCMT), TYPE(PERIPHC_HDA, CLOCK_TYPE_PCMT), }; @@ -693,6 +701,11 @@ static int get_periph_clock_source(enum periph_id periph_id, *mux_bits = clock_source[type][CLOCK_MAX_MUX]; + if (type == CLOCK_TYPE_PCMT16) + *divider_bits = 16; + else + *divider_bits = 8; + for (mux = 0; mux < CLOCK_MAX_MUX; mux++) if (clock_source[type][mux] == parent) return mux; @@ -983,35 +996,32 @@ void clock_ll_start_uart(enum periph_id periph_id) * the same but we are very cautious so we check that a valid clock ID is * provided. * - * @param clk_id Clock ID according to tegra20 device tree binding + * @param clk_id Clock ID according to tegra30 device tree binding * @return peripheral ID, or PERIPH_ID_NONE if the clock ID is invalid */ static enum periph_id clk_id_to_periph_id(int clk_id) { - if (clk_id > 95) + if (clk_id > PERIPH_ID_COUNT) return PERIPH_ID_NONE; switch (clk_id) { - case 1: - case 2: - case 7: - case 10: - case 20: - case 30: - case 35: - case 49: - case 56: - case 74: - case 76: - case 77: - case 78: - case 79: - case 80: - case 81: - case 82: - case 83: - case 91: - case 95: + case PERIPH_ID_RESERVED3: + case PERIPH_ID_RESERVED4: + case PERIPH_ID_RESERVED16: + case PERIPH_ID_RESERVED24: + case PERIPH_ID_RESERVED35: + case PERIPH_ID_RESERVED43: + case PERIPH_ID_RESERVED45: + case PERIPH_ID_RESERVED56: + case PERIPH_ID_RESERVED76: + case PERIPH_ID_RESERVED77: + case PERIPH_ID_RESERVED78: + case PERIPH_ID_RESERVED83: + case PERIPH_ID_RESERVED89: + case PERIPH_ID_RESERVED91: + case PERIPH_ID_RESERVED93: + case PERIPH_ID_RESERVED94: + case PERIPH_ID_RESERVED95: return PERIPH_ID_NONE; default: return clk_id; diff --git a/arch/arm/include/asm/arch-tegra30/clock-tables.h b/arch/arm/include/asm/arch-tegra30/clock-tables.h index b55e09d..cb619f1 100644 --- a/arch/arm/include/asm/arch-tegra30/clock-tables.h +++ b/arch/arm/include/asm/arch-tegra30/clock-tables.h @@ -351,6 +351,10 @@ enum periphc_internal_id { PERIPHC_4fh, /* 0x50 */ + PERIPHC_50h, + PERIPHC_51h, + PERIPHC_52h, + PERIPHC_53h, PERIPHC_SATAOOB, PERIPHC_SATA, PERIPHC_HDA, -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 1/3] Tegra30: clocks: Fix clock tables for I2C and other periphs 2012-12-22 0:16 ` [U-Boot] [PATCH 1/3] Tegra30: clocks: Fix clock tables for I2C and other periphs Tom Warren @ 2013-01-02 20:35 ` Stephen Warren 2013-01-02 20:54 ` Tom Warren 0 siblings, 1 reply; 10+ messages in thread From: Stephen Warren @ 2013-01-02 20:35 UTC (permalink / raw) To: u-boot On 12/21/2012 05:16 PM, Tom Warren wrote: > Add 16-bit divider support (I2C) to periph table, annotate and > correct some entries, and fix clk_id lookup function. > diff --git a/arch/arm/cpu/tegra30-common/clock.c b/arch/arm/cpu/tegra30-common/clock.c > - TYPE(PERIPHC_TSENSOR, CLOCK_TYPE_PCM), > + TYPE(PERIPHC_TSENSOR, CLOCK_TYPE_PCST), /* s/b PCTS */ It is now, so I assume that comment is stale? ^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 1/3] Tegra30: clocks: Fix clock tables for I2C and other periphs 2013-01-02 20:35 ` Stephen Warren @ 2013-01-02 20:54 ` Tom Warren 0 siblings, 0 replies; 10+ messages in thread From: Tom Warren @ 2013-01-02 20:54 UTC (permalink / raw) To: u-boot No, it's now PCST, which is close as I can get to PCTS w/o adding a whole new clock_type entry for just this one piece of HW, which isn't used in U-Boot anyway. PCST is PLLP, PLLC, CLK_S, and CLK_M. PCTS is PLLP, PLLC, CLK_M and CLK_S. On Wed, Jan 2, 2013 at 1:35 PM, Stephen Warren <swarren@wwwdotorg.org> wrote: > On 12/21/2012 05:16 PM, Tom Warren wrote: >> Add 16-bit divider support (I2C) to periph table, annotate and >> correct some entries, and fix clk_id lookup function. > >> diff --git a/arch/arm/cpu/tegra30-common/clock.c b/arch/arm/cpu/tegra30-common/clock.c > >> - TYPE(PERIPHC_TSENSOR, CLOCK_TYPE_PCM), >> + TYPE(PERIPHC_TSENSOR, CLOCK_TYPE_PCST), /* s/b PCTS */ > > It is now, so I assume that comment is stale? ^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 2/3] Tegra30: fdt: Update DT files with I2C info for T30/Cardhu 2012-12-22 0:16 [U-Boot] [PATCH 0/3] Add I2C driver for Tegra30 Cardhu Tom Warren 2012-12-22 0:16 ` [U-Boot] [PATCH 1/3] Tegra30: clocks: Fix clock tables for I2C and other periphs Tom Warren @ 2012-12-22 0:16 ` Tom Warren 2013-01-02 20:41 ` Stephen Warren 2012-12-22 0:16 ` [U-Boot] [PATCH 3/3] Tegra30: I2C: Enable I2C driver on Cardhu Tom Warren 2 siblings, 1 reply; 10+ messages in thread From: Tom Warren @ 2012-12-22 0:16 UTC (permalink / raw) To: u-boot Note that T30 does not have a separate/different DVC (power I2C) controller like T20 - all 5 I2C controllers are identical, but DVC_I2C is still used to designate the controller intended for power control (PWR_I2C in the schematics). On Cardhu, it's used to access the PMU and EEPROM, as well as the audio codec, temp sensor, and fuel gauge devices from the OS. Signed-off-by: Tom Warren <twarren@nvidia.com> --- arch/arm/dts/tegra30.dtsi | 61 +++++++++++++++++++++++++++++++++++ board/nvidia/dts/tegra30-cardhu.dts | 41 +++++++++++++++++++++++ 2 files changed, 102 insertions(+), 0 deletions(-) diff --git a/arch/arm/dts/tegra30.dtsi b/arch/arm/dts/tegra30.dtsi index f568d44..664c397 100644 --- a/arch/arm/dts/tegra30.dtsi +++ b/arch/arm/dts/tegra30.dtsi @@ -2,4 +2,65 @@ / { compatible = "nvidia,tegra30"; + + tegra_car: clock at 60006000 { + compatible = "nvidia,tegra30-car", "nvidia,tegra20-car"; + reg = <0x60006000 0x1000>; + #clock-cells = <1>; + }; + + clocks { + #address-cells = <1>; + #size-cells = <0>; + + osc: clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + }; + }; + + i2c at 7000c000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c"; + reg = <0x7000C000 0x100>; + /* PERIPH_ID_I2C1, CLK_M */ + clocks = <&tegra_car 12>; + }; + + i2c at 7000c400 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c"; + reg = <0x7000C400 0x100>; + /* PERIPH_ID_I2C2, CLK_M */ + clocks = <&tegra_car 54>; + }; + + i2c at 7000c500 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c"; + reg = <0x7000C500 0x100>; + /* PERIPH_ID_I2C3, CLK_M */ + clocks = <&tegra_car 67>; + }; + + i2c at 7000c700 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c"; + reg = <0x7000C700 0x100>; + /* PERIPH_ID_I2C4, CLK_M */ + clocks = <&tegra_car 103>; + }; + + i2c at 7000d000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c"; + reg = <0x7000D000 0x100>; + /* PERIPH_ID_I2C_DVC, CLK_M */ + clocks = <&tegra_car 47>; + }; }; diff --git a/board/nvidia/dts/tegra30-cardhu.dts b/board/nvidia/dts/tegra30-cardhu.dts index 2345766..4eddde6 100644 --- a/board/nvidia/dts/tegra30-cardhu.dts +++ b/board/nvidia/dts/tegra30-cardhu.dts @@ -6,8 +6,49 @@ model = "NVIDIA Cardhu"; compatible = "nvidia,cardhu", "nvidia,tegra30"; + aliases { + i2c0 = "/i2c at 7000d000"; + i2c1 = "/i2c at 7000c000"; + i2c2 = "/i2c at 7000c400"; + i2c3 = "/i2c at 7000c500"; + i2c4 = "/i2c at 7000c700"; + }; + memory { device_type = "memory"; reg = <0x80000000 0x40000000>; }; + + clocks { + clk_32k: clk_32K { + clock-frequency = <32768>; + }; + osc { + clock-frequency = <12000000>; + }; + }; + + clock at 60006000 { + clocks = <&clk_32k &osc>; + }; + + i2c at 7000c000 { + clock-frequency = <100000>; + }; + + i2c at 7000c400 { + clock-frequency = <100000>; + }; + + i2c at 7000c500 { + clock-frequency = <100000>; + }; + + i2c at 7000c700 { + clock-frequency = <100000>; + }; + + i2c at 7000d000 { + clock-frequency = <100000>; + }; }; -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 2/3] Tegra30: fdt: Update DT files with I2C info for T30/Cardhu 2012-12-22 0:16 ` [U-Boot] [PATCH 2/3] Tegra30: fdt: Update DT files with I2C info for T30/Cardhu Tom Warren @ 2013-01-02 20:41 ` Stephen Warren 2013-01-02 20:58 ` Tom Warren 0 siblings, 1 reply; 10+ messages in thread From: Stephen Warren @ 2013-01-02 20:41 UTC (permalink / raw) To: u-boot On 12/21/2012 05:16 PM, Tom Warren wrote: > Note that T30 does not have a separate/different DVC (power I2C) > controller like T20 - all 5 I2C controllers are identical, but > DVC_I2C is still used to designate the controller intended for > power control (PWR_I2C in the schematics). On Cardhu, it's used > to access the PMU and EEPROM, as well as the audio codec, temp > sensor, and fuel gauge devices from the OS. > diff --git a/arch/arm/dts/tegra30.dtsi b/arch/arm/dts/tegra30.dtsi > + tegra_car: clock at 60006000 { > + compatible = "nvidia,tegra30-car", "nvidia,tegra20-car"; > + reg = <0x60006000 0x1000>; > + #clock-cells = <1>; > + }; > + > + clocks { It'd be nice to keep the DT nodes sorted in the same order they are in the kernel. There, the rules are that nodes appears in order: 1) Any nodes from /include/d files, in the order they appeared in the underlying file. 2) Any nodes with a reg property, in order of the address in the reg property. 3) Any nodes without a reg property, in alphabetical order by node name. This will allow the U-Boot and kernel DT files to be more easily compared/diff'd. The clocks and osc node would usually be part of the board file, not the SoC file, I believe... Actually, the clocks "osc" and (later) "clk_32k" don't appear to be used anywhere; can we just drop their nodes until if/when they are? > + i2c at 7000c000 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c"; > + reg = <0x7000C000 0x100>; > + /* PERIPH_ID_I2C1, CLK_M */ > + clocks = <&tegra_car 12>; > + }; I think we should use lower-case for all hex constants in the DT. Also, can the properties appear in the same order as in the kernel DT files so they're easier to compare/diff. Also, the SoC .dtsi file should have status="disabled" for all the optionally-used HW modules, and the board files set status="okay" for those that the board actually uses. ^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 2/3] Tegra30: fdt: Update DT files with I2C info for T30/Cardhu 2013-01-02 20:41 ` Stephen Warren @ 2013-01-02 20:58 ` Tom Warren 2013-01-02 21:10 ` Stephen Warren 0 siblings, 1 reply; 10+ messages in thread From: Tom Warren @ 2013-01-02 20:58 UTC (permalink / raw) To: u-boot Alrightly. Can you send me a link to the latest-and-greatest T30/Cardhu kernel DT files so I can use 'em as a reference? Every time I do a Google search for kernel files I'm never sure if I've got the latest one or not. Thanks On Wed, Jan 2, 2013 at 1:41 PM, Stephen Warren <swarren@wwwdotorg.org> wrote: > On 12/21/2012 05:16 PM, Tom Warren wrote: >> Note that T30 does not have a separate/different DVC (power I2C) >> controller like T20 - all 5 I2C controllers are identical, but >> DVC_I2C is still used to designate the controller intended for >> power control (PWR_I2C in the schematics). On Cardhu, it's used >> to access the PMU and EEPROM, as well as the audio codec, temp >> sensor, and fuel gauge devices from the OS. > >> diff --git a/arch/arm/dts/tegra30.dtsi b/arch/arm/dts/tegra30.dtsi > >> + tegra_car: clock at 60006000 { >> + compatible = "nvidia,tegra30-car", "nvidia,tegra20-car"; >> + reg = <0x60006000 0x1000>; >> + #clock-cells = <1>; >> + }; >> + >> + clocks { > > It'd be nice to keep the DT nodes sorted in the same order they are in > the kernel. There, the rules are that nodes appears in order: > > 1) Any nodes from /include/d files, in the order they appeared in the > underlying file. > > 2) Any nodes with a reg property, in order of the address in the reg > property. > > 3) Any nodes without a reg property, in alphabetical order by node name. > > This will allow the U-Boot and kernel DT files to be more easily > compared/diff'd. > > The clocks and osc node would usually be part of the board file, not the > SoC file, I believe... > > Actually, the clocks "osc" and (later) "clk_32k" don't appear to be used > anywhere; can we just drop their nodes until if/when they are? > >> + i2c at 7000c000 { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c"; >> + reg = <0x7000C000 0x100>; >> + /* PERIPH_ID_I2C1, CLK_M */ >> + clocks = <&tegra_car 12>; >> + }; > > I think we should use lower-case for all hex constants in the DT. Also, > can the properties appear in the same order as in the kernel DT files so > they're easier to compare/diff. > > Also, the SoC .dtsi file should have status="disabled" for all the > optionally-used HW modules, and the board files set status="okay" for > those that the board actually uses. ^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 2/3] Tegra30: fdt: Update DT files with I2C info for T30/Cardhu 2013-01-02 20:58 ` Tom Warren @ 2013-01-02 21:10 ` Stephen Warren 0 siblings, 0 replies; 10+ messages in thread From: Stephen Warren @ 2013-01-02 21:10 UTC (permalink / raw) To: u-boot On 01/02/2013 01:58 PM, Tom Warren wrote: > Alrightly. Can you send me a link to the latest-and-greatest > T30/Cardhu kernel DT files so I can use 'em as a reference? Every time > I do a Google search for kernel files I'm never sure if I've got the > latest one or not. The easiest way is probably: git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git cd linux-2.6/arch/arm/boot/dts ls *cardhu* ^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 3/3] Tegra30: I2C: Enable I2C driver on Cardhu 2012-12-22 0:16 [U-Boot] [PATCH 0/3] Add I2C driver for Tegra30 Cardhu Tom Warren 2012-12-22 0:16 ` [U-Boot] [PATCH 1/3] Tegra30: clocks: Fix clock tables for I2C and other periphs Tom Warren 2012-12-22 0:16 ` [U-Boot] [PATCH 2/3] Tegra30: fdt: Update DT files with I2C info for T30/Cardhu Tom Warren @ 2012-12-22 0:16 ` Tom Warren 2013-01-02 20:42 ` Stephen Warren 2 siblings, 1 reply; 10+ messages in thread From: Tom Warren @ 2012-12-22 0:16 UTC (permalink / raw) To: u-boot Tested all 5 'buses', i2c probe enumerates device addresses on all but dev 4 (I2C4) [no devices on that bus on my Cardhu]. Note that this uses the extant tegra_i2c.c driver w/o modification. Signed-off-by: Tom Warren <twarren@nvidia.com> --- include/configs/cardhu.h | 9 +++++++++ include/configs/tegra30-common.h | 3 +++ 2 files changed, 12 insertions(+), 0 deletions(-) diff --git a/include/configs/cardhu.h b/include/configs/cardhu.h index 471df6e..aa725ba 100644 --- a/include/configs/cardhu.h +++ b/include/configs/cardhu.h @@ -38,6 +38,15 @@ #define CONFIG_MACH_TYPE MACH_TYPE_CARDHU #define CONFIG_BOARD_EARLY_INIT_F + +/* I2C */ +#define CONFIG_TEGRA_I2C +#define CONFIG_SYS_I2C_INIT_BOARD +#define CONFIG_I2C_MULTI_BUS +#define CONFIG_SYS_MAX_I2C_BUS TEGRA_I2C_NUM_CONTROLLERS +#define CONFIG_SYS_I2C_SPEED 100000 +#define CONFIG_CMD_I2C + #define CONFIG_ENV_IS_NOWHERE #include "tegra-common-post.h" diff --git a/include/configs/tegra30-common.h b/include/configs/tegra30-common.h index 282caec..04517e1 100644 --- a/include/configs/tegra30-common.h +++ b/include/configs/tegra30-common.h @@ -83,4 +83,7 @@ #define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/tegra30/u-boot-spl.lds" +/* Total I2C ports on Tegra30 */ +#define TEGRA_I2C_NUM_CONTROLLERS 5 + #endif /* _TEGRA30_COMMON_H_ */ -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH 3/3] Tegra30: I2C: Enable I2C driver on Cardhu 2012-12-22 0:16 ` [U-Boot] [PATCH 3/3] Tegra30: I2C: Enable I2C driver on Cardhu Tom Warren @ 2013-01-02 20:42 ` Stephen Warren 0 siblings, 0 replies; 10+ messages in thread From: Stephen Warren @ 2013-01-02 20:42 UTC (permalink / raw) To: u-boot On 12/21/2012 05:16 PM, Tom Warren wrote: > Tested all 5 'buses', i2c probe enumerates device addresses on all > but dev 4 (I2C4) [no devices on that bus on my Cardhu]. > > Note that this uses the extant tegra_i2c.c driver w/o modification. Aside from previous comments, Reviewed-by: Stephen Warren <swarren@nvidia.com> ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-01-02 21:10 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-12-22 0:16 [U-Boot] [PATCH 0/3] Add I2C driver for Tegra30 Cardhu Tom Warren 2012-12-22 0:16 ` [U-Boot] [PATCH 1/3] Tegra30: clocks: Fix clock tables for I2C and other periphs Tom Warren 2013-01-02 20:35 ` Stephen Warren 2013-01-02 20:54 ` Tom Warren 2012-12-22 0:16 ` [U-Boot] [PATCH 2/3] Tegra30: fdt: Update DT files with I2C info for T30/Cardhu Tom Warren 2013-01-02 20:41 ` Stephen Warren 2013-01-02 20:58 ` Tom Warren 2013-01-02 21:10 ` Stephen Warren 2012-12-22 0:16 ` [U-Boot] [PATCH 3/3] Tegra30: I2C: Enable I2C driver on Cardhu Tom Warren 2013-01-02 20:42 ` Stephen Warren
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox