Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db06f826 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull clk updates from Stephen Boyd:
 "The new and exciting feature this time around is in the clk core.
  We've added duty cycle support to the clk API so that clk signal duty
  cycle ratios can be adjusted while taking into account things like clk
  dividers and clk tree hierarchy. So far only one SoC has implemented
  support for this, but I expect there will be more to come in the
  future.

  Outside of the core, we have the usual pile of clk driver updates and
  additions. The Amlogic meson driver got the most lines in the diffstat
  this time around because it added support for a whole bunch of
  hardware and duty cycle configuration. After that the Rockchip PX30,
  Qualcomm SDM845, and Renesas SoC drivers fill in a majority of the
  diff. We're left with the collection of non-critical fixes after that.
  Overall it looks pretty quiet this time.

  Core:
   - Clk duty cycle support
   - Proper CLK_SET_RATE_GATE support throughout the tree

  New Drivers:
   - Actions Semi Owl series S700 SoC clk driver
   - Qualcomm SDM845 display clock controller
   - i.MX6SX ocram_s clk support
   - Uniphier NAND, USB3 PHY, and SPI clk support
   - Qualcomm RPMh clk driver
   - i.MX7D mailbox clk support
   - Maxim 9485 Programmable Clock Generator
   - expose 32 kHz PLL on PXA SoCs
   - imx6sll GPIO clk gate support
   - Atmel at91 I2S audio clk support
   - SI544/SI514 clk on/off support
   - i.MX6UL GPIO clock gates in CCM CCGR
   - Renesas Crypto Engine clocks on R-Car H3
   - Renesas clk support for the new RZ/N1D SoC
   - Allwinner A64 display engine clock support
   - support for Rockchip's PX30 SoC
   - Amlogic Meson axg PCIe and audio clocks
   - Amlogic Meson GEN CLK on gxbb, gxl and axg

  Updates:
   - remove an unused variable from Exynos4412 ISP driver
   - fix a thinko bug in SCMI clk division logic
   - add missing of_node_put()s in some i.MX clk drivers
   - Tegra SDMMC clk jitter improvements with high speed signaling modes
   - SPDX tagging for qcom and cs2000-cp drivers
   - stop leaking con ids in __clk_put()
   - fix a corner case in fixed factor clk probing where node is in DT
     but parent clk is registered much later
   - Marvell Armada 3700 clk_pm_cpu_get_parent() had an invalid return
     value
   - i.MX clk init arrays removed in place of CLK_IS_CRITICAL
   - convert to CLK_IS_CRITICAL for i.MX51/53 driver
   - fix Tegra BPMP driver oops when xlating a NULL clk
   - proper default configuration for vic03 and vde clks on Tegra124
   - mark Tegra memory controller clks as critical
   - fix array bounds clamp in Tegra's emc determine_rate() op
   - Ingenic i2s bit update and allow UDC clk to gate
   - fix name of aspeed SDC clk define to have only one 'CLK'
   - fix i.MX6QDL video clk parent
   - critical clk markings for qcom SDM845
   - fix Stratix10 mpu_free_clk and sdmmc_free_clk parents
   - mark Rockchip's pclk_rkpwm_pmu as critical clock, due to it
     supplying the pwm used to drive the logic supply of the rk3399
     core"

* tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux: (85 commits)
  clk: rockchip: Add pclk_rkpwm_pmu to PMU critical clocks in rk3399
  clk: cs2000-cp: convert to SPDX identifiers
  clk: scmi: Fix the rounding of clock rate
  clk: qcom: Add display clock controller driver for SDM845
  clk: mvebu: armada-37xx-periph: Remove unused var num_parents
  clk: samsung: Remove unused mout_user_aclk400_mcuisp_p4x12 variable
  clk: actions: Add S700 SoC clock support
  dt-bindings: clock: Add S700 support for Actions Semi Soc's
  clk: actions: Add missing REGMAP_MMIO dependency
  clk: uniphier: add clock frequency support for SPI
  clk: uniphier: add more USB3 PHY clocks
  clk: uniphier: add NAND 200MHz clock
  clk: tegra: make sdmmc2 and sdmmc4 as sdmmc clocks
  clk: tegra: Add sdmmc mux divider clock
  clk: tegra: Refactor fractional divider calculation
  clk: tegra: Fix includes required by fence_udelay()
  clk: imx6sll: fix missing of_node_put()
  clk: imx6ul: fix missing of_node_put()
  clk: imx: add ocram_s clock for i.mx6sx
  clk: mvebu: armada-37xx-periph: Fix wrong return value in get_parent
  ...
