Re: [PATCH 03/16] dt-bindings: fpga: machxo2-slave: add pin for program sequence init

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Yilun, 
On Mon, 2022-08-29 at 23:21 +0800, Xu Yilun wrote:
> On 2022-08-29 at 11:01:16 +0200, Johannes Zink wrote:
> > On Mon, 2022-08-29 at 15:45 +0800, Xu Yilun wrote:
> > > On 2022-08-25 at 16:13:30 +0200, Johannes Zink wrote:
> > > > This commit adds a pin which initiates the FPGA programming
> > > > sequence
> > > > once pulsed low.
> > > 
> > > Why we don't have to use this pin before?
> > > 
> > > Thanks,
> > > Yilun
> > > 
> > 
> > According to the MachXO2 Programming and Configuration User Guide
> > (FPGA-TN-02155-4.4) one of the 3 following methods can be used to
> > enter
> > the programming mode: 
> > 
> > - asserting a low pulse on the program gpio
> > - cycling power to the MachXO2
> > - sending the refresh command using a configuration port
> > 
> > In most cases, the refresh command being sent on initialization of
> > the
> > driver (as in the orignal driver) will do the job, but since you
> > can
> > deactivate the configuration ports, asserting the program gpio is
> > the
> > safe way to enter programming mode. Since the original driver did
> > not
> > support setting it, I added it as optional to the binding in order
> > not
> > to introduce any breakage. 
> 
> So do we need to skip the 3rd method if we already have the 2nd?
> 
> Thanks,
> Yilun 

the datasheet suggests that the methods are not mutually exclusive, so
doing both will not hurt. Since I want to keep backwards compatibility
with the existing driver (which only supports the 3rd option: sending
the refresh command), i'd rather not drop it in order not to introduce
any breakage. 

However, in my application I cannot power-cycle the FPGA (method 2) and
the configuration port is disabled after in-factory initial programming
via a security bit in the Feature Row Flash Area, which only leaves me
with Method 1 (asserting a low pulse on the program_n pin of the FPGA)
to enter programming mode for flashing another bitstream to the FPGA. 

This patch adds support for exactly this pin, while for other system
setups both of the other methods will work just as they did before.

Best regards
Johannes

> 
> > 
> > Best regards
> > Johannes
> > 
> > > > 
> > > > Signed-off-by: Johannes Zink <j.zink@xxxxxxxxxxxxxx>
> > > > ---
> > > >  .../devicetree/bindings/fpga/lattice,machxo2-slave.yaml    | 7
> > > > +++++++
> > > >  1 file changed, 7 insertions(+)
> > > > 
> > > > diff --git
> > > > a/Documentation/devicetree/bindings/fpga/lattice,machxo2-
> > > > slave.yaml
> > > > b/Documentation/devicetree/bindings/fpga/lattice,machxo2-
> > > > slave.yaml
> > > > index 78f0da8f772f..03dc134ec7b8 100644
> > > > --- a/Documentation/devicetree/bindings/fpga/lattice,machxo2-
> > > > slave.yaml
> > > > +++ b/Documentation/devicetree/bindings/fpga/lattice,machxo2-
> > > > slave.yaml
> > > > @@ -26,6 +26,12 @@ properties:
> > > >      enum:
> > > >        - lattice,machxo2-slave-spi
> > > >  
> > > > +  program-gpios:
> > > > +    maxItems: 1
> > > > +    description: |
> > > > +      GPIO Output tied to the FPGA's n_program pin to initiate
> > > > a
> > > > +      programming sequence. This pin is active low.
> > > > +
> > > >    lattice,erase-sram:
> > > >      type: boolean
> > > >      description: SRAM is to be erased during flash erase
> > > > operation
> > > > @@ -57,5 +63,6 @@ examples:
> > > >              reg = <0>;
> > > >              lattice,erase-sram;
> > > >              lattice,erase-feature-row;
> > > > +            lattice,program-gpios = <&gpio1 2 GPIO_ACTIVE_LOW>
> > > >          };
> > > >      };
> > > > -- 
> > > > 2.30.2
> > > > 
> > > 
> > 

-- 
Pengutronix e.K.                | Johannes Zink                  |
Steuerwalder Str. 21            | https://www.pengutronix.de/    |
31137 Hildesheim, Germany       | Phone: +49-5121-206917-0       |
Amtsgericht Hildesheim, HRA 2686| Fax:   +49-5121-206917-5555    |




[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux