devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Steffen Trumtrar <s.trumtrar@pengutronix.de>
To: Alan Tull <delicious.quinoa@gmail.com>
Cc: Thor Thayer <tthayer.linux@gmail.com>,
	Thor Thayer <tthayer@altera.com>,
	Rob Herring <robherring2@gmail.com>,
	pawel.moll@arm.com, Mark Rutland <mark.rutland@arm.com>,
	ijc+devicetree@hellion.org.uk, Kumar Gala <galak@codeaurora.org>,
	Rob Landley <rob@landley.net>,
	linux@arm.linux.org.uk, Dinh Nguyen <dinguyen@altera.com>,
	dougthompson@xmission.com, Grant Likely <grant.likely@linaro.org>,
	Borislav Petkov <bp@alien8.de>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	linux-arm-kernel@lists.infradead.org, linux-edac@vger.kernel.org,
	Alan Tull <atull@altera.com>
Subject: Re: [PATCHv5 1/3] dts: socfpga: Add bindings for Altera SoC SDRAM controller
Date: Tue, 27 May 2014 21:42:28 +0200	[thread overview]
Message-ID: <20140527194228.GB13172@pengutronix.de> (raw)
In-Reply-To: <CANk1AXTMHuWeaxn_hVi+AH=aXbbSNov=894YmSYfvfvpWM+eSg@mail.gmail.com>

