linux-2.6
16 years agoide: initialize rq->cmd_type in ide_init_drive_cmd() callers
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:11 +0000 (20:13 +0100)] 
ide: initialize rq->cmd_type in ide_init_drive_cmd() callers

* Initialize rq->cmd_type in ide_wait_cmd(), ide_cmd_ioctl() and
  set_pio_mode() (other callers were aleady over-riding rq->cmd_type).

* Remove no longer needed rq->cmd_type setup from ide_init_drive_cmd().

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: use wait_drive_not_busy() in drive_cmd_intr() (take 2)
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:11 +0000 (20:13 +0100)] 
ide: use wait_drive_not_busy() in drive_cmd_intr() (take 2)

Use wait_drive_not_busy() in drive_cmd_intr().

v2:
* Fix wait_drive_not_busy() comment (noticed by Sergei).

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: kill DATA_READY define
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:11 +0000 (20:13 +0100)] 
ide: kill DATA_READY define

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: task_end_request() fix
Tejun Heo [Sat, 26 Jan 2008 19:13:11 +0000 (20:13 +0100)] 
ide: task_end_request() fix

task_end_request() modified to always call ide_end_drive_cmd()
for taskfile requests.  Previously, ide_end_drive_cmd() was
called only when IDE_TFLAG_FLAGGED was set.  Also,
ide_dma_intr() is modified to use task_end_request().

Enables TASKFILE ioctls to get valid register outputs on
successful completion.

Bart:
- ported it over recent IDE changes

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: use rq->nr_sectors in task_end_request()
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:11 +0000 (20:13 +0100)] 
ide: use rq->nr_sectors in task_end_request()

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: remove needless ->cursg clearing from task_end_request()
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:11 +0000 (20:13 +0100)] 
ide: remove needless ->cursg clearing from task_end_request()

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: set IDE_TFLAG_IN_* flags before queuing/executing command
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:10 +0000 (20:13 +0100)] 
ide: set IDE_TFLAG_IN_* flags before queuing/executing command

* Add IDE_TFLAG_{HOB,TF,DEVICE} defines.

* Set IDE_TFLAG_IN_* flags in {do_rw,ide_no_data,ide_raw}_taskfile() users.

* Remove no longer needed ->tf_flags setup from ide_end_drive_cmd().

There should be no functionality changes caused by this patch.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide-tape: fix handling of non-special requests in ->end_request method
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:10 +0000 (20:13 +0100)] 
ide-tape: fix handling of non-special requests in ->end_request method

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: fix final status check in task_in_intr()
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:10 +0000 (20:13 +0100)] 
ide: fix final status check in task_in_intr()

Check for DRQ bit being cleared on the final status check.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: clear HOB bit for REQ_TYPE_ATA_CMD requests in ide_end_drive_cmd()
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:10 +0000 (20:13 +0100)] 
ide: clear HOB bit for REQ_TYPE_ATA_CMD requests in ide_end_drive_cmd()

ide_dump_status() may set HOB bit before ide_end_drive_cmd() is called.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: fix ->io_32bit race in ide_taskfile_ioctl()
Tejun Heo [Sat, 26 Jan 2008 19:13:10 +0000 (20:13 +0100)] 
ide: fix ->io_32bit race in ide_taskfile_ioctl()

In ide_taskfile_ioctl(), there was a race condition involving
drive->io_32bit.  It was cleared and restored during ioctl
requests but there was no synchronization with other requests.
So, other requests could execute with the altered ->io_32bit
setting or updated drive->io_32bit could be overwritten by
ide_taskfile_ioctl().

This patch adds IDE_TFLAG_IO_16BIT flag to indicate to
ide_pio_datablock() that 16-bit I/O is needed regardless of
drive->io_32bit settting.

Bart:
- ported it over recent IDE changes

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agocmd64x: remove /proc/ide/cmd64x
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:09 +0000 (20:13 +0100)] 
cmd64x: remove /proc/ide/cmd64x

This belongs to user-space (and only if really needed).

   text    data     bss     dec     hex filename
   3874     180      28    4082     ff2 drivers/ide/pci/cmd64x.o.before
   2231     180       0    2411     96b drivers/ide/pci/cmd64x.o.after

Additionaly to being bloat the code reported incorrect UDMA modes for
the reserved values of UDIDETCR0/1 registers.

Also while at it remove unused CNTRL_DIS_RA0/1 defines.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: remove broken disk byte-swapping support
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:09 +0000 (20:13 +0100)] 
ide: remove broken disk byte-swapping support

Remove broken disk byte-swapping support:
- it can cause a data corruption on SMP (or if using PREEMPT on UP)
- all data coming from disk are byte-swapped by taskfile_*_data() which
  results in incorrect identify data being reported by /proc/ide/ and IOCTLs
- "hdx=bswap/byteswap" kernel parameter has been broken on m68k host drivers
  (including Atari/Q40 ones) since 2.5.x days (because of 'hwif' zero-ing)
- byte-swapping is limited to PIO transfers (for working with TiVo disks on
  x86 machines using user-space solutions or dm-byteswap should result in
  much better performance because DMA can be used)

For previous discussions please see:

http://www.ussg.iu.edu/hypermail/linux/kernel/0201.0/0768.html
http://lkml.org/lkml/2004/2/28/111

[ I have dm-byteswap device mapper target if somebody is interested
  (patch is for 2.6.4 though but I'll dust it off if needed). ]

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: add ide_busy_sleep() helper
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:09 +0000 (20:13 +0100)] 
ide: add ide_busy_sleep() helper

Add ide_busy_sleep() helper and use it in do_probe(),
enable_nest() and probe_hwif().

As a nice side-effect this fixes a minor bug in do_probe()
(the code was reading status register without any delay).

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: make CONFIG_IDEPCI_PCIBUS_ORDER visible and deprecate it
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:09 +0000 (20:13 +0100)] 
ide: make CONFIG_IDEPCI_PCIBUS_ORDER visible and deprecate it

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: move CONFIG_IDEPCI_PCIBUS_ORDER code to ide-scan-pci.c
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:09 +0000 (20:13 +0100)] 
ide: move CONFIG_IDEPCI_PCIBUS_ORDER code to ide-scan-pci.c

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: print banner message once per controller in m68k host drivers
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:09 +0000 (20:13 +0100)] 
ide: print banner message once per controller in m68k host drivers

* Print banner message once per controller in m68k host drivers.

* Change printk() level to KERN_INFO in buddha, falconide and gayle.

