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

Commit 889c2b7e authored by Jerome Brunet's avatar Jerome Brunet Committed by Neil Armstrong
Browse files

clk: meson: rework and clean drivers dependencies



Initially, the meson clock directory only hosted 2 controllers drivers,
for meson8 and gxbb. At the time, both used the same set of clock drivers
so managing the dependencies was not a big concern.

Since this ancient time, entropy did its job, controllers with different
requirement and specific clock drivers have been added. Unfortunately, we
did not do a great job at managing the dependencies between the
controllers and the different clock drivers. Some drivers, such as
clk-phase or vid-pll-div, are compiled even if they are useless on the
target (meson8). As we are adding new controllers, we need to be able to
pick a driver w/o pulling the whole thing.

The patch aims to clean things up by:
* providing a dedicated CONFIG_ for each clock drivers
* allowing clock drivers to be compiled as a modules, if possible
* stating explicitly which drivers are required by each controller.

Signed-off-by: default avatarJerome Brunet <jbrunet@baylibre.com>
Signed-off-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
Link: https://lkml.kernel.org/r/20190201125841.26785-5-jbrunet@baylibre.com
parent cb78ba76
Loading
Loading
Loading
Loading
+58 −24
Original line number Diff line number Diff line
config COMMON_CLK_AMLOGIC
	bool
	depends on ARCH_MESON || COMPILE_TEST
	select COMMON_CLK_REGMAP_MESON
config COMMON_CLK_MESON_INPUT
	tristate

config COMMON_CLK_AMLOGIC_AUDIO
	bool
	depends on ARCH_MESON || COMPILE_TEST
	select COMMON_CLK_AMLOGIC
config COMMON_CLK_MESON_REGMAP
	tristate
	select REGMAP

config COMMON_CLK_MESON_AO
	bool
	depends on OF
	depends on ARCH_MESON || COMPILE_TEST
	select COMMON_CLK_REGMAP_MESON
	select RESET_CONTROLLER
config COMMON_CLK_MESON_DUALDIV
	tristate
	select COMMON_CLK_MESON_REGMAP

config COMMON_CLK_REGMAP_MESON
	bool
	select REGMAP
config COMMON_CLK_MESON_MPLL
	tristate
	select COMMON_CLK_MESON_REGMAP

config COMMON_CLK_MESON_PHASE
	tristate
	select COMMON_CLK_MESON_REGMAP

config COMMON_CLK_MESON_PLL
	tristate
	select COMMON_CLK_MESON_REGMAP

config COMMON_CLK_MESON_SCLK_DIV
	tristate
	select COMMON_CLK_MESON_REGMAP

config COMMON_CLK_MESON_VID_PLL_DIV
	tristate
	select COMMON_CLK_MESON_REGMAP

config COMMON_CLK_MESON_AO_CLKC
	tristate
	select COMMON_CLK_MESON_REGMAP
	select COMMON_CLK_MESON_INPUT
	select RESET_CONTROLLER

config COMMON_CLK_MESON8B
	bool
	select COMMON_CLK_AMLOGIC
	depends on ARCH_MESON
	select COMMON_CLK_MESON_REGMAP
	select COMMON_CLK_MESON_MPLL
	select COMMON_CLK_MESON_PLL
	select MFD_SYSCON
	select RESET_CONTROLLER
	help
	  Support for the clock controller on AmLogic S802 (Meson8),
@@ -30,8 +50,14 @@ config COMMON_CLK_MESON8B

config COMMON_CLK_GXBB
	bool
	select COMMON_CLK_AMLOGIC
	select COMMON_CLK_MESON_AO
	depends on ARCH_MESON
	select COMMON_CLK_MESON_INPUT
	select COMMON_CLK_MESON_REGMAP
	select COMMON_CLK_MESON_DUALDIV
	select COMMON_CLK_MESON_VID_PLL_DIV
	select COMMON_CLK_MESON_MPLL
	select COMMON_CLK_MESON_PLL
	select COMMON_CLK_MESON_AO_CLKC
	select MFD_SYSCON
	help
	  Support for the clock controller on AmLogic S905 devices, aka gxbb.
@@ -39,8 +65,13 @@ config COMMON_CLK_GXBB

