diff options
| author | Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de> | 2015-10-23 05:50:33 +0200 | 
|---|---|---|
| committer | Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de> | 2015-10-23 05:50:33 +0200 | 
| commit | 817ba283acf2d7b5aa073b96fd989f336fcff72a (patch) | |
| tree | 5dd15d9914b74e5575025bccb51c99b745b83525 /arch/arm/mach-ep93xx/include/mach | |
| parent | 3b3a015ad4ab1ad0cf707ccbaef1dbe965993a4a (diff) | |
| download | kernel_samsung_smdk4412-817ba283acf2d7b5aa073b96fd989f336fcff72a.zip kernel_samsung_smdk4412-817ba283acf2d7b5aa073b96fd989f336fcff72a.tar.gz kernel_samsung_smdk4412-817ba283acf2d7b5aa073b96fd989f336fcff72a.tar.bz2 | |
merge more stuff from 3.2.72
Diffstat (limited to 'arch/arm/mach-ep93xx/include/mach')
| -rw-r--r-- | arch/arm/mach-ep93xx/include/mach/clkdev.h | 11 | ||||
| -rw-r--r-- | arch/arm/mach-ep93xx/include/mach/debug-macro.S | 2 | ||||
| -rw-r--r-- | arch/arm/mach-ep93xx/include/mach/dma.h | 190 | ||||
| -rw-r--r-- | arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h | 1 | ||||
| -rw-r--r-- | arch/arm/mach-ep93xx/include/mach/ep93xx_spi.h | 2 | ||||
| -rw-r--r-- | arch/arm/mach-ep93xx/include/mach/gpio.h | 121 | ||||
| -rw-r--r-- | arch/arm/mach-ep93xx/include/mach/hardware.h | 2 | ||||
| -rw-r--r-- | arch/arm/mach-ep93xx/include/mach/ts72xx.h | 26 | 
8 files changed, 94 insertions, 261 deletions
| diff --git a/arch/arm/mach-ep93xx/include/mach/clkdev.h b/arch/arm/mach-ep93xx/include/mach/clkdev.h deleted file mode 100644 index 50cb991..0000000 --- a/arch/arm/mach-ep93xx/include/mach/clkdev.h +++ /dev/null @@ -1,11 +0,0 @@ -/* - * arch/arm/mach-ep93xx/include/mach/clkdev.h - */ - -#ifndef __ASM_MACH_CLKDEV_H -#define __ASM_MACH_CLKDEV_H - -#define __clk_get(clk) ({ 1; }) -#define __clk_put(clk) do { } while (0) - -#endif diff --git a/arch/arm/mach-ep93xx/include/mach/debug-macro.S b/arch/arm/mach-ep93xx/include/mach/debug-macro.S index b25bc907..af54e43 100644 --- a/arch/arm/mach-ep93xx/include/mach/debug-macro.S +++ b/arch/arm/mach-ep93xx/include/mach/debug-macro.S @@ -11,7 +11,7 @@   */  #include <mach/ep93xx-regs.h> -		.macro	addruart, rp, rv +		.macro	addruart, rp, rv, tmp  		ldr	\rp, =EP93XX_APB_PHYS_BASE	@ Physical base  		ldr	\rv, =EP93XX_APB_VIRT_BASE	@ virtual base  		orr	\rp, \rp, #0x000c0000 diff --git a/arch/arm/mach-ep93xx/include/mach/dma.h b/arch/arm/mach-ep93xx/include/mach/dma.h index 5e31b2b..46d4d87 100644 --- a/arch/arm/mach-ep93xx/include/mach/dma.h +++ b/arch/arm/mach-ep93xx/include/mach/dma.h @@ -1,149 +1,93 @@ -/** - * DOC: EP93xx DMA M2P memory to peripheral and peripheral to memory engine - * - * The EP93xx DMA M2P subsystem handles DMA transfers between memory and - * peripherals. DMA M2P channels are available for audio, UARTs and IrDA. - * See chapter 10 of the EP93xx users guide for full details on the DMA M2P - * engine. - * - * See sound/soc/ep93xx/ep93xx-pcm.c for an example use of the DMA M2P code. - * - */ -  #ifndef __ASM_ARCH_DMA_H  #define __ASM_ARCH_DMA_H -#include <linux/list.h>  #include <linux/types.h> +#include <linux/dmaengine.h> +#include <linux/dma-mapping.h> -/** - * struct ep93xx_dma_buffer - Information about a buffer to be transferred - * using the DMA M2P engine +/* + * M2P channels.   * - * @list: Entry in DMA buffer list - * @bus_addr: Physical address of the buffer - * @size: Size of the buffer in bytes + * Note that these values are also directly used for setting the PPALLOC + * register.   */ -struct ep93xx_dma_buffer { -	struct list_head	list; -	u32			bus_addr; -	u16			size; -}; +#define EP93XX_DMA_I2S1		0 +#define EP93XX_DMA_I2S2		1 +#define EP93XX_DMA_AAC1		2 +#define EP93XX_DMA_AAC2		3 +#define EP93XX_DMA_AAC3		4 +#define EP93XX_DMA_I2S3		5 +#define EP93XX_DMA_UART1	6 +#define EP93XX_DMA_UART2	7 +#define EP93XX_DMA_UART3	8 +#define EP93XX_DMA_IRDA		9 +/* M2M channels */ +#define EP93XX_DMA_SSP		10 +#define EP93XX_DMA_IDE		11  /** - * struct ep93xx_dma_m2p_client - Information about a DMA M2P client - * - * @name: Unique name for this client - * @flags: Client flags - * @cookie: User data to pass to callback functions - * @buffer_started: Non NULL function to call when a transfer is started. - * 			The arguments are the user data cookie and the DMA - *			buffer which is starting. - * @buffer_finished: Non NULL function to call when a transfer is completed. - *			The arguments are the user data cookie, the DMA buffer - *			which has completed, and a boolean flag indicating if - *			the transfer had an error. + * struct ep93xx_dma_data - configuration data for the EP93xx dmaengine + * @port: peripheral which is requesting the channel + * @direction: TX/RX channel + * @name: optional name for the channel, this is displayed in /proc/interrupts + * + * This information is passed as private channel parameter in a filter + * function. Note that this is only needed for slave/cyclic channels.  For + * memcpy channels %NULL data should be passed.   */ -struct ep93xx_dma_m2p_client { -	char			*name; -	u8			flags; -	void			*cookie; -	void			(*buffer_started)(void *cookie, -					struct ep93xx_dma_buffer *buf); -	void			(*buffer_finished)(void *cookie, -					struct ep93xx_dma_buffer *buf, -					int bytes, int error); - -	/* private: Internal use only */ -	void			*channel; +struct ep93xx_dma_data { +	int				port; +	enum dma_data_direction		direction; +	const char			*name;  }; -/* DMA M2P ports */ -#define EP93XX_DMA_M2P_PORT_I2S1	0x00 -#define EP93XX_DMA_M2P_PORT_I2S2	0x01 -#define EP93XX_DMA_M2P_PORT_AAC1	0x02 -#define EP93XX_DMA_M2P_PORT_AAC2	0x03 -#define EP93XX_DMA_M2P_PORT_AAC3	0x04 -#define EP93XX_DMA_M2P_PORT_I2S3	0x05 -#define EP93XX_DMA_M2P_PORT_UART1	0x06 -#define EP93XX_DMA_M2P_PORT_UART2	0x07 -#define EP93XX_DMA_M2P_PORT_UART3	0x08 -#define EP93XX_DMA_M2P_PORT_IRDA	0x09 -#define EP93XX_DMA_M2P_PORT_MASK	0x0f - -/* DMA M2P client flags */ -#define EP93XX_DMA_M2P_TX		0x00	/* Memory to peripheral */ -#define EP93XX_DMA_M2P_RX		0x10	/* Peripheral to memory */ - -/* - * DMA M2P client error handling flags. See the EP93xx users guide - * documentation on the DMA M2P CONTROL register for more details - */ -#define EP93XX_DMA_M2P_ABORT_ON_ERROR	0x20	/* Abort on peripheral error */ -#define EP93XX_DMA_M2P_IGNORE_ERROR	0x40	/* Ignore peripheral errors */ -#define EP93XX_DMA_M2P_ERROR_MASK	0x60	/* Mask of error bits */ -  /** - * ep93xx_dma_m2p_client_register - Register a client with the DMA M2P - * subsystem - * - * @m2p: Client information to register - * returns 0 on success - * - * The DMA M2P subsystem allocates a channel and an interrupt line for the DMA - * client + * struct ep93xx_dma_chan_data - platform specific data for a DMA channel + * @name: name of the channel, used for getting the right clock for the channel + * @base: mapped registers + * @irq: interrupt number used by this channel   */ -int ep93xx_dma_m2p_client_register(struct ep93xx_dma_m2p_client *m2p); +struct ep93xx_dma_chan_data { +	const char			*name; +	void __iomem			*base; +	int				irq; +};  /** - * ep93xx_dma_m2p_client_unregister - Unregister a client from the DMA M2P - * subsystem - * - * @m2p: Client to unregister + * struct ep93xx_dma_platform_data - platform data for the dmaengine driver + * @channels: array of channels which are passed to the driver + * @num_channels: number of channels in the array   * - * Any transfers currently in progress will be completed in hardware, but - * ignored in software. + * This structure is passed to the DMA engine driver via platform data. For + * M2P channels, contract is that even channels are for TX and odd for RX. + * There is no requirement for the M2M channels.   */ -void ep93xx_dma_m2p_client_unregister(struct ep93xx_dma_m2p_client *m2p); +struct ep93xx_dma_platform_data { +	struct ep93xx_dma_chan_data	*channels; +	size_t				num_channels; +}; -/** - * ep93xx_dma_m2p_submit - Submit a DMA M2P transfer - * - * @m2p: DMA Client to submit the transfer on - * @buf: DMA Buffer to submit - * - * If the current or next transfer positions are free on the M2P client then - * the transfer is started immediately. If not, the transfer is added to the - * list of pending transfers. This function must not be called from the - * buffer_finished callback for an M2P channel. - * - */ -void ep93xx_dma_m2p_submit(struct ep93xx_dma_m2p_client *m2p, -			   struct ep93xx_dma_buffer *buf); +static inline bool ep93xx_dma_chan_is_m2p(struct dma_chan *chan) +{ +	return !strcmp(dev_name(chan->device->dev), "ep93xx-dma-m2p"); +}  /** - * ep93xx_dma_m2p_submit_recursive - Put a DMA transfer on the pending list - * for an M2P channel + * ep93xx_dma_chan_direction - returns direction the channel can be used + * @chan: channel   * - * @m2p: DMA Client to submit the transfer on - * @buf: DMA Buffer to submit - * - * This function must only be called from the buffer_finished callback for an - * M2P channel. It is commonly used to add the next transfer in a chained list - * of DMA transfers. + * This function can be used in filter functions to find out whether the + * channel supports given DMA direction. Only M2P channels have such + * limitation, for M2M channels the direction is configurable.   */ -void ep93xx_dma_m2p_submit_recursive(struct ep93xx_dma_m2p_client *m2p, -				     struct ep93xx_dma_buffer *buf); +static inline enum dma_data_direction +ep93xx_dma_chan_direction(struct dma_chan *chan) +{ +	if (!ep93xx_dma_chan_is_m2p(chan)) +		return DMA_NONE; -/** - * ep93xx_dma_m2p_flush - Flush all pending transfers on a DMA M2P client - * - * @m2p: DMA client to flush transfers on - * - * Any transfers currently in progress will be completed in hardware, but - * ignored in software. - * - */ -void ep93xx_dma_m2p_flush(struct ep93xx_dma_m2p_client *m2p); +	/* even channels are for TX, odd for RX */ +	return (chan->chan_id % 2 == 0) ? DMA_TO_DEVICE : DMA_FROM_DEVICE; +}  #endif /* __ASM_ARCH_DMA_H */ diff --git a/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h b/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h index 9ac4d10..c4a7b84 100644 --- a/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h +++ b/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h @@ -98,6 +98,7 @@  #define EP93XX_SECURITY_BASE		EP93XX_APB_IOMEM(0x00030000) +#define EP93XX_GPIO_PHYS_BASE		EP93XX_APB_PHYS(0x00040000)  #define EP93XX_GPIO_BASE		EP93XX_APB_IOMEM(0x00040000)  #define EP93XX_GPIO_REG(x)		(EP93XX_GPIO_BASE + (x))  #define EP93XX_GPIO_F_INT_STATUS	EP93XX_GPIO_REG(0x5c) diff --git a/arch/arm/mach-ep93xx/include/mach/ep93xx_spi.h b/arch/arm/mach-ep93xx/include/mach/ep93xx_spi.h index 0a37961..9bb63ac 100644 --- a/arch/arm/mach-ep93xx/include/mach/ep93xx_spi.h +++ b/arch/arm/mach-ep93xx/include/mach/ep93xx_spi.h @@ -7,9 +7,11 @@ struct spi_device;   * struct ep93xx_spi_info - EP93xx specific SPI descriptor   * @num_chipselect: number of chip selects on this board, must be   *                  at least one + * @use_dma: use DMA for the transfers   */  struct ep93xx_spi_info {  	int	num_chipselect; +	bool	use_dma;  };  /** diff --git a/arch/arm/mach-ep93xx/include/mach/gpio.h b/arch/arm/mach-ep93xx/include/mach/gpio.h index c57152c..40a8c17 100644 --- a/arch/arm/mach-ep93xx/include/mach/gpio.h +++ b/arch/arm/mach-ep93xx/include/mach/gpio.h @@ -1,120 +1 @@ -/* - * arch/arm/mach-ep93xx/include/mach/gpio.h - */ - -#ifndef __ASM_ARCH_GPIO_H -#define __ASM_ARCH_GPIO_H - -/* GPIO port A.  */ -#define EP93XX_GPIO_LINE_A(x)		((x) + 0) -#define EP93XX_GPIO_LINE_EGPIO0		EP93XX_GPIO_LINE_A(0) -#define EP93XX_GPIO_LINE_EGPIO1		EP93XX_GPIO_LINE_A(1) -#define EP93XX_GPIO_LINE_EGPIO2		EP93XX_GPIO_LINE_A(2) -#define EP93XX_GPIO_LINE_EGPIO3		EP93XX_GPIO_LINE_A(3) -#define EP93XX_GPIO_LINE_EGPIO4		EP93XX_GPIO_LINE_A(4) -#define EP93XX_GPIO_LINE_EGPIO5		EP93XX_GPIO_LINE_A(5) -#define EP93XX_GPIO_LINE_EGPIO6		EP93XX_GPIO_LINE_A(6) -#define EP93XX_GPIO_LINE_EGPIO7		EP93XX_GPIO_LINE_A(7) - -/* GPIO port B.  */ -#define EP93XX_GPIO_LINE_B(x)		((x) + 8) -#define EP93XX_GPIO_LINE_EGPIO8		EP93XX_GPIO_LINE_B(0) -#define EP93XX_GPIO_LINE_EGPIO9		EP93XX_GPIO_LINE_B(1) -#define EP93XX_GPIO_LINE_EGPIO10	EP93XX_GPIO_LINE_B(2) -#define EP93XX_GPIO_LINE_EGPIO11	EP93XX_GPIO_LINE_B(3) -#define EP93XX_GPIO_LINE_EGPIO12	EP93XX_GPIO_LINE_B(4) -#define EP93XX_GPIO_LINE_EGPIO13	EP93XX_GPIO_LINE_B(5) -#define EP93XX_GPIO_LINE_EGPIO14	EP93XX_GPIO_LINE_B(6) -#define EP93XX_GPIO_LINE_EGPIO15	EP93XX_GPIO_LINE_B(7) - -/* GPIO port C.  */ -#define EP93XX_GPIO_LINE_C(x)		((x) + 40) -#define EP93XX_GPIO_LINE_ROW0		EP93XX_GPIO_LINE_C(0) -#define EP93XX_GPIO_LINE_ROW1		EP93XX_GPIO_LINE_C(1) -#define EP93XX_GPIO_LINE_ROW2		EP93XX_GPIO_LINE_C(2) -#define EP93XX_GPIO_LINE_ROW3		EP93XX_GPIO_LINE_C(3) -#define EP93XX_GPIO_LINE_ROW4		EP93XX_GPIO_LINE_C(4) -#define EP93XX_GPIO_LINE_ROW5		EP93XX_GPIO_LINE_C(5) -#define EP93XX_GPIO_LINE_ROW6		EP93XX_GPIO_LINE_C(6) -#define EP93XX_GPIO_LINE_ROW7		EP93XX_GPIO_LINE_C(7) - -/* GPIO port D.  */ -#define EP93XX_GPIO_LINE_D(x)		((x) + 24) -#define EP93XX_GPIO_LINE_COL0		EP93XX_GPIO_LINE_D(0) -#define EP93XX_GPIO_LINE_COL1		EP93XX_GPIO_LINE_D(1) -#define EP93XX_GPIO_LINE_COL2		EP93XX_GPIO_LINE_D(2) -#define EP93XX_GPIO_LINE_COL3		EP93XX_GPIO_LINE_D(3) -#define EP93XX_GPIO_LINE_COL4		EP93XX_GPIO_LINE_D(4) -#define EP93XX_GPIO_LINE_COL5		EP93XX_GPIO_LINE_D(5) -#define EP93XX_GPIO_LINE_COL6		EP93XX_GPIO_LINE_D(6) -#define EP93XX_GPIO_LINE_COL7		EP93XX_GPIO_LINE_D(7) - -/* GPIO port E.  */ -#define EP93XX_GPIO_LINE_E(x)		((x) + 32) -#define EP93XX_GPIO_LINE_GRLED		EP93XX_GPIO_LINE_E(0) -#define EP93XX_GPIO_LINE_RDLED		EP93XX_GPIO_LINE_E(1) -#define EP93XX_GPIO_LINE_DIORn		EP93XX_GPIO_LINE_E(2) -#define EP93XX_GPIO_LINE_IDECS1n	EP93XX_GPIO_LINE_E(3) -#define EP93XX_GPIO_LINE_IDECS2n	EP93XX_GPIO_LINE_E(4) -#define EP93XX_GPIO_LINE_IDEDA0		EP93XX_GPIO_LINE_E(5) -#define EP93XX_GPIO_LINE_IDEDA1		EP93XX_GPIO_LINE_E(6) -#define EP93XX_GPIO_LINE_IDEDA2		EP93XX_GPIO_LINE_E(7) - -/* GPIO port F.  */ -#define EP93XX_GPIO_LINE_F(x)		((x) + 16) -#define EP93XX_GPIO_LINE_WP		EP93XX_GPIO_LINE_F(0) -#define EP93XX_GPIO_LINE_MCCD1		EP93XX_GPIO_LINE_F(1) -#define EP93XX_GPIO_LINE_MCCD2		EP93XX_GPIO_LINE_F(2) -#define EP93XX_GPIO_LINE_MCBVD1		EP93XX_GPIO_LINE_F(3) -#define EP93XX_GPIO_LINE_MCBVD2		EP93XX_GPIO_LINE_F(4) -#define EP93XX_GPIO_LINE_VS1		EP93XX_GPIO_LINE_F(5) -#define EP93XX_GPIO_LINE_READY		EP93XX_GPIO_LINE_F(6) -#define EP93XX_GPIO_LINE_VS2		EP93XX_GPIO_LINE_F(7) - -/* GPIO port G.  */ -#define EP93XX_GPIO_LINE_G(x)		((x) + 48) -#define EP93XX_GPIO_LINE_EECLK		EP93XX_GPIO_LINE_G(0) -#define EP93XX_GPIO_LINE_EEDAT		EP93XX_GPIO_LINE_G(1) -#define EP93XX_GPIO_LINE_SLA0		EP93XX_GPIO_LINE_G(2) -#define EP93XX_GPIO_LINE_SLA1		EP93XX_GPIO_LINE_G(3) -#define EP93XX_GPIO_LINE_DD12		EP93XX_GPIO_LINE_G(4) -#define EP93XX_GPIO_LINE_DD13		EP93XX_GPIO_LINE_G(5) -#define EP93XX_GPIO_LINE_DD14		EP93XX_GPIO_LINE_G(6) -#define EP93XX_GPIO_LINE_DD15		EP93XX_GPIO_LINE_G(7) - -/* GPIO port H.  */ -#define EP93XX_GPIO_LINE_H(x)		((x) + 56) -#define EP93XX_GPIO_LINE_DD0		EP93XX_GPIO_LINE_H(0) -#define EP93XX_GPIO_LINE_DD1		EP93XX_GPIO_LINE_H(1) -#define EP93XX_GPIO_LINE_DD2		EP93XX_GPIO_LINE_H(2) -#define EP93XX_GPIO_LINE_DD3		EP93XX_GPIO_LINE_H(3) -#define EP93XX_GPIO_LINE_DD4		EP93XX_GPIO_LINE_H(4) -#define EP93XX_GPIO_LINE_DD5		EP93XX_GPIO_LINE_H(5) -#define EP93XX_GPIO_LINE_DD6		EP93XX_GPIO_LINE_H(6) -#define EP93XX_GPIO_LINE_DD7		EP93XX_GPIO_LINE_H(7) - -/* maximum value for gpio line identifiers */ -#define EP93XX_GPIO_LINE_MAX		EP93XX_GPIO_LINE_H(7) - -/* maximum value for irq capable line identifiers */ -#define EP93XX_GPIO_LINE_MAX_IRQ	EP93XX_GPIO_LINE_F(7) - -/* new generic GPIO API - see Documentation/gpio.txt */ - -#include <asm-generic/gpio.h> - -#define gpio_get_value	__gpio_get_value -#define gpio_set_value	__gpio_set_value -#define gpio_cansleep	__gpio_cansleep - -/* - * Map GPIO A0..A7  (0..7)  to irq 64..71, - *          B0..B7  (7..15) to irq 72..79, and - *          F0..F7 (16..24) to irq 80..87. - */ -#define gpio_to_irq(gpio)	\ -	(((gpio) <= EP93XX_GPIO_LINE_MAX_IRQ) ? (64 + (gpio)) : -EINVAL) - -#define irq_to_gpio(irq)	((irq) - gpio_to_irq(0)) - -#endif +/* empty */ diff --git a/arch/arm/mach-ep93xx/include/mach/hardware.h b/arch/arm/mach-ep93xx/include/mach/hardware.h index 5a3ce02..4df8428 100644 --- a/arch/arm/mach-ep93xx/include/mach/hardware.h +++ b/arch/arm/mach-ep93xx/include/mach/hardware.h @@ -8,8 +8,6 @@  #include <mach/ep93xx-regs.h>  #include <mach/platform.h> -#define pcibios_assign_all_busses()	0 -  /*   * The EP93xx has two external crystal oscillators.  To generate the   * required high-frequency clocks, the processor uses two phase-locked- diff --git a/arch/arm/mach-ep93xx/include/mach/ts72xx.h b/arch/arm/mach-ep93xx/include/mach/ts72xx.h index 0eabec6..f1397a1 100644 --- a/arch/arm/mach-ep93xx/include/mach/ts72xx.h +++ b/arch/arm/mach-ep93xx/include/mach/ts72xx.h @@ -6,7 +6,7 @@   * TS72xx memory map:   *   * virt		phys		size - * febff000	22000000	4K	model number register + * febff000	22000000	4K	model number register (bits 0-2)   * febfe000	22400000	4K	options register   * febfd000	22800000	4K	options register #2   * febf9000	10800000	4K	TS-5620 RTC index register @@ -20,6 +20,9 @@  #define TS72XX_MODEL_TS7200		0x00  #define TS72XX_MODEL_TS7250		0x01  #define TS72XX_MODEL_TS7260		0x02 +#define TS72XX_MODEL_TS7300		0x03 +#define TS72XX_MODEL_TS7400		0x04 +#define TS72XX_MODEL_MASK		0x07  #define TS72XX_OPTIONS_PHYS_BASE	0x22400000 @@ -51,19 +54,34 @@  #ifndef __ASSEMBLY__ +static inline int ts72xx_model(void) +{ +	return __raw_readb(TS72XX_MODEL_VIRT_BASE) & TS72XX_MODEL_MASK; +} +  static inline int board_is_ts7200(void)  { -	return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7200; +	return ts72xx_model() == TS72XX_MODEL_TS7200;  }  static inline int board_is_ts7250(void)  { -	return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7250; +	return ts72xx_model() == TS72XX_MODEL_TS7250;  }  static inline int board_is_ts7260(void)  { -	return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7260; +	return ts72xx_model() == TS72XX_MODEL_TS7260; +} + +static inline int board_is_ts7300(void) +{ +	return ts72xx_model()  == TS72XX_MODEL_TS7300; +} + +static inline int board_is_ts7400(void) +{ +	return ts72xx_model() == TS72XX_MODEL_TS7400;  }  static inline int is_max197_installed(void) | 
