* [PATCH] reset: meson: enable level reset support on Meson8b
@ 2017-12-26 11:50 Martin Blumenstingl
2018-01-02 11:35 ` Philipp Zabel
0 siblings, 1 reply; 5+ messages in thread
From: Martin Blumenstingl @ 2017-12-26 11:50 UTC (permalink / raw)
To: linus-amlogic
Commit a5a10afe04ef ("reset: meson: add level reset support for GX SoC
family") only enabled the level resets for the newer GX SoC family.
However, the older 32-Meson SoCs (Meson8, Meson8b and Meson8m2) also
support level resets using the same offset as the newer GX SoCs.
This removes the separation between Meson8b and the GX SoCs from the
reset-meson driver to enable the level resets also on Meson8b.
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
---
drivers/reset/reset-meson.c | 22 +++++-----------------
1 file changed, 5 insertions(+), 17 deletions(-)
diff --git a/drivers/reset/reset-meson.c b/drivers/reset/reset-meson.c
index 93cbee1ae8ef..5242e0679df7 100644
--- a/drivers/reset/reset-meson.c
+++ b/drivers/reset/reset-meson.c
@@ -124,29 +124,21 @@ static int meson_reset_deassert(struct reset_controller_dev *rcdev,
return meson_reset_level(rcdev, id, false);
}
-static const struct reset_control_ops meson_reset_meson8_ops = {
- .reset = meson_reset_reset,
-};
-
-static const struct reset_control_ops meson_reset_gx_ops = {
+static const struct reset_control_ops meson_reset_ops = {
.reset = meson_reset_reset,
.assert = meson_reset_assert,
.deassert = meson_reset_deassert,
};
static const struct of_device_id meson_reset_dt_ids[] = {
- { .compatible = "amlogic,meson8b-reset",
- .data = &meson_reset_meson8_ops, },
- { .compatible = "amlogic,meson-gxbb-reset",
- .data = &meson_reset_gx_ops, },
- { .compatible = "amlogic,meson-axg-reset",
- .data = &meson_reset_gx_ops, },
+ { .compatible = "amlogic,meson8b-reset" },
+ { .compatible = "amlogic,meson-gxbb-reset" },
+ { .compatible = "amlogic,meson-axg-reset" },
{ /* sentinel */ },
};
static int meson_reset_probe(struct platform_device *pdev)
{
- const struct reset_control_ops *ops;
struct meson_reset *data;
struct resource *res;
@@ -154,10 +146,6 @@ static int meson_reset_probe(struct platform_device *pdev)
if (!data)
return -ENOMEM;
- ops = of_device_get_match_data(&pdev->dev);
- if (!ops)
- return -EINVAL;
-
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
data->reg_base = devm_ioremap_resource(&pdev->dev, res);
if (IS_ERR(data->reg_base))
@@ -169,7 +157,7 @@ static int meson_reset_probe(struct platform_device *pdev)
data->rcdev.owner = THIS_MODULE;
data->rcdev.nr_resets = REG_COUNT * BITS_PER_REG;
- data->rcdev.ops = ops;
+ data->rcdev.ops = &meson_reset_ops;
data->rcdev.of_node = pdev->dev.of_node;
return devm_reset_controller_register(&pdev->dev, &data->rcdev);
--
2.15.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] reset: meson: enable level reset support on Meson8b
2017-12-26 11:50 [PATCH] reset: meson: enable level reset support on Meson8b Martin Blumenstingl
@ 2018-01-02 11:35 ` Philipp Zabel
2018-01-02 12:49 ` Neil Armstrong
0 siblings, 1 reply; 5+ messages in thread
From: Philipp Zabel @ 2018-01-02 11:35 UTC (permalink / raw)
To: linus-amlogic
Hi Martin,
On Tue, 2017-12-26 at 12:50 +0100, Martin Blumenstingl wrote:
> Commit a5a10afe04ef ("reset: meson: add level reset support for GX SoC
> family") only enabled the level resets for the newer GX SoC family.
> However, the older 32-Meson SoCs (Meson8, Meson8b and Meson8m2) also
> support level resets using the same offset as the newer GX SoCs.
>
> This removes the separation between Meson8b and the GX SoCs from the
> reset-meson driver to enable the level resets also on Meson8b.
>
> Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Thank you for the patch.?It looks fine to me, not knowing the hardware
details.
The referenced commit made it sound like reset level handling on Meson8
is different from GX, though. Could somebody clarify?
regards
Philipp
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] reset: meson: enable level reset support on Meson8b
2018-01-02 11:35 ` Philipp Zabel
@ 2018-01-02 12:49 ` Neil Armstrong
2018-01-02 13:01 ` Philipp Zabel
0 siblings, 1 reply; 5+ messages in thread
From: Neil Armstrong @ 2018-01-02 12:49 UTC (permalink / raw)
To: linus-amlogic
On 02/01/2018 12:35, Philipp Zabel wrote:
> Hi Martin,
>
> On Tue, 2017-12-26 at 12:50 +0100, Martin Blumenstingl wrote:
>> Commit a5a10afe04ef ("reset: meson: add level reset support for GX SoC
>> family") only enabled the level resets for the newer GX SoC family.
>> However, the older 32-Meson SoCs (Meson8, Meson8b and Meson8m2) also
>> support level resets using the same offset as the newer GX SoCs.
>>
>> This removes the separation between Meson8b and the GX SoCs from the
>> reset-meson driver to enable the level resets also on Meson8b.
>>
>> Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
>
> Thank you for the patch.?It looks fine to me, not knowing the hardware
> details.
> The referenced commit made it sound like reset level handling on Meson8
> is different from GX, though. Could somebody clarify?
>
> regards
> Philipp
>
Hi Philipp,
This is highly undocumented and needs reading the vendor source code and experimenting,
this patch is ok for me. Seems the register mapping did not change for a long time since
it's still the same on the latest AXG family.
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Neil
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] reset: meson: enable level reset support on Meson8b
2018-01-02 12:49 ` Neil Armstrong
@ 2018-01-02 13:01 ` Philipp Zabel
2018-01-02 21:53 ` Martin Blumenstingl
0 siblings, 1 reply; 5+ messages in thread
From: Philipp Zabel @ 2018-01-02 13:01 UTC (permalink / raw)
To: linus-amlogic
On Tue, 2018-01-02 at 13:49 +0100, Neil Armstrong wrote:
> On 02/01/2018 12:35, Philipp Zabel wrote:
> > Hi Martin,
> >
> > On Tue, 2017-12-26 at 12:50 +0100, Martin Blumenstingl wrote:
> > > Commit a5a10afe04ef ("reset: meson: add level reset support for GX SoC
> > > family") only enabled the level resets for the newer GX SoC family.
> > > However, the older 32-Meson SoCs (Meson8, Meson8b and Meson8m2) also
> > > support level resets using the same offset as the newer GX SoCs.
> > >
> > > This removes the separation between Meson8b and the GX SoCs from the
> > > reset-meson driver to enable the level resets also on Meson8b.
> > >
> > > Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
> >
> > Thank you for the patch.?It looks fine to me, not knowing the hardware
> > details.
> > The referenced commit made it sound like reset level handling on Meson8
> > is different from GX, though. Could somebody clarify?
> >
> > regards
> > Philipp
> >
>
> Hi Philipp,
>
> This is highly undocumented and needs reading the vendor source code and experimenting,
> this patch is ok for me. Seems the register mapping did not change for a long time since
> it's still the same on the latest AXG family.
>
> Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Thank you, applied it to reset/next with your R-b.
regards
Philipp
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] reset: meson: enable level reset support on Meson8b
2018-01-02 13:01 ` Philipp Zabel
@ 2018-01-02 21:53 ` Martin Blumenstingl
0 siblings, 0 replies; 5+ messages in thread
From: Martin Blumenstingl @ 2018-01-02 21:53 UTC (permalink / raw)
To: linus-amlogic
Hi Philipp,
On Tue, Jan 2, 2018 at 2:01 PM, Philipp Zabel <p.zabel@pengutronix.de> wrote:
> On Tue, 2018-01-02 at 13:49 +0100, Neil Armstrong wrote:
>> On 02/01/2018 12:35, Philipp Zabel wrote:
>> > Hi Martin,
>> >
>> > On Tue, 2017-12-26 at 12:50 +0100, Martin Blumenstingl wrote:
>> > > Commit a5a10afe04ef ("reset: meson: add level reset support for GX SoC
>> > > family") only enabled the level resets for the newer GX SoC family.
>> > > However, the older 32-Meson SoCs (Meson8, Meson8b and Meson8m2) also
>> > > support level resets using the same offset as the newer GX SoCs.
>> > >
>> > > This removes the separation between Meson8b and the GX SoCs from the
>> > > reset-meson driver to enable the level resets also on Meson8b.
>> > >
>> > > Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
>> >
>> > Thank you for the patch. It looks fine to me, not knowing the hardware
>> > details.
>> > The referenced commit made it sound like reset level handling on Meson8
>> > is different from GX, though. Could somebody clarify?
>> >
>> > regards
>> > Philipp
>> >
>>
>> Hi Philipp,
>>
>> This is highly undocumented and needs reading the vendor source code and experimenting,
>> this patch is ok for me. Seems the register mapping did not change for a long time since
>> it's still the same on the latest AXG family.
>>
>> Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
>
> Thank you, applied it to reset/next with your R-b.
thank you
I guess I could have been a bit more verbose in the commit message:
as Neil already said our public datasheet doesn't mention these
registers (neither on GXBB, GXL, GXM nor Meson8b)
however, the vendor kernel sources contain enough information: [0]
- the reset controller starts at CBUS (0x1101 * 4)
- the RESET0_LEVEL register is at CBUS (0x1120 * 4)
- offset between start and the LEVEL registers: (0x1120 - 0x1101) * 4 = 0x7c
I tested this with the dwmac (Ethernet) reset:
I modified the stmmac driver so it only asserts the reset, but never
de-asserts it:
this breaks ethernet - and even if I reboot into u-boot ethernet is
dead (I have to do a full power-cycle to get it working again)
with the unmodified stmmac driver (which de-asserts the reset line
again) both the stmmac driver itself and u-boot are working fine again
Regards
Martin
[0] https://github.com/endlessm/linux-meson/blob/af743b87ad00dad42a4af84d0445f45ef251d046/arch/arm/mach-meson8b/include/mach/register.h#L1015
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-01-02 21:53 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-26 11:50 [PATCH] reset: meson: enable level reset support on Meson8b Martin Blumenstingl
2018-01-02 11:35 ` Philipp Zabel
2018-01-02 12:49 ` Neil Armstrong
2018-01-02 13:01 ` Philipp Zabel
2018-01-02 21:53 ` Martin Blumenstingl
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®