<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-dev/drivers/clk/sunxi-ng/Makefile, branch master</title>
<subtitle>Linux kernel development work - see feature branches</subtitle>
<id>https://git.zx2c4.com/linux-dev/atom/drivers/clk/sunxi-ng/Makefile?h=master</id>
<link rel='self' href='https://git.zx2c4.com/linux-dev/atom/drivers/clk/sunxi-ng/Makefile?h=master'/>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/'/>
<updated>2022-03-23T18:58:38Z</updated>
<entry>
<title>clk: sunxi-ng: Add support for the sun6i RTC clocks</title>
<updated>2022-03-23T18:58:38Z</updated>
<author>
<name>Samuel Holland</name>
<email>samuel@sholland.org</email>
</author>
<published>2022-02-03T02:17:35Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=d91612d7f01aca454469976d25db761c5085ae4d'/>
<id>urn:sha1:d91612d7f01aca454469976d25db761c5085ae4d</id>
<content type='text'>
The RTC power domain in sun6i and newer SoCs manages the 16 MHz RC
oscillator (called "IOSC" or "osc16M") and the optional 32 kHz crystal
oscillator (called "LOSC" or "osc32k"). Starting with the H6, this power
domain also handles the 24 MHz DCXO (called variously "HOSC", "dcxo24M",
or "osc24M") as well. The H6 also adds a calibration circuit for IOSC.

Later SoCs introduce further variations on the design:
 - H616 adds an additional mux for the 32 kHz fanout source.
 - R329 adds an additional mux for the RTC timekeeping clock, a clock
   for the SPI bus between power domains inside the RTC, and removes the
   IOSC calibration functionality.

Take advantage of the CCU framework to handle this increased complexity.
This driver is intended to be a drop-in replacement for the existing RTC
clock provider. So some runtime adjustment of the clock parents is
needed, both to handle hardware differences, and to support the old
binding which omitted some of the input clocks.

Signed-off-by: Samuel Holland &lt;samuel@sholland.org&gt;
Acked-by: Stephen Boyd &lt;sboyd@kernel.org&gt;
Signed-off-by: Alexandre Belloni &lt;alexandre.belloni@bootlin.com&gt;
Link: https://lore.kernel.org/r/20220203021736.13434-6-samuel@sholland.org
</content>
</entry>
<entry>
<title>clk: sunxi-ng: Add support for the D1 SoC clocks</title>
<updated>2021-11-23T09:29:05Z</updated>
<author>
<name>Samuel Holland</name>
<email>samuel@sholland.org</email>
</author>
<published>2021-11-19T04:35:44Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=35b97bb941110a20fea1f3125837a98fdf8de054'/>
<id>urn:sha1:35b97bb941110a20fea1f3125837a98fdf8de054</id>
<content type='text'>
The D1 SoC contains a CCU and a R_CCU (PRCM CCU). Add support for them.

Signed-off-by: Samuel Holland &lt;samuel@sholland.org&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://lore.kernel.org/r/20211119043545.4010-7-samuel@sholland.org
</content>
</entry>
<entry>
<title>clk: sunxi-ng: Allow the CCU core to be built as a module</title>
<updated>2021-11-23T09:29:05Z</updated>
<author>
<name>Samuel Holland</name>
<email>samuel@sholland.org</email>
</author>
<published>2021-11-19T03:33:37Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=91389c390521a02ecfb91270f5b9d7fae4312ae5'/>
<id>urn:sha1:91389c390521a02ecfb91270f5b9d7fae4312ae5</id>
<content type='text'>
Like the individual CCU drivers, it can be beneficial for memory
consumption of cross-platform configurations to only load the CCU core
on the relevant platform. For example, a generic arm64 kernel sees the
following improvement when building the CCU core and drivers as modules:

  before:
    text      data     bss     dec       hex      filename
    13882360  5251670  360800  19494830  12977ae  vmlinux

  after:
    text      data     bss     dec       hex      filename
    13734787  5086442  360800  19182029  124b1cd  vmlinux

So the result is a 390KB total reduction in kernel image size.

The one early clock provider (sun5i) requires the core to be built in.

Now that loading the MMC driver will trigger loading the CCU core, the
MMC timing mode functions do not need a compile-time fallback.

Signed-off-by: Samuel Holland &lt;samuel@sholland.org&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://lore.kernel.org/r/20211119033338.25486-5-samuel@sholland.org
</content>
</entry>
<entry>
<title>clk: sunxi-ng: Allow drivers to be built as modules</title>
<updated>2021-11-22T09:02:21Z</updated>
<author>
<name>Samuel Holland</name>
<email>samuel@sholland.org</email>
</author>
<published>2021-11-19T03:33:35Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=c8c525b06f532923d21d99811a7b80bf18ffd2be'/>
<id>urn:sha1:c8c525b06f532923d21d99811a7b80bf18ffd2be</id>
<content type='text'>
While it is useful to build all of the CCU drivers at once, only 1-3 of
them will be loaded at a time, or possibly none of them if the kernel is
booted on a non-sunxi platform. These CCU drivers are relatively large;
32-bit drivers have 30-50k of data each, while the 64-bit ones are
50-75k due to the increased pointer overhead. About half of that data
comes from relocations. Let's allow the user to build these drivers as
modules so only the necessary data is loaded.

As a first step, convert the CCUs that are already platform drivers.

When the drivers are built as modules, normally the file name becomes
the module name. However, the current file names are inconsistent with
the &lt;platform&gt;-&lt;peripheral&gt; name used everywhere else: the devicetree
bindings, the platform driver names, and the Kconfig symbols. Use
Makfile logic to rename the modules so they follow the usual pattern.

Signed-off-by: Samuel Holland &lt;samuel@sholland.org&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://lore.kernel.org/r/20211119033338.25486-3-samuel@sholland.org
</content>
</entry>
<entry>
<title>clk: sunxi-ng: Add support for the Allwinner H616 CCU</title>
<updated>2021-01-28T10:14:35Z</updated>
<author>
<name>Andre Przywara</name>
<email>andre.przywara@arm.com</email>
</author>
<published>2021-01-27T17:24:43Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=88dde5e23da1a16fe9a417171e6c941736b8d3a6'/>
<id>urn:sha1:88dde5e23da1a16fe9a417171e6c941736b8d3a6</id>
<content type='text'>
While the clocks are fairly similar to the H6, many differ in tiny
details, so a separate clock driver seems indicated.

Derived from the H6 clock driver, and adjusted according to the manual.

Signed-off-by: Andre Przywara &lt;andre.przywara@arm.com&gt;
Acked-by: Maxime Ripard &lt;mripard@kernel.org&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://lore.kernel.org/r/20210127172500.13356-4-andre.przywara@arm.com
</content>
</entry>
<entry>
<title>clk: sunxi-ng: add support for the Allwinner A100 CCU</title>
<updated>2020-08-25T08:52:18Z</updated>
<author>
<name>Yangtao Li</name>
<email>frank@allwinnertech.com</email>
</author>
<published>2020-07-24T06:58:43Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=fb038ce4db55cf2c911b6b221d10f06afe5f25af'/>
<id>urn:sha1:fb038ce4db55cf2c911b6b221d10f06afe5f25af</id>
<content type='text'>
Add support for a100 in the sunxi-ng CCU framework.

Signed-off-by: Yangtao Li &lt;frank@allwinnertech.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Acked-by: Rob Herring &lt;robh@kernel.org&gt;
Link: https://lore.kernel.org/r/1eb41bf6c966a0e54820200650d27a5d4f2ac160.1595572867.git.frank@allwinnertech.com
</content>
</entry>
<entry>
<title>clk: sunxi-ng: add support for suniv F1C100s SoC</title>
<updated>2018-12-04T07:41:13Z</updated>
<author>
<name>Mesih Kilinc</name>
<email>mesihkilinc@gmail.com</email>
</author>
<published>2018-12-02T20:23:47Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=0380126eb9afc48d40581301bcd709f283a8148a'/>
<id>urn:sha1:0380126eb9afc48d40581301bcd709f283a8148a</id>
<content type='text'>
The suniv F1C100s SoC (the chip in some new F-series products of
Allwinner)
has a CCU which seems to be a stripped version of the CCU in SoCs after
sun6i.

Add support for the CCU.

