35b4b3c0c1
Implement full support for OF SPI bindings. Now the driver can manage its own chip selects without any help from the board files and/or fsl_soc constructors. The "legacy" code is well isolated and could be removed as time goes by. Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> Cc: David Brownell <david-b@pacbell.net> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Kumar Gala <galak@gate.crashing.org> Cc: Grant Likely <grant.likely@secretlab.ca> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
122 lines
3.2 KiB
C
122 lines
3.2 KiB
C
/*
|
|
* include/linux/fsl_devices.h
|
|
*
|
|
* Definitions for any platform device related flags or structures for
|
|
* Freescale processor devices
|
|
*
|
|
* Maintainer: Kumar Gala <galak@kernel.crashing.org>
|
|
*
|
|
* Copyright 2004 Freescale Semiconductor, Inc
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation; either version 2 of the License, or (at your
|
|
* option) any later version.
|
|
*/
|
|
|
|
#ifndef _FSL_DEVICE_H_
|
|
#define _FSL_DEVICE_H_
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/phy.h>
|
|
|
|
/*
|
|
* Some conventions on how we handle peripherals on Freescale chips
|
|
*
|
|
* unique device: a platform_device entry in fsl_plat_devs[] plus
|
|
* associated device information in its platform_data structure.
|
|
*
|
|
* A chip is described by a set of unique devices.
|
|
*
|
|
* Each sub-arch has its own master list of unique devices and
|
|
* enumerates them by enum fsl_devices in a sub-arch specific header
|
|
*
|
|
* The platform data structure is broken into two parts. The
|
|
* first is device specific information that help identify any
|
|
* unique features of a peripheral. The second is any
|
|
* information that may be defined by the board or how the device
|
|
* is connected externally of the chip.
|
|
*
|
|
* naming conventions:
|
|
* - platform data structures: <driver>_platform_data
|
|
* - platform data device flags: FSL_<driver>_DEV_<FLAG>
|
|
* - platform data board flags: FSL_<driver>_BRD_<FLAG>
|
|
*
|
|
*/
|
|
|
|
struct gianfar_platform_data {
|
|
/* device specific information */
|
|
u32 device_flags;
|
|
char bus_id[BUS_ID_SIZE];
|
|
phy_interface_t interface;
|
|
};
|
|
|
|
struct gianfar_mdio_data {
|
|
/* board specific information */
|
|
int irq[32];
|
|
};
|
|
|
|
/* Flags in gianfar_platform_data */
|
|
#define FSL_GIANFAR_BRD_HAS_PHY_INTR 0x00000001 /* set or use a timer */
|
|
#define FSL_GIANFAR_BRD_IS_REDUCED 0x00000002 /* Set if RGMII, RMII */
|
|
|
|
struct fsl_i2c_platform_data {
|
|
/* device specific information */
|
|
u32 device_flags;
|
|
};
|
|
|
|
/* Flags related to I2C device features */
|
|
#define FSL_I2C_DEV_SEPARATE_DFSRR 0x00000001
|
|
#define FSL_I2C_DEV_CLOCK_5200 0x00000002
|
|
|
|
enum fsl_usb2_operating_modes {
|
|
FSL_USB2_MPH_HOST,
|
|
FSL_USB2_DR_HOST,
|
|
FSL_USB2_DR_DEVICE,
|
|
FSL_USB2_DR_OTG,
|
|
};
|
|
|
|
enum fsl_usb2_phy_modes {
|
|
FSL_USB2_PHY_NONE,
|
|
FSL_USB2_PHY_ULPI,
|
|
FSL_USB2_PHY_UTMI,
|
|
FSL_USB2_PHY_UTMI_WIDE,
|
|
FSL_USB2_PHY_SERIAL,
|
|
};
|
|
|
|
struct fsl_usb2_platform_data {
|
|
/* board specific information */
|
|
enum fsl_usb2_operating_modes operating_mode;
|
|
enum fsl_usb2_phy_modes phy_mode;
|
|
unsigned int port_enables;
|
|
};
|
|
|
|
/* Flags in fsl_usb2_mph_platform_data */
|
|
#define FSL_USB2_PORT0_ENABLED 0x00000001
|
|
#define FSL_USB2_PORT1_ENABLED 0x00000002
|
|
|
|
struct spi_device;
|
|
|
|
struct fsl_spi_platform_data {
|
|
u32 initial_spmode; /* initial SPMODE value */
|
|
s16 bus_num;
|
|
bool qe_mode;
|
|
/* board specific information */
|
|
u16 max_chipselect;
|
|
void (*cs_control)(struct spi_device *spi, bool on);
|
|
u32 sysclk;
|
|
};
|
|
|
|
struct mpc8xx_pcmcia_ops {
|
|
void(*hw_ctrl)(int slot, int enable);
|
|
int(*voltage_set)(int slot, int vcc, int vpp);
|
|
};
|
|
|
|
/* Returns non-zero if the current suspend operation would
|
|
* lead to a deep sleep (i.e. power removed from the core,
|
|
* instead of just the clock).
|
|
*/
|
|
int fsl_deep_sleep(void);
|
|
|
|
#endif /* _FSL_DEVICE_H_ */
|