config COMMON_CLK_AXG
	bool
	select COMMON_CLK_AMLOGIC
	select COMMON_CLK_MESON_AO
	depends on ARCH_MESON
	select COMMON_CLK_MESON_INPUT
	select COMMON_CLK_MESON_REGMAP
	select COMMON_CLK_MESON_DUALDIV
	select COMMON_CLK_MESON_MPLL
	select COMMON_CLK_MESON_PLL
	select COMMON_CLK_MESON_AO_CLKC
	select MFD_SYSCON
	help
	  Support for the clock controller on AmLogic A113D devices, aka axg.
@@ -48,8 +79,11 @@ config COMMON_CLK_AXG

config COMMON_CLK_AXG_AUDIO
	tristate "Meson AXG Audio Clock Controller Driver"
	depends on COMMON_CLK_AXG
	select COMMON_CLK_AMLOGIC_AUDIO
	depends on ARCH_MESON
	select COMMON_CLK_MESON_INPUT
	select COMMON_CLK_MESON_REGMAP
	select COMMON_CLK_MESON_PHASE
	select COMMON_CLK_MESON_SCLK_DIV
	select REGMAP_MMIO
	help
	  Support for the audio clock controller on AmLogic A113D devices,
+16 −11
Original line number Diff line number Diff line
#
# Makefile for Meson specific clk
#
# Amlogic clock drivers

obj-$(CONFIG_COMMON_CLK_MESON_AO_CLKC) += meson-aoclk.o
obj-$(CONFIG_COMMON_CLK_MESON_DUALDIV) += clk-dualdiv.o
obj-$(CONFIG_COMMON_CLK_MESON_INPUT) += clk-input.o
obj-$(CONFIG_COMMON_CLK_MESON_MPLL) += clk-mpll.o
obj-$(CONFIG_COMMON_CLK_MESON_PHASE) += clk-phase.o
obj-$(CONFIG_COMMON_CLK_MESON_PLL) += clk-pll.o
obj-$(CONFIG_COMMON_CLK_MESON_REGMAP) += clk-regmap.o
obj-$(CONFIG_COMMON_CLK_MESON_SCLK_DIV) += sclk-div.o
obj-$(CONFIG_COMMON_CLK_MESON_VID_PLL_DIV) += vid-pll-div.o

# Amlogic Clock controllers

obj-$(CONFIG_COMMON_CLK_AMLOGIC) += clk-pll.o clk-mpll.o clk-phase.o vid-pll-div.o
obj-$(CONFIG_COMMON_CLK_AMLOGIC) += clk-input.o clk-dualdiv.o
obj-$(CONFIG_COMMON_CLK_AMLOGIC_AUDIO)	+= clk-triphase.o sclk-div.o
obj-$(CONFIG_COMMON_CLK_MESON_AO) += meson-aoclk.o
obj-$(CONFIG_COMMON_CLK_MESON8B) += meson8b.o
obj-$(CONFIG_COMMON_CLK_GXBB)	 += gxbb.o gxbb-aoclk.o
obj-$(CONFIG_COMMON_CLK_AXG) += axg.o axg-aoclk.o
obj-$(CONFIG_COMMON_CLK_AXG_AUDIO) += axg-audio.o
obj-$(CONFIG_COMMON_CLK_REGMAP_MESON)	+= clk-regmap.o
obj-$(CONFIG_COMMON_CLK_GXBB) += gxbb.o gxbb-aoclk.o
obj-$(CONFIG_COMMON_CLK_MESON8B) += meson8b.o
+3 −1
Original line number Diff line number Diff line
@@ -12,10 +12,12 @@
#include <linux/platform_device.h>
#include <linux/reset-controller.h>
#include <linux/mfd/syscon.h>
#include "clkc.h"
#include "meson-aoclk.h"
#include "axg-aoclk.h"

#include "clk-regmap.h"
#include "clk-dualdiv.h"

#define IN_PREFIX "ao-in-"

/*
+4 −1
Original line number Diff line number Diff line
@@ -14,8 +14,11 @@
#include <linux/reset.h>
#include <linux/slab.h>

#include "clkc-audio.h"
#include "axg-audio.h"
#include "clk-input.h"
#include "clk-regmap.h"
#include "clk-phase.h"
#include "sclk-div.h"

#define AXG_MST_IN_COUNT	8
#define AXG_SLV_SCLK_COUNT	10
+4 −1
Original line number Diff line number Diff line
@@ -17,7 +17,10 @@
#include <linux/platform_device.h>
#include <linux/regmap.h>

#include "clkc.h"
#include "clk-input.h"
#include "clk-regmap.h"
#include "clk-pll.h"
#include "clk-mpll.h"
#include "axg.h"

#define IN_PREFIX "ee-in-"
Loading