On Fri, Sep 06, 2019 at 08:41:28AM -0500, Steve Maher wrote: > Thanks for the information. The slow speed is a little disconcerting... > > I haven't completely puzzled the architecture of flashrom. I assume that > there is a higher "layer" at which flashrom handles spi transactions, which > get passed off to a lower layer to be implemented via bigbang, dedicated > spi hardware, etc. Perhaps I'd be better off operating at that level, as > batching what would be individual bitbang transactions to a single > multi-byte transfer to the 2232 could speed things up considerably.
Yes. If your hardware configuration allows you to do batched transactions then you should interface at a level above simple bitbanging. > For > example, a complete spi word transfer could be handled as a multi-byte > write to the 2232. Any pointers as to where in the source tree things are > at this level of abstraction? Take a look at ft2232_spi_send_command(). It's job is to launch a complete half-duplex SPI command at the flash device. If you cannot run the MPSSE in SPI mode then this is the code that will need to be modified to send a different command stream to the MPSSE (obviously you will have to fix up the initialization as well). Daniel. > On Fri, Sep 6, 2019 at 5:23 AM Daniel Thompson <[email protected]> > wrote: > > > On Thu, Sep 05, 2019 at 01:50:49PM -0500, Steve Maher wrote: > > > I've been googling and perusing the source tree, but am still unsure if > > > general bitbang support is present in flashrom. > > > > > > Specifically, I have a board which has an onboard FT2232H with some of > > the > > > GPIO pins wired to a SPI flash device. The pins used are NOT the MPSSE > > SPI > > > pins from the 2232, but rather some other unused GPIO pins (the MPSSE > > > dedicated pins are being used for JTAG, and the other 2232 channel is > > being > > > used for data transfer), and I can't change the wiring from the 2232 to > > the > > > SPI flash. > > > > You're talking about the CBUS pins? > > > > > > > Does flashrom support this type of configuration? If there is general > > > bitbang support, I can write the necessary routines to control the pins > > of > > > the 2232 in a bitbang fashion. > > > > This sounds exactly how the developerbox_spi.c driver works. In that case > > the GPIO pins are hooked up to a CP2102N rather than an RT2232H but all > > the principles should be the same. > > > > Assuming the USB wire protocol is of the set pins/read pins variety > > (each a seperate USB transation) then things can work but it is > > extremely slow. Even after a bit of optimisation to make it easier to > > coalesce USB packets then my notes mention read performance roughly on > > par with a 2400 baud modem (between 60 and 70 minutes per megabyte if > > you prefer) and write performance was 50% slower still! > > > > > > > Any pointers here would be much appreciated. > > > > How do you hope to toggle the pins? Using libgpiod (e.g. use kernel-side > > FTDI driver and use the GPIO user/kernel interface) or via libftdi (e.g. > > userspace FTDI driver that uses the raw USB user/kernel interface). > > > > libgpiod is more generic but I think libftdi would be faster because it > > would be easier to coalesce USB packets. > > > > If you want to go via libftdi then perhaps try starting from the > > developerbox_spi.c driver, rip out the CP210XN code and replace it > > with libftdi calls to manipulate the CBUS pins. See > > https://github.com/legege/libftdi/blob/master/examples/bitbang_cbus.c > > for inspiration on that. > > > > > > Daniel. > > _______________________________________________ flashrom mailing list -- [email protected] To unsubscribe send an email to [email protected]