parents 6de4c691 ac7da1b7
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
* Actions S900 Clock Management Unit (CMU)
* Actions Semi Owl Clock Management Unit (CMU)

The Actions S900 clock management unit generates and supplies clock to various
controllers within the SoC. The clock binding described here is applicable to
S900 SoC.
The Actions Semi Owl Clock Management Unit generates and supplies clock
to various controllers within the SoC. The clock binding described here is
applicable to S900 and S700 SoC's.

Required Properties:

- compatible: should be "actions,s900-cmu"
- compatible: should be one of the following,
	"actions,s900-cmu"
	"actions,s700-cmu"
- reg: physical base address of the controller and length of memory mapped
  region.
- clocks: Reference to the parent clocks ("hosc", "losc")
@@ -15,16 +17,16 @@ Required Properties:
Each clock is assigned an identifier, and client nodes can use this identifier
to specify the clock which they consume.

All available clocks are defined as preprocessor macros in
dt-bindings/clock/actions,s900-cmu.h header and can be used in device
tree sources.
All available clocks are defined as preprocessor macros in corresponding
dt-bindings/clock/actions,s900-cmu.h or actions,s700-cmu.h header and can be
used in device tree sources.

External clocks:

The hosc clock used as input for the plls is generated outside the SoC. It is
expected that it is defined using standard clock bindings as "hosc".

Actions S900 CMU also requires one more clock:
Actions Semi S900 CMU also requires one more clock:
 - "losc" - internal low frequency oscillator

Example: Clock Management Unit node:
+56 −0
Original line number Diff line number Diff line
* Amlogic AXG Audio Clock Controllers

The Amlogic AXG audio clock controller generates and supplies clock to the
other elements of the audio subsystem, such as fifos, i2s, spdif and pdm
devices.

Required Properties:

- compatible	: should be "amlogic,axg-audio-clkc" for the A113X and A113D
- reg		: physical base address of the clock controller and length of
		  memory mapped region.
- clocks	: a list of phandle + clock-specifier pairs for the clocks listed
		  in clock-names.
- clock-names	: must contain the following:
		  * "pclk" - Main peripheral bus clock
		  may contain the following:
		  * "mst_in[0-7]" - 8 input plls to generate clock signals
		  * "slv_sclk[0-9]" - 10 slave bit clocks provided by external
				      components.
		  * "slv_lrclk[0-9]" - 10 slave sample clocks provided by external
				       components.
- resets	: phandle of the internal reset line
- #clock-cells	: should be 1.

Each clock is assigned an identifier and client nodes can use this identifier
to specify the clock which they consume. All available clocks are defined as
preprocessor macros in the dt-bindings/clock/axg-audio-clkc.h header and can be
used in device tree sources.

Example:

clkc_audio: clock-controller@0 {
	compatible = "amlogic,axg-audio-clkc";
	reg = <0x0 0x0 0x0 0xb4>;
	#clock-cells = <1>;

	clocks = <&clkc CLKID_AUDIO>,
		 <&clkc CLKID_MPLL0>,
		 <&clkc CLKID_MPLL1>,
		 <&clkc CLKID_MPLL2>,
		 <&clkc CLKID_MPLL3>,
		 <&clkc CLKID_HIFI_PLL>,
		 <&clkc CLKID_FCLK_DIV3>,
		 <&clkc CLKID_FCLK_DIV4>,
		 <&clkc CLKID_GP0_PLL>;
	clock-names = "pclk",
		      "mst_in0",
		      "mst_in1",
		      "mst_in2",
		      "mst_in3",
		      "mst_in4",
		      "mst_in5",
		      "mst_in6",
		      "mst_in7";
	resets = <&reset RESET_AUDIO>;
};
+35 −0
Original line number Diff line number Diff line
@@ -91,6 +91,9 @@ Required properties:
		at91 audio pll output on AUDIOPLLCLK that feeds the PMC
		and can be used by peripheral clock or generic clock

	"atmel,sama5d2-clk-i2s-mux" (under pmc node):
		at91 I2S clock source selection