On Tue, May 27, 2014 at 02:12:17PM -0500, Alan Tull wrote:
> On Tue, May 27, 2014 at 2:11 AM, Steffen Trumtrar
> <s.trumtrar@pengutronix.de> wrote:
> > On Wed, May 21, 2014 at 10:38:34AM -0500, Thor Thayer wrote:
> >> On Tue, May 20, 2014 at 9:44 AM, Steffen Trumtrar
> >> <s.trumtrar@pengutronix.de> wrote:
> >> > Hi!
> >> >
> >> > On Tue, May 20, 2014 at 09:31:06AM -0500, Alan Tull wrote:
> >> >> On Mon, May 19, 2014 at 2:37 PM, Thor Thayer <tthayer.linux@gmail.com> wrote:
> >> >>
> >> >> >>> >> diff --git a/Documentation/devicetree/bindings/arm/altera/socfpga-sdram.txt b/Documentation/devicetree/bindings/arm/altera/socfpga-sdram.txt
> >> >> >>> >> new file mode 100644
> >> >> >>> >> index 0000000..8f8746b
> >> >> >>> >> --- /dev/null
> >> >> >>> >> +++ b/Documentation/devicetree/bindings/arm/altera/socfpga-sdram.txt
> >> >> >>> >> @@ -0,0 +1,11 @@
> >> >> >>> >> +Altera SOCFPGA SDRAM Controller
> >> >> >>> >> +
> >> >> >>> >> +Required properties:
> >> >> >>> >> +- compatible : "altr,sdr-ctl";
> >> >> >>> >> +- reg : Should contain 1 register ranges(address and length)
> >> >> >>> >> +
> >> >> >>> >> +Example:
> >> >> >>> >> +     sdrctl@ffc25000 {
> >> >> >>> >> +             compatible = "altr,sdr-ctl";
> >> >> >>> >> +             reg = <0xffc25000 0x1000>;
> >> >> >>> >> +     };
> >> >> >>> >> diff --git a/arch/arm/boot/dts/socfpga.dtsi b/arch/arm/boot/dts/socfpga.dtsi
> >> >> >>> >> index df43702..6ce912e 100644
> >> >> >>> >> --- a/arch/arm/boot/dts/socfpga.dtsi
> >> >> >>> >> +++ b/arch/arm/boot/dts/socfpga.dtsi
> >> >> >>> >> @@ -676,6 +676,11 @@
> >> >> >>> >>                       clocks = <&l4_sp_clk>;
> >> >> >>> >>               };
> >> >> >>> >>
> >> >> >>> >> +             sdrctl@ffc25000 {
> >> >> >>> >> +                     compatible = "altr,sdr-ctl", "syscon";
> >> >> >>> >                                                    ^^^^^^^^^^
> >> >> >>> >
> >> >> >>> > Get rid of that, too, please.
> >> >> >>>
> >> >> >>> Hi Steffan,
> >> >> >>>
> >> >> >>> I believe I need to keep the "syscon". The same register (ctrlcfg)
> >> >> >>> that has the ECC enable bitfield also includes the DRAM configuration
> >> >> >>> bitfields that other drivers will want to access (specifically the
> >> >> >>> FPGA bridge needs this information). Since this register will be
> >> >> >>> shared between drivers,  syscon seems like the best solution.
> >> >> >>>
> >> >> >>
> >> >> >> Hm, from looking at the documentation of the ctrlcfg I can't really
> >> >> >> understand which bits you would need for the FPGA brigde and why.
> >> >>
> >> >> Hi Steffen,
> >> >>
> >> >> Offset 0x80 in the sdr-ctl is the "fpgaportrst" register.  14 bits
> >> >> wide, defaults to 0.  When appropriate bits set to 1 in that reg, it
> >> >> allows an FPGA port to come out of reset (enables that port).  Has no
> >> >> other effect on SDRAM configuration.
> >> >>
> >> >> >> That all sounds like stuff you would want to set for the specific
> >> >> >> RAM you are dealing with on a specific board.
> >> >> >> What bridge are you talking about? The SDRAM bridge?
> >> >>
> >> >> Yes, the port allows the FPGA a direct path to the SDRAM.  This one
> >> >> register the only register in the sdr that the bridge driver needs.
> >> >>
> >> >
> >> > So, what I suggested down ...
> >> >
> >> >> >>
> >> >> >> I can see the problem with the ECC enable, though.
> >> >> >>
> >> >> >> Regards,
> >> >> >> Steffen
> >> >> >>
> >> >> >
> >> >> >>> >                 sdrctl@ffc25000 {
> >> >> >>> >                         compatible = "altr,sdr-ctl";
> >> >> >>> >                         reg = <0xffc25000 0x1000>;
> >> >> >>> >                         ranges;
> >> >> >>> >
> >> >> >>> >                         edac@ffc2502c {
> >> >> >>> >                                 compatible = "altr,sdram-edac";
> >> >> >>> >                                 reg = <0xffc2502c 0x50>;
> >> >> >>> >                                 interrupts = <0 39 4>;
> >> >> >>> >                         };
> >> >> >>> >                 };
> >> >> >>> >
> >> >> >>> > Then we can later add:
> >> >> >>> >
> >> >> >>> >                         sdr-ports: ports@ffc2507c {
> >> >> >>> >                                 #reset-cells = <1>;
> >> >> >>> >                                 compatible = "altr,sdr-ports";
> >> >> >>> >                                 reg = <0xffc2507c 0x10>;
> >> >> >>> >                                 clocks = <&ddr_dqs_clk>;
> >> >> >>> >                                 ...
> >> >> >>> >                         };
> >> >>
> >> >
> >> > ... here should work. No?! Just a simple driver that registers with the
> >> > reset-framework. I would add 0x7c to that driver and than that driver could
> >> > "configure" the port and let it out of reset.
> >> >
> >> > I have done the same thing for the other 3 bridges, but am not finished yet.
> >> > Especially the GPV-stuff needs to at least be able to be added later if not now.
> >> >
> >
> > Hi Thor!
> >
> >> I'm not clear on how the EDAC driver will interact with the registers
> >> allocated to the SDRAM controller. If the group of registers from
> >> 0xffc25000 to 0xffc26000 is exclusively allocated to the SDRAM
> >> controller, how does the EDAC driver cleanly access that single
> >> register inside this range?
> >>
> >
> > The compatible in the example is wrong. I didn't mean to map the whole address space
> > to some driver.
> > I think for the configuration register syscon is the right approach. It is a
> > bag of bits that don't necessitate an own driver, so syscon is perfect.
> >
> > So, let me change my proposal to
> >
> >         sdr-ctl: sdram@ffc25000 {
> >                 compatible = "altr,sdr-ctl", "syscon";
> >                 reg = <0xffc25000 0x1>;
> >         };
> >
> >         edac: edac@ffc2502c {
> >                 compatible = "altr,sdram-edac";
> >                 reg = <0xffc2502c 0x50>;
> >                 interrupts = <0 39 4>;
> >                 config = <&sdr-ctl>;
> >                 ...
> >         };
> >
> >         sdr-ports: ports@ffc2507c {
> >                 compatible = "altr,sdr-ports";
> >                 reg = <0xffc2507c 0x10>;
> >                 clocks = <&ddr_dqs_clk>;
> >                 ...
> >         };
> >
> > Maybe we can just skip the outer node that combines all the others.
> > So, if we do it like that, you can still use syscon, but only for the register
> > that needs it. And the EDAC definitely needs access to the config register, so
> > all is good.
> >
> >> Is the solution that I don't use request_region() (and therefore not
> >> request exclusive access) when setting up the SDRAM controller?
> >>
> >> If you could point me to your drivers for the other bridges that you
> >> reference, your code may answer my question.
> >>
> >
> > The other bridges don't need access to any SDRAM controller registers and
> > I haven't even started to implement the GPV-stuff with the lw2hps-bridge :-(
> >
> > Regards,
> > Steffen
> >
> > --
> > Pengutronix e.K.                           |                             |
> > Industrial Linux Solutions                 | http://www.pengutronix.de/  |
> > Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
> > Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
> 
> OK now I understand.  For register offset 0x0, that's all stuff set up
> in the bootloader.  We won't be touching that register except for the
> EDAC.  So syscon isn't needed here.
> 
> Each driver that uses some sdr registers can specify which registers
> it uses in the device tree.  So far we don't have any cases of two
> drivers that share a register.
> 
> The ECC driver will need two ranges: offset 0x00 and 0x38 through 0x50.
> The fpga bridges just needs offset 0x80.
> 

Well, almost ;-)
Use syscon for 0x0 and reference that in the ECC driver, which only is
responsible for 0x38 to 0x50. Then flip the two EDAC bits via the syscon-phandle.
Then a bootloader can probe with the same dts and have a driver match on the
config-register and one for all the DRAM setup (< 0x38), which we don't need in
the kernel. On the other hand the EDAC seems unneccessary for the bootloader.
And this all matches the partitioning of the SDR register space, so I think it
is also a correct hardware description.

Regards,
Steffen

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

  reply	other threads:[~2014-05-27 19:42 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-15 16:04 Add EDAC support for Altera SoC SDRAM Controller tthayer
2014-05-15 16:04 ` [PATCHv5 1/3] dts: socfpga: Add bindings for Altera SoC SDRAM controller tthayer
2014-05-16  7:53   ` Steffen Trumtrar
2014-05-19 18:36     ` Thor Thayer
2014-05-19 19:12       ` Steffen Trumtrar
2014-05-19 19:37         ` Thor Thayer
2014-05-20 14:31           ` Alan Tull
2014-05-20 14:44             ` Steffen Trumtrar
2014-05-21 15:38               ` Thor Thayer
2014-05-27  7:11                 ` Steffen Trumtrar
2014-05-27 18:00                   ` Thor Thayer
2014-05-27 19:51                     ` Steffen Trumtrar
2014-05-27 19:12                   ` Alan Tull
2014-05-27 19:42                     ` Steffen Trumtrar [this message]
     [not found]                       ` <20140527194228.GB13172-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2014-05-27 20:57                         ` Alan Tull
2014-05-28  7:01                           ` Steffen Trumtrar
2014-05-28 14:38                             ` Alan Tull
2014-05-15 16:04 ` [PATCHv5 2/3] dts: socfpga: Add bindings for Altera SoC SDRAM EDAC tthayer
2014-05-15 16:04 ` [PATCHv5 3/3] edac: altera: Add EDAC support for Altera SoC SDRAM Controller tthayer
2014-05-26  9:57   ` Borislav Petkov
     [not found]     ` <20140526095730.GC25732-fF5Pk5pvG8Y@public.gmane.org>
2014-05-27 17:58       ` Thor Thayer

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=20140527194228.GB13172@pengutronix.de \
    --to=s.trumtrar@pengutronix.de \
    --cc=atull@altera.com \
    --cc=bp@alien8.de \
    --cc=delicious.quinoa@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dinguyen@altera.com \
    --cc=dougthompson@xmission.com \
    --cc=galak@codeaurora.org \
    --cc=grant.likely@linaro.org \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-edac@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=pawel.moll@arm.com \
    --cc=rob@landley.net \
    --cc=robherring2@gmail.com \
    --cc=tthayer.linux@gmail.com \
    --cc=tthayer@altera.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).