* Add banner message to q40ide.

This is basically a preparation for the future IDE layer changes.

Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: add ide_set_irq() inline helper
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:08 +0000 (20:13 +0100)] 
ide: add ide_set_irq() inline helper

There should be no functionality changes caused by this patch.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide-pmac: use custom hwif->sg_max_nents only if DMA support is enabled
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:08 +0000 (20:13 +0100)] 
ide-pmac: use custom hwif->sg_max_nents only if DMA support is enabled

Move setting hwif->sg_max_nents from pmac_ide_setup_device()
to pmac_ide_setup_dma().

Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agorapide: remove write-only hwif->hwif_data
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:08 +0000 (20:13 +0100)] 
rapide: remove write-only hwif->hwif_data

Cc: Russell King <rmk@arm.linux.org.uk>
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: use ide_init_port_hw() in setup-pci.c
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:08 +0000 (20:13 +0100)] 
ide: use ide_init_port_hw() in setup-pci.c

* Move setting hwif->gendev.parent from ide_pci_setup_ports()
  to ide_hwif_configure().

* Always set hwif->io_ports in ide_hwif_configure().

* Use ide_init_port_hw() in ide_hwif_configure().

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: always use ide_std_init_ports() in setup-pci.c
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:08 +0000 (20:13 +0100)] 
ide: always use ide_std_init_ports() in setup-pci.c

* ide_init_hwif_ports() call in setup-pci.c::ide_hwif_configure()
  doesn't depend on the default cotrol register offset, default IRQ
  or ppc_ide_md.ide_init_hwif implementations so ide_std_init_ports()
  can always be used.

* Since 'base' is always non-zero and thus hwif->io_ports[IDE_DATA_OFFSET]
  is also non-zero always clear hwif->noprobe.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoau1xxx-ide: use ide_init_port_hw()
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:08 +0000 (20:13 +0100)] 
au1xxx-ide: use ide_init_port_hw()

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoau1xxx-ide: au_ide_probe() fixes
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:07 +0000 (20:13 +0100)] 
au1xxx-ide: au_ide_probe() fixes

* hwif->hold is always set in au_ide_probe() (few lines earlier),
  no need to set it again

* hwif->{channel,select_data,config_data} should be always zero

* autotune PIO also if CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA is defined

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: make remaining built-in only IDE host drivers modular (take 2)
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:07 +0000 (20:13 +0100)] 
ide: make remaining built-in only IDE host drivers modular (take 2)

* Make remaining built-in only IDE host drivers modular, add ide-scan-pci.c
  file for probing PCI host drivers registered with IDE core (special case
  for built-in IDE and CONFIG_IDEPCI_PCIBUS_ORDER=y) and then take care of
  the ordering in which all IDE host drivers are probed when IDE is built-in
  during link time.

* Move probing of gayle, falconide, macide, q40ide and buddha (m68k arch
  specific) host drivers, before PCI ones (no PCI on m68k), ide-cris (cris
  arch specific), cmd640 (x86 arch specific) and pmac (ppc arch specific).

* Move probing of ide-cris (cris arch specific) host driver before cmd640
  (x86 arch specific).

* Move probing of mpc8xx (ppc specific) host driver before ide-pnp (depends
  on ISA and none of ppc platform that use mpc8xx supports ISA) and ide-h8300
  (h8300 arch specific).

* Add "probe_vlb" kernel parameter to cmd640 host driver and update
  Documentation/ide.txt accordingly.

* Make IDE_ARM config option visible so it can also be disabled if needed.

* Remove bogus comment from ide.c while at it.

v2:
* Fix two issues spotted by Sergei:
  - replace ENOMEM error value by ENOENT in ide-h8300 host driver
  - fix MODULE_PARM_DESC() in cmd640 host driver

Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Cc: Mikael Starvik <starvik@axis.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: fix host drivers depending on ide_generic to probe for interfaces (take 2)
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:06 +0000 (20:13 +0100)] 
ide: fix host drivers depending on ide_generic to probe for interfaces (take 2)

* Add mpc8xx_ide_probe() to mpc8xx.c and call it from probe_for_hwifs().

* Convert ide_arm, ide-cris, ide-h8300, ide-pnp, buddha, falconide, gayle,
  macide, q40ide, cmd640 and mpc8xx host drivers to use ide_device_add().

  This removes dependency on ide_generic for these drivers so update
  ide/Kconfig accordingly.

v2:
* ide_arm build fix (s/ide_device_idx/ide_device_add/)
  (Thanks to Christoph Lameter <clameter@sgi.com> for reporting the problem).

Cc: Mikael Starvik <starvik@axis.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agocmd640: fix dependency on IDE_GENERIC
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:06 +0000 (20:13 +0100)] 
cmd640: fix dependency on IDE_GENERIC

Make BLK_DEV_CMD640 select IDE_GENERIC.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: move ide_arm_init() call from init_ide_data() to ide_init()
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:06 +0000 (20:13 +0100)] 
ide: move ide_arm_init() call from init_ide_data() to ide_init()

* Remove ide_init_port_data() call from ide_arm_init() and move
  ide_arm_init() call from init_ide_data() to ide_init().

This patch is a preparation for the future changes (and as a side-effect
makes obsolete "idex=io[,ctl[,irq]]" kernel parameters work for ide_arm).

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: drop 'initializing' argument from ide_register_hw()
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:06 +0000 (20:13 +0100)] 
ide: drop 'initializing' argument from ide_register_hw()

* Rename init_hwif_data() to ide_init_port_data() and export it.

* For all users of ide_register_hw() with 'initializing' argument set
  hwif->present and hwif->hold are always zero so convert these host
  drivers to use ide_find_port()+ide_init_port_data()+ide_init_port_hw()
  instead (also no need for init_hwif_default() call since the setup
  done by it gets over-ridden by ide_init_port_hw() call).

* Drop 'initializing' argument from ide_register_hw().

Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: add ide_init_port_hw() helper
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:05 +0000 (20:13 +0100)] 
ide: add ide_init_port_hw() helper

* Add ide_init_port_hw() helper.

* rapide.c: convert rapide_locate_hwif() to rapide_setup_ports()
  and use ide_init_port_hw().

* ide_platform.c: convert plat_ide_locate_hwif() to plat_ide_setup_ports()
  and use ide_init_port_hw().

* sgiioc4.c: use ide_init_port_hw().

