HEADSUP usb2 (usb4bsd) to become default in 2 weeks. [usb2 configuration]

Sam Leffler sam at freebsd.org
Sun Dec 28 20:20:54 UTC 2008


Sam Leffler wrote:
> Bruce Cran wrote:
>> On Sat, 27 Dec 2008 14:59:24 -0800
>> Sam Leffler <sam at freebsd.org> wrote:
>>
>>  
>>> Hans Petter Selasky wrote:
>>>    
>>>> On Saturday 27 December 2008, Dominic Fandrey wrote:
>>>>        
>>>>> Alfred Perlstein wrote:
>>>>>            
>>>>>> We're going to usher in the New Year with a new usb stack.
>>>>>>
>>>>>> Now is the time to test, test, test.
>>>>>>
>>>>>> It is also the time to point out anything missing from usb2 that
>>>>>> is in usb1. ...
>>>>>>
>>>>>> See attachment.
>>>>>> ...
>>>>>>
>>>>>>
>>>>>>  # USB Serial devices
>>>>>> -device        ucom        # Generic com ttys
>>>>>> -device        u3g        # USB-based 3G modems
>>>>>> (Option, Huawei, Sierra) ...
>>>>>>                 
>>>>> It seems u3g doesn't show up in the usb2 stuff. For me
>>>>> this would be a real show stopper if I ran current.
>>>>>
>>>>>             
>>>> The U3G driver has been ported to USB2. See "usb2_serial_3g".
>>>>
>>>>         
>>> I think this sort of confusion is indicative of problems with the 
>>> way usb2 is configured.  I recently switched a machine to usb2 and I
>>> naively expected that doing this would just involve changing all
>>> items like
>>>
>>> device   ums
>>>
>>> to
>>>
>>> device   ums2
>>>
>>> when this didn't work I looked for manual pages but found none.  So
>>> then I looked in sys/conf/files and found that every driver has a new
>>> name; e.g. to get ums I now have to specify:
>>>
>>> device   usb2_input_ms
>>>
>>> but more than that I also have to include
>>>
>>> device   usb2_input
>>> device   usb2_core
>>>
>>> I suggest this is not a good idea.  It is possible through module 
>>> dependencies and config rules in files to handle all this 
>>> automatically.   Perhaps I've missed something here but I think that 
>>> after the switchover users should not need to alter their config
>>> files unless they are using new features.  This is all the more
>>> important in that all these names changes will require all
>>> documentation to be altered to match.
>>>
>>>     
>>
>> Something that confused me for a while was when I forgot to add
>> usb2_controller on one machine but did have 
>> usb2_controller_[uhci,ehci,ohci].  The kernel built and ran, but USB
>> just didn't work until I kldload'd the controller modules.  Is there a
>> dependency mechanism to make the build fail when a mistake like this is
>> made?
>>   
>
> This is another example of what I described should happen 
> automatically for you.  It's easy to fix the config rules so it is 
> unnecessary to specify dependent/internal modules in the kernel config 
> file.
>
>> The new devices should probably be added to NOTES too - there's a PR
>> open with a patch
>> (http://www.freebsd.org/cgi/query-pr.cgi?pr=conf/128590) but it needs
>> usb2s_core corrected to usb2_core before it can be committed.
>>
>>   
>
> As I said, after the switchover users should NOT have to change their 
> config files unless there is new functionality (e.g. new drivers).  
> This means there should be no changes to NOTES (unless it's to 
> document how to bring in the usb1 code) and existing manual pages and 
> the like should require updates only for stuff like sysctl changes 
> (which again I'd like to see minimized to reduce confusion).

The attached does what I'm suggesting.  To use a usb2 config you just 
append "2" to your existing usb devices.  When it comes time to switch 
the defaults you rename usb to usb1 and usb2 to usb and you're done.

One can also  eliminate the ucom dependency using a similar mechanism; I 
didn't do that.

Note the patch is compile-tested only.

    Sam

-------------- next part --------------
Index: files
===================================================================
--- files	(revision 186532)
+++ files	(working copy)
@@ -1532,140 +1532,145 @@
 #
 # USB2 controller drivers
 #
-dev/usb2/controller/at91dci.c		optional usb2_core usb2_controller usb2_controller_at91dci
-dev/usb2/controller/at91dci_atmelarm.c	optional usb2_core usb2_controller usb2_controller_at91dci at91rm9200
-dev/usb2/controller/musb2_otg.c		optional usb2_core usb2_controller usb2_controller_musb
-dev/usb2/controller/musb2_otg_atmelarm.c optional usb2_core usb2_controller usb2_controller_musb at91rm9200
-dev/usb2/controller/ehci2.c		optional usb2_core usb2_controller usb2_controller_ehci
-dev/usb2/controller/ehci2_pci.c		optional usb2_core usb2_controller usb2_controller_ehci pci
-dev/usb2/controller/ohci2.c		optional usb2_core usb2_controller usb2_controller_ohci
-dev/usb2/controller/ohci2_atmelarm.c	optional usb2_core usb2_controller usb2_controller_ohci at91rm9200
-dev/usb2/controller/ohci2_pci.c		optional usb2_core usb2_controller usb2_controller_ohci pci
-dev/usb2/controller/uhci2.c		optional usb2_core usb2_controller usb2_controller_uhci
-dev/usb2/controller/uhci2_pci.c		optional usb2_core usb2_controller usb2_controller_uhci pci
-dev/usb2/controller/uss820dci.c		optional usb2_core usb2_controller usb2_controller_uss820dci
-dev/usb2/controller/uss820dci_atmelarm.c	optional usb2_core usb2_controller usb2_controller_uss820dci at91rm9200
-dev/usb2/controller/usb2_controller.c	optional usb2_core usb2_controller
+dev/usb2/controller/at91dci.c		optional usb2 at91dci
+dev/usb2/controller/at91dci_atmelarm.c	optional usb2 at91dci at91rm9200
+dev/usb2/controller/musb2_otg.c		optional usb2 musb
+dev/usb2/controller/musb2_otg_atmelarm.c optional usb2 musb at91rm9200
+dev/usb2/controller/ohci2_atmelarm.c	optional usb2 ohci at91rm9200
+dev/usb2/controller/ehci2.c		optional usb2 ehci2
+dev/usb2/controller/ehci2_pci.c		optional usb2 ehci2 pci
+dev/usb2/controller/ohci2.c		optional usb2 ohci2
+dev/usb2/controller/ohci2_pci.c		optional usb2 ohci2 pci
+dev/usb2/controller/uhci2.c		optional usb2 uhci2
+dev/usb2/controller/uhci2_pci.c		optional usb2 uhci2 pci
+dev/usb2/controller/uss820dci.c		optional usb2 uss820dci
+dev/usb2/controller/uss820dci_atmelarm.c optional usb2 uss820dci at91rm9200
+dev/usb2/controller/usb2_controller.c \
+	optional usb2 (ehci2 | ohci2 | uhci2 | at91dci | musb | uss820dci)
 #
 # USB2 storage drivers
 #
-dev/usb2/storage/ata-usb2.c		optional usb2_core usb2_storage usb2_storage_ata
-dev/usb2/storage/umass2.c		optional usb2_core usb2_storage usb2_storage_mass
-dev/usb2/storage/urio2.c		optional usb2_core usb2_storage usb2_storage_rio
-dev/usb2/storage/usb2_storage.c		optional usb2_core usb2_storage
-dev/usb2/storage/ustorage2_fs.c		optional usb2_core usb2_storage usb2_storage_fs
+dev/usb2/storage/ata-usb2.c		optional usb2 atausb2
+dev/usb2/storage/umass2.c		optional usb2 umass2
+dev/usb2/storage/urio2.c		optional usb2 urio2
+dev/usb2/storage/ustorage2_fs.c		optional usb2 usb2_storage_fs
+dev/usb2/storage/usb2_storage.c \
+	optional usb2 (atausb2 | umass2 | urio2 | usb2_storage_fs)
 #
 # USB2 NDIS driver
 #
-dev/usb2/ndis/if_ndis_usb2.c		optional usb2_core usb2_ndis
-dev/usb2/ndis/usb2_ndis.c		optional usb2_core usb2_ndis
+dev/usb2/ndis/if_ndis_usb2.c		optional usb2 usb2_ndis
+dev/usb2/ndis/usb2_ndis.c		optional usb2 usb2_ndis
 #
 # USB2 core
 #
-dev/usb2/core/usb2_busdma.c		optional usb2_core
-dev/usb2/core/usb2_compat_linux.c	optional usb2_core
-dev/usb2/core/usb2_config_td.c		optional usb2_core
-dev/usb2/core/usb2_core.c		optional usb2_core
-dev/usb2/core/usb2_debug.c		optional usb2_core
-dev/usb2/core/usb2_dev.c		optional usb2_core
-dev/usb2/core/usb2_device.c		optional usb2_core
-dev/usb2/core/usb2_dynamic.c		optional usb2_core
-dev/usb2/core/usb2_error.c		optional usb2_core
-dev/usb2/core/usb2_generic.c		optional usb2_core
-dev/usb2/core/usb2_handle_request.c	optional usb2_core
-dev/usb2/core/usb2_hid.c		optional usb2_core
-dev/usb2/core/usb2_hub.c		optional usb2_core
-dev/usb2/core/usb2_if.m			optional usb2_core
-dev/usb2/core/usb2_lookup.c		optional usb2_core
-dev/usb2/core/usb2_mbuf.c		optional usb2_core
-dev/usb2/core/usb2_msctest.c		optional usb2_core
-dev/usb2/core/usb2_parse.c		optional usb2_core
-dev/usb2/core/usb2_process.c		optional usb2_core
-dev/usb2/core/usb2_request.c		optional usb2_core
-dev/usb2/core/usb2_sw_transfer.c	optional usb2_core
-dev/usb2/core/usb2_transfer.c		optional usb2_core
-dev/usb2/core/usb2_util.c		optional usb2_core
+dev/usb2/core/usb2_busdma.c		optional usb2
+dev/usb2/core/usb2_compat_linux.c	optional usb2
+dev/usb2/core/usb2_config_td.c		optional usb2
+dev/usb2/core/usb2_core.c		optional usb2
+dev/usb2/core/usb2_debug.c		optional usb2
+dev/usb2/core/usb2_dev.c		optional usb2
+dev/usb2/core/usb2_device.c		optional usb2
+dev/usb2/core/usb2_dynamic.c		optional usb2
+dev/usb2/core/usb2_error.c		optional usb2
+dev/usb2/core/usb2_generic.c		optional usb2
+dev/usb2/core/usb2_handle_request.c	optional usb2
+dev/usb2/core/usb2_hid.c		optional usb2
+dev/usb2/core/usb2_hub.c		optional usb2
+dev/usb2/core/usb2_if.m			optional usb2
+dev/usb2/core/usb2_lookup.c		optional usb2
+dev/usb2/core/usb2_mbuf.c		optional usb2
+dev/usb2/core/usb2_msctest.c		optional usb2
+dev/usb2/core/usb2_parse.c		optional usb2
+dev/usb2/core/usb2_process.c		optional usb2
+dev/usb2/core/usb2_request.c		optional usb2
+dev/usb2/core/usb2_sw_transfer.c	optional usb2
+dev/usb2/core/usb2_transfer.c		optional usb2
+dev/usb2/core/usb2_util.c		optional usb2
 #
 # USB2 ethernet drivers
 #
-dev/usb2/ethernet/if_aue2.c		optional usb2_core usb2_ethernet usb2_ethernet_aue
-dev/usb2/ethernet/if_axe2.c		optional usb2_core usb2_ethernet usb2_ethernet_axe
-dev/usb2/ethernet/if_cdce2.c		optional usb2_core usb2_ethernet usb2_ethernet_cdce
-dev/usb2/ethernet/if_cue2.c		optional usb2_core usb2_ethernet usb2_ethernet_cue
-dev/usb2/ethernet/if_kue2.c		optional usb2_core usb2_ethernet usb2_ethernet_kue
-dev/usb2/ethernet/if_rue2.c		optional usb2_core usb2_ethernet usb2_ethernet_rue
-dev/usb2/ethernet/if_udav2.c		optional usb2_core usb2_ethernet usb2_ethernet_dav
-dev/usb2/ethernet/usb2_ethernet.c	optional usb2_core usb2_ethernet
+dev/usb2/ethernet/if_aue2.c		optional usb2 aue2
+dev/usb2/ethernet/if_axe2.c		optional usb2 axe2
+dev/usb2/ethernet/if_cdce2.c		optional usb2 cdce2
+dev/usb2/ethernet/if_cue2.c		optional usb2 cue2
+dev/usb2/ethernet/if_kue2.c		optional usb2 kue2
+dev/usb2/ethernet/if_rue2.c		optional usb2 rue2
+dev/usb2/ethernet/if_udav2.c		optional usb2 udav2
+dev/usb2/ethernet/usb2_ethernet.c \
+	optional usb2 (aue2 | axe2 | cdce2 | cue2 | kue2 | rue2 | udav2)
 #
 # USB2 WLAN drivers
 #
-dev/usb2/wlan/if_rum2.c		optional usb2_core usb2_wlan usb2_wlan_rum
-dev/usb2/wlan/if_ural2.c	optional usb2_core usb2_wlan usb2_wlan_ral
-dev/usb2/wlan/if_zyd2.c		optional usb2_core usb2_wlan usb2_wlan_zyd
-dev/usb2/wlan/usb2_wlan.c	optional usb2_core usb2_wlan
+dev/usb2/wlan/if_rum2.c		optional usb2 rum2
+dev/usb2/wlan/if_ural2.c	optional usb2 ural2
+dev/usb2/wlan/if_zyd2.c		optional usb2 zyd2
+dev/usb2/wlan/usb2_wlan.c	optional usb2 (rum2 | ural2 | zyd2)
 #
 # USB2 serial and parallel port drivers
 #
-dev/usb2/serial/uark2.c		optional usb2_core usb2_serial usb2_serial_ark
-dev/usb2/serial/ubsa2.c		optional usb2_core usb2_serial usb2_serial_bsa
-dev/usb2/serial/ubser2.c	optional usb2_core usb2_serial usb2_serial_bser
-dev/usb2/serial/uchcom2.c	optional usb2_core usb2_serial usb2_serial_chcom
-dev/usb2/serial/ucycom2.c	optional usb2_core usb2_serial usb2_serial_cycom
-dev/usb2/serial/ufoma2.c	optional usb2_core usb2_serial usb2_serial_foma
-dev/usb2/serial/uftdi2.c	optional usb2_core usb2_serial usb2_serial_ftdi
-dev/usb2/serial/ugensa2.c	optional usb2_core usb2_serial usb2_serial_gensa
-dev/usb2/serial/uipaq2.c	optional usb2_core usb2_serial usb2_serial_ipaq
-dev/usb2/serial/ulpt2.c		optional usb2_core usb2_serial usb2_serial_lpt
-dev/usb2/serial/umct2.c		optional usb2_core usb2_serial usb2_serial_mct
-dev/usb2/serial/umodem2.c	optional usb2_core usb2_serial usb2_serial_modem
-dev/usb2/serial/umoscom2.c	optional usb2_core usb2_serial usb2_serial_moscom
-dev/usb2/serial/uplcom2.c	optional usb2_core usb2_serial usb2_serial_plcom
-dev/usb2/serial/usb2_serial.c	optional usb2_core usb2_serial
-dev/usb2/serial/uvisor2.c	optional usb2_core usb2_serial usb2_serial_visor
-dev/usb2/serial/uvscom2.c	optional usb2_core usb2_serial usb2_serial_vscom
-dev/usb2/serial/u3g2.c		optional usb2_core usb2_serial usb2_serial_3g
+dev/usb2/serial/uark2.c		optional usb2 uark2
+dev/usb2/serial/ubsa2.c		optional usb2 ubsa2
+dev/usb2/serial/ubser2.c	optional usb2 ubser2
+dev/usb2/serial/uchcom2.c	optional usb2 uchcom2
+dev/usb2/serial/ucycom2.c	optional usb2 ucycom2
+dev/usb2/serial/ufoma2.c	optional usb2 ufoma2
+dev/usb2/serial/uftdi2.c	optional usb2 uftdi2
+dev/usb2/serial/ugensa2.c	optional usb2 ugen2
+dev/usb2/serial/uipaq2.c	optional usb2 uipaq2
+dev/usb2/serial/ulpt2.c		optional usb2 ulpt2
+dev/usb2/serial/umct2.c		optional usb2 umct2
+dev/usb2/serial/umodem2.c	optional usb2 umodem2
+dev/usb2/serial/umoscom2.c	optional usb2 ucom2
+dev/usb2/serial/uplcom2.c	optional usb2 uplcom2
+dev/usb2/serial/uvisor2.c	optional usb2 uvisor2
+dev/usb2/serial/uvscom2.c	optional usb2 uvscom2
+dev/usb2/serial/u3g2.c		optional usb2 u3g2
+dev/usb2/serial/usb2_serial.c \
+	optional usb2 (uark2 | ubsa2 | ubser2 | uchcom2 | ucycom2 | ufoma2 | uftdi2 | ugen2 | uipaq2 | ulpt2 | umct2 | umodem2 | ucom2 | uplcom2 | uvisor2 | uvscom2 | u3g2)
 #
 # USB2 bluetooth drivers
 #
-dev/usb2/bluetooth/usb2_bluetooth.c	optional usb2_core usb2_bluetooth
-dev/usb2/bluetooth/ng_ubt2.c		optional usb2_core usb2_bluetooth usb2_bluetooth_ng
-dev/usb2/bluetooth/ubtbcmfw2.c		optional usb2_core usb2_bluetooth usb2_bluetooth_fw
+dev/usb2/bluetooth/ng_ubt2.c		optional usb2 ng_ubt2
+dev/usb2/bluetooth/ubtbcmfw2.c		optional usb2 ubtbcmfw2
+dev/usb2/bluetooth/usb2_bluetooth.c	optional usb2 (ng_ubt2 | ubtbcmfw2)
 
 #
 # USB2 misc drivers
 #
-dev/usb2/misc/usb2_misc.c	optional usb2_core usb2_misc
-dev/usb2/misc/ufm2.c		optional usb2_core usb2_misc usb2_misc_fm
-dev/usb2/misc/udbp2.c		optional usb2_core usb2_misc usb2_misc_dbp
+dev/usb2/misc/ufm2.c		optional usb2 ufm2
+dev/usb2/misc/usb2_misc.c	optional usb2 (ufm2)
 #
+dev/usb2/misc/udbp2.c		optional usb2 udbp2
+#
 # USB2 input drivers
 #
-dev/usb2/input/uhid2.c		optional usb2_core usb2_input usb2_input_hid
-dev/usb2/input/ukbd2.c		optional usb2_core usb2_input usb2_input_kbd
-dev/usb2/input/ums2.c		optional usb2_core usb2_input usb2_input_ms
-dev/usb2/input/usb2_input.c	optional usb2_core usb2_input
+dev/usb2/input/uhid2.c		optional usb2 uhid2
+dev/usb2/input/ukbd2.c		optional usb2 ukbd2
+dev/usb2/input/ums2.c		optional usb2 ums2
+dev/usb2/input/usb2_input.c	optional usb2 (uhid2 | ukbd2 | ums2)
 #
 # USB2 quirks
 #
-dev/usb2/quirk/usb2_quirk.c	optional usb2_core usb2_quirk
+dev/usb2/quirk/usb2_quirk.c	optional usb2 usb2_quirk
 #
 # USB2 templates
 #
-dev/usb2/template/usb2_template.c	optional usb2_core usb2_template
-dev/usb2/template/usb2_template_cdce.c	optional usb2_core usb2_template
-dev/usb2/template/usb2_template_msc.c	optional usb2_core usb2_template
-dev/usb2/template/usb2_template_mtp.c	optional usb2_core usb2_template
+dev/usb2/template/usb2_template.c	optional usb2 usb2_template
+dev/usb2/template/usb2_template_cdce.c	optional usb2 usb2_template
+dev/usb2/template/usb2_template_msc.c	optional usb2 usb2_template
+dev/usb2/template/usb2_template_mtp.c	optional usb2 usb2_template
 #
 # USB2 image drivers
 #
-dev/usb2/image/usb2_image.c	optional usb2_core usb2_image
-dev/usb2/image/uscanner2.c	optional usb2_core usb2_image usb2_scanner
+dev/usb2/image/uscanner2.c	optional usb2 uscanner2
+dev/usb2/image/usb2_image.c	optional usb2 (uscanner2)
 #
 # USB2 sound and MIDI drivers
 #
-dev/usb2/sound/usb2_sound.c	optional usb2_core usb2_sound
-dev/usb2/sound/uaudio2.c	optional usb2_core usb2_sound
-dev/usb2/sound/uaudio2_pcm.c	optional usb2_core usb2_sound
+dev/usb2/sound/uaudio2.c	optional usb2 snd_uaudio2
+dev/usb2/sound/uaudio2_pcm.c	optional usb2 snd_uaudio2
+dev/usb2/sound/usb2_sound.c	optional usb2 (snd_uaudio2)
 #
 # USB2 END
 #


More information about the freebsd-current mailing list