From: monstr@monstr.eu (Michal Simek)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFCv2 3/3] reset: reset-zynq: Adding support for Xilinx Zynq reset controller.
Date: Tue, 28 Jul 2015 07:43:09 +0200 [thread overview]
Message-ID: <55B7166D.4040503@monstr.eu> (raw)
In-Reply-To: <CAAtXAHcN3YS+k9HH4WaPusg+sidU_a=-RWZ+D43bWe1pH60G0w@mail.gmail.com>
On 07/28/2015 06:59 AM, Moritz Fischer wrote:
> Hi Michal,
>
> On Mon, Jul 27, 2015 at 12:12 AM, Michal Simek <monstr@monstr.eu> wrote:
>> On 07/25/2015 02:21 AM, Moritz Fischer wrote:
>>> This adds a reset controller driver to control the Xilinx Zynq
>>> SoC's various resets.
>>>
>>> Signed-off-by: Moritz Fischer <moritz.fischer@ettus.com>
>>> ---
>>> drivers/reset/Makefile | 1 +
>>> drivers/reset/reset-zynq.c | 142 +++++++++++++++++++++++++++++++++++++++++++++
>>> 2 files changed, 143 insertions(+)
>>> create mode 100644 drivers/reset/reset-zynq.c
>>>
>>> diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile
>>> index 157d421..3fe50e7 100644
>>> --- a/drivers/reset/Makefile
>>> +++ b/drivers/reset/Makefile
>>> @@ -3,3 +3,4 @@ obj-$(CONFIG_ARCH_SOCFPGA) += reset-socfpga.o
>>> obj-$(CONFIG_ARCH_BERLIN) += reset-berlin.o
>>> obj-$(CONFIG_ARCH_SUNXI) += reset-sunxi.o
>>> obj-$(CONFIG_ARCH_STI) += sti/
>>> +obj-$(CONFIG_ARCH_ZYNQ) += reset-zynq.o
>>> diff --git a/drivers/reset/reset-zynq.c b/drivers/reset/reset-zynq.c
>>> new file mode 100644
>>> index 0000000..05e37f8
>>> --- /dev/null
>>> +++ b/drivers/reset/reset-zynq.c
>>> @@ -0,0 +1,142 @@
>>> +/*
>>> + * Copyright (c) 2015, National Instruments Corp.
>>> + *
>>> + * Xilinx Zynq Reset controller driver
>>> + *
>>> + * This program is free software; you can redistribute it and/or modify
>>> + * it under the terms of the GNU General Public License as published by
>>> + * the Free Software Foundation; version 2 of the License.
>>> + *
>>> + * This program is distributed in the hope that it will be useful,
>>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>>> + * GNU General Public License for more details.
>>> + */
>>> +
>>> +#include <linux/err.h>
>>> +#include <linux/io.h>
>>> +#include <linux/module.h>
>>> +#include <linux/mfd/syscon.h>
>>> +#include <linux/of.h>
>>> +#include <linux/platform_device.h>
>>> +#include <linux/reset-controller.h>
>>> +#include <linux/regmap.h>
>>> +#include <linux/types.h>
>>> +
>>> +/* Offsets into SLCR regmap */
>>> +#define SLCR_RST_CTRL_OFFSET 0x200 /* FPGA Software Reset Control */
>>> +
>>> +#define NBANKS 18
>>> +
>>> +struct zynq_reset_data {
>>> + struct regmap *slcr;
>>> + struct reset_controller_dev rcdev;
>>> +};
>>> +
>>> +#define to_zynq_reset_data(p) \
>>> + container_of((p), struct zynq_reset_data, rcdev)
>>> +
>>> +static int zynq_reset_assert(struct reset_controller_dev *rcdev,
>>> + unsigned long id)
>>> +{
>>> + struct zynq_reset_data *priv = to_zynq_reset_data(rcdev);
>>> +
>>> + int bank = id / BITS_PER_LONG;
>>> + int offset = id % BITS_PER_LONG;
>>> +
>>
>> Personally me I would also add debug message here to be simply enabled
>> for easier tracking.
> See below
>>
>>> + regmap_update_bits(priv->slcr,
>>> + SLCR_RST_CTRL_OFFSET + (bank * 4),
>>> + BIT(offset),
>>> + BIT(offset));
>>> +
>>> + return 0;
>>> +}
>>> +
>>> +static int zynq_reset_deassert(struct reset_controller_dev *rcdev,
>>> + unsigned long id)
>>> +{
>>> + struct zynq_reset_data *priv = to_zynq_reset_data(rcdev);
>>> +
>>> + int bank = id / BITS_PER_LONG;
>>> + int offset = id % BITS_PER_LONG;
>>> +
>>
>> debug message here too.
> is:
> pr_debug("%s: bank: %u offset %u\n", __func__, bank, offset);
> accetable? Otherwise I'd have to carry around a struct dev* to use dev_dbg()
It is fine for me.
Thanks,
Michal
--
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150728/f14cd43d/attachment-0001.sig>
WARNING: multiple messages have this Message-ID (diff)
From: Michal Simek <monstr@monstr.eu>
To: Moritz Fischer <moritz.fischer@ettus.com>
Cc: p.zabel@pengutronix.de, mark.rutland@arm.com,
devicetree@vger.kernel.org, linux@arm.linux.org.uk,
pawel.moll@arm.com, ijc+devicetree@hellion.org.uk,
"Michal Simek" <michal.simek@xilinx.com>,
linux-kernel@vger.kernel.org, robh+dt@kernel.org,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
"Kumar Gala" <galak@codeaurora.org>,
"Sören Brinkmann" <soren.brinkmann@xilinx.com>
Subject: Re: [RFCv2 3/3] reset: reset-zynq: Adding support for Xilinx Zynq reset controller.
Date: Tue, 28 Jul 2015 07:43:09 +0200 [thread overview]
Message-ID: <55B7166D.4040503@monstr.eu> (raw)
In-Reply-To: <CAAtXAHcN3YS+k9HH4WaPusg+sidU_a=-RWZ+D43bWe1pH60G0w@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 4055 bytes --]
On 07/28/2015 06:59 AM, Moritz Fischer wrote:
> Hi Michal,
>
> On Mon, Jul 27, 2015 at 12:12 AM, Michal Simek <monstr@monstr.eu> wrote:
>> On 07/25/2015 02:21 AM, Moritz Fischer wrote:
>>> This adds a reset controller driver to control the Xilinx Zynq
>>> SoC's various resets.
>>>
>>> Signed-off-by: Moritz Fischer <moritz.fischer@ettus.com>
>>> ---
>>> drivers/reset/Makefile | 1 +
>>> drivers/reset/reset-zynq.c | 142 +++++++++++++++++++++++++++++++++++++++++++++
>>> 2 files changed, 143 insertions(+)
>>> create mode 100644 drivers/reset/reset-zynq.c
>>>
>>> diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile
>>> index 157d421..3fe50e7 100644
>>> --- a/drivers/reset/Makefile
>>> +++ b/drivers/reset/Makefile
>>> @@ -3,3 +3,4 @@ obj-$(CONFIG_ARCH_SOCFPGA) += reset-socfpga.o
>>> obj-$(CONFIG_ARCH_BERLIN) += reset-berlin.o
>>> obj-$(CONFIG_ARCH_SUNXI) += reset-sunxi.o
>>> obj-$(CONFIG_ARCH_STI) += sti/
>>> +obj-$(CONFIG_ARCH_ZYNQ) += reset-zynq.o
>>> diff --git a/drivers/reset/reset-zynq.c b/drivers/reset/reset-zynq.c
>>> new file mode 100644
>>> index 0000000..05e37f8
>>> --- /dev/null
>>> +++ b/drivers/reset/reset-zynq.c
>>> @@ -0,0 +1,142 @@
>>> +/*
>>> + * Copyright (c) 2015, National Instruments Corp.
>>> + *
>>> + * Xilinx Zynq Reset controller driver
>>> + *
>>> + * This program is free software; you can redistribute it and/or modify
>>> + * it under the terms of the GNU General Public License as published by
>>> + * the Free Software Foundation; version 2 of the License.
>>> + *
>>> + * This program is distributed in the hope that it will be useful,
>>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>>> + * GNU General Public License for more details.
>>> + */
>>> +
>>> +#include <linux/err.h>
>>> +#include <linux/io.h>
>>> +#include <linux/module.h>
>>> +#include <linux/mfd/syscon.h>
>>> +#include <linux/of.h>
>>> +#include <linux/platform_device.h>
>>> +#include <linux/reset-controller.h>
>>> +#include <linux/regmap.h>
>>> +#include <linux/types.h>
>>> +
>>> +/* Offsets into SLCR regmap */
>>> +#define SLCR_RST_CTRL_OFFSET 0x200 /* FPGA Software Reset Control */
>>> +
>>> +#define NBANKS 18
>>> +
>>> +struct zynq_reset_data {
>>> + struct regmap *slcr;
>>> + struct reset_controller_dev rcdev;
>>> +};
>>> +
>>> +#define to_zynq_reset_data(p) \
>>> + container_of((p), struct zynq_reset_data, rcdev)
>>> +
>>> +static int zynq_reset_assert(struct reset_controller_dev *rcdev,
>>> + unsigned long id)
>>> +{
>>> + struct zynq_reset_data *priv = to_zynq_reset_data(rcdev);
>>> +
>>> + int bank = id / BITS_PER_LONG;
>>> + int offset = id % BITS_PER_LONG;
>>> +
>>
>> Personally me I would also add debug message here to be simply enabled
>> for easier tracking.
> See below
>>
>>> + regmap_update_bits(priv->slcr,
>>> + SLCR_RST_CTRL_OFFSET + (bank * 4),
>>> + BIT(offset),
>>> + BIT(offset));
>>> +
>>> + return 0;
>>> +}
>>> +
>>> +static int zynq_reset_deassert(struct reset_controller_dev *rcdev,
>>> + unsigned long id)
>>> +{
>>> + struct zynq_reset_data *priv = to_zynq_reset_data(rcdev);
>>> +
>>> + int bank = id / BITS_PER_LONG;
>>> + int offset = id % BITS_PER_LONG;
>>> +
>>
>> debug message here too.
> is:
> pr_debug("%s: bank: %u offset %u\n", __func__, bank, offset);
> accetable? Otherwise I'd have to carry around a struct dev* to use dev_dbg()
It is fine for me.
Thanks,
Michal
--
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
next prev parent reply other threads:[~2015-07-28 5:43 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-25 0:21 [RFCv2 0/3] Adding support for Zynq Reset Controller Moritz Fischer
2015-07-25 0:21 ` Moritz Fischer
2015-07-25 0:21 ` [RFCv2 1/3] docs: dts: Added documentation for Xilinx Zynq Reset Controller bindings Moritz Fischer
2015-07-25 0:21 ` Moritz Fischer
2015-07-27 5:09 ` Michal Simek
2015-07-27 5:09 ` Michal Simek
2015-07-28 4:55 ` Moritz Fischer
2015-07-28 4:55 ` Moritz Fischer
2015-07-28 4:55 ` Moritz Fischer
2015-07-28 5:41 ` Michal Simek
2015-07-28 5:41 ` Michal Simek
2015-07-28 5:41 ` Michal Simek
2015-07-28 2:58 ` Sören Brinkmann
2015-07-28 2:58 ` Sören Brinkmann
2015-07-28 2:58 ` Sören Brinkmann
2015-07-28 4:52 ` Moritz Fischer
2015-07-28 4:52 ` Moritz Fischer
2015-07-28 22:53 ` Sören Brinkmann
2015-07-28 22:53 ` Sören Brinkmann
2015-07-28 22:53 ` Sören Brinkmann
2015-07-29 6:14 ` Moritz Fischer
2015-07-29 6:14 ` Moritz Fischer
2015-07-29 6:14 ` Moritz Fischer
2015-07-29 17:38 ` Sören Brinkmann
2015-07-29 17:38 ` Sören Brinkmann
2015-07-29 17:38 ` Sören Brinkmann
2015-07-30 14:37 ` Michal Simek
2015-07-30 14:37 ` Michal Simek
2015-07-30 14:37 ` Michal Simek
2015-07-28 8:05 ` Philipp Zabel
2015-07-28 8:05 ` Philipp Zabel
2015-07-28 8:05 ` Philipp Zabel
2015-07-28 8:25 ` Michal Simek
2015-07-28 8:25 ` Michal Simek
2015-07-28 8:25 ` Michal Simek
2015-07-28 13:57 ` Moritz Fischer
2015-07-28 13:57 ` Moritz Fischer
2015-07-28 15:16 ` Philipp Zabel
2015-07-28 15:16 ` Philipp Zabel
2015-07-28 15:16 ` Philipp Zabel
2015-07-25 0:21 ` [RFCv2 2/3] dts: zynq: Add devicetree entry for Xilinx Zynq reset controller Moritz Fischer
2015-07-25 0:21 ` Moritz Fischer
2015-07-27 6:56 ` Michal Simek
2015-07-27 6:56 ` Michal Simek
2015-07-28 5:03 ` Moritz Fischer
2015-07-28 5:03 ` Moritz Fischer
2015-07-28 5:03 ` Moritz Fischer
2015-07-28 5:42 ` Michal Simek
2015-07-28 5:42 ` Michal Simek
2015-07-28 6:59 ` Nicolas Ferre
2015-07-28 6:59 ` Nicolas Ferre
2015-07-28 6:59 ` Nicolas Ferre
2015-07-28 7:44 ` Michal Simek
2015-07-28 7:44 ` Michal Simek
2015-07-28 7:44 ` Michal Simek
2015-07-28 13:54 ` Moritz Fischer
2015-07-28 13:54 ` Moritz Fischer
2015-07-25 0:21 ` [RFCv2 3/3] reset: reset-zynq: Adding support " Moritz Fischer
2015-07-25 0:21 ` Moritz Fischer
2015-07-27 5:14 ` Michal Simek
2015-07-27 5:14 ` Michal Simek
2015-07-27 5:14 ` Michal Simek
2015-07-27 7:12 ` Michal Simek
2015-07-27 7:12 ` Michal Simek
2015-07-27 7:12 ` Michal Simek
2015-07-28 4:59 ` Moritz Fischer
2015-07-28 4:59 ` Moritz Fischer
2015-07-28 4:59 ` Moritz Fischer
2015-07-28 5:43 ` Michal Simek [this message]
2015-07-28 5:43 ` Michal Simek
2015-07-28 8:38 ` Philipp Zabel
2015-07-28 8:38 ` Philipp Zabel
2015-07-28 8:38 ` Philipp Zabel
2015-07-28 14:05 ` Moritz Fischer
2015-07-28 14:05 ` Moritz Fischer
2015-07-28 14:05 ` Moritz Fischer
2015-07-28 14:27 ` Sören Brinkmann
2015-07-28 14:27 ` Sören Brinkmann
2015-07-28 14:27 ` Sören Brinkmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55B7166D.4040503@monstr.eu \
--to=monstr@monstr.eu \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.