Signed-off-by: Mesih Kilinc &lt;mesihkilinc@gmail.com&gt;
Acked-by: Maxime Ripard &lt;maxime.ripard@bootlin.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime.ripard@bootlin.com&gt;
</content>
</entry>
<entry>
<title>clk: sunxi-ng: replace lib-y with obj-y</title>
<updated>2018-06-21T15:17:56Z</updated>
<author>
<name>Masahiro Yamada</name>
<email>yamada.masahiro@socionext.com</email>
</author>
<published>2018-04-18T11:52:31Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=12f8c553a503d98b519cca650b188bf51ebdbdbf'/>
<id>urn:sha1:12f8c553a503d98b519cca650b188bf51ebdbdbf</id>
<content type='text'>
We had commit 06e226c7fb23 ("clk: sunxi-ng: Move all clock types to a
library") and commit 799c43415442 ("kbuild: thin archives make default
for all archs") in the same development cycle, from different trees.

With migration to the thin archive, the entire drivers/clk/sunxi-ng/lib.a
is linked to the vmlinux.  This does not break build, but we do not get
any size saving.

However, we do not need to go back to the individual Kconfig options.
The default configuration pulls in all (or most) of the CCU parts anyway.
Also, once we enable CONFIG_LD_DEAD_CODE_DATA_ELIMINATION, we can simply
list all files with obj-y, and the linker will drop all unused functions
by itself.

After the long discussion [1], people there agreed to fix this, but
nobody sent a patch after all.  I am doing it now.

I lifted up CONFIG_SUNXI_CCU to drivers/clk/Makefile because everything
in drivers/clk/sunxi-ng/ depends on SUNXI_CCU.

[1] https://patchwork.kernel.org/patch/9796521/

Signed-off-by: Masahiro Yamada &lt;yamada.masahiro@socionext.com&gt;
Acked-by: Stephen Boyd &lt;sboyd@kernel.org&gt;
Signed-off-by: Maxime Ripard &lt;maxime.ripard@bootlin.com&gt;
Acked-by: Chen-Yu Tsai &lt;wens@csie.org&gt;
Signed-off-by: Stephen Boyd &lt;sboyd@kernel.org&gt;
</content>
</entry>
<entry>
<title>clk: sunxi-ng: add support for H6 PRCM CCU</title>
<updated>2018-05-04T15:05:46Z</updated>
<author>
<name>Icenowy Zheng</name>
<email>icenowy@aosc.io</email>
</author>
<published>2018-05-03T18:38:41Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=b7c7b05065aa77ae3d7b70b9139ed58970daed78'/>
<id>urn:sha1:b7c7b05065aa77ae3d7b70b9139ed58970daed78</id>
<content type='text'>
The H6 has clock/reset controls in PRCM part, like old SoCs such as H3
and A64. However, the PRCM CCU is rearranged; the register arragement
is now similar to the main CCU of H6, and the PRCM now has two APB
buses to control -- one is clocked from AHB clock derivde from AR100
clock, the other is clocked from the same mux with AR100 clock.
Therefore a new driver is written for it.

As there's no official document about the PRCM in H6, all the information
are indirectly collected from BSP and parts of the document, and the
information source is noted as comments in the driver's source code. If
reliable information is provided furtherly, the driver needs to be
rechecked.

Signed-off-by: Icenowy Zheng &lt;icenowy@aosc.io&gt;
Signed-off-by: Maxime Ripard &lt;maxime.ripard@bootlin.com&gt;
</content>
</entry>
<entry>
<title>clk: sunxi-ng: add support for the Allwinner H6 CCU</title>
<updated>2018-03-18T20:17:07Z</updated>
<author>
<name>Icenowy Zheng</name>
<email>icenowy@aosc.io</email>
</author>
<published>2018-03-16T14:02:13Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/linux-dev/commit/?id=524353ea480b0094c16f2b5684ce7e0a23ab3685'/>
<id>urn:sha1:524353ea480b0094c16f2b5684ce7e0a23ab3685</id>
<content type='text'>
The Allwinner H6 SoC has a CCU which has been largely rearranged.

Add support for it in the sunxi-ng CCU framework.

Signed-off-by: Icenowy Zheng &lt;icenowy@aosc.io&gt;
Acked-by: Maxime Ripard &lt;maxime.ripard@bootlin.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime.ripard@bootlin.com&gt;
</content>
</entry>
</feed>