* pmac.c: add 'hw_regs_t *hw' argument to pmac_ide_setup_device(),
  setup 'hw' in pmac_ide_{macio,pci}_attach() and use ide_init_port_hw()
  in pmac_ide_setup_device().

This patch is a preparation for the future changes in the IDE probing code.

There should be no functionality changes caused by this patch.

Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Anton Vorontsov <avorontsov@ru.mvista.com>
Cc: Jeremy Higdon <jeremy@sgi.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agosgiioc4: always init hwif->io_ports
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:05 +0000 (20:13 +0100)] 
sgiioc4: always init hwif->io_ports

'if (hwif->io_ports[IDE_DATA_OFFSET] != cmd_base)' is always true.

Cc: Jeremy Higdon <jeremy@sgi.com>
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: Fix build break caused by "ide: remove ideprobe_init()"
Olof Johansson [Sat, 26 Jan 2008 19:13:05 +0000 (20:13 +0100)] 
ide: Fix build break caused by "ide: remove ideprobe_init()"

Fix build break of powerpc holly_defconfig:

In file included from arch/powerpc/platforms/embedded6xx/holly.c:24:
include/linux/ide.h:1206: error: 'CONFIG_IDE_MAX_HWIFS' undeclared here (not in a function)

There's no need to have a sized array in the prototype, might as well
turn it into a pointer.

It could probably be argued that large parts of the include file can be
covered under #ifdef CONFIG_IDE, but that's a larger undertaking.

Signed-off-by: Olof Johansson <olof@lixom.net>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: remove ideprobe_init()
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:05 +0000 (20:13 +0100)] 
ide: remove ideprobe_init()

* Rename ide_device_add() to ide_device_add_all() and make it accept
  'u8 idx[MAX_HWIFS]' instead of 'u8 idx[4]' as an argument.

* Add ide_device_add() wrapper for ide_device_add_all().

* Convert ide_generic_init() to use ide_device_add_all().

* Remove no longer needed ideprobe_init().

There should be no functionality changes caused by this patch.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: add hwif->chipset fixup to ide_device_add()
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:04 +0000 (20:13 +0100)] 
ide: add hwif->chipset fixup to ide_device_add()

Add hwif->chipset fixup identical to the one in ideprobe_init()
to ide_device_add().

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoswarm: set hwif->chipset
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:04 +0000 (20:13 +0100)] 
swarm: set hwif->chipset

hwif->chipset should be set if the hwif is claimed by host driver.

Cc: Maciej W. Rozycki <macro@linux-mips.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agorapide: set hwif->chipset
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:04 +0000 (20:13 +0100)] 
rapide: set hwif->chipset

hwif->chipset should be set if the hwif is claimed by host driver.

Cc: Russell King <rmk@arm.linux.org.uk>
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: fix probing for hosts with serialized or IRQ sharing interfaces
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:04 +0000 (20:13 +0100)] 
ide: fix probing for hosts with serialized or IRQ sharing interfaces

After hwif_register_devices() IDE devices are ready to be used so
the way in which ide_device_add() works currently is racy for hosts
with serialized / IRQ sharing interfaces.

Fix ide_device_add() by looping over interfaces for probe_hwif(),
hwif_init() and hwif_register_devices() operations.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: kill probe_hwif_init()
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:04 +0000 (20:13 +0100)] 
ide: kill probe_hwif_init()

There should be no functionality changes caused by this patch.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: don't try to unregister interfaces if 'initializing' in ide_register_hw()
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:03 +0000 (20:13 +0100)] 
ide: don't try to unregister interfaces if 'initializing' in ide_register_hw()

Host drivers using ide_register_hw() and 'initializing == 1':

* ide-pnp
  - depends on ISA

* ide_arm
  - ARM arch specific
  - initialized before all other host drivers

* ide-cris
  - CRIS arch specific => IDE_ARCH_OBSOLETE_INIT is not defined
  - broken

* ide-h8300
  - H8300 arch specific => IDE_ARCH_OBSOLETE_INIT is not defined, no PCI

* buddha/q40/gayle/macide/falconide
  - M68K arch specific => IDE_ARCH_OBSOLETE_INIT is not defined, no PCI

Since the only host drivers which probe interfaces before the above ones are:

* ali14xx/dtc2278/ht6560b/qd65xx/umc8672
  - depend on ISA
  - require IDE_ARCH_OBSOLETE_INIT=y to work

* PCI ones
  - depend on PCI

don't try to unregister interfaces if 'initializing == 1' in ide_register_hw()
(it is possible that built-in host drivers will claim all IDE interfaces but
later ide-pnp host driver will try to unregister them - this change fixes it).

Also skip hwif->hold check if 'initializing == 1' since it is set only by:

* pmac
  - PPC && PMAC specific => no ISA

* au1xxx-ide
  - MIPS && SOC_AU1200 specific => no ISA

and use ide_find_port() helper to find free ide_hwifs[] slot.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: merge ->fixup and ->quirkproc methods
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:03 +0000 (20:13 +0100)] 
ide: merge ->fixup and ->quirkproc methods

* Assign drive->quirk_list in ->quirkproc implementations:
  - hpt366.c::hpt3xx_quirkproc()
  - pdc202xx_new.c::pdcnew_quirkproc()
  - pdc202xx_old.c::pdc202xx_quirkproc()

* Make ->quirkproc void.

* Move calling ->quirkproc from do_identify() to probe_hwif().

* Convert it821x_fixups() to it821x_quirkproc() in it821x.c.

* Convert siimage_fixup() to sil_quirkproc() in siimage.c, also remove
  no longer needed drive->present check from is_dev_seagate_sata().

* Convert ide_undecoded_slave() to accept 'drive' instead of 'hwif'
  as an argument.  Then convert ide_register_hw() to accept 'quirkproc'
  argument instead of 'fixup' one.

* Remove no longer needed ->fixup method.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: dump taskfile HOB registers in ide_tf_load() (if DEBUG is defined)
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:03 +0000 (20:13 +0100)] 
ide: dump taskfile HOB registers in ide_tf_load() (if DEBUG is defined)

* Dump taskfile HOB registers in ide_tf_load() (if DEBUG is defined).

* Remove no longer needed DEBUG code from __ide_do_rw_disk().

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: merge ->dma_host_{on,off} methods into ->dma_host_set method
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:03 +0000 (20:13 +0100)] 
ide: merge ->dma_host_{on,off} methods into ->dma_host_set method

Merge ->dma_host_{on,off} methods into ->dma_host_set method
which takes 'int on' argument.

