On Mon, Jan 13, 2014 at 10:44 AM, Greg KH <gre...@linuxfoundation.org> wrote:
> On Sat, Jan 11, 2014 at 04:37:32PM -0800, Insop Song wrote:
>> On Sat, Jan 11, 2014 at 4:10 PM, Greg KH <gre...@linuxfoundation.org> wrote:
>> > On Sat, Jan 11, 2014 at 03:56:48PM -0800, Insop Song wrote:
>> >> On Sat, Jan 11, 2014 at 1:05 PM, Greg KH <gre...@linuxfoundation.org> 
>> >> wrote:
>> >> > On Sat, Jan 11, 2014 at 12:51:28PM -0800, Greg KH wrote:
>> >> >> On Thu, Jan 09, 2014 at 11:48:04AM -0800, Insop Song wrote:
>> >> >> > This driver downloads Xilinx FPGA firmware using gpio pins.
>> >> >> > It loads Xilinx FPGA bitstream format firmware image and
>> >> >> > program the Xilinx FPGA using SelectMAP (parallel) mode.
>> >> >> >
>> >> >> > Signed-off-by: Insop Song <insop.s...@gainspeed.com>
>> >> >>
>> >> >> This patch breaks the build on my machine, please be more careful:
>> >> >>
>> >> >> drivers/staging/gs_fpgaboot/gs_fpgaboot.c:30:28: fatal error: 
>> >> >> include/asm/io.h: No such file or directory
>> >> >>  #include <include/asm/io.h>
>> >> >>
>> >> >> Please fix this up, test it, and resend.
>> >> >
>> >> > Also, while you are fixing things up, please just remove the character
>> >> > device node from the driver, you aren't doing anything with it, so it's
>> >> > not needed.
>> >> >
>> >>
>> >> Thank you for the suggestion, makes a lot of sense and code cleaner.
>> >>
>> >> Could you take a quick look?
>> >> If it is good, will send out a new patch, v5, shortly.
>> >>
>> >> Main change is
>> >>
>> >> +/* fake device for request_firmware */
>> >> +static struct platform_device        *firmware_pdev;
>> >>
>> >> + firmware_pdev = platform_device_register_simple("fpgaboot", -1,
>> >> +                                                  NULL, 0);
>> >
>> > Why do you need a platform device?  Don't you have something on the
>> > hardware that describes the fact that this device is in the system, or
>> > not?  Like a PCI id?  DMI id?  Device Tree entry?
>> >
>> > You must have something that you can trigger off of.
>> >
>>
>> This driver is only to download fpga firmware, not intended to keep
>> managing the fpga device after the downloading. The device we use is
>> not part of the device tree or PCI.
>
> But how does the system know to load it or not, automatically?
>
>> It downloads the image and after that no need to be existing.
>
> Then why not have the module remove itself?
>

The following (insmod to load firmware and rmmod remove the module)
commands are triggered from user space application. They are wrapped
as a script and triggered from an application.
Once the firmware is loaded, then this driver's job is done.

>> Here is how we use
>>
>> $ insmod gs_fpga.ko file="xlinx_fpga_top_bitstream.bit"
>> $ rmmod gs_fpga
>
> Linux modules should be able to be autoloaded based on hardware present
> in the system, it's been that way for over a decade now.
>

Understood, however the use case for this driver is to load firmware, only that.
The other way to do could have been use a user space program read file
and access gpio (or other means) which could end up taking lot longer
firmware programming time.

>> I still needed "device" to use request_firmware() even though I don't
>> use it. I've looked at other drivers which uses request_firmware()
>> after your suggestion of removing char device node, and I've found
>> platform_device can be a simple one to use.
>
> Please base your device on a real one in the system, like your FPGA
> device, surely there is some way it can be detected to be present or
> not?
>

Do you still think a fake platform device doesn't cut? then what do you suggest?

Thank you,

ISS
_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to