Introduce Nuvoton Arbel NPCM8XX BMC SoC
Subsystems (9)
Tomer Maimon
maintainerv7 cover Introduce Nuvoton Arbel NPCM8XX BMC SoC
This patchset adds initial support for the Nuvoton Arbel NPCM8XX Board Management controller (BMC) SoC family.
The Nuvoton Arbel NPCM8XX SoC is a fourth-generation BMC. The NPCM8XX computing subsystem comprises a quadcore ARM Cortex A35 ARM-V8 architecture.
This patchset adds minimal architecture and drivers such as:
Clocksource, Clock, Reset, and WD.
Some of the Arbel NPCM8XX peripherals are based on Poleg NPCM7XX.
This patchset was tested on the Arbel NPCM8XX evaluation board.
Addressed comments from:
- Philipp Zabel: https://www.spinics.net/lists/arm-kernel/msg993305.html
Changes since version 6:
- NPCM reset driver
- Modify warning message.
- dt-bindings: serial: 8250: Add npcm845 compatible string patch accepted, due to it the patch removed from the patchset.
Changes since version 5:
- NPCM8XX clock driver
- Remove refclk if devm_of_clk_add_hw_provider function failed.
- NPCM8XX clock source driver
- Remove NPCM8XX TIMER_OF_DECLARE support, using the same as NPCM7XX.
Changes since version 4:
- NPCM8XX clock driver
- Use the same quote in the dt-binding file.
Changes since version 3:
- NPCM8XX clock driver
- Rename NPCM8xx clock dt-binding header file.
- Remove unused structures.
- Improve Handling the clocks registration.
- NPCM reset driver
- Add ref phandle to dt-binding.
Changes since version 2:
- Remove NPCM8xx WDT compatible patch.
- Remove NPCM8xx UART compatible patch.
- NPCM8XX clock driver
- Add debug new line.
- Add 25M fixed rate clock.
- Remove unused clocks and clock name from dt-binding.
- NPCM reset driver
- Revert to npcm7xx dt-binding.
- Skip dt binding quotes.
- Adding DTS backward compatibility.
- Remove NPCM8xx binding include file.
- Warp commit message.
- NPCM8XX device tree:
- Remove unused clock nodes (used in the clock driver)
- Modify gcr and rst node names.
Changes since version 1:
- NPCM8XX clock driver
- Modify dt-binding.
- Remove unsed definition and include.
- Include alphabetically.
- Use clock devm.
- NPCM reset driver
- Modify dt-binding.
- Modify syscon name.
- Add syscon support to NPCM7XX dts reset node.
- use data structure.
- NPCM8XX device tree:
- Modify evb compatible name.
- Add NPCM7xx compatible.
- Remove disable nodes from the EVB DTS.
Tomer Maimon (16):
dt-bindings: timer: npcm: Add npcm845 compatible string
dt-bindings: watchdog: npcm: Add npcm845 compatible string
dt-binding: clk: npcm845: Add binding for Nuvoton NPCM8XX Clock
clk: npcm8xx: add clock controller
dt-bindings: reset: npcm: add GCR syscon property
ARM: dts: nuvoton: add reset syscon property
reset: npcm: using syscon instead of device data
dt-bindings: reset: npcm: Add support for NPCM8XX
reset: npcm: Add NPCM8XX support
dt-bindings: arm: npcm: Add maintainer
dt-bindings: arm: npcm: Add nuvoton,npcm845 compatible string
dt-bindings: arm: npcm: Add nuvoton,npcm845 GCR compatible string
arm64: npcm: Add support for Nuvoton NPCM8XX BMC SoC
arm64: dts: nuvoton: Add initial NPCM8XX device tree
arm64: dts: nuvoton: Add initial NPCM845 EVB device tree
arm64: defconfig: Add Nuvoton NPCM family support
.../devicetree/bindings/arm/npcm/npcm.yaml | 7 + .../bindings/arm/npcm/nuvoton,gcr.yaml | 2 + .../bindings/clock/nuvoton,npcm845-clk.yaml | 49 ++ .../bindings/reset/nuvoton,npcm750-reset.yaml | 10 +- .../bindings/timer/nuvoton,npcm7xx-timer.yaml | 2 + .../bindings/watchdog/nuvoton,npcm-wdt.txt | 3 +- MAINTAINERS | 2 + arch/arm/boot/dts/nuvoton-common-npcm7xx.dtsi | 1 + arch/arm64/Kconfig.platforms | 11 + arch/arm64/boot/dts/Makefile | 1 + arch/arm64/boot/dts/nuvoton/Makefile | 2 + .../dts/nuvoton/nuvoton-common-npcm8xx.dtsi | 170 +++++ .../boot/dts/nuvoton/nuvoton-npcm845-evb.dts | 30 + .../boot/dts/nuvoton/nuvoton-npcm845.dtsi | 76 +++ arch/arm64/configs/defconfig | 3 + drivers/clk/Kconfig | 6 + drivers/clk/Makefile | 1 + drivers/clk/clk-npcm8xx.c | 600 ++++++++++++++++++ drivers/reset/reset-npcm.c | 207 +++++- .../dt-bindings/clock/nuvoton,npcm845-clk.h | 49 ++ 20 files changed, 1196 insertions(+), 36 deletions(-) create mode 100644 Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml create mode 100644 arch/arm64/boot/dts/nuvoton/Makefile create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-npcm845-evb.dts create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-npcm845.dtsi create mode 100644 drivers/clk/clk-npcm8xx.c create mode 100644 include/dt-bindings/clock/nuvoton,npcm845-clk.h
Signature · 1 line
2.33.0
Tomer Maimon
maintainerPATCH v7 1/16 dt-bindings: timer: npcm: Add npcm845 compatible string
Add a compatible string for Nuvoton BMC NPCM845 timer.
--- .../devicetree/bindings/timer/nuvoton,npcm7xx-timer.yaml | 2 ++ 1 file changed, 2 insertions(+)
Documentation/devicetree/bindings/timer/nuvoton,npcm7xx-timer.yaml +2 -0
@@ -8,12 +8,14 @@ title: Nuvoton NPCM7xx timer maintainers: - Jonathan Neuschäfer <[email protected]> + - Tomer Maimon <[email protected]> properties: compatible: enum: - nuvoton,wpcm450-timer # for Hermon WPCM450 - nuvoton,npcm750-timer # for Poleg NPCM750 + - nuvoton,npcm845-timer # for Arbel NPCM845 reg: maxItems: 1
Signature · 1 line
2.33.0
Tomer Maimon
maintainerPATCH v7 2/16 dt-bindings: watchdog: npcm: Add npcm845 compatible string
In reply to Tomer MaimonAdd a compatible string for Nuvoton BMC NPCM845 watchdog.
--- .../devicetree/bindings/watchdog/nuvoton,npcm-wdt.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/watchdog/nuvoton,npcm-wdt.txt +2 -1
@@ -6,7 +6,8 @@ expiry. Required properties: - compatible : "nuvoton,npcm750-wdt" for NPCM750 (Poleg), or - "nuvoton,wpcm450-wdt" for WPCM450 (Hermon). + "nuvoton,wpcm450-wdt" for WPCM450 (Hermon), or + "nuvoton,npcm845-wdt" for NPCM845 (Arbel). - reg : Offset and length of the register set for the device. - interrupts : Contain the timer interrupt with flags for falling edge.
Signature · 1 line
2.33.0
Tomer Maimon
maintainerPATCH v7 3/16 dt-binding: clk: npcm845: Add binding for Nuvoton NPCM8XX Clock
In reply to Tomer MaimonAdd binding for the Arbel BMC NPCM8XX Clock controller.
--- .../bindings/clock/nuvoton,npcm845-clk.yaml | 49 +++++++++++++++++++ .../dt-bindings/clock/nuvoton,npcm845-clk.h | 49 +++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml create mode 100644 include/dt-bindings/clock/nuvoton,npcm845-clk.h
Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml new file +49 -0
@@ -0,0 +1,49 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/clock/nuvoton,npcm845-clk.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Nuvoton NPCM8XX Clock Controller Binding + +maintainers: + - Tomer Maimon <[email protected]> + +description: | + Nuvoton Arbel BMC NPCM8XX contains an integrated clock controller, which + generates and supplies clocks to all modules within the BMC. + +properties: + compatible: + enum: + - nuvoton,npcm845-clk + + reg: + maxItems: 1 + + '#clock-cells': + const: 1 + description: + See include/dt-bindings/clock/nuvoton,npcm8xx-clock.h for the full + list of NPCM8XX clock IDs. + +required: + - compatible + - reg + - '#clock-cells' + +additionalProperties: false + +examples: + - | + ahb { + #address-cells = <2>; + #size-cells = <2>; + + clock-controller@f0801000 { + compatible = "nuvoton,npcm845-clk"; + reg = <0x0 0xf0801000 0x0 0x1000>; + #clock-cells = <1>; + }; + }; +...
include/dt-bindings/clock/nuvoton,npcm845-clk.h new file +49 -0
49 lines not on this page · raw message
Signature · 1 line
2.33.0
Tomer Maimon
maintainerPATCH v7 4/16 clk: npcm8xx: add clock controller
In reply to Tomer MaimonNuvoton Arbel BMC NPCM8XX contains an integrated clock controller which generates and supplies clocks to all modules within the BMC.
--- drivers/clk/Kconfig | 6 + drivers/clk/Makefile | 1 + drivers/clk/clk-npcm8xx.c | 600 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 607 insertions(+) create mode 100644 drivers/clk/clk-npcm8xx.c
drivers/clk/Kconfig +6 -0
@@ -428,6 +428,12 @@ config COMMON_CLK_K210 help Support for the Canaan Kendryte K210 RISC-V SoC clocks. +config COMMON_CLK_NPCM8XX + tristate "Clock driver for the NPCM8XX SoC Family" + depends on ARCH_NPCM || COMPILE_TEST + help + This driver supports the clocks on the Nuvoton BMC NPCM8XX SoC Family. + source "drivers/clk/actions/Kconfig" source "drivers/clk/analogbits/Kconfig" source "drivers/clk/baikal-t1/Kconfig"
drivers/clk/Makefile +1 -0
@@ -49,6 +49,7 @@ obj-$(CONFIG_ARCH_MILBEAUT_M10V) += clk-milbeaut.o obj-$(CONFIG_ARCH_MOXART) += clk-moxart.o obj-$(CONFIG_ARCH_NOMADIK) += clk-nomadik.o obj-$(CONFIG_ARCH_NPCM7XX) += clk-npcm7xx.o +obj-$(CONFIG_COMMON_CLK_NPCM8XX) += clk-npcm8xx.o obj-$(CONFIG_ARCH_NSPIRE) += clk-nspire.o obj-$(CONFIG_COMMON_CLK_OXNAS) += clk-oxnas.o obj-$(CONFIG_COMMON_CLK_PALMAS) += clk-palmas.o
drivers/clk/clk-npcm8xx.c new file +600 -0
600 lines not on this page · raw message
Signature · 1 line
2.33.0
Tomer Maimon
maintainerPATCH v7 5/16 dt-bindings: reset: npcm: add GCR syscon property
In reply to Tomer MaimonDescribe syscon property that handles general control registers (GCR) in Nuvoton BMC NPCM reset driver.
--- .../devicetree/bindings/reset/nuvoton,npcm750-reset.yaml | 6 ++++++ 1 file changed, 6 insertions(+)
Documentation/devicetree/bindings/reset/nuvoton,npcm750-reset.yaml +6 -0
@@ -19,6 +19,10 @@ properties: '#reset-cells': const: 2 + nuvoton,sysgcr: + $ref: /schemas/types.yaml#/definitions/phandle + description: a phandle to access GCR registers. + nuvoton,sw-reset-number: $ref: /schemas/types.yaml#/definitions/uint32 minimum: 1
@@ -31,6 +35,7 @@ required: - compatible - reg - '#reset-cells' + - nuvoton,sysgcr additionalProperties: false
@@ -41,6 +46,7 @@ examples: compatible = "nuvoton,npcm750-reset"; reg = <0xf0801000 0x70>; #reset-cells = <2>; + nuvoton,sysgcr = <&gcr>; nuvoton,sw-reset-number = <2>; };
Signature · 1 line
2.33.0
Tomer Maimon
maintainerPATCH v7 6/16 ARM: dts: nuvoton: add reset syscon property
In reply to Tomer MaimonAdd nuvoton,sysgcr syscon property to the reset node to handle the general control registers.
--- arch/arm/boot/dts/nuvoton-common-npcm7xx.dtsi | 1 + 1 file changed, 1 insertion(+)
arch/arm/boot/dts/nuvoton-common-npcm7xx.dtsi +1 -0
@@ -110,6 +110,7 @@ rstc: rstc@f0801000 { compatible = "nuvoton,npcm750-reset"; reg = <0xf0801000 0x70>; #reset-cells = <2>; + nuvoton,sysgcr = <&gcr>; }; clk: clock-controller@f0801000 {
Signature · 1 line
2.33.0
Tomer Maimon
maintainerPATCH v7 7/16 reset: npcm: using syscon instead of device data
In reply to Tomer MaimonUsing syscon device tree property instead of device data to handle the NPCM general control registers.
In case the syscon not found the code still search for nuvoton,npcm750-gcr to support DTS backward compatibility.
--- drivers/reset/reset-npcm.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)
drivers/reset/reset-npcm.c +9 -5
@@ -138,8 +138,7 @@ static int npcm_reset_xlate(struct reset_controller_dev *rcdev, }static const struct of_device_id npcm_rc_match[] = { - { .compatible ="nuvoton,npcm750-reset" , - .data = (void *)"nuvoton,npcm750-gcr" }, + { .compatible ="nuvoton,npcm750-reset" }, { } };
@@ -160,10 +159,15 @@ static int npcm_usb_reset(struct platform_device *pdev, struct npcm_rc_data *rc) gcr_dt = (const char *)of_match_device (dev->driver->of_match_table, dev)->data; - gcr_regmap =syscon_regmap_lookup_by_compatible (gcr_dt); + gcr_regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"nuvoton,sysgcr" );if (IS_ERR (gcr_regmap)) { -dev_err (&pdev->dev,"Failed to find %s\n" , gcr_dt); -return PTR_ERR (gcr_regmap); +dev_warn (&pdev->dev,"Failed to find nuvoton,sysgcr property, please update the device tree\n" ); +dev_info (&pdev->dev,"Using nuvoton,npcm750-gcr for Poleg backward compatibility\n" ); + gcr_regmap =syscon_regmap_lookup_by_compatible ("nuvoton,npcm750-gcr" ); +if (IS_ERR (gcr_regmap)) { +dev_err (&pdev->dev,"Failed to find nuvoton,npcm750-gcr" ); +return PTR_ERR (gcr_regmap); + } }/* checking which USB device is enabled */
Signature · 1 line
2.33.0
Tomer Maimon
maintainerPATCH v7 8/16 dt-bindings: reset: npcm: Add support for NPCM8XX
In reply to Tomer MaimonAdd binding document and device tree binding constants for Nuvoton BMC NPCM8XX reset controller.
--- .../devicetree/bindings/reset/nuvoton,npcm750-reset.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/reset/nuvoton,npcm750-reset.yaml +3 -1
@@ -11,7 +11,9 @@ maintainers: properties: compatible: - const: nuvoton,npcm750-reset + enum: + - nuvoton,npcm750-reset # Poleg NPCM7XX SoC + - nuvoton,npcm845-reset # Arbel NPCM8XX SoC reg: maxItems: 1
Signature · 1 line
2.33.0
Tomer Maimon
maintainerPATCH v7 9/16 reset: npcm: Add NPCM8XX support
In reply to Tomer MaimonUpdated the NPCM reset driver to add support for Nuvoton BMC NPCM8XX SoC. As part of adding NPCM8XX support:
- Add NPCM8XX specific compatible string.
- Add NPCM8XX USB reset.
- Add data to handle architecture-specific reset parameters.
- Some of the Reset Id and number of resets are different from NPCM7XX.
--- drivers/reset/reset-npcm.c | 211 ++++++++++++++++++++++++++++++------- 1 file changed, 173 insertions(+), 38 deletions(-)
drivers/reset/reset-npcm.c +173 -38
@@ -17,13 +17,20 @@/* NPCM7xx GCR registers */ #define NPCM_MDLR_OFFSET 0x7C -#define NPCM_MDLR_USBD0 BIT(9) -#define NPCM_MDLR_USBD1 BIT(8) -#define NPCM_MDLR_USBD2_4 BIT(21) -#define NPCM_MDLR_USBD5_9 BIT(22) +#define NPCM7XX_MDLR_USBD0 BIT(9) +#define NPCM7XX_MDLR_USBD1 BIT(8) +#define NPCM7XX_MDLR_USBD2_4 BIT(21) +#define NPCM7XX_MDLR_USBD5_9 BIT(22) + +/* NPCM8xx MDLR bits */ +#define NPCM8XX_MDLR_USBD0_3 BIT(9) +#define NPCM8XX_MDLR_USBD4_7 BIT(22) +#define NPCM8XX_MDLR_USBD8 BIT(24) +#define NPCM8XX_MDLR_USBD9 BIT(21)#define NPCM_USB1PHYCTL_OFFSET 0x140#define NPCM_USB2PHYCTL_OFFSET 0x144 +#define NPCM_USB3PHYCTL_OFFSET 0x148#define NPCM_USBXPHYCTL_RS BIT(28)/* NPCM7xx Reset registers */
@@ -49,12 +56,38 @@#define NPCM_IPSRST3_USBPHY1 BIT(24)#define NPCM_IPSRST3_USBPHY2 BIT(25) +#define NPCM_IPSRST4 0x74 +#define NPCM_IPSRST4_USBPHY3 BIT(25) +#define NPCM_IPSRST4_USB_HOST2 BIT(31) +#define NPCM_RC_RESETS_PER_REG 32#define NPCM_MASK_RESETS GENMASK(4, 0) +enum { +BMC_NPCM7XX =0 , +BMC_NPCM8XX , +}; + +static const u32 npxm7xx_ipsrst[] = {NPCM_IPSRST1 ,NPCM_IPSRST2 ,NPCM_IPSRST3 }; +static const u32 npxm8xx_ipsrst[] = {NPCM_IPSRST1 ,NPCM_IPSRST2 ,NPCM_IPSRST3 , +NPCM_IPSRST4 }; + +struct npcm_reset_info { +u32 bmc_id; +u32 num_ipsrst; +const u32 *ipsrst; +}; + +static const struct npcm_reset_info npxm7xx_reset_info[] = { + {.bmc_id =BMC_NPCM7XX , .num_ipsrst =3 , .ipsrst = npxm7xx_ipsrst}}; +static const struct npcm_reset_info npxm8xx_reset_info[] = { + {.bmc_id =BMC_NPCM8XX , .num_ipsrst =4 , .ipsrst = npxm8xx_ipsrst}}; +struct npcm_rc_data {struct reset_controller_dev rcdev;struct notifier_block restart_nb; +const struct npcm_reset_info *info; +struct regmap *gcr_regmap;u32 sw_reset_number;void __iomem *base;spinlock_t lock;
@@ -120,14 +153,24 @@ static int npcm_rc_status(struct reset_controller_dev *rcdev,static int npcm_reset_xlate (struct reset_controller_dev *rcdev,const struct of_phandle_args *reset_spec) { +struct npcm_rc_data *rc =to_rc_data (rcdev);unsigned int offset, bit; +bool offset_found = false; +int off_num; offset = reset_spec->args[0 ]; -if (offset !=NPCM_IPSRST1 && offset !=NPCM_IPSRST2 && - offset !=NPCM_IPSRST3 ) { +for (off_num =0 ; off_num < rc->info->num_ipsrst ; off_num++) { +if (offset == rc->info->ipsrst[off_num]) { + offset_found = true; +break ; + } + } + +if (!offset_found) {dev_err (rcdev->dev,"Error reset register (0x%x)\n" , offset);return -EINVAL ; } + bit = reset_spec->args[1 ];if (bit >=NPCM_RC_RESETS_PER_REG ) {dev_err (rcdev->dev,"Error reset number (%d)\n" , bit);
@@ -138,49 +181,29 @@ static int npcm_reset_xlate(struct reset_controller_dev *rcdev, }static const struct of_device_id npcm_rc_match[] = { - { .compatible ="nuvoton,npcm750-reset" }, + { .compatible ="nuvoton,npcm750-reset" , .data = &npxm7xx_reset_info}, + { .compatible ="nuvoton,npcm845-reset" , .data = &npxm8xx_reset_info}, { } }; -/* -* The following procedure should be observed in USB PHY, USB device and -* USB host initialization at BMC boot -*/ -static int npcm_usb_reset (struct platform_device *pdev,struct npcm_rc_data *rc) +static void npcm_usb_reset_npcm7xx (struct npcm_rc_data *rc) {u32 mdlr, iprst1, iprst2, iprst3; -struct device *dev = &pdev->dev; -struct regmap *gcr_regmap;u32 ipsrst1_bits =0 ;u32 ipsrst2_bits =NPCM_IPSRST2_USB_HOST ;u32 ipsrst3_bits =0 ; -const char *gcr_dt; - - gcr_dt = (const char *) -of_match_device (dev->driver->of_match_table, dev)->data; - - gcr_regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"nuvoton,sysgcr" ); -if (IS_ERR (gcr_regmap)) { -dev_warn (&pdev->dev,"Failed to find nuvoton,sysgcr property, please update the device tree\n" ); -dev_info (&pdev->dev,"Using nuvoton,npcm750-gcr for Poleg backward compatibility\n" ); - gcr_regmap =syscon_regmap_lookup_by_compatible ("nuvoton,npcm750-gcr" ); -if (IS_ERR (gcr_regmap)) { -dev_err (&pdev->dev,"Failed to find nuvoton,npcm750-gcr" ); -return PTR_ERR (gcr_regmap); - } - }/* checking which USB device is enabled */ -regmap_read (gcr_regmap,NPCM_MDLR_OFFSET , &mdlr); -if (!(mdlr &NPCM_MDLR_USBD0 )) +regmap_read (rc->gcr_regmap,NPCM_MDLR_OFFSET , &mdlr); +if (!(mdlr &NPCM7XX_MDLR_USBD0 )) ipsrst3_bits |=NPCM_IPSRST3_USBD0 ; -if (!(mdlr &NPCM_MDLR_USBD1 )) +if (!(mdlr &NPCM7XX_MDLR_USBD1 )) ipsrst1_bits |=NPCM_IPSRST1_USBD1 ; -if (!(mdlr &NPCM_MDLR_USBD2_4 )) +if (!(mdlr &NPCM7XX_MDLR_USBD2_4 )) ipsrst1_bits |= (NPCM_IPSRST1_USBD2 |NPCM_IPSRST1_USBD3 |NPCM_IPSRST1_USBD4 ); -if (!(mdlr &NPCM_MDLR_USBD0 )) { +if (!(mdlr &NPCM7XX_MDLR_USBD0 )) { ipsrst1_bits |= (NPCM_IPSRST1_USBD5 |NPCM_IPSRST1_USBD6 ); ipsrst3_bits |= (NPCM_IPSRST3_USBD7 |
@@ -203,9 +226,9 @@ static int npcm_usb_reset(struct platform_device *pdev, struct npcm_rc_data *rc)writel (iprst3, rc->base +NPCM_IPSRST3 );/* clear USB PHY RS bit */ -regmap_update_bits (gcr_regmap,NPCM_USB1PHYCTL_OFFSET , +regmap_update_bits (rc->gcr_regmap,NPCM_USB1PHYCTL_OFFSET ,NPCM_USBXPHYCTL_RS ,0 ); -regmap_update_bits (gcr_regmap,NPCM_USB2PHYCTL_OFFSET , +regmap_update_bits (rc->gcr_regmap,NPCM_USB2PHYCTL_OFFSET ,NPCM_USBXPHYCTL_RS ,0 );/* deassert reset USB PHY */
@@ -215,9 +238,9 @@ static int npcm_usb_reset(struct platform_device *pdev, struct npcm_rc_data *rc)udelay (50 );/* set USB PHY RS bit */ -regmap_update_bits (gcr_regmap,NPCM_USB1PHYCTL_OFFSET , +regmap_update_bits (rc->gcr_regmap,NPCM_USB1PHYCTL_OFFSET ,NPCM_USBXPHYCTL_RS ,NPCM_USBXPHYCTL_RS ); -regmap_update_bits (gcr_regmap,NPCM_USB2PHYCTL_OFFSET , +regmap_update_bits (rc->gcr_regmap,NPCM_USB2PHYCTL_OFFSET ,NPCM_USBXPHYCTL_RS ,NPCM_USBXPHYCTL_RS );/* deassert reset USB devices*/
@@ -228,6 +251,118 @@ static int npcm_usb_reset(struct platform_device *pdev, struct npcm_rc_data *rc)writel (iprst1, rc->base +NPCM_IPSRST1 );writel (iprst2, rc->base +NPCM_IPSRST2 );writel (iprst3, rc->base +NPCM_IPSRST3 ); +} + +static void npcm_usb_reset_npcm8xx (struct npcm_rc_data *rc) +{ +u32 mdlr, iprst1, iprst2, iprst3, iprst4; +u32 ipsrst1_bits =0 ; +u32 ipsrst2_bits =NPCM_IPSRST2_USB_HOST ; +u32 ipsrst3_bits =0 ; +u32 ipsrst4_bits =NPCM_IPSRST4_USB_HOST2 |NPCM_IPSRST4_USBPHY3 ; + +/* checking which USB device is enabled */ +regmap_read (rc->gcr_regmap,NPCM_MDLR_OFFSET , &mdlr); +if (!(mdlr &NPCM8XX_MDLR_USBD0_3 )) { + ipsrst3_bits |=NPCM_IPSRST3_USBD0 ; + ipsrst1_bits |= (NPCM_IPSRST1_USBD1 | +NPCM_IPSRST1_USBD2 | +NPCM_IPSRST1_USBD3 ); + } +if (!(mdlr &NPCM8XX_MDLR_USBD4_7 )) { + ipsrst1_bits |= (NPCM_IPSRST1_USBD4 | +NPCM_IPSRST1_USBD5 | +NPCM_IPSRST1_USBD6 ); + ipsrst3_bits |=NPCM_IPSRST3_USBD7 ; + } + +if (!(mdlr &NPCM8XX_MDLR_USBD8 )) + ipsrst3_bits |=NPCM_IPSRST3_USBD8 ; +if (!(mdlr &NPCM8XX_MDLR_USBD9 )) + ipsrst3_bits |=NPCM_IPSRST3_USBD9 ; + +/* assert reset USB PHY and USB devices */ + iprst1 =readl (rc->base +NPCM_IPSRST1 ); + iprst2 =readl (rc->base +NPCM_IPSRST2 ); + iprst3 =readl (rc->base +NPCM_IPSRST3 ); + iprst4 =readl (rc->base +NPCM_IPSRST4 ); + + iprst1 |= ipsrst1_bits; + iprst2 |= ipsrst2_bits; + iprst3 |= (ipsrst3_bits |NPCM_IPSRST3_USBPHY1 | +NPCM_IPSRST3_USBPHY2 ); + iprst2 |= ipsrst4_bits; + +writel (iprst1, rc->base +NPCM_IPSRST1 ); +writel (iprst2, rc->base +NPCM_IPSRST2 ); +writel (iprst3, rc->base +NPCM_IPSRST3 ); +writel (iprst4, rc->base +NPCM_IPSRST4 ); + +/* clear USB PHY RS bit */ +regmap_update_bits (rc->gcr_regmap,NPCM_USB1PHYCTL_OFFSET , +NPCM_USBXPHYCTL_RS ,0 ); +regmap_update_bits (rc->gcr_regmap,NPCM_USB2PHYCTL_OFFSET , +NPCM_USBXPHYCTL_RS ,0 ); +regmap_update_bits (rc->gcr_regmap,NPCM_USB3PHYCTL_OFFSET , +NPCM_USBXPHYCTL_RS ,0 ); + +/* deassert reset USB PHY */ + iprst3 &= ~(NPCM_IPSRST3_USBPHY1 |NPCM_IPSRST3_USBPHY2 ); +writel (iprst3, rc->base +NPCM_IPSRST3 ); + iprst4 &= ~NPCM_IPSRST4_USBPHY3 ; +writel (iprst4, rc->base +NPCM_IPSRST4 ); + +/* set USB PHY RS bit */ +regmap_update_bits (rc->gcr_regmap,NPCM_USB1PHYCTL_OFFSET , +NPCM_USBXPHYCTL_RS ,NPCM_USBXPHYCTL_RS ); +regmap_update_bits (rc->gcr_regmap,NPCM_USB2PHYCTL_OFFSET , +NPCM_USBXPHYCTL_RS ,NPCM_USBXPHYCTL_RS ); +regmap_update_bits (rc->gcr_regmap,NPCM_USB3PHYCTL_OFFSET , +NPCM_USBXPHYCTL_RS ,NPCM_USBXPHYCTL_RS ); + +/* deassert reset USB devices*/ + iprst1 &= ~ipsrst1_bits; + iprst2 &= ~ipsrst2_bits; + iprst3 &= ~ipsrst3_bits; + iprst4 &= ~ipsrst4_bits; + +writel (iprst1, rc->base +NPCM_IPSRST1 ); +writel (iprst2, rc->base +NPCM_IPSRST2 ); +writel (iprst3, rc->base +NPCM_IPSRST3 ); +writel (iprst4, rc->base +NPCM_IPSRST4 ); +} + +/* +* The following procedure should be observed in USB PHY, USB device and +* USB host initialization at BMC boot +*/ +static int npcm_usb_reset (struct platform_device *pdev,struct npcm_rc_data *rc) +{ +struct device *dev = &pdev->dev; + + rc->gcr_regmap =syscon_regmap_lookup_by_phandle (dev->of_node,"nuvoton,sysgcr" ); +if (IS_ERR (rc->gcr_regmap)) { +dev_warn (&pdev->dev,"Failed to find nuvoton,sysgcr property, please update the device tree\n" ); +dev_info (&pdev->dev,"Using nuvoton,npcm750-gcr for Poleg backward compatibility\n" ); + rc->gcr_regmap =syscon_regmap_lookup_by_compatible ("nuvoton,npcm750-gcr" ); +if (IS_ERR (rc->gcr_regmap)) { +dev_err (&pdev->dev,"Failed to find nuvoton,npcm750-gcr" ); +return PTR_ERR (rc->gcr_regmap); + } + } + + rc->info = (const struct npcm_reset_info *) +of_match_device (dev->driver->of_match_table, dev)->data; +switch (rc->info->bmc_id) { +case BMC_NPCM7XX : +npcm_usb_reset_npcm7xx (rc); +break ; +case BMC_NPCM8XX : +npcm_usb_reset_npcm8xx (rc); +break ; +default : +return -ENODEV ; + }return 0 ; }
Signature · 1 line
2.33.0
Tomer Maimon
maintainerPATCH v7 10/16 dt-bindings: arm: npcm: Add maintainer
In reply to Tomer MaimonAdd Tomer Maimon to the maintainers list.
--- Documentation/devicetree/bindings/arm/npcm/npcm.yaml | 1 + Documentation/devicetree/bindings/arm/npcm/nuvoton,gcr.yaml | 1 + 2 files changed, 2 insertions(+)
Documentation/devicetree/bindings/arm/npcm/npcm.yaml +1 -0
@@ -8,6 +8,7 @@ title: NPCM Platforms Device Tree Bindings maintainers: - Jonathan Neuschäfer <[email protected]> + - Tomer Maimon <[email protected]> properties: $nodename:
Documentation/devicetree/bindings/arm/npcm/nuvoton,gcr.yaml +1 -0
@@ -8,6 +8,7 @@ title: Global Control Registers block in Nuvoton SoCs maintainers: - Jonathan Neuschäfer <[email protected]> + - Tomer Maimon <[email protected]> description: The Global Control Registers (GCR) are a block of registers in Nuvoton SoCs
Signature · 1 line
2.33.0
Tomer Maimon
maintainerPATCH v7 11/16 dt-bindings: arm: npcm: Add nuvoton,npcm845 compatible string
In reply to Tomer MaimonAdd a compatible string for Nuvoton BMC NPCM845 SoC and a board specific device tree for the NPCM845 (Arbel) evaluation board.
--- Documentation/devicetree/bindings/arm/npcm/npcm.yaml | 6 ++++++ 1 file changed, 6 insertions(+)
Documentation/devicetree/bindings/arm/npcm/npcm.yaml +6 -0
@@ -27,4 +27,10 @@ properties: - nuvoton,npcm750-evb # NPCM750 evaluation board - const: nuvoton,npcm750 + - description: NPCM845 based boards + items: + - enum: + - nuvoton,npcm845-evb # NPCM845 evaluation board + - const: nuvoton,npcm845 + additionalProperties: true
Signature · 1 line
2.33.0
Tomer Maimon
maintainerPATCH v7 12/16 dt-bindings: arm: npcm: Add nuvoton,npcm845 GCR compatible string
In reply to Tomer MaimonAdd a compatible string for Nuvoton BMC NPCM845 global control registers.
--- Documentation/devicetree/bindings/arm/npcm/nuvoton,gcr.yaml | 1 + 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/arm/npcm/nuvoton,gcr.yaml +1 -0
@@ -21,6 +21,7 @@ properties: - enum: - nuvoton,wpcm450-gcr - nuvoton,npcm750-gcr + - nuvoton,npcm845-gcr - const: syscon - const: simple-mfd
Signature · 1 line
2.33.0
Tomer Maimon
maintainerPATCH v7 13/16 arm64: npcm: Add support for Nuvoton NPCM8XX BMC SoC
In reply to Tomer MaimonThis adds support for the Nuvoton NPCM8XX Board Management controller (BMC) SoC family.
The NPCM8XX based quad-core Cortex-A35 ARMv8 architecture.
--- MAINTAINERS | 2 ++ arch/arm64/Kconfig.platforms | 11 +++++++++++ 2 files changed, 13 insertions(+)
MAINTAINERS +2 -0
@@ -2448,9 +2448,11 @@ F: Documentation/devicetree/bindings/*/*npcm* F: Documentation/devicetree/bindings/arm/npcm/* F: arch/arm/boot/dts/nuvoton-npcm* F: arch/arm/mach-npcm/ +F: arch/arm64/boot/dts/nuvoton/ F: drivers/*/*npcm* F: drivers/*/*/*npcm* F: include/dt-bindings/clock/nuvoton,npcm7xx-clock.h +F: include/dt-bindings/clock/nuvoton,npcm8xx-clock.h ARM/NUVOTON WPCM450 ARCHITECTURE M: Jonathan Neuschäfer <[email protected]>
arch/arm64/Kconfig.platforms +11 -0
@@ -202,6 +202,17 @@ config ARCH_MXC This enables support for the ARMv8 based SoCs in the NXP i.MX family. +config ARCH_NPCM + bool "Nuvoton NPCM Architecture" + select PINCTRL + select GPIOLIB + select NPCM7XX_TIMER + select RESET_CONTROLLER + select MFD_SYSCON + help + General support for NPCM8xx BMC (Arbel). + Nuvoton NPCM8xx BMC based on the Cortex A35. + config ARCH_QCOM bool "Qualcomm Platforms" select GPIOLIB
Signature · 1 line
2.33.0
Tomer Maimon
maintainerPATCH v7 14/16 arm64: dts: nuvoton: Add initial NPCM8XX device tree
In reply to Tomer MaimonThis adds initial device tree support for the Nuvoton NPCM845 Board Management controller (BMC) SoC family.
The NPCM845 based quad-core Cortex-A35 ARMv8 architecture and have various peripheral IPs.
--- arch/arm64/boot/dts/Makefile | 1 + .../dts/nuvoton/nuvoton-common-npcm8xx.dtsi | 170 ++++++++++++++++++ .../boot/dts/nuvoton/nuvoton-npcm845.dtsi | 76 ++++++++ 3 files changed, 247 insertions(+) create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-npcm845.dtsi
arch/arm64/boot/dts/Makefile +1 -0
@@ -19,6 +19,7 @@ subdir-y += lg subdir-y += marvell subdir-y += mediatek subdir-y += microchip +subdir-y += nuvoton subdir-y += nvidia subdir-y += qcom subdir-y += realtek
arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi new file +170 -0
170 lines not on this page · raw message
arch/arm64/boot/dts/nuvoton/nuvoton-npcm845.dtsi new file +76 -0
76 lines not on this page · raw message
Signature · 1 line
2.33.0
Tomer Maimon
maintainerPATCH v7 15/16 arm64: dts: nuvoton: Add initial NPCM845 EVB device tree
In reply to Tomer MaimonAdd initial Nuvoton NPCM845 evaluation board device tree.
--- arch/arm64/boot/dts/nuvoton/Makefile | 2 ++ .../boot/dts/nuvoton/nuvoton-npcm845-evb.dts | 30 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 arch/arm64/boot/dts/nuvoton/Makefile create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-npcm845-evb.dts
arch/arm64/boot/dts/nuvoton/Makefile new file +2 -0
@@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0 +dtb-$(CONFIG_ARCH_NPCM) += nuvoton-npcm845-evb.dtb
arch/arm64/boot/dts/nuvoton/nuvoton-npcm845-evb.dts new file +30 -0
@@ -0,0 +1,30 @@ +// SPDX-License-Identifier: GPL-2.0 +// Copyright (c) 2021 Nuvoton Technology [email protected] + +/dts-v1/; +#include "nuvoton-npcm845.dtsi" + +/ { + model = "Nuvoton npcm845 Development Board (Device Tree)"; + compatible = "nuvoton,npcm845-evb", "nuvoton,npcm845"; + + aliases { + serial0 = &serial0; + }; + + chosen { + stdout-path = &serial0; + }; + + memory { + reg = <0x0 0x0 0x0 0x40000000>; + }; +}; + +&serial0 { + status = "okay"; +}; + +&watchdog1 { + status = "okay"; +};
Signature · 1 line
2.33.0
Tomer Maimon
maintainerPATCH v7 16/16 arm64: defconfig: Add Nuvoton NPCM family support
In reply to Tomer MaimonEnable basic drivers for NPCM8XX booting up support: Architecture, Clock, and WD.
--- arch/arm64/configs/defconfig | 3 +++ 1 file changed, 3 insertions(+)
arch/arm64/configs/defconfig +3 -0
@@ -49,6 +49,7 @@ CONFIG_ARCH_MEDIATEK=y CONFIG_ARCH_MESON=y CONFIG_ARCH_MVEBU=y CONFIG_ARCH_MXC=y +CONFIG_ARCH_NPCM=y CONFIG_ARCH_QCOM=y CONFIG_ARCH_RENESAS=y CONFIG_ARCH_ROCKCHIP=y
@@ -627,6 +628,7 @@ CONFIG_RENESAS_RZG2LWDT=y CONFIG_UNIPHIER_WATCHDOG=y CONFIG_PM8916_WATCHDOG=m CONFIG_BCM2835_WDT=y +CONFIG_NPCM7XX_WATCHDOG=y CONFIG_MFD_ALTERA_SYSMGR=y CONFIG_MFD_BD9571MWV=y CONFIG_MFD_AXP20X_I2C=y
@@ -1021,6 +1023,7 @@ CONFIG_COMMON_CLK_FSL_SAI=y CONFIG_COMMON_CLK_S2MPS11=y CONFIG_COMMON_CLK_PWM=y CONFIG_COMMON_CLK_VC5=y +CONFIG_COMMON_CLK_NPCM8XX=y CONFIG_COMMON_CLK_BD718XX=m CONFIG_CLK_RASPBERRYPI=m CONFIG_CLK_IMX8MM=y
Signature · 1 line
2.33.0
Hi Arnd,
Quoted 3 lines · Tomer Maimon
This patchset adds initial support for the Nuvoton Arbel NPCM8XX Board Management controller (BMC) SoC family.
Are you happy with a cross tree new soc branch for this series? If so I can put them in a branch and get some build coverage before sending them out.
(I notice the clock and reset changes are waiting on acks still)
Cheers,
Joel
Quoted 122 lines
The Nuvoton Arbel NPCM8XX SoC is a fourth-generation BMC. The NPCM8XX computing subsystem comprises a quadcore ARM Cortex A35 ARM-V8 architecture.
This patchset adds minimal architecture and drivers such as:
Clocksource, Clock, Reset, and WD.Some of the Arbel NPCM8XX peripherals are based on Poleg NPCM7XX.
This patchset was tested on the Arbel NPCM8XX evaluation board.
Addressed comments from:
- Philipp Zabel: https://www.spinics.net/lists/arm-kernel/msg993305.htmlChanges since version 6:
- NPCM reset driver
- Modify warning message.
- dt-bindings: serial: 8250: Add npcm845 compatible string patch accepted, due to it the patch removed from the patchset.Changes since version 5:
- NPCM8XX clock driver
- Remove refclk ifdevm_of_clk_add_hw_providerfunction failed.
- NPCM8XX clock source driver
- Remove NPCM8XXTIMER_OF_DECLAREsupport, using the same as NPCM7XX.Changes since version 4:
- NPCM8XX clock driver
- Use the same quote in the dt-binding file.Changes since version 3:
- NPCM8XX clock driver
- Rename NPCM8xx clock dt-binding header file.
- Remove unused structures.
- Improve Handling the clocks registration.
- NPCM reset driver
- Add ref phandle to dt-binding.Changes since version 2:
- Remove NPCM8xx WDT compatible patch.
- Remove NPCM8xx UART compatible patch.
- NPCM8XX clock driver
- Add debug new line.
- Add 25M fixed rate clock.
- Remove unused clocks and clock name from dt-binding.
- NPCM reset driver
- Revert to npcm7xx dt-binding.
- Skip dt binding quotes.
- Adding DTS backward compatibility.
- Remove NPCM8xx binding include file.
- Warp commit message.
- NPCM8XX device tree:
- Remove unused clock nodes (used in the clock driver)
- Modify gcr and rst node names.Changes since version 1:
- NPCM8XX clock driver
- Modify dt-binding.
- Remove unsed definition and include.
- Include alphabetically.
- Use clock devm.
- NPCM reset driver
- Modify dt-binding.
- Modify syscon name.
- Add syscon support to NPCM7XX dts reset node.
- use data structure.
- NPCM8XX device tree:
- Modify evb compatible name.
- Add NPCM7xx compatible.
- Remove disable nodes from the EVB DTS.Tomer Maimon (16):
dt-bindings: timer: npcm: Add npcm845 compatible string
dt-bindings: watchdog: npcm: Add npcm845 compatible string
dt-binding: clk: npcm845: Add binding for Nuvoton NPCM8XX Clock
clk: npcm8xx: add clock controller
dt-bindings: reset: npcm: add GCR syscon property
ARM: dts: nuvoton: add reset syscon property
reset: npcm: using syscon instead of device data
dt-bindings: reset: npcm: Add support for NPCM8XX
reset: npcm: Add NPCM8XX support
dt-bindings: arm: npcm: Add maintainer
dt-bindings: arm: npcm: Add nuvoton,npcm845 compatible string
dt-bindings: arm: npcm: Add nuvoton,npcm845 GCR compatible string
arm64: npcm: Add support for Nuvoton NPCM8XX BMC SoC
arm64: dts: nuvoton: Add initial NPCM8XX device tree
arm64: dts: nuvoton: Add initial NPCM845 EVB device tree
arm64: defconfig: Add Nuvoton NPCM family support.../devicetree/bindings/arm/npcm/npcm.yaml | 7 + .../bindings/arm/npcm/nuvoton,gcr.yaml | 2 + .../bindings/clock/nuvoton,npcm845-clk.yaml | 49 ++ .../bindings/reset/nuvoton,npcm750-reset.yaml | 10 +- .../bindings/timer/nuvoton,npcm7xx-timer.yaml | 2 + .../bindings/watchdog/nuvoton,npcm-wdt.txt | 3 +- MAINTAINERS | 2 + arch/arm/boot/dts/nuvoton-common-npcm7xx.dtsi | 1 + arch/arm64/Kconfig.platforms | 11 + arch/arm64/boot/dts/Makefile | 1 + arch/arm64/boot/dts/nuvoton/Makefile | 2 + .../dts/nuvoton/nuvoton-common-npcm8xx.dtsi | 170 +++++ .../boot/dts/nuvoton/nuvoton-npcm845-evb.dts | 30 + .../boot/dts/nuvoton/nuvoton-npcm845.dtsi | 76 +++ arch/arm64/configs/defconfig | 3 + drivers/clk/Kconfig | 6 + drivers/clk/Makefile | 1 + drivers/clk/clk-npcm8xx.c | 600 ++++++++++++++++++ drivers/reset/reset-npcm.c | 207 +++++- .../dt-bindings/clock/nuvoton,npcm845-clk.h | 49 ++ 20 files changed, 1196 insertions(+), 36 deletions(-) create mode 100644 Documentation/devicetree/bindings/clock/nuvoton,npcm845-clk.yaml create mode 100644 arch/arm64/boot/dts/nuvoton/Makefile create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-npcm845-evb.dts create mode 100644 arch/arm64/boot/dts/nuvoton/nuvoton-npcm845.dtsi create mode 100644 drivers/clk/clk-npcm8xx.c create mode 100644 include/dt-bindings/clock/nuvoton,npcm845-clk.h--
2.33.0
Arnd Bergmann
maintainerQuoted 5 lines · Joel Stanley
Hi Arnd,
Quoted 1 line · Tomer Maimon
Quoted 9 lines
Quoted 2 lines
This patchset adds initial support for the Nuvoton Arbel NPCM8XX Board Management controller (BMC) SoC family.
Are you happy with a cross tree new soc branch for this series? If so I can put them in a branch and get some build coverage before sending them out.
(I notice the clock and reset changes are waiting on acks still)
Hi Joel,
Yes, I think we should merge the parts that are reviewed already, but I'd leave out the clk (4/16) and reset (9/16) patches in this case.
Krzysztof has reviewed the binding changes, so I don't mind having the DT nodes added in the soc tree even if the two drivers are still missing.
I would do the same thing for the sunplus SP7021 platform that Qin Jian has been posting, as this is also waiting for a final Ack on the clk driver.
I would put both of the new platforms into a single branch in the SoC tree, separate from the usual dt/drivers/soc/defconfig branches. I was already planning to pick npcm8xx up myself, but if you can do a pull request, that would be even better.
Arnd
Arnd Bergmann
maintainerQuoted 14 lines · Arnd Bergmann
Quoted 5 lines · Joel Stanley
Are you happy with a cross tree new soc branch for this series? If so I can put them in a branch and get some build coverage before sending them out.
(I notice the clock and reset changes are waiting on acks still)
Yes, I think we should merge the parts that are reviewed already, but I'd leave out the clk (4/16) and reset (9/16) patches in this case.
Krzysztof has reviewed the binding changes, so I don't mind having the DT nodes added in the soc tree even if the two drivers are still missing.
Quoted 8 lines
I would do the same thing for the sunplus SP7021 platform that Qin Jian has been posting, as this is also waiting for a final Ack on the clk driver.
I would put both of the new platforms into a single branch in the SoC tree, separate from the usual dt/drivers/soc/defconfig branches. I was already planning to pick npcm8xx up myself, but if you can do a pull request, that would be even better.
I see there is now a v9 of the series, let me know if I should apply some or all of those, or if I should wait for a pull request from you.
I've just merged the Sunplus sp7021 support leaving out the clock driver in order to make progress on that one, and we can do the same thing here if there is still ongoing discussion about some of the drivers. It would be nice to not wait too long though, as we are already past -rc7.
Arnd
Tomer Maimon
maintainerHi Arnd,
Appreciate you taking care of this!
Are these questions direct to me or Joel?
On our side we will be happy that you will start to merge Arbel NPCM8XX without the clock driver, hopefully the NPCM8XX clock driver will ACK soon and maybe you can merge it as well.
What do you say Joel?
Thanks a lot
Tomer
Quoted 36 lines · Arnd Bergmann
Quoted 14 lines · Arnd Bergmann
Quoted 5 lines · Joel Stanley
Are you happy with a cross tree new soc branch for this series? If so I can put them in a branch and get some build coverage before sending them out.
(I notice the clock and reset changes are waiting on acks still)
Yes, I think we should merge the parts that are reviewed already, but I'd leave out the clk (4/16) and reset (9/16) patches in this case.
Krzysztof has reviewed the binding changes, so I don't mind having the DT nodes added in the soc tree even if the two drivers are still missing.
Quoted 8 lines
I would do the same thing for the sunplus SP7021 platform that Qin Jian has been posting, as this is also waiting for a final Ack on the clk driver.
I would put both of the new platforms into a single branch in the SoC tree, separate from the usual dt/drivers/soc/defconfig branches. I was already planning to pick npcm8xx up myself, but if you can do a pull request, that would be even better.
I see there is now a v9 of the series, let me know if I should apply some or all of those, or if I should wait for a pull request from you.
I've just merged the Sunplus sp7021 support leaving out the clock driver in order to make progress on that one, and we can do the same thing here if there is still ongoing discussion about some of the drivers. It would be nice to not wait too long though, as we are already past -rc7.
Arnd
Arnd Bergmann
maintainerQuoted 5 lines · Tomer Maimon
Hi Arnd,
Appreciate you taking care of this!
Quoted 7 lines
Are these questions direct to me or Joel?
On our side we will be happy that you will start to merge Arbel NPCM8XX without the clock driver, hopefully the NPCM8XX clock driver will ACK soon and maybe you can merge it as well.
What do you say Joel?
As discussed off-list, I have now merged the series into the soc tree as part of the arm/newsoc branch directly, with the exception of the clk driver. No need to resend the patches I merged for future versions, if any changes are required before the merge window, please send them directly to [email protected].
After that, it's best to continue working with Joel so he can merge and forward future patches.
Regarding the clk driver, please make sure this applies cleanly on top of what I just merged. This can be applied to either the soc tree at the moment, or the common-clk tree in the future if it misses the merge window.
Arnd
_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel