mirror of
https://github.com/torvalds/linux.git
synced 2026-05-23 14:42:08 +02:00
hwspinlock updates for v6.1
This extends the DeviceTree binding and implementation for the Qualcomm
hardware spinlock on some older platforms to follow the style of the
newer ones where the DeviceTree representation does not rely on an
intermediate syscon node.
-----BEGIN PGP SIGNATURE-----
iQJJBAABCAAzFiEEBd4DzF816k8JZtUlCx85Pw2ZrcUFAmNsIzwVHGFuZGVyc3Nv
bkBrZXJuZWwub3JnAAoJEAsfOT8Nma3FFv4QANbpxio9ZzXRlMyc2WXK+oLJVf10
goQjIUr32Oi5Gk6qvJopnIytFeQ8j6I6bTgspH/oJ8MV9/uv8Oc1KBWhHlyZB6mi
9kvUlZUxIo0H9tFcI1GgQHG9HBzSTeGj7tU+Fvs9RYIeYxDmGX7PnrLOzbCQ7aJ1
4girw/Q8ebwH3xW3W2XG1e2kepYryTZ4bxFh5Y2qeW8fQl5b6wV4o30HDsxR70RT
Ffijhivoi+oxIMygzuAhEcB90xGA7+rXA5xpTxcBt1X4iGnPI6UnU57LGyHBh/B1
BkaVNhTSsavsgRhzeDMWxlzXBd5xTkZrbM/H5354Oaf4jSTOY07jkauryoLKn/6E
4gaIQjhCpBsYCKfiiqRlRVvc7oINXSWFTDJ27XF4V863tomshoDwdVYmABrU0hcl
6Inc/xE/Qqwe6g+BC4N+v8+FR+Li0lnDuLiJey/D9lPkeTLwQihRHFT/ZxKrJcsG
rIUod9457n90zWPcTQFoI1QzpmLo5o++g74wj3lUUX7fa2wknaYxu0JWrILN1Fy2
qoqMktI0TbVNpxvmZ0ljTDdTyRmTuXOzZ01vOHMRxG/y6r6sAzTbelu/ImWbYzxB
eCu+S+hDnUDwh0QwUhTmt6WXZSASwO6VEYfhXrmOhm9HPHPTjERgjnjQPbqw9mcN
YuJNonpDRqD9h89n
=bNeC
-----END PGP SIGNATURE-----
Merge tag 'hwlock-v6.1' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux
Pull hwspinlock updates from Bjorn Andersson:
"I apparently had missed tagging and sending this set of changes out
during the 6.1 merge window. But did get the associated dts changes
depending on this merged. The result is a regression in 6.1-rc on the
affected, older, Qualcomm platforms - in for form of them not booting.
So while these weren't regression fixes originally, they are now. It's
not introducing new beahavior, but simply extending the existing new
Devicetree model, to cover remaining platforms:
- extend the DeviceTree binding and implementation for the Qualcomm
hardware spinlock on some older platforms to follow the style of
the newer ones where the DeviceTree representation does not rely on
an intermediate syscon node"
* tag 'hwlock-v6.1' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux:
dt-bindings: hwlock: qcom-hwspinlock: add syscon to MSM8974
hwspinlock: qcom: add support for MMIO on older SoCs
hwspinlock: qcom: correct MMIO max register for newer SoCs
dt-bindings: hwlock: qcom-hwspinlock: correct example indentation
dt-bindings: hwlock: qcom-hwspinlock: add support for MMIO on older SoCs
This commit is contained in:
commit
179228654d
|
|
@ -15,9 +15,22 @@ description:
|
|||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,sfpb-mutex
|
||||
- qcom,tcsr-mutex
|
||||
oneOf:
|
||||
- enum:
|
||||
- qcom,sfpb-mutex
|
||||
- qcom,tcsr-mutex
|
||||
- items:
|
||||
- enum:
|
||||
- qcom,apq8084-tcsr-mutex
|
||||
- qcom,ipq6018-tcsr-mutex
|
||||
- qcom,msm8226-tcsr-mutex
|
||||
- qcom,msm8994-tcsr-mutex
|
||||
- const: qcom,tcsr-mutex
|
||||
- items:
|
||||
- enum:
|
||||
- qcom,msm8974-tcsr-mutex
|
||||
- const: qcom,tcsr-mutex
|
||||
- const: syscon
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
|
@ -34,9 +47,9 @@ additionalProperties: false
|
|||
|
||||
examples:
|
||||
- |
|
||||
tcsr_mutex: hwlock@1f40000 {
|
||||
compatible = "qcom,tcsr-mutex";
|
||||
reg = <0x01f40000 0x40000>;
|
||||
#hwlock-cells = <1>;
|
||||
};
|
||||
hwlock@1f40000 {
|
||||
compatible = "qcom,tcsr-mutex";
|
||||
reg = <0x01f40000 0x40000>;
|
||||
#hwlock-cells = <1>;
|
||||
};
|
||||
...
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
struct qcom_hwspinlock_of_data {
|
||||
u32 offset;
|
||||
u32 stride;
|
||||
const struct regmap_config *regmap_config;
|
||||
};
|
||||
|
||||
static int qcom_hwspinlock_trylock(struct hwspinlock *lock)
|
||||
|
|
@ -73,15 +74,42 @@ static const struct qcom_hwspinlock_of_data of_sfpb_mutex = {
|
|||
.stride = 0x4,
|
||||
};
|
||||
|
||||
/* All modern platform has offset 0 and stride of 4k */
|
||||
static const struct regmap_config tcsr_msm8226_mutex_config = {
|
||||
.reg_bits = 32,
|
||||
.reg_stride = 4,
|
||||
.val_bits = 32,
|
||||
.max_register = 0x1000,
|
||||
.fast_io = true,
|
||||
};
|
||||
|
||||
static const struct qcom_hwspinlock_of_data of_msm8226_tcsr_mutex = {
|
||||
.offset = 0,
|
||||
.stride = 0x80,
|
||||
.regmap_config = &tcsr_msm8226_mutex_config,
|
||||
};
|
||||
|
||||
static const struct regmap_config tcsr_mutex_config = {
|
||||
.reg_bits = 32,
|
||||
.reg_stride = 4,
|
||||
.val_bits = 32,
|
||||
.max_register = 0x20000,
|
||||
.fast_io = true,
|
||||
};
|
||||
|
||||
static const struct qcom_hwspinlock_of_data of_tcsr_mutex = {
|
||||
.offset = 0,
|
||||
.stride = 0x1000,
|
||||
.regmap_config = &tcsr_mutex_config,
|
||||
};
|
||||
|
||||
static const struct of_device_id qcom_hwspinlock_of_match[] = {
|
||||
{ .compatible = "qcom,sfpb-mutex", .data = &of_sfpb_mutex },
|
||||
{ .compatible = "qcom,tcsr-mutex", .data = &of_tcsr_mutex },
|
||||
{ .compatible = "qcom,apq8084-tcsr-mutex", .data = &of_msm8226_tcsr_mutex },
|
||||
{ .compatible = "qcom,ipq6018-tcsr-mutex", .data = &of_msm8226_tcsr_mutex },
|
||||
{ .compatible = "qcom,msm8226-tcsr-mutex", .data = &of_msm8226_tcsr_mutex },
|
||||
{ .compatible = "qcom,msm8974-tcsr-mutex", .data = &of_msm8226_tcsr_mutex },
|
||||
{ .compatible = "qcom,msm8994-tcsr-mutex", .data = &of_msm8226_tcsr_mutex },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, qcom_hwspinlock_of_match);
|
||||
|
|
@ -117,14 +145,6 @@ static struct regmap *qcom_hwspinlock_probe_syscon(struct platform_device *pdev,
|
|||
return regmap;
|
||||
}
|
||||
|
||||
static const struct regmap_config tcsr_mutex_config = {
|
||||
.reg_bits = 32,
|
||||
.reg_stride = 4,
|
||||
.val_bits = 32,
|
||||
.max_register = 0x40000,
|
||||
.fast_io = true,
|
||||
};
|
||||
|
||||
static struct regmap *qcom_hwspinlock_probe_mmio(struct platform_device *pdev,
|
||||
u32 *offset, u32 *stride)
|
||||
{
|
||||
|
|
@ -133,6 +153,8 @@ static struct regmap *qcom_hwspinlock_probe_mmio(struct platform_device *pdev,
|
|||
void __iomem *base;
|
||||
|
||||
data = of_device_get_match_data(dev);
|
||||
if (!data->regmap_config)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
*offset = data->offset;
|
||||
*stride = data->stride;
|
||||
|
|
@ -141,7 +163,7 @@ static struct regmap *qcom_hwspinlock_probe_mmio(struct platform_device *pdev,
|
|||
if (IS_ERR(base))
|
||||
return ERR_CAST(base);
|
||||
|
||||
return devm_regmap_init_mmio(dev, base, &tcsr_mutex_config);
|
||||
return devm_regmap_init_mmio(dev, base, data->regmap_config);
|
||||
}
|
||||
|
||||
static int qcom_hwspinlock_probe(struct platform_device *pdev)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user