• Home
  • Raw
  • Download

Lines Matching +full:tcsr +full:- +full:syscon

1 // SPDX-License-Identifier: GPL-2.0
10 #include <linux/mfd/syscon.h>
25 struct regmap_field *field = lock->priv; in qcom_hwspinlock_trylock()
42 struct regmap_field *field = lock->priv; in qcom_hwspinlock_unlock()
68 { .compatible = "qcom,sfpb-mutex" },
69 { .compatible = "qcom,tcsr-mutex" },
77 struct device_node *syscon; in qcom_hwspinlock_probe() local
86 syscon = of_parse_phandle(pdev->dev.of_node, "syscon", 0); in qcom_hwspinlock_probe()
87 if (!syscon) { in qcom_hwspinlock_probe()
88 dev_err(&pdev->dev, "no syscon property\n"); in qcom_hwspinlock_probe()
89 return -ENODEV; in qcom_hwspinlock_probe()
92 regmap = syscon_node_to_regmap(syscon); in qcom_hwspinlock_probe()
93 of_node_put(syscon); in qcom_hwspinlock_probe()
97 ret = of_property_read_u32_index(pdev->dev.of_node, "syscon", 1, &base); in qcom_hwspinlock_probe()
99 dev_err(&pdev->dev, "no offset in syscon\n"); in qcom_hwspinlock_probe()
100 return -EINVAL; in qcom_hwspinlock_probe()
103 ret = of_property_read_u32_index(pdev->dev.of_node, "syscon", 2, &stride); in qcom_hwspinlock_probe()
105 dev_err(&pdev->dev, "no stride syscon\n"); in qcom_hwspinlock_probe()
106 return -EINVAL; in qcom_hwspinlock_probe()
110 bank = devm_kzalloc(&pdev->dev, sizeof(*bank) + array_size, GFP_KERNEL); in qcom_hwspinlock_probe()
112 return -ENOMEM; in qcom_hwspinlock_probe()
121 bank->lock[i].priv = devm_regmap_field_alloc(&pdev->dev, in qcom_hwspinlock_probe()
125 pm_runtime_enable(&pdev->dev); in qcom_hwspinlock_probe()
127 ret = hwspin_lock_register(bank, &pdev->dev, &qcom_hwspinlock_ops, in qcom_hwspinlock_probe()
130 pm_runtime_disable(&pdev->dev); in qcom_hwspinlock_probe()
142 dev_err(&pdev->dev, "%s failed: %d\n", __func__, ret); in qcom_hwspinlock_remove()
146 pm_runtime_disable(&pdev->dev); in qcom_hwspinlock_remove()