// SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ #include #include #include #include #include #include #include #include "common.h" #include "gdsc.h" enum { DT_BI_TCXO, }; static struct gdsc gx_clkctl_gx_gdsc = { .gdscr = 0x4024, .en_rest_wait_val = 0x2, .en_few_wait_val = 0x2, .clk_dis_wait_val = 0xf, .pd = { .name = "gx_clkctl_gx_gdsc", .power_on = gdsc_gx_do_nothing_enable, }, .pwrsts = PWRSTS_OFF_ON, .flags = POLL_CFG_GDSCR | RETAIN_FF_ENABLE, }; static struct gdsc *gx_clkctl_gdscs[] = { [GX_CLKCTL_GX_GDSC] = &gx_clkctl_gx_gdsc, }; static const struct regmap_config gx_clkctl_regmap_config = { .reg_bits = 32, .reg_stride = 4, .val_bits = 32, .max_register = 0x4038, .fast_io = true, }; static const struct qcom_cc_desc gx_clkctl_kaanapali_desc = { .config = &gx_clkctl_regmap_config, .gdscs = gx_clkctl_gdscs, .num_gdscs = ARRAY_SIZE(gx_clkctl_gdscs), .use_rpm = true, }; static const struct of_device_id gx_clkctl_kaanapali_match_table[] = { { .compatible = "qcom,kaanapali-gxclkctl" }, { } }; MODULE_DEVICE_TABLE(of, gx_clkctl_kaanapali_match_table); static int gx_clkctl_kaanapali_probe(struct platform_device *pdev) { return qcom_cc_probe(pdev, &gx_clkctl_kaanapali_desc); } static struct platform_driver gx_clkctl_kaanapali_driver = { .probe = gx_clkctl_kaanapali_probe, .driver = { .name = "gxclkctl-kaanapali", .of_match_table = gx_clkctl_kaanapali_match_table, }, }; module_platform_driver(gx_clkctl_kaanapali_driver); MODULE_DESCRIPTION("QTI GXCLKCTL Kaanapali Driver"); MODULE_LICENSE("GPL");