brintos

brintos / linux-shallow public Read only

0
0
Text · 2.2 KiB · 2be1458 Raw
82 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * Copyright (c) 2018 MediaTek Inc.4 * Author: Owen Chen <owen.chen@mediatek.com>5 */6 7#include <linux/clk-provider.h>8#include <linux/platform_device.h>9 10#include "clk-mtk.h"11#include "clk-gate.h"12 13#include <dt-bindings/clock/mt6765-clk.h>14 15static const struct mtk_gate_regs audio0_cg_regs = {16	.set_ofs = 0x0,17	.clr_ofs = 0x0,18	.sta_ofs = 0x0,19};20 21static const struct mtk_gate_regs audio1_cg_regs = {22	.set_ofs = 0x4,23	.clr_ofs = 0x4,24	.sta_ofs = 0x4,25};26 27#define GATE_AUDIO0(_id, _name, _parent, _shift)		\28	GATE_MTK(_id, _name, _parent, &audio0_cg_regs, _shift, &mtk_clk_gate_ops_no_setclr)29 30#define GATE_AUDIO1(_id, _name, _parent, _shift)		\31	GATE_MTK(_id, _name, _parent, &audio1_cg_regs, _shift, &mtk_clk_gate_ops_no_setclr)32 33static const struct mtk_gate audio_clks[] = {34	/* AUDIO0 */35	GATE_AUDIO0(CLK_AUDIO_AFE, "aud_afe", "audio_ck", 2),36	GATE_AUDIO0(CLK_AUDIO_22M, "aud_22m", "aud_engen1_ck", 8),37	GATE_AUDIO0(CLK_AUDIO_APLL_TUNER, "aud_apll_tuner",38		    "aud_engen1_ck", 19),39	GATE_AUDIO0(CLK_AUDIO_ADC, "aud_adc", "audio_ck", 24),40	GATE_AUDIO0(CLK_AUDIO_DAC, "aud_dac", "audio_ck", 25),41	GATE_AUDIO0(CLK_AUDIO_DAC_PREDIS, "aud_dac_predis",42		    "audio_ck", 26),43	GATE_AUDIO0(CLK_AUDIO_TML, "aud_tml", "audio_ck", 27),44	/* AUDIO1 */45	GATE_AUDIO1(CLK_AUDIO_I2S1_BCLK, "aud_i2s1_bclk",46		    "audio_ck", 4),47	GATE_AUDIO1(CLK_AUDIO_I2S2_BCLK, "aud_i2s2_bclk",48		    "audio_ck", 5),49	GATE_AUDIO1(CLK_AUDIO_I2S3_BCLK, "aud_i2s3_bclk",50		    "audio_ck", 6),51	GATE_AUDIO1(CLK_AUDIO_I2S4_BCLK, "aud_i2s4_bclk",52		    "audio_ck", 7),53};54 55static const struct mtk_clk_desc audio_desc = {56	.clks = audio_clks,57	.num_clks = ARRAY_SIZE(audio_clks),58};59 60static const struct of_device_id of_match_clk_mt6765_audio[] = {61	{62		.compatible = "mediatek,mt6765-audsys",63		.data = &audio_desc,64	}, {65		/* sentinel */66	}67};68MODULE_DEVICE_TABLE(of, of_match_clk_mt6765_audio);69 70static struct platform_driver clk_mt6765_audio_drv = {71	.probe = mtk_clk_simple_probe,72	.remove = mtk_clk_simple_remove,73	.driver = {74		.name = "clk-mt6765-audio",75		.of_match_table = of_match_clk_mt6765_audio,76	},77};78module_platform_driver(clk_mt6765_audio_drv);79 80MODULE_DESCRIPTION("MediaTek MT6765 audio clocks driver");81MODULE_LICENSE("GPL");82