1. 16 6月, 2009 2 次提交
  2. 13 6月, 2009 1 次提交
  3. 09 5月, 2009 3 次提交
    • G
      Revert driver core: move platform_data into platform_device · e67c8562
      Greg Kroah-Hartman 提交于
      This reverts commit 006f4571:
      
      	This patch moves platform_data from struct device into
      	struct platform_device, based on the two ideas:
      
      	1. Now all platform_driver is registered by platform_driver_register,
      	   which makes probe()/release()/... of platform_driver passed parameter
      	   of platform_device *, so platform driver can get platform_data from
      	   platform_device;
      
      	2. Other kind of devices do not need to use platform_data, we can
      	   decrease size of device if moving it to platform_device.
      
      	Taking into consideration of thousands of files to be fixed and they
      	can't be finished in one night(maybe it will take a long time), so we
      	keep platform_data in device to allow two kind of cases coexist until
      	all platform devices pass its platfrom data from
      	platform_device->platform_data.
      
      	All patches to do this kind of conversion are welcome.
      
      As we don't really want to do it, it was a bad idea.
      
      Cc: David Brownell <david-b@pacbell.net>
      Cc: Ming Lei <tom.leiming@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      e67c8562
    • M
      Revert driver core: fix passing platform_data · bee86321
      Ming Lei 提交于
      This reverts commit ce21c7bc:
      	We will remove platform_data field from struct device until
      	all platform devices pass its specific data from platfom_device
      	and all platform drivers use platform specific data passed by
      	platform_device->platform_data. This kind of conversion will
      	need a long time, for thousands of files is affected.
      
      	To make the conversion easily, we allow platform specific data
      	passed by struct device or struct platform_device and platform
      	driver may use it from struct device or struct platform_device.
      
      As we really don't want to do this at all.
      
      
      Cc: David Brownell <david-b@pacbell.net>
      Cc: Ming Lei <tom.leiming@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      bee86321
    • R
      Driver core: platform: fix kernel-doc warnings · d86c1302
      Randy Dunlap 提交于
      Fix function parameter notation in platform.c;
      fixes kernel-doc warnings.
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      d86c1302
  4. 17 4月, 2009 1 次提交
    • M
      Driver Core: early platform driver · 13977091
      Magnus Damm 提交于
      V3 of the early platform driver implementation.
      
      Platform drivers are great for embedded platforms because we can separate
      driver configuration from the actual driver.  So base addresses,
      interrupts and other configuration can be kept with the processor or board
      code, and the platform driver can be reused by many different platforms.
      
      For early devices we have nothing today.  For instance, to configure early
      timers and early serial ports we cannot use platform devices.  This
      because the setup order during boot.  Timers are needed before the
      platform driver core code is available.  The same goes for early printk
      support.  Early in this case means before initcalls.
      
      These early drivers today have their configuration either hard coded or
      they receive it using some special configuration method.  This is working
      quite well, but if we want to support both regular kernel modules and
      early devices then we need to have two ways of configuring the same
      driver.  A single way would be better.
      
      The early platform driver patch is basically a set of functions that allow
      drivers to register themselves and architecture code to locate them and
      probe.  Registration happens through early_param().  The time for the
      probe is decided by the architecture code.
      
      See Documentation/driver-model/platform.txt for more details.
      
      [akpm@linux-foundation.org: coding-style fixes]
      Signed-off-by: NMagnus Damm <damm@igel.co.jp>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: Kay Sievers <kay.sievers@vrfy.org>
      Cc: David Brownell <david-b@pacbell.net>
      Cc: Tejun Heo <htejun@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      13977091
  5. 25 3月, 2009 4 次提交
    • M
      driver core: fix passing platform_data · ce21c7bc
      Ming Lei 提交于
      We will remove platform_data field from struct device until
      all platform devices pass its specific data from platfom_device
      and all platform drivers use platform specific data passed by
      platform_device->platform_data. This kind of conversion will
      need a long time, for thousands of files is affected.
      
      To make the conversion easily, we allow platform specific data
      passed by struct device or struct platform_device and platform
      driver may use it from struct device or struct platform_device.
      Signed-off-by: NMing Lei <tom.leiming@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      ce21c7bc
    • M
      driver core: move platform_data into platform_device · 006f4571
      Ming Lei 提交于
      This patch moves platform_data from struct device into
      struct platform_device, based on the two ideas:
      
      1. Now all platform_driver is registered by platform_driver_register,
         which makes probe()/release()/... of platform_driver passed parameter
         of platform_device *, so platform driver can get platform_data from
         platform_device;
      
      2. Other kind of devices do not need to use platform_data, we can
         decrease size of device if moving it to platform_device.
      
      Taking into consideration of thousands of files to be fixed and they
      can't be finished in one night(maybe it will take a long time), so we
      keep platform_data in device to allow two kind of cases coexist until
      all platform devices pass its platfrom data from
      platform_device->platform_data.
      
      All patches to do this kind of conversion are welcome.
      Signed-off-by: NMing Lei <tom.leiming@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      006f4571
    • E
      platform: introduce module id table for platform devices · 57fee4a5
      Eric Miao 提交于
      Now platform_device is being widely used on SoC processors where the
      peripherals are attached to the system bus, which is simple enough.
      
      However, silicon IPs for these SoCs are usually shared heavily across
      a family of processors, even products from different companies.  This
      makes the original simple driver name based matching insufficient, or
      simply not straight-forward.
      
      Introduce a module id table for platform devices, and makes it clear
      that a platform driver is able to support some shared IP and handle
      slight differences across different platforms (by 'driver_data').
      Module alias is handled automatically when a MODULE_DEVICE_TABLE()
      is defined.
      
      To not disturb the current platform drivers too much, the matched id
      entry is recorded and can be retrieved by platform_get_device_id().
      Signed-off-by: NEric Miao <eric.miao@marvell.com>
      Cc: Kay Sievers <kay.sievers@vrfy.org>
      Cc: Ben Dooks <ben-linux@fluff.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      57fee4a5
    • E
      platform: make better use of to_platform_{device,driver}() macros · 71b3e0c1
      Eric Miao 提交于
      This helps the code look more consistent and cleaner.
      Signed-off-by: NEric Miao <eric.miao@marvell.com>
      Cc: Kay Sievers <kay.sievers@vrfy.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      71b3e0c1
  6. 07 1月, 2009 2 次提交
  7. 17 10月, 2008 3 次提交
  8. 11 6月, 2008 1 次提交
  9. 11 3月, 2008 1 次提交
    • J
      drivers: fix dma_get_required_mask · e88a0c2c
      James Bottomley 提交于
      There's a bug in the current implementation of dma_get_required_mask()
      where it ands the returned mask with the current device mask.  This
      rather defeats the purpose if you're using the call to determine what
      your mask should be (since you will at that time have the default
      DMA_32BIT_MASK).  This bug results in any driver that uses this function
      *always* getting a 32 bit mask, which is wrong.
      
      Fix by removing the and with dev->dma_mask.
      Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      e88a0c2c
  10. 25 1月, 2008 4 次提交
  11. 13 10月, 2007 3 次提交
    • J
      Driver core: Make platform_device.id an int · 1359555e
      Jean Delvare 提交于
      While platform_device.id is a u32, platform_device_add() handles "-1"
      as a special id value. This has potential for confusion and bugs.
      Making it an int instead should prevent problems from happening in
      the future.
      Signed-off-by: NJean Delvare <khali@linux-fr.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      1359555e
    • K
      Driver core: change add_uevent_var to use a struct · 7eff2e7a
      Kay Sievers 提交于
      This changes the uevent buffer functions to use a struct instead of a
      long list of parameters. It does no longer require the caller to do the
      proper buffer termination and size accounting, which is currently wrong
      in some places. It fixes a known bug where parts of the uevent
      environment are overwritten because of wrong index calculations.
      
      Many thanks to Mathieu Desnoyers for finding bugs and improving the
      error handling.
      Signed-off-by: NKay Sievers <kay.sievers@vrfy.org>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      7eff2e7a
    • K
      platform: prefix MODALIAS with "platform:" · 43cc71ee
      Kay Sievers 提交于
      Prefix platform modalias strings with "platform:", which
      modprobe config to blacklist alias resolving if userspace
      configures it.
      
      Send uevents for all platform devices.
      
      Add MODULE_ALIAS's to: pxa2xx_pcmcia, ds1742 and pcspkr to trigger
      module autoloading by userspace.
      
        $ modinfo pcspkr
        alias:          platform:pcspkr
        license:        GPL
        description:    PC Speaker beeper driver
        ...
      
        $ modprobe -n -v platform:pcspkr
        insmod /lib/modules/2.6.23-rc3-g28e8351a-dirty/kernel/drivers/input/misc/pcspkr.ko
      Signed-off-by: NKay Sievers <kay.sievers@vrfy.org>
      Cc: David Brownell <david-b@pacbell.net>
      Cc: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      43cc71ee
  12. 09 5月, 2007 2 次提交
    • M
      drivers/base/platform.c: fix small typo in doc · 01afd806
      Márton Németh 提交于
      Typo: iwithout -> without.
      Signed-off-by: NMárton Németh <nm127@freemail.hu>
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      01afd806
    • D
      fix hotplug for legacy platform drivers · 49a4ec18
      David Brownell 提交于
      We've had various reports of some legacy "probe the hardware" style
      platform drivers having nasty problems with hotplug support.
      
      The core issue is that those legacy drivers don't fully conform to the
      driver model.  They assume a role that should be the responsibility of
      infrastructure code: creating device nodes.
      
      The "modprobe" step in hotplugging relies on drivers to have split those
      roles into different modules.  The lack of this split causes the problems.
      When a driver creates nodes for devices that don't exist (sending a hotplug
      event), then exits (aborting one modprobe) before the "modprobe $MODALIAS"
      step completes (by failing, since it's in the middle of a modprobe), the
      result can be an endless loop of modprobe invocations ...  badness.
      
      This fix uses the newish per-device flag controlling issuance of "add"
      events.  (A previous version of this patch used a per-device "driver can
      hotplug" flag, which only scrubbed $MODALIAS from the environment rather
      than suppressing the entire hotplug event.) It also shrinks that flag to
      one bit, saving a word in "struct device".
      
      So the net of this patch is removing some nasty failures with legacy
      drivers, while retaining hotplug capability for the majority of platform
      drivers.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Cc: Greg KH <gregkh@suse.de>
      Cc: Andres Salomon <dilinger@debian.org>
      Cc: Dominik Brodowski <linux@dominikbrodowski.net>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      49a4ec18
  13. 03 5月, 2007 1 次提交
    • J
      platform: reorder platform_device_del · dc4c15d4
      Jean Delvare 提交于
      In platform_device_del(), we currently delete the device resources
      first, then we delete the device itself. This causes a (minor) bug to
      occur when one unregisters a platform device before unregistering its
      platform driver, and the driver is requesting (in .probe()) and
      releasing (in .remove()) a resource of the device. The device
      resources are already gone by the time the driver gets the chance to
      release the resources it had been requesting, causing an error like:
      Trying to free nonexistent resource <0000000000000295-0000000000000296>
      
      If the platform driver is unregistered first, the problem doesn't
      occur, as the driver will have the opportunity to release the
      resources it had requested before the device resources themselves are
      released. It's a bit odd that unregistering the driver first or the
      device first doesn't lead to the same result.
      
      So I believe that we should delete the device first in
      platform_device_del(). I've searched the git history and found that it
      used to be the case before 2.6.8, but was changed here:
      
      http://www.kernel.org/git/?p=linux/kernel/git/torvalds/old-2.6-bkcvs.git;a=commitdiff;h=96ef7b3689936ee1e64b711511342026a8ce459c
      
      > 2004/07/14 16:09:44-07:00 dtor_core
      > [PATCH] Driver core: Fix OOPS in device_platform_unregister
      > 
      > Driver core: platform_device_unregister should release resources first
      >              and only then call device_unregister, otherwise if there
      >              are no more references to the device it will be freed and
      >              the fucntion will try to access freed memory.  
      
      However we now have an explicit call to put_device() at the end of
      platform_device_unregister() so I guess the original problem no longer
      exists and it is safe to revert that change.
      Signed-off-by: NJean Delvare <khali@linux-fr.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      dc4c15d4
  14. 08 2月, 2007 1 次提交
  15. 14 12月, 2006 2 次提交
  16. 02 12月, 2006 1 次提交
    • D
      Driver core: platform_driver_probe(), can save codespace · c67334fb
      David Brownell 提交于
      This defines a new platform_driver_probe() method allowing the driver's
      probe() method, and its support code+data, to safely live in __init
      sections for typical system configurations.
      
      Many system-on-chip processors could benefit from this API, to the tune
      of recovering hundreds to thousands of bytes per driver.  That's memory
      which is currently wasted holding code which can never be called after
      system startup, yet can not be removed.   It can't be removed because of
      the linkage requirement that pointers to init section code (like, ideally,
      probe support) must not live in other sections (like driver method tables)
      after those pointers would be invalid.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      c67334fb
  17. 26 9月, 2006 1 次提交
  18. 22 6月, 2006 2 次提交
  19. 22 3月, 2006 1 次提交
  20. 21 3月, 2006 1 次提交
  21. 14 1月, 2006 1 次提交
  22. 05 1月, 2006 2 次提交