Required properties for SCKC node:
- reg : defines the IO memory reserved for the SCKC.
- #size-cells : shall be 0 (reg is used to encode clk id).
@@ -500,3 +503,35 @@ For example:
			atmel,clk-output-range = <0 83000000>;
		};
	};

Required properties for I2S mux clocks:
- #size-cells : shall be 0 (reg is used to encode I2S bus id).
- #address-cells : shall be 1 (reg is used to encode I2S bus id).
- name: device tree node describing a specific mux clock.
	* #clock-cells : from common clock binding; shall be set to 0.
	* clocks : shall be the mux clock parent phandles; shall be 2 phandles:
	  peripheral and generated clock; the first phandle shall belong to the
	  peripheral clock and the second one shall belong to the generated
	  clock; "clock-indices" property can be user to specify
	  the correct order.
	* reg: I2S bus id of the corresponding mux clock.
	  e.g. reg = <0>; for i2s0, reg = <1>; for i2s1

For example:
	i2s_clkmux {
		compatible = "atmel,sama5d2-clk-i2s-mux";
		#address-cells = <1>;
		#size-cells = <0>;

		i2s0muxck: i2s0_muxclk {
			clocks = <&i2s0_clk>, <&i2s0_gclk>;
			#clock-cells = <0>;
			reg = <0>;
		};

		i2s1muxck: i2s1_muxclk {
			clocks = <&i2s1_clk>, <&i2s1_gclk>;
			#clock-cells = <0>;
			reg = <1>;
		};
	};
+59 −0
Original line number Diff line number Diff line
Devicetree bindings for Maxim MAX9485 Programmable Audio Clock Generator

This device exposes 4 clocks in total:

- MAX9485_MCLKOUT: 	A gated, buffered output of the input clock of 27 MHz
- MAX9485_CLKOUT:	A PLL that can be configured to 16 different discrete
			frequencies
- MAX9485_CLKOUT[1,2]:	Two gated outputs for MAX9485_CLKOUT

MAX9485_CLKOUT[1,2] are children of MAX9485_CLKOUT which upchain all rate set
requests.

Required properties:
- compatible:	"maxim,max9485"
- clocks:	Input clock, must provice 27.000 MHz
- clock-names:	Must be set to "xclk"
- #clock-cells: From common clock binding; shall be set to 1

Optional properties:
- reset-gpios:		GPIO descriptor connected to the #RESET input pin
- vdd-supply:		A regulator node for Vdd
- clock-output-names:	Name of output clocks, as defined in common clock
			bindings

If not explicitly set, the output names are "mclkout", "clkout", "clkout1"
and "clkout2".

Clocks are defined as preprocessor macros in the dt-binding header.

Example:

	#include <dt-bindings/clock/maxim,max9485.h>

	xo-27mhz: xo-27mhz {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <27000000>;
	};

	&i2c0 {
		max9485: audio-clock@63 {
			reg = <0x63>;
			compatible = "maxim,max9485";
			clock-names = "xclk";
			clocks = <&xo-27mhz>;
			reset-gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
			vdd-supply = <&3v3-reg>;
			#clock-cells = <1>;
		};
	};

	// Clock consumer node

	foo@0 {
		compatible = "bar,foo";
		/* ... */
		clock-names = "foo-input-clk";
		clocks = <&max9485 MAX9485_CLKOUT1>;
	};
+19 −0
Original line number Diff line number Diff line
Qualcomm Technologies, Inc. Display Clock Controller Binding
------------------------------------------------------------

Required properties :

- compatible : shall contain "qcom,sdm845-dispcc"
- reg : shall contain base register location and length.
- #clock-cells : from common clock binding, shall contain 1.
- #reset-cells : from common reset binding, shall contain 1.
- #power-domain-cells : from generic power domain binding, shall contain 1.

Example:
	dispcc: clock-controller@af00000 {
		compatible = "qcom,sdm845-dispcc";
		reg = <0xaf00000 0x100000>;
		#clock-cells = <1>;
		#reset-cells = <1>;
		#power-domain-cells = <1>;
	};
Loading