There should be no functionality changes caused by this patch.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: move drive->using_dma check to callers of ->dma_host_on method
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:02 +0000 (20:13 +0100)] 
ide: move drive->using_dma check to callers of ->dma_host_on method

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoatiixp: remove ->dma_host_on and ->dma_host_off methods
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:02 +0000 (20:13 +0100)] 
atiixp: remove ->dma_host_on and ->dma_host_off methods

* Enable/disable UDMA in atiixp_set_dma_mode().

* Remove no longer needed atiixp_dma_host_{on,off}() and save_mdma_mode[].

* Bump driver version.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide-cris: fix DMA methods
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:01 +0000 (20:13 +0100)] 
ide-cris: fix DMA methods

* Rename cris_dma_{on,off}() to cris_dma_host_{on,off}().

* Remove no longer needed ->dma_off_quietly
  (IDE core has the needed code now).

* Make cris_dma_host_on() void.

I left fixing ide-cris after "kill dma_on/dma_off_quietly() methods"
patch because:

* Currently this driver is broken: cris_dma_on() (returns 'int')
  is assigned to hwif->dma_host_on (returns 'void') so the driver
  won't build.

* ->ide_dma_on method was missing so the driver OOPS-es on attempt
  to enable DMA.

* drive->using_dma was never set/cleared so DMA wouldn't be used anyway.

Unfortunately it seems that ide-cris stays broken even after this patch:

* V10: <asm/arch-v10/ide.h> needs fixing
  - ide_init_default_hwifs() should be removed
    (IDE core no longer uses it)
  - same for ide_init_hwif_ports() and ide_default_{irq,io_base}()
    (they shouldn't be needed for ide-cris host driver)

* V32: I'm unable to find a place which defines ETRAX_ARCH_V32

but I'm leaving fixing this to CRIS gurus. :)

Cc: Mikael Starvik <starvik@axis.com>
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: remove ->ide_dma_on and ->dma_off_quietly methods from ide_hwif_t
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:01 +0000 (20:13 +0100)] 
ide: remove ->ide_dma_on and ->dma_off_quietly methods from ide_hwif_t

* Make ide_dma_off_quietly() and __ide_dma_on() always available.

* Drop "__" prefix from __ide_dma_on().

* Check for presence of ->dma_host_on instead of ->ide_dma_on.

* Convert all users of ->ide_dma_on and ->dma_off_quietly methods
  to use ide_dma_on() and ide_dma_off_quietly() instead.

* Remove no longer needed ->ide_dma_on and ->dma_off_quietly methods
  from ide_hwif_t.

* Make ide_dma_on() void.

There should be no functionality changes caused by this patch.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoau1xxx-ide: add ide_toggle_bounce() calls
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:01 +0000 (20:13 +0100)] 
au1xxx-ide: add ide_toggle_bounce() calls

Add ide_toggle_bounce() call to ->ide_dma_on/->dma_off_quietly
methods so they match generic __ide_dma_on()/ide_dma_off_quietly().

Since there is no PCI device there should be no functionality
changes caused by this patch.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoicside: add ide_toggle_bounce() calls
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:00 +0000 (20:13 +0100)] 
icside: add ide_toggle_bounce() calls

Add ide_toggle_bounce() call to ->ide_dma_on/->dma_off_quietly
methods so they match generic __ide_dma_on()/ide_dma_off_quietly().

Since there is no PCI device there should be no functionality
changes caused by this patch.

Cc: Russell King <rmk@arm.linux.org.uk>
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agosgiioc4: add ide_toggle_bounce() calls
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:00 +0000 (20:13 +0100)] 
sgiioc4: add ide_toggle_bounce() calls

Add ide_toggle_bounce() call to ->ide_dma_on/->dma_off_quietly
methods so they match generic __ide_dma_on()/ide_dma_off_quietly().

Tested on Altix by Jeremy.

Acked-by: Jeremy Higdon <jeremy@sgi.com>
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agocy82c693: add ->set_dma_mode method
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:00 +0000 (20:13 +0100)] 
cy82c693: add ->set_dma_mode method

* Fix SWDMA/MWDMA masks in cy82c693_chipset.

* Add IDE_HFLAG_CY82C693 host flag and use it in ide_tune_dma() to
  check whether the DMA should be enabled even if ide_max_dma_mode()
  fails.

* Convert cy82c693_dma_enable() to become cy82c693_set_dma_mode()
  and remove no longer needed cy82c693_ide_dma_on().  Then set
  IDE_HFLAG_CY82C693 instead of IDE_HFLAG_TRUST_BIOS_FOR_DMA in
  cy82c693_chipset.

* Bump driver version.

As a result of this patch cy82c693 driver will configure and use DMA on
all SWDMA0-2 and MWDMA0-2 capable ATA devices instead of relying on BIOS.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agocy82c693: correct DMA modes clipping
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:13:00 +0000 (20:13 +0100)] 
cy82c693: correct DMA modes clipping

* Mask device DMA masks by ATA_{S,M}WDMA2 in cy82c693_ide_dma_on().

* Remove clipping of DMA modes by id->tDMA in cy82c693_dma_enable():
  - id->tDMA may not be defined on newer devices
  - id->vendor6/id->tDMA word is in LE endianness
    (cy82c693 seems to be Alpha specific though)

* Bump driver version.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide: (hopefully) fix VDMA for CS5520
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:12:59 +0000 (20:12 +0100)] 
ide: (hopefully) fix VDMA for CS5520

* Set the correct hwif->dma_base for the second channel in
  ide_get_or_set_dma_base().

* Remove DMA enable code from cs5520_set_pio_mode(), this can
  be handled by the generic ->dma_host_on method now.

* Add VDMA check to ide_config_drive_speed().

* drive->using_dma was never enabled since cs5520 host driver's
  ->ide_dma_on method overrided the generic ->ide_dma_on (so
  __ide_dma_on() was never called, drive->using_dma was never set
  and VDMA was never used since it depends on drive->using_dma).

  Fix it by using ->dma_host_on method instead of ->ide_dma_on
  (also add matching ->dma_host_off method).

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoide-disk: add idedisk_set_doorlock() helper
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:12:59 +0000 (20:12 +0100)] 
ide-disk: add idedisk_set_doorlock() helper

There should be no functionality changes caused by this patch.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoserverworks: cleanup ->set_dma_mode method
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:12:59 +0000 (20:12 +0100)] 
serverworks: cleanup ->set_dma_mode method

IDE core guarantees that ->set_dma_mode will be called only
for DMA modes set in SWDMA/MWDMA/UDMA masks.

There should be no functionality changes caused by this patch.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agosl82c105: remove no longer needed ->selectproc method
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:12:59 +0000 (20:12 +0100)] 
sl82c105: remove no longer needed ->selectproc method

* Program register 0x40 in sl82c105_resetproc().

* Remove no longer needed sl82c105_selectproc() and pci_set_drvdata() calls.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agosl82c105: program DMA/PIO timings in ->dma_start/->ide_dma_end
Bartlomiej Zolnierkiewicz [Sat, 26 Jan 2008 19:12:58 +0000 (20:12 +0100)] 
sl82c105: program DMA/PIO timings in ->dma_start/->ide_dma_end

* Program DMA timings in sl82c105_dma_start() (->dma_start method)
  before starting DMA transfer.

* Add sl82c105_dma_end() (->ide_dma_end method) to switch back to
  PIO timings when DMA transfer is complete.

* In sl82c105_set_pio_mode() program timings regardless of ->using_dma
  setting and in sl82c105_set_dma_mode() only cache the new timings.

* Remove no longer needed sl82c105_{ide_dma_on,off_quietly}().

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
16 years agoARM kprobes: let's enable it
Nicolas Pitre [Mon, 3 Dec 2007 22:15:52 +0000 (17:15 -0500)] 
ARM kprobes: let's enable it

Signed-off-by: Nicolas Pitre <nico@marvell.com>
16 years agoARM kprobes: special hook for the kprobes breakpoint handler
Nicolas Pitre [Mon, 3 Dec 2007 22:22:36 +0000 (17:22 -0500)] 
ARM kprobes: special hook for the kprobes breakpoint handler

The kprobes code is already able to cope with reentrant probes, so its
handler must be called outside of the region protected by undef_lock.

If ever this lock is released when handlers are called then this commit
could be reverted.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
16 years agoARM kprobes: prevent some functions involved with kprobes from being probed
Nicolas Pitre [Mon, 3 Dec 2007 20:27:56 +0000 (15:27 -0500)] 
ARM kprobes: prevent some functions involved with kprobes from being probed

Signed-off-by: Nicolas Pitre <nico@marvell.com>
16 years agoARM kprobes: don't let a single-stepped stmdb corrupt the exception stack
Nicolas Pitre [Fri, 14 Dec 2007 20:56:01 +0000 (15:56 -0500)] 
ARM kprobes: don't let a single-stepped stmdb corrupt the exception stack

If kprobes installs a breakpoint on a "stmdb sp!, {...}" instruction,
and then single-step it by simulation from the exception context, it will
corrupt the saved regs on the stack from the previous context.

To avoid this, let's add an optional parameter to the svc_entry macro
allowing for a hole to be created on the stack before saving the
interrupted context, and use it in the undef_svc handler when kprobes
is enabled.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
16 years agoARM kprobes: add the kprobes hook to the page fault handler
Nicolas Pitre [Mon, 3 Dec 2007 20:21:57 +0000 (15:21 -0500)] 
ARM kprobes: add the kprobes hook to the page fault handler

Signed-off-by: Nicolas Pitre <nico@marvell.com>
16 years agoARM kprobes: core code
Abhishek Sagar [Mon, 11 Jun 2007 22:20:10 +0000 (22:20 +0000)] 
ARM kprobes: core code

This is a full implementation of Kprobes including Jprobes and
Kretprobes support.

This ARM implementation does not follow the usual kprobes double-
exception model. The traditional model is where the initial kprobes
breakpoint calls kprobe_handler(), which returns from exception to
execute the instruction in its original context, then immediately
re-enters after a second breakpoint (or single-stepping exception)
into post_kprobe_handler(), each time the probe is hit..  The ARM
implementation only executes one kprobes exception per hit, so no
post_kprobe_handler() phase. All side-effects from the kprobe'd
instruction are resolved before returning from the initial exception.
As a result, all instructions are _always_ effectively boosted
regardless of the type of instruction, and even regardless of whether
or not there is a post-handler for the probe.

Signed-off-by: Abhishek Sagar <sagar.abhishek@gmail.com>
Signed-off-by: Quentin Barnes <qbarnes@gmail.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
16 years agoARM kprobes: instruction single-stepping support
Quentin Barnes [Mon, 11 Jun 2007 22:20:10 +0000 (22:20 +0000)] 
ARM kprobes: instruction single-stepping support

This is the code implementing instruction single-stepping for kprobes
on ARM.

To get around the limitation of no Next-PC and no hardware single-
stepping, all kprobe'd instructions are split into three camps:
simulation, emulation, and rejected. "Simulated" instructions are
those instructions which behavior is reproduced by straight C code.
"Emulated" instructions are ones that are copied, slightly altered
and executed directly in the instruction slot to reproduce their
behavior.  "Rejected" instructions are ones that could be simulated,
but work hasn't been put into simulating them. These instructions
should be very rare, if not unencountered, in the kernel. If ever
needed, code could be added to simulate them.

One might wonder why this and the ptrace singlestep facility are not
sharing some code.  Both approaches are fundamentally different because
the ptrace code regains control after the stepped instruction by installing
a breakpoint after the instruction itself, and possibly at the location
where the instruction might be branching to, instead of simulating or
emulating the target instruction.

The ptrace approach isn't suitable for kprobes because the breakpoints
would have to be moved back, and the icache flushed, everytime the
probe is hit to let normal code execution resume, which would have a
significant performance impact. It is also racy on SMP since another
CPU could, with the right timing, sail through the probe point without
being caught.  Because ptrace single-stepping always result in a
different process to be scheduled, the concern for performance is much
less significant.

On the other hand, the kprobes approach isn't (currently) suitable for
ptrace because it has no provision for proper user space memory
protection and translation, and even if that was implemented, the gain
wouldn't be worth the added complexity in the ptrace path compared to
the current approach.

So, until kprobes does support user space, both kprobes and ptrace are
best kept independent and separate.

Signed-off-by: Quentin Barnes <qbarnes@gmail.com>
Signed-off-by: Abhishek Sagar <sagar.abhishek@gmail.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
16 years ago[ARM] Orion: implement power-off method for QNAP TS-109/209
Herbert Valerio Riedel [Sun, 16 Dec 2007 16:42:31 +0000 (17:42 +0100)] 
[ARM] Orion: implement power-off method for QNAP TS-109/209

Since the PIC is attached to UART1, it doesn't need a kernel device driver
of its own; but powering off is something that the kernel should do, so
this patch forcefully configures the UART1 for 19200 baud and sends the
character that tells the PIC to cut the power.

Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
Cc: Byron Bradley <byron.bbradley@gmail.com>
Acked-by: Nicolas Pitre <nico@marvell.com>
16 years ago[ARM] Orion: add support for QNAP TS-109/TS-209
Byron Bradley [Sat, 15 Dec 2007 20:05:49 +0000 (20:05 +0000)] 
[ARM] Orion: add support for QNAP TS-109/TS-209

This patch adds support for the Orion/MV88F5182 based QNAP
TS-109/TS-209 NAS device. The driver for the S-35390A RTC
chip on this board has been submitted to LKML separately.

Signed-off-by: Byron Bradley <byron.bbradley@gmail.com>
Tested-by: Oyvind Repvik <repvik@kynisk.com>
Tested-by: Tim Ellis <timtimred@foonas.org>
Tested-by: Herbert Valerio Riedel <hvr@gnu.org>
Acked-by: Tzachi Perelstein <tzachi@marvell.com>
16 years ago[ARM] Orion: I2C support
Herbert Valerio Riedel [Mon, 12 Nov 2007 07:51:36 +0000 (09:51 +0200)] 
[ARM] Orion: I2C support

The Orion I2C controller is the same one used in the Discovery
family (MV643XX). This patch include the common platform_device
stuff according to the existing i2c_mv64xxx.c conventions.

Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
Signed-off-by: Tzachi Perelstein <tzachi@marvell.com>
16 years ago[I2C] i2c-mv64xxx: Don't set i2c_adapter.retries
Jean Delvare [Thu, 22 Nov 2007 15:58:08 +0000 (16:58 +0100)] 
[I2C] i2c-mv64xxx: Don't set i2c_adapter.retries

I2C adapter drivers are supposed to handle retries on nack by themselves
if they do, so there's no point in setting .retries if they don't.

As this retry mechanism is going away (at least in its current form),
clean this up now so that we don't get build failures later.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Mark A. Greer <mgreer@mvista.com>
16 years ago[I2C] Split mv643xx I2C platform support
Tzachi Perelstein [Mon, 12 Nov 2007 17:38:51 +0000 (19:38 +0200)] 
[I2C] Split mv643xx I2C platform support

The motivation for this change is to allow other chips, like the
Marvell Orion ARM SoC family, to use the existing i2c-mv64xxx driver.

Signed-off-by: Tzachi Perelstein <tzachi@marvell.com>
Acked-by: Nicolas Pitre <nico@marvell.com>
Acked-by: Dale Farnsworth <dale@farnsworth.org>
Acked-by: Mark A. Greer <mgreer@mvista.com>
Acked-by: Jean Delvare <khali@linux-fr.org>
16 years ago[ARM] Orion: enable CONFIG_RTC_DRV_M41T80 for D-Link DNS-323
Martin Michlmayr [Wed, 14 Nov 2007 07:58:30 +0000 (08:58 +0100)] 
[ARM] Orion: enable CONFIG_RTC_DRV_M41T80 for D-Link DNS-323

The D-Link DNS-323 uses a M41T80 RTC chip, so enable this driver in
the Orion defconfig.

Signed-off-by: Martin Michlmayr <tbm@cyrius.com>
Cc: Herbert Valerio Riedel <hvr@gnu.org>
Acked-by: Nicolas Pitre <nico@marvell.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] Orion defconfig
Tzachi Perelstein [Tue, 6 Nov 2007 09:18:46 +0000 (11:18 +0200)] 
[ARM] Orion defconfig

Basic selections for Orion machines

Signed-off-by: Tzachi Perelstein <tzachi@marvell.com>
Signed-off-by: Nicolas Pitre <nico@cam.org>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] Orion: add support for Orion/MV88F5181 based D-Link DNS-323
Herbert Valerio Riedel [Mon, 12 Nov 2007 08:05:55 +0000 (09:05 +0100)] 
[ARM] Orion: add support for Orion/MV88F5181 based D-Link DNS-323

With this patch USB, SATA (via sata_mv), Ethernet, RTC, LEDs and NOR Flash
work.

Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
Acked-by: Tzachi Perelstein <tzachi@marvell.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] Orion: MV88F5181 support bits
Herbert Valerio Riedel [Sun, 11 Nov 2007 11:05:11 +0000 (12:05 +0100)] 
[ARM] Orion: MV88F5181 support bits

add MV88F5181 support bits required by D-link DNS-323 patch

Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
Acked-by: Tzachi Perelstein <tzachi@marvell.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] Orion: Buffalo/Revogear Kurobox Pro support
Ronen Shitrit [Tue, 23 Oct 2007 19:14:42 +0000 (15:14 -0400)] 
[ARM] Orion: Buffalo/Revogear Kurobox Pro support

Only serial, NOR, NAND, PCI and Ethernet is activated at the moment.

Signed-off-by: Ronen Shitrit <rshitrit@marvell.com>
Reviewed-by: Tzachi Perelstein <tzachi@marvell.com>
Reviewed-by: Nicolas Pitre <nico@marvell.com>
Reviewed-by: Lennert Buytenhek <buytenh@marvell.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] OrionNAS RD board support
Ronen Shitrit [Wed, 17 Oct 2007 18:51:34 +0000 (14:51 -0400)] 
[ARM] OrionNAS RD board support

serial, NOR, PCI and Ethernet is activated at the moment.

Signed-off-by: Ronen Shitrit <rshitrit@marvell.com>
Reviewed-by: Tzachi Perelstein <tzachi@marvell.com>
Reviewed-by: Nicolas Pitre <nico@marvell.com>
Reviewed-by: Lennert Buytenhek <buytenh@marvell.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] Orion: support for Marvell Orion-2 (88F5281) Development Board
Tzachi Perelstein [Tue, 23 Oct 2007 19:14:42 +0000 (15:14 -0400)] 
[ARM] Orion: support for Marvell Orion-2 (88F5281) Development Board

Signed-off-by: Tzachi Perelstein <tzachi@marvell.com>
Reviewed-by: Nicolas Pitre <nico@marvell.com>
Reviewed-by: Lennert Buytenhek <buytenh@marvell.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] Orion: common platform setup for Gigabit Ethernet port
Tzachi Perelstein [Wed, 31 Oct 2007 10:42:41 +0000 (12:42 +0200)] 
[ARM] Orion: common platform setup for Gigabit Ethernet port

The Orion Ethernet port is the same port used in the Discovery
family (MV643XX). This patch include the common platform_device
stuff according to the existing mv643xx_eth conventions.

Signed-off-by: Tzachi Perelstein <tzachi@marvell.com>
Reviewed-by: Lennert Buytenhek <buytenh@marvell.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] Orion: platform device registration for UART, USB and NAND
Tzachi Perelstein [Tue, 23 Oct 2007 19:14:42 +0000 (15:14 -0400)] 
[ARM] Orion: platform device registration for UART, USB and NAND

Signed-off-by: Tzachi Perelstein <tzachi@marvell.com>
Reviewed-by: Nicolas Pitre <nico@marvell.com>
Reviewed-by: Lennert Buytenhek <buytenh@marvell.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] Orion: system timer support
Tzachi Perelstein [Tue, 23 Oct 2007 19:14:42 +0000 (15:14 -0400)] 
[ARM] Orion: system timer support

Signed-off-by: Tzachi Perelstein <tzachi@marvell.com>
Reviewed-by: Nicolas Pitre <nico@marvell.com>
Reviewed-by: Lennert Buytenhek <buytenh@marvell.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] Orion edge GPIO IRQ support
Tzachi Perelstein [Thu, 15 Nov 2007 08:57:48 +0000 (10:57 +0200)] 
[ARM] Orion edge GPIO IRQ support

This patch adds support for Orion edge sensitive GPIO IRQs.

Signed-off-by: Tzachi Perelstein <tzachi@marvell.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
CC: Thomas Gleixner <tglx@linutronix.de>
16 years ago[ARM] Orion: IRQ support
Tzachi Perelstein [Tue, 23 Oct 2007 19:14:42 +0000 (15:14 -0400)] 
[ARM] Orion: IRQ support

Signed-off-by: Tzachi Perelstein <tzachi@marvell.com>
Reviewed-by: Nicolas Pitre <nico@marvell.com>
Reviewed-by: Lennert Buytenhek <buytenh@marvell.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] Orion: provide GPIO method for enabling hardware assisted blinking
Herbert Valerio Riedel [Thu, 29 Nov 2007 14:19:56 +0000 (15:19 +0100)] 
[ARM] Orion: provide GPIO method for enabling hardware assisted blinking

This is a pre-requisite for implementing proper hardware accelerated
GPIO LED flashing, and since we want proper locking, it's sensible to provide
the orion specific orion_gpio_set_blink() implementation within
mach-orion/gpio.c. The functions orion_gpio_set_blink() and gpio_set_value()
implicitly turn off each others state.

Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
Acked-by: Tzachi Perelstein <tzachi@marvell.com>
Acked-by: Nicolas Pitre <nico@marvell.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] Orion: GPIO support
Tzachi Perelstein [Tue, 23 Oct 2007 19:14:42 +0000 (15:14 -0400)] 
[ARM] Orion: GPIO support

Signed-off-by: Tzachi Perelstein <tzachi@marvell.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Acked-by: David Brownell <david-b@pacbell.net>
16 years ago[ARM] Orion: programable address map support
Tzachi Perelstein [Tue, 23 Oct 2007 19:14:42 +0000 (15:14 -0400)] 
[ARM] Orion: programable address map support

The Orion has fully programable address map. There's a separate address
map for each of the device _master_ interfaces, e.g. CPU, PCI, PCIE, USB,
Gigabit Ethernet, DMA/XOR engines, etc.

Signed-off-by: Tzachi Perelstein <tzachi@marvell.com>
Reviewed-by: Nicolas Pitre <nico@marvell.com>
Reviewed-by: Lennert Buytenhek <buytenh@marvell.com>
16 years ago[ARM] Orion: PCI support
Tzachi Perelstein [Tue, 23 Oct 2007 19:14:42 +0000 (15:14 -0400)] 
[ARM] Orion: PCI support

This patch adds support for PCI and PCI-E controllers in the
Orion, Orion-NAS and Orion2.

Signed-off-by: Tzachi Perelstein <tzachi@marvell.com>
Reviewed-by: Nicolas Pitre <nico@marvell.com>
Reviewed-by: Lennert Buytenhek <buytenh@marvell.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] basic support for the Marvell Orion SoC family
Tzachi Perelstein [Tue, 23 Oct 2007 19:14:41 +0000 (15:14 -0400)] 
[ARM] basic support for the Marvell Orion SoC family

The Marvell Orion is a family of ARM SoCs with a DDR/DDR2 memory
controller, 10/100/1000 ethernet MAC, and USB 2.0 interfaces,
and, depending on the specific model, PCI-E interface, PCI-X
interface, SATA controllers, crypto unit, SPI interface, SDIO
interface, device bus, NAND controller, DMA engine and/or XOR
engine.

This contains the basic structure and architecture register definitions.

Signed-off-by: Tzachi Perelstein <tzachi@marvell.com>
Reviewed-by: Nicolas Pitre <nico@marvell.com>
Reviewed-by: Lennert Buytenhek <buytenh@marvell.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] Feroceon: support old cores with ARM926 ID
Tzachi Perelstein [Tue, 6 Nov 2007 08:35:40 +0000 (10:35 +0200)] 
[ARM] Feroceon: support old cores with ARM926 ID

This enables the usage of some old Feroceon cores
for which the CPU ID is equal to the ARM926 ID.
Relevant for Feroceon-1850 and old Feroceon-2850.

Signed-off-by: Tzachi Perelstein <tzachi@marvell.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] add Feroceon support to compressed/head.S
Nicolas Pitre [Wed, 31 Oct 2007 19:31:48 +0000 (15:31 -0400)] 
[ARM] add Feroceon support to compressed/head.S

The cache replacement policy on the Feroceon core doesn't guarantee
that reading through a linear chunk of memory flushes the entire cache.
This is however what the default method for ARMv5TE cores does.

Although the Feroceon is an ARMv5TE core, it implements the same
cache handling instructions as the ARMv5TEJ cores, and must use it for
proper cache flush.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] add ARMv5TEJ aware cache flush method to compressed/head.S
Nicolas Pitre [Wed, 31 Oct 2007 19:15:29 +0000 (15:15 -0400)] 
[ARM] add ARMv5TEJ aware cache flush method to compressed/head.S

The default ARMv4 method consisting of reading through some memory
area isn't compatible with the cache replacement policy of some
ARMv5TEJ compatible cache implementations.  It is also a bit wasteful
when a dedicated instruction can do the needed work optimally.

It is hard to tell if all ARMv5TEJ cores will support the used CP15
instruction, but at least all those implementations Linux currently
knows about (ARM926 and ARM1026) do support it.

Tested on an OMAP1610 H2 target.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Tested-by: George G. Davis <gdavis@mvista.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] Marvell Feroceon CPU core support
Assaf Hoffman [Tue, 23 Oct 2007 19:14:41 +0000 (15:14 -0400)] 
[ARM] Marvell Feroceon CPU core support

The Feroceon is a family of independent ARMv5TE compliant CPU core
implementations, supporting a variable depth pipeline and out-of-order
execution.  The Feroceon is configurable with VFP support, and the
later models in the series are superscalar with up to two instructions
per clock cycle.

This patch adds the initial low-level cache/TLB handling for this core.

Signed-off-by: Assaf Hoffman <hoffman@marvell.com>
Reviewed-by: Tzachi Perelstein <tzachi@marvell.com>
Reviewed-by: Nicolas Pitre <nico@marvell.com>
Reviewed-by: Lennert Buytenhek <buytenh@marvell.com>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] 4765/1: [AT91] AT91CAP9A-DK board support
Andrew Victor [Thu, 24 Jan 2008 14:16:41 +0000 (15:16 +0100)] 
[ARM] 4765/1: [AT91] AT91CAP9A-DK board support

Add support for the Atmel AT91CAP9A-DK Evaluation Kit board.

Signed-off-by: Stelian Pop <stelian@popies.net>
Signed-off-by: Andrew Victor <linux@maxim.org.za>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] 4764/1: [AT91] AT91CAP9 core support
Andrew Victor [Thu, 24 Jan 2008 14:10:39 +0000 (15:10 +0100)] 
[ARM] 4764/1: [AT91] AT91CAP9 core support

Add support for Atmel's AT91CAP9 Customizable Microcontroller family.
  <http://www.atmel.com/products/AT91CAP/Default.asp>

Signed-off-by: Stelian Pop <stelian@popies.net>
Signed-off-by: Andrew Victor <linux@maxim.org.za>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] 4738/1: at91sam9261: Remove udc pullup enabling in board initialisation
Christian Glindkamp [Thu, 3 Jan 2008 11:15:23 +0000 (12:15 +0100)] 
[ARM] 4738/1: at91sam9261: Remove udc pullup enabling in board initialisation

Currently the udc pullup is enabled by default on boot. If the device
is connected to a host at this time, the host starts the negotiation
before the udc/gadget driver is ready to handle it.

Signed-off-by: Christian Glindkamp <christian.glindkamp@taskit.de>
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Andrew Victor <linux@maxim.org.za>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] 4761/1: [AT91] Board-support for NEW_LEDs
Andrew Victor [Wed, 23 Jan 2008 08:32:17 +0000 (09:32 +0100)] 
[ARM] 4761/1: [AT91] Board-support for NEW_LEDs

Add NEW_LEDs support for the following boards:
 - Cogent CSB337
 - Atmel AT91RM9200-DK
 - Atmel AT91RM9200-EK
 - Atmel AT91SAM9263-EK

Mostly based on patch from David Brownell.

Signed-off-by: Andrew Victor <linux@maxim.org.za>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] 4760/1: [AT91] SPI CS0 errata on AT91RM9200
Andrew Victor [Wed, 23 Jan 2008 08:29:46 +0000 (09:29 +0100)] 
[ARM] 4760/1: [AT91] SPI CS0 errata on AT91RM9200

Due to errata regarding the handling of SPI CS0 on the AT91RM9200, the
atmel_spi driver drives CS0 from the SPI controller and not as a GPIO
pin.
We therefore need to configure CS0 for use by the controller

Signed-off-by: Andrew Victor <linux@maxim.org.za>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] 4759/1: [AT91] Buttons on CSB300
Andrew Victor [Wed, 23 Jan 2008 08:28:27 +0000 (09:28 +0100)] 
[ARM] 4759/1: [AT91] Buttons on CSB300

Support for the 3 GPIO-connected buttons on the CSB300 board.

Based on wakeup testing code from David Brownell.

Signed-off-by: Andrew Victor <linux@maxim.org.za>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] 4758/1: [AT91] LEDs
Andrew Victor [Wed, 23 Jan 2008 08:27:06 +0000 (09:27 +0100)] 
[ARM] 4758/1: [AT91] LEDs

Move the LED initialization code out of the various *_devices.c files,
and into leds.c.
Also add support for NEW_LEDs.

Patch from David Brownell.

Signed-off-by: Andrew Victor <linux@maxim.org.za>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] 4757/1: [AT91] UART initialization
Andrew Victor [Wed, 23 Jan 2008 08:25:15 +0000 (09:25 +0100)] 
[ARM] 4757/1: [AT91] UART initialization

Modify the UART initialization to allow the board-initialization code
to specify which pins are connected, and which pins should therefore
be initialized.

The current at91_init_serial() will continue to work as-is, but is
marked as "deprecated" and will be removed once the board-specific
files has been updated to use the new interface.

As in the AVR32 code, we assume that the TX and RX pins will always be
initialized.

Signed-off-by: Andrew Victor <linux@maxim.org.za>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] 4756/1: [AT91] Makefile cleanup
Andrew Victor [Wed, 23 Jan 2008 08:23:09 +0000 (09:23 +0100)] 
[ARM] 4756/1: [AT91] Makefile cleanup

Cleanup the main AT91 makefile.

Signed-off-by: Andrew Victor <linux@maxim.org.za>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] 4755/1: [AT91] NAND update
Andrew Victor [Wed, 23 Jan 2008 08:21:02 +0000 (09:21 +0100)] 
[ARM] 4755/1: [AT91] NAND update

Map the complete memory region (SZ_256M) as is done on the other AT91
processors.

The SMC_SMARTMEDIA bit should be set in the EBI controller to enable
the hardware NAND logic.
  (Patch from Sascha Erlacher)

Signed-off-by: Andrew Victor <linux@maxim.org.za>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
16 years ago[ARM] 4754/1: [AT91] SSC library support
Andrew Victor [Wed, 23 Jan 2008 08:18:06 +0000 (09:18 +0100)] 
[ARM] 4754/1: [AT91] SSC library support

Core support of the Atmel SSC library for all Atmel AT91 processors.

Based on David Brownell's initial patch for the AT91RM9200.

Signed-off-by: Andrew Victor <linux@maxim.org.za>
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>