Difference between revisions of "ISP1761 Linux driver"

From ArmadeusWiki
Jump to: navigation, search
(Usage)
(Usage)
 
(12 intermediate revisions by 2 users not shown)
Line 1: Line 1:
This page summarizes the informations to use the [[ISP1761|DevFull's ISP1761 USB Host controller]] with Linux.
+
This page summarizes the informations to use the [[ISP1761|DevFull's ISP1761 USB Host controller]] with Linux. With recent version of Armadeus (svn version 978 or higher ) ISP1761 driver is part of the default configuration. Therefore there is no more need to configure Armadeus to use Host USB controller and the user configuration is now limited to [[USB_Host | add some more USB drivers.]]
  
==Compilation==
+
= Compilation =
 +
{{Note|SVN version 978 and higher include the ISP1761 in the default kernel configuration}}
 
* Launch kernel configuration:
 
* Launch kernel configuration:
 +
<pre class="host">
 
  $ make linux-menuconfig
 
  $ make linux-menuconfig
 +
</pre>
 
* Activate USB support in Linux:
 
* Activate USB support in Linux:
 
+
<pre class="config">
Device Drivers  ---> USB support  ---> <M> Support for Host-side USB
+
Device Drivers  --->  
 
+
    USB support  --->  
* and choose ISP controller:
+
        <*> Support for Host-side USB     (static)
 
+
</pre>
Device Drivers  ---> Armadeus specific drivers  ---> <M>  isp1761 USB 2.0 Host controller
+
* and choose ISP1761 controller '''(driver is no more limited to module usage since svn version 978 and higher)''':
 +
<pre class="config">
 +
Device Drivers  --->
 +
    Armadeus specific drivers  --->
 +
        <M>  isp1761 USB 2.0 Host controller       (module)
 +
</pre>
 +
* then, depending on the devices you're planning to plug, you will have to [[USB_Host | add some more USB drivers.]]
  
 
==Usage==
 
==Usage==
* Three drivers have to be started in order to get the ISP working. They have to be started in the following order:
+
{{Note|Since SVN version 978 and higher, the ISP1761 driver is statically linked with the kernel. There is no more need to load the drivers at run time. we keep instruction hereafter as general purpose information or in case you prefer to use ISP1761 as module.}}
 +
* Three modules have to be loaded in order to get the ISP working. They have to be started in the following order:
 +
<pre class="apf">
 
  # modprobe apf9328-isp1761
 
  # modprobe apf9328-isp1761
 
  # modprobe hal_imx
 
  # modprobe hal_imx
 
  # modprobe pehci
 
  # modprobe pehci
 +
</pre>
 
* or put them in a bash script in /etc/init.d:
 
* or put them in a bash script in /etc/init.d:
 +
<source lang="bash">
 
  #!/bin/sh
 
  #!/bin/sh
 
  modprobe apf9328-isp1761
 
  modprobe apf9328-isp1761
 
  modprobe hal_imx
 
  modprobe hal_imx
 
  modprobe pehci
 
  modprobe pehci
 +
</source>
 
* and then you should see (on console):
 
* and then you should see (on console):
  isp1761 isp1761.0: PHILIPS ISP1761
+
<pre class="apf">
 +
  isp1761 isp1761.0: NXP ISP1761
 
  isp1761 isp1761.0: new USB bus registered, assigned bus number 1
 
  isp1761 isp1761.0: new USB bus registered, assigned bus number 1
 
  isp1761 isp1761.0: irq 138, io mem 0x00000000
 
  isp1761 isp1761.0: irq 138, io mem 0x00000000
Line 29: Line 44:
 
  hub 1-0:1.0: USB hub found
 
  hub 1-0:1.0: USB hub found
 
  hub 1-0:1.0: 1 port detected
 
  hub 1-0:1.0: 1 port detected
  /xxxx/armadeus_trunk/target/linux/modules/isp1761/hal/hal_imx.c: Registered Driver Philips
+
  drivers/armadeus/isp1761/hal/hal_imx.c: Registered Driver ISP1761HCD
  /xxxx/armadeus_trunk/target/linux/modules/isp1761/host/pehci.c: Host Driver has been Registered
+
  pehci: Host Driver has been Registered
  # usb 1-1: new high speed USB device using isp1761 and address 2
+
  usb 1-1: new high speed USB device using isp1761 and address 2
 
  usb 1-1: configuration #1 chosen from 1 choice
 
  usb 1-1: configuration #1 chosen from 1 choice
 
  hub 1-1:1.0: USB hub found
 
  hub 1-1:1.0: USB hub found
 
  hub 1-1:1.0: 3 ports detected
 
  hub 1-1:1.0: 3 ports detected
 +
</pre>
  
==Links==
+
= Performances =
 +
A performance test has been performed by means of the usb_perf.sh script. <br>
 +
A high speed USB stick (corsair memory flash voyager) has been used.
 +
Test result (mean values): read -> 2980 kBytes/sec  write -> 2095 kBytes/sec
 +
 
 +
The maximal bandwidth has been also measured by using a scope and by tranferring 4096 bytes from the USBstick to a buffer of a kernel driver
 +
Result: ~10MB/sec
 +
 
 +
= Links =
 +
* [[USB_Host | USB Host functionnality configuration on Armadeus boards]]
 
* [http://www.nxp.com/acrobat/applicationnotes/AN10042_2.pdf NXP Linux application note for this chip]
 
* [http://www.nxp.com/acrobat/applicationnotes/AN10042_2.pdf NXP Linux application note for this chip]
 
* [http://sourceforge.net/projects/isp176x-hcd NXP Open Source driver on SourceForge (x86 only)]
 
* [http://sourceforge.net/projects/isp176x-hcd NXP Open Source driver on SourceForge (x86 only)]
 
* [http://www.ucc.asn.au/~dagobah/isp1761/ ISP1761 Linux driver for PXA targets]
 
* [http://www.ucc.asn.au/~dagobah/isp1761/ ISP1761 Linux driver for PXA targets]
 +
 +
[[Category:USB]]

Latest revision as of 14:20, 17 July 2009

This page summarizes the informations to use the DevFull's ISP1761 USB Host controller with Linux. With recent version of Armadeus (svn version 978 or higher ) ISP1761 driver is part of the default configuration. Therefore there is no more need to configure Armadeus to use Host USB controller and the user configuration is now limited to add some more USB drivers.

Compilation

Note Note: SVN version 978 and higher include the ISP1761 in the default kernel configuration
  • Launch kernel configuration:
 $ make linux-menuconfig
  • Activate USB support in Linux:
Device Drivers  ---> 
    USB support  ---> 
        <*> Support for Host-side USB      (static)
  • and choose ISP1761 controller (driver is no more limited to module usage since svn version 978 and higher):
Device Drivers  --->
    Armadeus specific drivers  --->
        <M>   isp1761 USB 2.0 Host controller       (module)

Usage

Note Note: Since SVN version 978 and higher, the ISP1761 driver is statically linked with the kernel. There is no more need to load the drivers at run time. we keep instruction hereafter as general purpose information or in case you prefer to use ISP1761 as module.
  • Three modules have to be loaded in order to get the ISP working. They have to be started in the following order:
 # modprobe apf9328-isp1761
 # modprobe hal_imx
 # modprobe pehci
  • or put them in a bash script in /etc/init.d:
 #!/bin/sh
 modprobe apf9328-isp1761
 modprobe hal_imx
 modprobe pehci
  • and then you should see (on console):
 isp1761 isp1761.0: NXP ISP1761
 isp1761 isp1761.0: new USB bus registered, assigned bus number 1
 isp1761 isp1761.0: irq 138, io mem 0x00000000
 usb usb1: configuration #1 chosen from 1 choice
 hub 1-0:1.0: USB hub found
 hub 1-0:1.0: 1 port detected
 drivers/armadeus/isp1761/hal/hal_imx.c: Registered Driver ISP1761HCD
 pehci: Host Driver has been Registered
 usb 1-1: new high speed USB device using isp1761 and address 2
 usb 1-1: configuration #1 chosen from 1 choice
 hub 1-1:1.0: USB hub found
 hub 1-1:1.0: 3 ports detected

Performances

A performance test has been performed by means of the usb_perf.sh script.
A high speed USB stick (corsair memory flash voyager) has been used.

Test result (mean values): read -> 2980 kBytes/sec   write -> 2095 kBytes/sec

The maximal bandwidth has been also measured by using a scope and by tranferring 4096 bytes from the USBstick to a buffer of a kernel driver

Result: ~10MB/sec

Links