1. 30 5月, 2014 3 次提交
    • Z
      ACPI / scan: drop unsupported serial IDs from PNP ACPI scan handler ID list · 01cd4bac
      Zhang Rui 提交于
      The "serial" PNP driver supports some "unknown" PNP modems
      (PNPCXXX/PNPDXXX) by matching magic strings in the PNP device name
      or the PNP device card name.
      
      ACPI enumerated PNP devices neither are PNP cards, nor have those
      magic strings in device names, so this mechamism never actually works
      for ACPI enumerated PNPCXXX/PNPDXXX devices.
      
      Consequently, it is safe to remove those two IDs from the PNP ACPI scan
      handler's device ID list.
      Signed-off-by: NZhang Rui <rui.zhang@intel.com>
      [rjw: Subject and changelog]
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Reviewed-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      01cd4bac
    • Z
      ACPI / scan: drop IDs that do not comply with the ACPI PNP ID rule · e1d2c4cf
      Zhang Rui 提交于
      The PNP ACPI scan handler device ID list includes all the IDs from
      all of the struct pnp_device_id instances in the tree, but some of
      them do not follow the ACPI PNP ID rule (3 letters + 4 hex digits).
      
      For those IDs, the coressponding devices will never be enumerated
      via ACPI, so it is safe to remove them from the PNP ACPI ID list.
      Signed-off-by: NZhang Rui <rui.zhang@intel.com>
      [rjw: Subject and changelog]
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Reviewed-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      e1d2c4cf
    • Z
      ACPI / PNP: use device ID list for PNPACPI device enumeration · eec15edb
      Zhang Rui 提交于
      ACPI can be used to enumerate PNP devices, but the code does not
      handle this in the right way currently.  Namely, if an ACPI device
      object
       1. Has a _CRS method,
       2. Has an identification of
          "three capital characters followed by four hex digits",
       3. Is not in the excluded IDs list,
      it will be enumerated to PNP bus (that is, a PNP device object will
      be create for it).  This means that, actually, the PNP bus type is
      used as the default bus type for enumerating _HID devices in ACPI.
      
      However, more and more _HID devices need to be enumerated to the
      platform bus instead (that is, platform device objects need to be
      created for them).  As a result, the device ID list in acpi_platform.c
      is used to enforce creating platform device objects rather than PNP
      device objects for matching devices.  That list has been continuously
      growing recently, unfortunately, and it is pretty much guaranteed to
      grow even more in the future.
      
      To address that problem it is better to enumerate _HID devices
      as platform devices by default.  To this end, change the way of
      enumerating PNP devices by adding a PNP ACPI scan handler that
      will use a device ID list to create PNP devices for the ACPI
      device objects whose device IDs are present in that list.
      
      The initial device ID list in the PNP ACPI scan handler contains
      all of the pnp_device_id strings from all the existing PNP drivers,
      so this change should be transparent to the PNP core and all of the
      PNP drivers.  Still, in the future it should be possible to reduce
      its size by converting PNP drivers that need not be PNP for any
      technical reasons into platform drivers.
      Signed-off-by: NZhang Rui <rui.zhang@intel.com>
      [rjw: Rewrote the changelog, modified the PNP ACPI scan handler code]
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Reviewed-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      eec15edb