brintos

brintos / linux-shallow public Read only

0
0
Text · 2.3 KiB · 9fd9498 Raw
90 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * Copyright (c) 2022, Linaro Limited4 */5 6#include <linux/clk-provider.h>7#include <linux/err.h>8#include <linux/kernel.h>9#include <linux/mod_devicetable.h>10#include <linux/module.h>11#include <linux/of.h>12#include <linux/platform_device.h>13#include <linux/regmap.h>14 15#include <dt-bindings/clock/qcom,sc8280xp-lpasscc.h>16 17#include "common.h"18#include "reset.h"19 20static const struct qcom_reset_map lpass_audiocc_sc8280xp_resets[] = {21	[LPASS_AUDIO_SWR_RX_CGCR] =  { 0xa0, 1 },22	[LPASS_AUDIO_SWR_WSA_CGCR] = { 0xb0, 1 },23	[LPASS_AUDIO_SWR_WSA2_CGCR] =  { 0xd8, 1 },24};25 26static const struct regmap_config lpass_audiocc_sc8280xp_regmap_config = {27	.reg_bits = 32,28	.reg_stride = 4,29	.val_bits = 32,30	.name = "lpass-audio-csr",31	.max_register = 0x1000,32};33 34static const struct qcom_cc_desc lpass_audiocc_sc8280xp_reset_desc = {35	.config = &lpass_audiocc_sc8280xp_regmap_config,36	.resets = lpass_audiocc_sc8280xp_resets,37	.num_resets = ARRAY_SIZE(lpass_audiocc_sc8280xp_resets),38};39 40static const struct qcom_reset_map lpasscc_sc8280xp_resets[] = {41	[LPASS_AUDIO_SWR_TX_CGCR] = { 0xc010, 1 },42};43 44static const struct regmap_config lpasscc_sc8280xp_regmap_config = {45	.reg_bits = 32,46	.reg_stride = 4,47	.val_bits = 32,48	.name = "lpass-tcsr",49	.max_register = 0x12000,50};51 52static const struct qcom_cc_desc lpasscc_sc8280xp_reset_desc = {53	.config = &lpasscc_sc8280xp_regmap_config,54	.resets = lpasscc_sc8280xp_resets,55	.num_resets = ARRAY_SIZE(lpasscc_sc8280xp_resets),56};57 58static const struct of_device_id lpasscc_sc8280xp_match_table[] = {59	{60		.compatible = "qcom,sc8280xp-lpassaudiocc",61		.data = &lpass_audiocc_sc8280xp_reset_desc,62	}, {63		.compatible = "qcom,sc8280xp-lpasscc",64		.data = &lpasscc_sc8280xp_reset_desc,65	},66	{ }67};68MODULE_DEVICE_TABLE(of, lpasscc_sc8280xp_match_table);69 70static int lpasscc_sc8280xp_probe(struct platform_device *pdev)71{72	const struct qcom_cc_desc *desc = of_device_get_match_data(&pdev->dev);73 74	return qcom_cc_probe_by_index(pdev, 0, desc);75}76 77static struct platform_driver lpasscc_sc8280xp_driver = {78	.probe = lpasscc_sc8280xp_probe,79	.driver = {80		.name = "lpasscc-sc8280xp",81		.of_match_table = lpasscc_sc8280xp_match_table,82	},83};84 85module_platform_driver(lpasscc_sc8280xp_driver);86 87MODULE_AUTHOR("Srinivas Kandagatla <srinivas.kandagatla@linaro.org>");88MODULE_DESCRIPTION("QTI LPASSCC SC8280XP Driver");89MODULE_LICENSE("GPL");90