# # Copyright 2005 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License, Version 1.0 only # (the "License"). You may not use this file except in compliance # with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # ident "%Z%%M% %I% %E% SMI" # # Each entry in the description file is a line that establishes the # value of a keyword in the following form: # # keyword = value # # A line with a '#' character in the first column is considered to be a # comment. Spaces and tabs are allowed around the '=' operator. Left # and right braces can be used for grouping (see examples) but may not be # nested. There is no required order in which the keywords must be # specified within the file. The known list of keywords is included # below. The keyword is listed, followed by one or more usage examples, # followed by a description. Keywords are case-sensitive, so 'name' is # a valid keyword, but 'NAME' is not a valid keyword. # # In general, only one value assignment should be made to a keyword, but # some keywords can be assigned values on more than one line of the # .itu. Keyword assignments in the description file are case sensitive. # # ------------------------------------------ # # name= # # The name of the Solaris module being delivered. This keyword must be # assigned a value in every description file. # Example: name=geewhiz # # itu_type= # # Defines the scope of the module delivery. The only valid itu_type # values are 'complete' and 'partial'. The 'complete' itu_type implies # a full set of module, module.conf, module.bef and device database # entries is being delivered and that the driver being delivered did not # exist on the installation medium for the release being supplemented. # In all other cases the itu_type should be 'partial'. This keyword # must be assigned a value in every description file. # Example: itu_type=complete # # interface_version= # # Major.Minor number that versions the .itu keywords and file syntax. # If in the future changes are needed to the syntax of the .itu file # that would obsolete older .itu files, an appropriate version number # change should occur. Currently this keyword should always be assigned # the value of 1.0. This keyword must be assigned a value in every # description file. # Example: interface_version=1.0 # # patchid= # # (NOTE: This keyword is to be ignored by development. It will be # assigned a value by the RE group.) # The patch id that should be assigned to the patch that make_ITU # creates. This keyword must be assigned a value in every # description file. # Example: patchid=102345-01 # # driverpkg= # # (NOTE: This keyword is to be ignored by development. It will be # assigned a value by the RE group.) # The name of the package that the module resides in on the install # medium. If the module is new, the name of the package that should be # extended to include this module, or the name of a new package that # should be constructed. This is the abbreviated name that is assigned # to the PKG parameter in the package's pkginfo file. This keyword must # be assigned a value in any description file when the delivery includes # a solaris module. # Example: driverpkg=SUNWos86r # # driverpkgvers= # # (NOTE: This keyword is to be ignored by development. It will be # assigned a value by the RE group.) # The value to assign to the VERSION parameter in the driver package's # pkginfo. This should be identical to the VERSION value on the install # medium in the case where the package existed on the install # medium. This keyword must be assigned a value if the driverpkg keyword # has been assigned a value. The value assigned to this keyword is expected # to be a quoted string. # Example: driverpkgvers="1.1.0,REV=0.0.0" # # driverpkgdesc= # # (NOTE: This keyword is to be ignored by development. It will be # assigned a value by the RE group.) # The value to assign to the NAME parameter in the driver package's # pkginfo. This is the descriptive name of the package. This keyword # must be assigned a value if the driverpkg keyword has been assigned a # value. The value assigned to this keyword is expected to be a quoted # string. # Example: driverpkgdesc="Platform Support, OS Functionality (Root)" # # class= # # Describes an entry for this module that should be added to the # /etc/driver_classes file. # Example: class=scsi # # system_entry= # # Describes an entry to be appended to the /etc/system file (which is # read during kernel initialization). A system entry to forceload the # new module is generated automatically by the booting system, so this # keyword should be used for entries other than those forceloads. The # value assigned to this keyword is expected to be a quoted string. # Example: system_entry="exclude: bad_buggy_driver" # # devlink_entry= # # Describes an entry to be appended to the /etc/devlink.tab file (which # is used by the devlinks command to create the contents of the /dev # directory). The value assigned to this keyword is expected to be a quoted # string. # Example: devlink_entry="type=ddi_serial:dialout,mb;minor=e;cu cua4" # # driver_path= # # Specifies the absolute directory path to the module's location when # installed. If this keyword is not assigned a value, a default path of # /platform/`uname -i`/kernel/drv will be assumed. # Example: driver_path=/kernel/drv # # realmode_path= # # This keyword allows specification of the exact path for realmode # driver delivery. By default, new self-identifying drivers are # installed in the boot area of the root at # /platform/i86pc/boot/solaris/drivers/notisa.010, and # non-self-identifying drivers are installed in # /platform/i86pc/boot/solaris/drivers/isa.160. This keyword is # intended for use when delivering an updated version of a driver that's # already on the install medium. This variable must be defined if the # itu_type is 'partial' and a realmode driver has been delivered. This # keyword is only used with Solaris Intel edition ITUs. # Example: realmode_path=/platform/i86pc/boot/solaris/drivers/notisa.010 # # load_always= # # The Intel edition configuration assistant attempts to prune the set of # delivered modules to only include those that are actually needed. # Some modules being delivered may by nature not be seen by the # configuration assistant but still must be delivered. Setting this # keyword to a TRUE value ensures the delivered module will not be # pruned during the boot process. This keyword is only used with Solaris # Intel edition ITUs. # Example: load_always=FALSE # # legacy_device= # # This keyword should be set to TRUE if and only if the realmode driver # for the device supports the legacyprobe() function call. Realmode # drivers only support this call when they are not self-identifying devices, # so few, if any, new drivers will provide the legacyprobe() function. # See the Writing Device Drivers guide, Realmode drivers section, for more # details. By default this keyword has the value of FALSE. Declaring # legacy_device as true effectively makes load_always TRUE as well. This # keyword is only used with Solaris Intel edition ITUs. # Example: legacy_device=TRUE # # bef_name= # # The name of the realmode driver accompanying the Solaris module being # delivered. The full name including extension should be defined. This # variable need not be defined if the realmode driver # has the same basename as the Solaris module. This keyword is only # used with Solaris Intel edition ITUs. # Example: bef_name=whiz.bef # # dev_id= # # node_name= # # bus_type= # # describe_dev= # # dev_type= # # These keywords are grouped because if any one of them is defined they # must all be defined. Drivers support devices, obviously, and the # booting system maintains a database that ties information about # specific devices to their drivers. When a new driver is added, the # devices it supports must be enumerated. This cluster of keyword values # forms a device database entry. # # Multiple clusters will have to be defined if the driver supports # multiple devices. Judicious use of braces can cut down on the actual # number of assignments that must be put into the .itu. # # The keyword, 'dev_type' has an invariant value over all clusters, and # thus should only be defined once. The most common types would be # 'msd' (short for mass storage device) and 'net' (network interface). # Example: dev_type=msd # dev_type=net # # The 'describe_dev' keyword should be assigned a quoted string as a # value. That string should give a short (maximum of 80 characters) # description of the supported device. If there are multiple # assignments to this keyword then the 'dev_id', 'node_name', and # 'bus_type' assignments for which the description is valid should be # grouped (using braces) with the 'describe_dev' assignment. This # string is presented to the user on the menu of bootable devices. # Example: describe_dev="Whiz BR-549 SCSI Controller" # # The 'dev_id' keyword describes one or more unique names assigned to # the physical device a module drives. In the case of self-identifying # devices this id is obtainable by a driver at run time, and the database # entry being created can be used to map the found id to a realmode driver. # For example, the PCI configuration space of a machine can be probed to # discover a pci1000,1 device id is present in the system. A database entry # with a dev_id of pci1000,1 is what tells the booting system that the realmode # driver for that device is ncrs.bef. The database also has a 'describe_dev' # entry of "Symbios Logic 53c810 SCSI" that can be displayed to an end-user. # Example: dev_id=PNP81C3 # dev_id=pci1234,1 # dev_id=CPQ6200 # # For an older, non self-identifying device, the scenario is somewhat # reversed. To find these devices, realmode drivers are run in a # probing mode. If the probe indicates that the device is present, the # first database entry that matches the name of the realmode driver and # indicates a 'bus_type' of isa (or the catch-all all) is taken to be # the unique 'dev_id' for that device. The 'describe_dev' description # presented to the user is taken from this database entry as well. # Writing drivers for non self-identifying devices is strongly # discouraged. # # The 'node_name' keyword is the name of the device as it is known in # the kernel device tree (/devices/BUS/device_name...) when initialized. # This is either the name of the module itself, (e.g., smc), or a name # that maps to the module in the /etc/driver_aliases file (e.g, # pci9004,7278; a node name that happens to map to the adp module). In # the special case where the 'bus_type' is pciclass, the 'node_name' # should be assigned the value "none". Multiple node_names may be # defined. # Example: node_name=geewhiz # node_name=pci1234,1 # node_name=none # # The 'bus_type' generally describes the bus that the device works in. # Of course if the module supports multiple versions of a device and the # various versions of the card support different bus types, multiple # 'bus_type' assignments should occur, grouped with appropriate # assignments of the other keywords in the cluster. # Example: bus_type=pci # # These five keywords are only used with Solaris Intel edition ITUs. # # patch_obsoletes= # # (NOTE: This keyword is to be ignored by development. It will be # assigned a value by the RE group if need be.) # The patchid(s) associated with any patches that the patch delivering # the module renders obsolete. This keyword may be assigned multiple # times if there is more than one patch obsoleted. # Example: patch_obsoletes=102452-30 # patch_obsoletes="102452-29 102452-30" # # patch_required= # # (NOTE: This keyword is to be ignored by development. It will be # assigned a value by the RE group if need be.) # The patchid(s) associated with any patches that the patch delivering # the module is dependent upon having already been installed. This keyword # may be assigned multiple times if there is more than one patch dependency. # Example: patch_required=102451-29 # # befpkg= # # (NOTE: This keyword is to be ignored by development. It will be # assigned a value by the RE group if need be.) # The name of the package that the realmode driver resides in on the # install medium. The value should only be assigned if the realmode # driver resides in a package different than the driver package on the # install medium. New drivers should not assign a value to this # keyword. If no value is assigned to this keyword, the realmode driver # will be delivered in the same package as the Solaris module. This # keyword is only used with Solaris Intel edition ITUs. # Example: befpkg=SUNWos86r # # befpkgvers= # # (NOTE: This keyword is to be ignored by development. It will be # assigned a value by the RE group.) # The value to assign to the VERSION parameter in the realmode package's # pkginfo. This should be identical to the VERSION value on the install # medium in the case where the package existed on the install medium. # If befpkg has been assigned a value, this keyword must be assigned. # This keyword is only used with Solaris Intel edition ITUs. The value # assigned to this keyword is expected to be a quoted string. # Example: befpkgvers="1.1.0,REV=0.0.0" # # befpkgdesc= # # (NOTE: This keyword is to be ignored by development. It will be # assigned a value by the RE group.) # The value to assign to the NAME parameter in the realmode package's # pkginfo. This is the descriptive name of the package. If befpkg has # been assigned a value, this keyword must be assigned. This keyword is # only used with Solaris Intel edition ITUs. The value assigned to this # keyword is expected to be a quoted string. # Example: befpkgdesc="Platform Support, OS Functionality (Root)" # # manpkg= # # (NOTE: This keyword is to be ignored by development. It will be # assigned a value by the RE group.) # The name of the package where manual deliveries should reside. Either # the name of the package that should be extended to include this man # page or the name of a new package that should be constructed. This is # the abbreviated name that is assigned to the PKG parameter in the # package's pkginfo file. # Example: manpkg=SUNWman # # manpkgvers= # # (NOTE: This keyword is to be ignored by development. It will be # assigned a value by the RE group.) # The value to assign to the VERSION parameter in the manual package's # pkginfo. This should be identical to the VERSION value on the install # medium in the case where the package existed on the install medium. If # manpkg has been assigned a value, this keyword must be assigned. The # value assigned to this keyword is expected to be a quoted string. # Example: manpkgvers="39.0,REV=15" # # manpkgdesc= # # (NOTE: This keyword is to be ignored by development. It will be # assigned a value by the RE group.) # The value to assign to the NAME parameter in the manual package's # pkginfo. This is the descriptive name of the package. If manpkg has # been assigned a value, this keyword must be assigned. The value assigned # to this keyword is expected to be a quoted string. # Example: manpkgdesc="On-line Manual Pages" #