From: <methavanitpong.pipat@socionext.com>
To: <leif.lindholm@linaro.org>
Cc: <edk2-devel@lists.01.org>, <masahisa.kojima@linaro.org>,
<masami.hiramatsu@linaro.org>, <ard.biesheuvel@linaro.org>
Subject: Re: [PATCH edk2-platforms 13/14] Silicon/Socionext: add driver for SPI NOR flash
Date: Tue, 12 Sep 2017 10:48:08 +0000 [thread overview]
Message-ID: <e4bdd4aaf54b41648ff2fe38f45e7687@SOC-EX03V.e01.socionext.com> (raw)
In-Reply-To: <20170912083854.bnu4aevg6wnlqkrf@bivouac.eciton.net>
> -----Original Message-----
> From: Leif Lindholm [mailto:leif.lindholm@linaro.org]
> Sent: Tuesday, September 12, 2017 5:39 PM
> To: Methavanitpong, Pipat/メタワニットポン ピパット
> <methavanitpong.pipat@socionext.com>
> Cc: edk2-devel@lists.01.org; masahisa.kojima@linaro.org;
> masami.hiramatsu@linaro.org; ard.biesheuvel@linaro.org
> Subject: Re: [PATCH edk2-platforms 13/14] Silicon/Socionext: add driver
> for SPI NOR flash
>
> On Tue, Sep 12, 2017 at 01:41:34AM +0000,
> methavanitpong.pipat@socionext.com wrote:
> > > -----Original Message-----
> > > From: Leif Lindholm [mailto:leif.lindholm@linaro.org]
> > > Sent: Tuesday, September 12, 2017 4:13 AM
> > > To: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> > > Cc: edk2-devel@lists.01.org; Methavanitpong, Pipat/メタワニットポン ピ
> パット
> > > <methavanitpong.pipat@socionext.com>; masahisa.kojima@linaro.org;
> > > masami.hiramatsu@linaro.org
> > > Subject: Re: [PATCH edk2-platforms 13/14] Silicon/Socionext: add
> > > driver for SPI NOR flash
> > >
> > > On Fri, Sep 08, 2017 at 07:23:14PM +0100, Ard Biesheuvel wrote:
> > > > This imports the driver sources provided by Socionext for the
> > > > FIP006 SPI NOR flash device found on Synquacer SoCs. It has been
> > > > slightly tweaked to bring it up to date with the changes made on
> > > > the EDK2 side since it was forked.
> > > >
> > > > Contributed-under: TianoCore Contribution Agreement 1.1
> > > > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>
> > [Methavanitpong, Pipat/メタワニットポン ピパット]
> > Hi Leif,
> >
> > 1. Hex magic
> >
> > There are 2 hex magic in this driver
> >
> > 1. FIP006 command sequencer decode command
> >
> > FIP006 in command sequencer mode detects accesses to its memory
> region.
> > An access to this region is translated into commands according to
> > FIP006_REG_CS_RD and FIP006_REG_CS_WR for read and write
> accordingly.
> >
> > A single access can be translated up to 8 1-byte commands, as the
> > registers have 8 slots each. Each command is transmitted
> consecutively
> > starting from their base addresses.
> >
> > Each slot in the registers are decoded as
> >
> > 1. Immediate value - CSDC(imm, ..., ..., DEC=0)
> > 2. Addr[7:0] - CSDC(0x00, ..., ..., DEC=1)
> > 3. Addr[15:8] - CSDC(0x01, ..., ..., DEC=1)
> > 4. Addr[23:16] - CSDC(0x02, ..., ..., DEC=1)
> > 5. Addr[31:24] - CSDC(0x03, ..., ..., DEC=1)
> > 6. HiZ for 1 byte - CSDC(0x04, ..., ..., DEC=1)
> > 7. Upper 4-bit immediate value + 4-bit HiZ - CSDC((imm << 4) |
> 0x05, ..., ..., DEC=1)
> > 8. Command termination - CSDC(0x07, ..., ..., DEC=1)
> >
> > 2. Micron N25Q flash command
> >
> > In order to send a command to a flash device, FIP006's
> FIP006_REG_CS_RD
> > and FIP006_REG_CS_WR must be set properly. NorFlashSetHostCommand()
> > sets these registers according to an instance's command definition
> table.
> >
> > For example; NorFlashSetHostCommand (Instance, 0x13) corresponds to
> a
> > read access with 4-byte addressing read serial nor flash command
> (0x13).
> > The result FIP006_REG_CS_RD is the following:
> >
> > FIP006_REG_CS_RD[0] = CSDC(0x13, 0, 1-bit lane, DEC=0)
> > FIP006_REG_CS_RD[1] = CSDC(0x03, 0, 1-bit lane, DEC=1)
> > FIP006_REG_CS_RD[2] = CSDC(0x02, 0, 1-bit lane, DEC=1)
> > FIP006_REG_CS_RD[3] = CSDC(0x01, 0, 1-bit lane, DEC=1)
> > FIP006_REG_CS_RD[4] = CSDC(0x00, 0, 1-bit lane, DEC=1)
> > FIP006_REG_CS_RD[5] = CSDC(0x07, 0, 1-bit lane, DEC=1)
> > FIP006_REG_CS_RD[6] = CSDC(0x07, 0, 1-bit lane, DEC=1)
> > FIP006_REG_CS_RD[7] = CSDC(0x07, 0, 1-bit lane, DEC=1)
>
> Thank you for the explanation.
> However, the code needs to be be readable by someone who does not have the
> instruction set for each given component fresh in their mind.
>
> That means that direct numeral expressions should be avoided wherever they
> are not mathematically obvious (and where you consider them obvious,
> consider whether everyone else would agree without already knowing what
> the code is intended to do).
>
> They should be replaced by #defines or enums as appropriate.
>
> > 2. Bit field declaration
> >
> > About the bitfield struct you mentioned in "Fip006Reg.h", What should
> > be a good way to declare it?
>
> The problem with bitfields is that they are not very well defined in the C
> language, and hence do not tend to be very portable.
>
> Tedious as it may seem, #defines with shifts and masks are usually the way
> to go.
Thank you for your comment, Leif.
I will see what I can do with Ard.
>
> Regards,
>
> Leif
--
Pipat Methavanitpong
Software Developer, S-Project 3
Socionext Inc.
next prev parent reply other threads:[~2017-09-12 10:45 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-08 18:23 [PATCH edk2-platforms 00/14] add support for Socionext Synquacer EVB Ard Biesheuvel
2017-09-08 18:23 ` [PATCH edk2-platforms 01/14] Silicon/Synquacer: add package with platform headers Ard Biesheuvel
2017-09-11 13:31 ` Leif Lindholm
2017-09-08 18:23 ` [PATCH edk2-platforms 02/14] Silicon/Synquacer: add MemoryInitPeiLib implementation Ard Biesheuvel
2017-09-11 13:36 ` Leif Lindholm
2017-09-08 18:23 ` [PATCH edk2-platforms 03/14] Platform: add support for Socionext Synquacer eval board Ard Biesheuvel
2017-09-11 13:54 ` Leif Lindholm
2017-09-08 18:23 ` [PATCH edk2-platforms 04/14] Silicon/Synquacer: implement PciSegmentLib to support dual RCs Ard Biesheuvel
2017-09-11 14:03 ` Leif Lindholm
2017-09-08 18:23 ` [PATCH edk2-platforms 05/14] Silicon/Synquacer: implement PciHostBridgeLib support Ard Biesheuvel
2017-09-11 14:22 ` Leif Lindholm
2017-09-08 18:23 ` [PATCH edk2-platforms 06/14] Silicon/Synquacer: implement EFI_CPU_IO2_PROTOCOL Ard Biesheuvel
2017-09-11 14:45 ` Leif Lindholm
2017-09-08 18:23 ` [PATCH edk2-platforms 07/14] Platform/SynquacerEvalBoard: add PCI support Ard Biesheuvel
2017-09-11 14:48 ` Leif Lindholm
2017-09-08 18:23 ` [PATCH edk2-platforms 08/14] Silicon/Socionext: add driver for NETSEC network controller Ard Biesheuvel
2017-09-11 16:12 ` Leif Lindholm
2017-10-28 13:06 ` Ard Biesheuvel
2017-10-28 21:25 ` Leif Lindholm
2017-09-08 18:23 ` [PATCH edk2-platforms 09/14] Platform/SynquacerEvalBoard: add NETSEC driver Ard Biesheuvel
2017-09-11 16:23 ` Leif Lindholm
2017-09-08 18:23 ` [PATCH edk2-platforms 10/14] Silicon/Synquacer: add ACPI support Ard Biesheuvel
2017-09-11 16:33 ` Leif Lindholm
2017-09-08 18:23 ` [PATCH edk2-platforms 11/14] Silicon/Synquacer: add device tree support for eval board Ard Biesheuvel
2017-09-11 16:37 ` Leif Lindholm
2017-09-08 18:23 ` [PATCH edk2-platforms 12/14] Silicon/Synquacer: add NorFlashPlatformLib implementation Ard Biesheuvel
2017-09-11 16:38 ` Leif Lindholm
2017-09-08 18:23 ` [PATCH edk2-platforms 13/14] Silicon/Socionext: add driver for SPI NOR flash Ard Biesheuvel
2017-09-11 19:13 ` Leif Lindholm
[not found] ` <e55ff6c595f74189bd53787f3b6b2283@SOC-EX03V.e01.socionext.com>
2017-09-12 8:38 ` Leif Lindholm
2017-09-12 10:48 ` methavanitpong.pipat [this message]
2017-09-08 18:23 ` [PATCH edk2-platforms 14/14] Platform/Synquacer: incorporate NOR flash and variable drivers Ard Biesheuvel
2017-09-11 19:13 ` Leif Lindholm
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-list 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=e4bdd4aaf54b41648ff2fe38f45e7687@SOC-EX03V.e01.socionext.com \
--to=devel@edk2.groups.io \
/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