Add minimal boot support for IPQ8074
Subsystems (9)
v3 cover Add minimal boot support for IPQ8074
v3:
* Addressed review feedback from Bjorn for pinctrl
- Unified the names for qpic pads.
- Corrected the names for pwm pins.
* Updated pinctrl documentation.
* Updated the default bootargs in ipq8074-hk01.dts.
* Updated the gcc clocks driver for removing the unused halt_bit in few places.
v2:
* Addressed review feedback from Stephen
- Removed cpu-map entries
- Added mmio-timer nodes
* Fix sparse warnings in the gcc-ipq8074.c
* Updated pinctrl documentation
v1:
https://www.spinics.net/lists/kernel/msg2498734.html
This series adds minimal board boot support for ipq8074-hk01 board.
Abhishek Sahu (2):
clk: qcom: ipq8074: Add Global Clock Controller support
arm64: defconfig: Enable QCOM IPQ8074 clock and pinctrl
Varadarajan Narayanan (3):
pinctrl: qcom: Add ipq8074 pinctrl driver
dt-bindings: qcom: Add IPQ8074 bindings
arm64: dts: Add ipq8074 SoC and HK01 board support
Documentation/devicetree/bindings/arm/qcom.txt | 2 + .../devicetree/bindings/clock/qcom,gcc.txt | 1 + .../bindings/pinctrl/qcom,ipq8074-pinctrl.txt | 172 ++++ arch/arm64/boot/dts/qcom/Makefile | 1 + arch/arm64/boot/dts/qcom/ipq8074-hk01.dts | 53 + arch/arm64/boot/dts/qcom/ipq8074.dtsi | 194 ++++ arch/arm64/configs/defconfig | 2 + drivers/clk/qcom/Kconfig | 9 + drivers/clk/qcom/Makefile | 1 + drivers/clk/qcom/gcc-ipq8074.c | 1009 ++++++++++++++++++ drivers/pinctrl/qcom/Kconfig | 10 + drivers/pinctrl/qcom/Makefile | 1 + drivers/pinctrl/qcom/pinctrl-ipq8074.c | 1076 ++++++++++++++++++++ include/dt-bindings/clock/qcom,gcc-ipq8074.h | 152 +++ 14 files changed, 2683 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/qcom,ipq8074-pinctrl.txt create mode 100644 arch/arm64/boot/dts/qcom/ipq8074-hk01.dts create mode 100644 arch/arm64/boot/dts/qcom/ipq8074.dtsi create mode 100644 drivers/clk/qcom/gcc-ipq8074.c create mode 100644 drivers/pinctrl/qcom/pinctrl-ipq8074.c create mode 100644 include/dt-bindings/clock/qcom,gcc-ipq8074.h
Signature · 1 line
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
PATCH v3 1/5 pinctrl: qcom: Add ipq8074 pinctrl driver
Add initial pinctrl driver to support pin configuration with pinctrl framework for ipq8074.
--- .../bindings/pinctrl/qcom,ipq8074-pinctrl.txt | 172 ++++ drivers/pinctrl/qcom/Kconfig | 10 + drivers/pinctrl/qcom/Makefile | 1 + drivers/pinctrl/qcom/pinctrl-ipq8074.c | 1076 ++++++++++++++++++++ 4 files changed, 1259 insertions(+) create mode 100644 Documentation/devicetree/bindings/pinctrl/qcom,ipq8074-pinctrl.txt create mode 100644 drivers/pinctrl/qcom/pinctrl-ipq8074.c
Documentation/devicetree/bindings/pinctrl/qcom,ipq8074-pinctrl.txt new file +172 -0
@@ -0,0 +1,172 @@ +Qualcomm Technologies, Inc. IPQ8074 TLMM block + +This binding describes the Top Level Mode Multiplexer block found in the +IPQ8074 platform. + +- compatible: + Usage: required + Value type: <string> + Definition: must be "qcom,ipq8074-pinctrl" + +- reg: + Usage: required + Value type: <prop-encoded-array> + Definition: the base address and size of the TLMM register space. + +- interrupts: + Usage: required + Value type: <prop-encoded-array> + Definition: should specify the TLMM summary IRQ. + +- interrupt-controller: + Usage: required + Value type: <none> + Definition: identifies this node as an interrupt controller + +- #interrupt-cells: + Usage: required + Value type: <u32> + Definition: must be 2. Specifying the pin number and flags, as defined + in <dt-bindings/interrupt-controller/irq.h> + +- gpio-controller: + Usage: required + Value type: <none> + Definition: identifies this node as a gpio controller + +- #gpio-cells: + Usage: required + Value type: <u32> + Definition: must be 2. Specifying the pin number and flags, as defined + in <dt-bindings/gpio/gpio.h> + +Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for +a general description of GPIO and interrupt bindings. + +Please refer to pinctrl-bindings.txt in this directory for details of the +common pinctrl bindings used by client devices, including the meaning of the +phrase "pin configuration node". + +The pin configuration nodes act as a container for an arbitrary number of +subnodes. Each of these subnodes represents some desired configuration for a +pin, a group, or a list of pins or groups. This configuration can include the +mux function to select on those pin(s)/group(s), and various pin configuration +parameters, such as pull-up, drive strength, etc. + + +PIN CONFIGURATION NODES: + +The name of each subnode is not important; all subnodes should be enumerated +and processed purely based on their content. + +Each subnode only affects those parameters that are explicitly listed. In +other words, a subnode that lists a mux function but no pin configuration +parameters implies no information about any pin configuration parameters. +Similarly, a pin subnode that describes a pullup parameter implies no +information about e.g. the mux function. + + +The following generic properties as defined in pinctrl-bindings.txt are valid +to specify in a pin configuration subnode: + +- pins: + Usage: required + Value type: <string-array> + Definition: List of gpio pins affected by the properties specified in + this subnode. Valid pins are: + gpio0-gpio69 + +- function: + Usage: required + Value type: <string> + Definition: Specify the alternative function to be configured for the + specified pins. Functions are only valid for gpio pins. + Valid values are: + atest_char, atest_char0, atest_char1, atest_char2, + atest_char3, audio_rxbclk, audio_rxd, audio_rxfsync, + audio_rxmclk, audio_txbclk, audio_txd, audio_txfsync, + audio_txmclk, blsp0_i2c, blsp0_spi, blsp0_uart, blsp1_i2c, + blsp1_spi, blsp1_uart, blsp2_i2c, blsp2_spi, blsp2_uart, + blsp3_i2c, blsp3_spi, blsp3_spi0, blsp3_spi1, blsp3_spi2, + blsp3_spi3, blsp3_uart, blsp4_i2c0, blsp4_i2c1, blsp4_spi0, + blsp4_spi1, blsp4_uart0, blsp4_uart1, blsp5_i2c, blsp5_spi, + blsp5_uart, burn0, burn1, cri_trng, cri_trng0, cri_trng1, + cxc0, cxc1, dbg_out, gcc_plltest, gcc_tlmm, gpio, ldo_en, + ldo_update, led0, led1, led2, mac0_sa0, mac0_sa1, mac1_sa0, + mac1_sa1, mac1_sa2, mac1_sa3, mac2_sa0, mac2_sa1, mdc, + mdio, NA, pcie0_clk, pcie0_rst, pcie0_wake, pcie1_clk, + pcie1_rst, pcie1_wake, pcm_drx, pcm_dtx, pcm_fsync, + pcm_pclk, pcm_zsi0, pcm_zsi1, prng_rosc, pta1_0, pta1_1, + pta1_2, pta2_0, pta2_1, pta2_2, pwm0, pwm1, pwm2, pwm3, + qdss_cti_trig_in_a0, qdss_cti_trig_in_a1, + qdss_cti_trig_in_b0, qdss_cti_trig_in_b1, + qdss_cti_trig_out_a0, qdss_cti_trig_out_a1, + qdss_cti_trig_out_b0, qdss_cti_trig_out_b1, + qdss_traceclk_a, qdss_traceclk_b, qdss_tracectl_a, + qdss_tracectl_b, qdss_tracedata_a, qdss_tracedata_b, + qpic, rx0, rx1, rx2, sd_card, sd_write, tsens_max, wci2a, + wci2b, wci2c, wci2d, NA + +- bias-disable: + Usage: optional + Value type: <none> + Definition: The specified pins should be configued as no pull. + +- bias-pull-down: + Usage: optional + Value type: <none> + Definition: The specified pins should be configued as pull down. + +- bias-pull-up: + Usage: optional + Value type: <none> + Definition: The specified pins should be configued as pull up. + +- output-high: + Usage: optional + Value type: <none> + Definition: The specified pins are configured in output mode, driven + high. + +- output-low: + Usage: optional + Value type: <none> + Definition: The specified pins are configured in output mode, driven + low. + +- drive-strength: + Usage: optional + Value type: <u32> + Definition: Selects the drive strength for the specified pins, in mA. + Valid values are: 2, 4, 6, 8, 10, 12, 14 and 16 + +Example: + + tlmm: pinctrl at 1000000 { + compatible = "qcom,ipq8074-pinctrl"; + reg = <0x1000000 0x300000>; + interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + + uart2: uart2-default { + mux { + pins = "gpio23", "gpio24"; + function = "blsp4_uart1"; + }; + + rx { + pins = "gpio23"; + drive-strength = <4>; + bias-disable; + }; + + tx { + pins = "gpio24"; + drive-strength = <2>; + bias-pull-up; + }; + }; + };
drivers/pinctrl/qcom/Kconfig +10 -0
@@ -39,6 +39,16 @@ config PINCTRL_IPQ8064 This is the pinctrl, pinmux, pinconf and gpiolib driver for the Qualcomm TLMM block found in the Qualcomm IPQ8064 platform. +config PINCTRL_IPQ8074 + tristate "Qualcomm Technologies, Inc. IPQ8074 pin controller driver" + depends on GPIOLIB && OF + select PINCTRL_MSM + help + This is the pinctrl, pinmux, pinconf and gpiolib driver for + the Qualcomm Technologies Inc. TLMM block found on the + Qualcomm Technologies Inc. IPQ8074 platform. Select this for + IPQ8074. + config PINCTRL_MSM8660 tristate "Qualcomm 8660 pin controller driver" depends on GPIOLIB && OF
drivers/pinctrl/qcom/Makefile +1 -0
@@ -4,6 +4,7 @@ obj-$(CONFIG_PINCTRL_APQ8064) += pinctrl-apq8064.o obj-$(CONFIG_PINCTRL_APQ8084) += pinctrl-apq8084.o obj-$(CONFIG_PINCTRL_IPQ4019) += pinctrl-ipq4019.o obj-$(CONFIG_PINCTRL_IPQ8064) += pinctrl-ipq8064.o +obj-$(CONFIG_PINCTRL_IPQ8074) += pinctrl-ipq8074.o obj-$(CONFIG_PINCTRL_MSM8660) += pinctrl-msm8660.o obj-$(CONFIG_PINCTRL_MSM8960) += pinctrl-msm8960.o obj-$(CONFIG_PINCTRL_MSM8X74) += pinctrl-msm8x74.o
drivers/pinctrl/qcom/pinctrl-ipq8074.c new file +1076 -0
1,076 lines not on this page · raw message
Signature · 1 line
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
Re: [PATCH v3 1/5] pinctrl: qcom: Add ipq8074 pinctrl driver
Quoted 5 lines · Varadarajan Narayanan
Add initial pinctrl driver to support pin configuration with pinctrl framework for ipq8074.
Signed-off-by Manoharan Vijaya Raghavan <[email protected]>Signed-off-by Varadarajan Narayanan <[email protected]>
It's a good idea that you include the maintainer, Bjorn Andersson <[email protected]>
on these pin control patches. I'll wait for his review.
Yours,
Linus Walleij
Re: [PATCH v3 1/5] pinctrl: qcom: Add ipq8074 pinctrl driver
Linus,
Quoted 6 lines · Linus Walleij
Quoted 3 lines · Varadarajan Narayanan
Add initial pinctrl driver to support pin configuration with pinctrl framework for ipq8074.
Quoted 6 lines
Quoted 2 lines
Signed-off-by Manoharan Vijaya Raghavan <[email protected]>Signed-off-by Varadarajan Narayanan <[email protected]>It's a good idea that you include the maintainer, Bjorn Andersson <[email protected]>
on these pin control patches. I'll wait for his review.
Sorry for missing him. Have sent v6 patches with Bjorn included.
Thanks
Varada
Quoted 9 lines
Yours,
Linus Walleij_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project
PATCH v3 2/5 dt-bindings: qcom: Add IPQ8074 bindings
In reply to Varadarajan Narayanan--- Documentation/devicetree/bindings/arm/qcom.txt | 2 ++ 1 file changed, 2 insertions(+)
Documentation/devicetree/bindings/arm/qcom.txt +2 -0
@@ -25,6 +25,7 @@ The 'SoC' element must be one of the following strings: msm8994 msm8996 mdm9615 + ipq8074 The 'board' element must be one of the following strings:
@@ -33,6 +34,7 @@ The 'board' element must be one of the following strings: dragonboard mtp sbc + hk01 The 'soc_version' and 'board_version' elements take the form of v<Major>.<Minor> where the minor number may be omitted when it's zero, i.e. v1.0 is the same
Signature · 1 line
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
Rob Herring
maintainerRe: [PATCH v3 2/5] dt-bindings: qcom: Add IPQ8074 bindings
Quoted 4 lines · Varadarajan Narayanan
Signed-off-by Varadarajan Narayanan <[email protected]>--- Documentation/devicetree/bindings/arm/qcom.txt | 2 ++ 1 file changed, 2 insertions(+)
I acked v2. Please add acks when posting new versions.
Rob
Re: [PATCH v3 2/5] dt-bindings: qcom: Add IPQ8074 bindings
Quoted 8 lines · Rob Herring
Quoted 4 lines · Varadarajan Narayanan
Signed-off-by Varadarajan Narayanan <[email protected]>--- Documentation/devicetree/bindings/arm/qcom.txt | 2 ++ 1 file changed, 2 insertions(+)I acked v2. Please add acks when posting new versions.
Sorry for missing that here. I posted V4 to which I added.
Varada
Quoted 6 lines
Rob
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
PATCH v3 3/5 clk: qcom: ipq8074: Add Global Clock Controller support
In reply to Varadarajan NarayananFrom: Abhishek Sahu <[email protected]>
This patch adds support for the global clock controller found on the IPQ8074 based devices. This includes UART, I2C, SPI etc.
--- .../devicetree/bindings/clock/qcom,gcc.txt | 1 + drivers/clk/qcom/Kconfig | 9 + drivers/clk/qcom/Makefile | 1 + drivers/clk/qcom/gcc-ipq8074.c | 1009 ++++++++++++++++++++ include/dt-bindings/clock/qcom,gcc-ipq8074.h | 152 +++ 5 files changed, 1172 insertions(+) create mode 100644 drivers/clk/qcom/gcc-ipq8074.c create mode 100644 include/dt-bindings/clock/qcom,gcc-ipq8074.h
Documentation/devicetree/bindings/clock/qcom,gcc.txt +1 -0
@@ -8,6 +8,7 @@ Required properties : "qcom,gcc-apq8084" "qcom,gcc-ipq8064" "qcom,gcc-ipq4019" + "qcom,gcc-ipq8074" "qcom,gcc-msm8660" "qcom,gcc-msm8916" "qcom,gcc-msm8960"
drivers/clk/qcom/Kconfig +9 -0
@@ -82,6 +82,15 @@ config IPQ_LCC_806X Say Y if you want to use audio devices such as i2s, pcm, S/PDIF, etc. +config IPQ_GCC_8074 + tristate "IPQ8074 Global Clock Controller" + depends on COMMON_CLK_QCOM + help + Support for global clock controller on ipq8074 devices. + Say Y if you want to use peripheral devices such as UART, SPI, + i2c, USB, SD/eMMC, etc. Select this for the root clock + of ipq8074. + config MSM_GCC_8660 tristate "MSM8660 Global Clock Controller" depends on COMMON_CLK_QCOM
drivers/clk/qcom/Makefile +1 -0
@@ -17,6 +17,7 @@ obj-$(CONFIG_APQ_GCC_8084) += gcc-apq8084.o obj-$(CONFIG_APQ_MMCC_8084) += mmcc-apq8084.o obj-$(CONFIG_IPQ_GCC_4019) += gcc-ipq4019.o obj-$(CONFIG_IPQ_GCC_806X) += gcc-ipq806x.o +obj-$(CONFIG_IPQ_GCC_8074) += gcc-ipq8074.o obj-$(CONFIG_IPQ_LCC_806X) += lcc-ipq806x.o obj-$(CONFIG_MDM_GCC_9615) += gcc-mdm9615.o obj-$(CONFIG_MDM_LCC_9615) += lcc-mdm9615.o
drivers/clk/qcom/gcc-ipq8074.c new file +1009 -0
1,009 lines not on this page · raw message
include/dt-bindings/clock/qcom,gcc-ipq8074.h new file +152 -0
152 lines not on this page · raw message
Signature · 1 line
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
Re: [PATCH v3 3/5] clk: qcom: ipq8074: Add Global Clock Controller support
Quoted 5 lines · Varadarajan Narayanan
From: Abhishek Sahu <[email protected]>
This patch adds support for the global clock controller found on the IPQ8074 based devices. This includes UART, I2C, SPI etc.
Quoted 8 lines
Signed-off-by Abhishek Sahu <[email protected]>Signed-off-by Varadarajan Narayanan <[email protected]>--- .../devicetree/bindings/clock/qcom,gcc.txt | 1 + drivers/clk/qcom/Kconfig | 9 + drivers/clk/qcom/Makefile | 1 + drivers/clk/qcom/gcc-ipq8074.c | 1009 ++++++++++++++++++++ include/dt-bindings/clock/qcom,gcc-ipq8074.h | 152 +++
The new world order is to split these includes from the driver changes. Then someone (clk or arm-soc related maintainers) can merge that #define change somewhere stable and then apply the driver code on top or the dts file on top.
So can you please split the header file off into it's own patch before this one and resend?
Quoted 9 lines
drivers/clk/qcom/gcc-ipq8074.c new file +4
-0+ +static int gcc_ipq8074_probe (struct platform_device *pdev) +{ +int ret, i;
drivers/clk/qcom/gcc-ipq8074.c line 984
Quoted 10 lines
drivers/clk/qcom/gcc-ipq8074.c new file +10
-0+ +for (i =0 ; i <ARRAY_SIZE (gcc_ipq8074_hws); i++) { + ret =devm_clk_hw_register (&pdev->dev, gcc_ipq8074_hws[i]); +if (ret) +return ret; + } + + ret =qcom_cc_probe (pdev, &gcc_ipq8074_desc); + +return ret;
Just return qcom_cc_probe() please.
Quoted 2 lines
drivers/clk/qcom/gcc-ipq8074.c new file +2
-0+} +
Signature · 2 lines
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
Rob Herring
maintainerRe: [PATCH v3 3/5] clk: qcom: ipq8074: Add Global Clock Controller support
In reply to Varadarajan NarayananQuoted 9 lines · Varadarajan Narayanan
From: Abhishek Sahu <[email protected]>
This patch adds support for the global clock controller found on the IPQ8074 based devices. This includes UART, I2C, SPI etc.
Signed-off-by Abhishek Sahu <[email protected]>Signed-off-by Varadarajan Narayanan <[email protected]>--- .../devicetree/bindings/clock/qcom,gcc.txt | 1 +
I acked v2. Please add acks when posting new versions.
Quoted 7 lines
drivers/clk/qcom/Kconfig | 9 + drivers/clk/qcom/Makefile | 1 + drivers/clk/qcom/gcc-ipq8074.c | 1009 ++++++++++++++++++++ include/dt-bindings/clock/qcom,gcc-ipq8074.h | 152 +++ 5 files changed, 1172 insertions(+) create mode 100644 drivers/clk/qcom/gcc-ipq8074.c create mode 100644 include/dt-bindings/clock/qcom,gcc-ipq8074.h
PATCH v3 4/5 arm64: dts: Add ipq8074 SoC and HK01 board support
In reply to Varadarajan NarayananAdd initial device tree support for the Qualcomm IPQ8074 SoC and HK01 evaluation board.
--- arch/arm64/boot/dts/qcom/Makefile | 1 + arch/arm64/boot/dts/qcom/ipq8074-hk01.dts | 53 ++++++++ arch/arm64/boot/dts/qcom/ipq8074.dtsi | 194 ++++++++++++++++++++++++++++++ 3 files changed, 248 insertions(+) create mode 100644 arch/arm64/boot/dts/qcom/ipq8074-hk01.dts create mode 100644 arch/arm64/boot/dts/qcom/ipq8074.dtsi
arch/arm64/boot/dts/qcom/Makefile +1 -0
@@ -1,5 +1,6 @@ dtb-$(CONFIG_ARCH_QCOM) += apq8016-sbc.dtb dtb-$(CONFIG_ARCH_QCOM) += apq8096-db820c.dtb +dtb-$(CONFIG_ARCH_QCOM) += ipq8074-hk01.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8916-mtp.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8992-bullhead-rev-101.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8994-angler-rev-101.dtb
arch/arm64/boot/dts/qcom/ipq8074-hk01.dts new file +53 -0
53 lines not on this page · raw message
arch/arm64/boot/dts/qcom/ipq8074.dtsi new file +194 -0
194 lines not on this page · raw message
Signature · 1 line
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
PATCH v3 5/5 arm64: defconfig: Enable QCOM IPQ8074 clock and pinctrl
In reply to Varadarajan NarayananFrom: Abhishek Sahu <[email protected]>
These configs are required for booting kernel in QCOM IPQ8074 boards.
--- arch/arm64/configs/defconfig | 2 ++ 1 file changed, 2 insertions(+)
arch/arm64/configs/defconfig +2 -0
@@ -267,6 +267,7 @@ CONFIG_SPI_S3C64XX=y CONFIG_SPI_SPIDEV=m CONFIG_SPMI=y CONFIG_PINCTRL_SINGLE=y +CONFIG_PINCTRL_IPQ8074=y CONFIG_PINCTRL_MAX77620=y CONFIG_PINCTRL_MSM8916=y CONFIG_PINCTRL_MSM8994=y
@@ -450,6 +451,7 @@ CONFIG_CLK_QORIQ=y CONFIG_COMMON_CLK_PWM=y CONFIG_COMMON_CLK_QCOM=y CONFIG_QCOM_CLK_SMD_RPM=y +CONFIG_IPQ_GCC_8074=y CONFIG_MSM_GCC_8916=y CONFIG_MSM_GCC_8994=y CONFIG_MSM_MMCC_8996=y
Signature · 1 line
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation