Staging
v0.8.1
https://github.com/torvalds/linux
Revision 7334bb4ae931159384acf168eacb0d5d6e0d083c authored by Danny Tholen on 27 August 2006, 08:23:29 UTC, committed by Linus Torvalds on 27 August 2006, 18:01:28 UTC
Recently a patch was added for preliminary suspend/resume handling on
!PPC_PMAC.  However, this broke both suspend and firewire on powerpc
because it saves the pci state after the device has already been disabled.

This moves the save state to before the pmac specific code.

Signed-off-by: Danny Tholen <obiwan@mailmij.org>
Cc: Stefan Richter <stefanr@s5r6.in-berlin.de>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Ben Collins <bcollins@ubuntu.com>
Cc: Jody McIntyre <scjody@modernduck.com>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
1 parent a2e0b56
Raw File
Tip revision: 7334bb4ae931159384acf168eacb0d5d6e0d083c authored by Danny Tholen on 27 August 2006, 08:23:29 UTC
[PATCH] 1394: fix for recently added firewire patch that breaks things on ppc
Tip revision: 7334bb4
au1xmmc.h
#ifndef _AU1XMMC_H_
#define _AU1XMMC_H_

/* Hardware definitions */

#define AU1XMMC_DESCRIPTOR_COUNT 1
#define AU1XMMC_DESCRIPTOR_SIZE  2048

#define AU1XMMC_OCR ( MMC_VDD_27_28 | MMC_VDD_28_29 | MMC_VDD_29_30  | \
		      MMC_VDD_30_31 | MMC_VDD_31_32 | MMC_VDD_32_33  | \
		      MMC_VDD_33_34 | MMC_VDD_34_35 | MMC_VDD_35_36)

/* Easy access macros */

#define HOST_STATUS(h)	((h)->iobase + SD_STATUS)
#define HOST_CONFIG(h)	((h)->iobase + SD_CONFIG)
#define HOST_ENABLE(h)	((h)->iobase + SD_ENABLE)
#define HOST_TXPORT(h)	((h)->iobase + SD_TXPORT)
#define HOST_RXPORT(h)	((h)->iobase + SD_RXPORT)
#define HOST_CMDARG(h)	((h)->iobase + SD_CMDARG)
#define HOST_BLKSIZE(h)	((h)->iobase + SD_BLKSIZE)
#define HOST_CMD(h)	((h)->iobase + SD_CMD)
#define HOST_CONFIG2(h)	((h)->iobase + SD_CONFIG2)
#define HOST_TIMEOUT(h)	((h)->iobase + SD_TIMEOUT)
#define HOST_DEBUG(h)	((h)->iobase + SD_DEBUG)

#define DMA_CHANNEL(h) \
	( ((h)->flags & HOST_F_XMIT) ? (h)->tx_chan : (h)->rx_chan)

/* This gives us a hard value for the stop command that we can write directly
 * to the command register
 */

#define STOP_CMD (SD_CMD_RT_1B|SD_CMD_CT_7|(0xC << SD_CMD_CI_SHIFT)|SD_CMD_GO)

/* This is the set of interrupts that we configure by default */

#if 0
#define AU1XMMC_INTERRUPTS (SD_CONFIG_SC | SD_CONFIG_DT | SD_CONFIG_DD | \
		SD_CONFIG_RAT | SD_CONFIG_CR | SD_CONFIG_I)
#endif

#define AU1XMMC_INTERRUPTS (SD_CONFIG_SC | SD_CONFIG_DT | \
		SD_CONFIG_RAT | SD_CONFIG_CR | SD_CONFIG_I)
/* The poll event (looking for insert/remove events runs twice a second */
#define AU1XMMC_DETECT_TIMEOUT (HZ/2)

struct au1xmmc_host {
  struct mmc_host *mmc;
  struct mmc_request *mrq;

  u32 id;

  u32 flags;
  u32 iobase;
  u32 clock;
  u32 bus_width;
  u32 power_mode;

  int status;

   struct {
	   int len;
	   int dir;
  } dma;

   struct {
	   int index;
	   int offset;
	   int len;
  } pio;

  u32 tx_chan;
  u32 rx_chan;

  struct timer_list timer;
  struct tasklet_struct finish_task;
  struct tasklet_struct data_task;

  spinlock_t lock;
};

/* Status flags used by the host structure */

#define HOST_F_XMIT   0x0001
#define HOST_F_RECV   0x0002
#define HOST_F_DMA    0x0010
#define HOST_F_ACTIVE 0x0100
#define HOST_F_STOP   0x1000

#define HOST_S_IDLE   0x0001
#define HOST_S_CMD    0x0002
#define HOST_S_DATA   0x0003
#define HOST_S_STOP   0x0004

#endif
back to top