diff options
Diffstat (limited to 'arch/mips/include/asm/mach-jz4740')
| -rw-r--r-- | arch/mips/include/asm/mach-jz4740/clock.h | 2 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-jz4740/cpu-feature-overrides.h | 1 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-jz4740/dma.h | 62 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-jz4740/gpio.h | 7 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-jz4740/irq.h | 4 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-jz4740/jz4740_nand.h | 4 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-jz4740/platform.h | 6 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-jz4740/timer.h | 115 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-jz4740/war.h | 1 | 
9 files changed, 132 insertions, 70 deletions
diff --git a/arch/mips/include/asm/mach-jz4740/clock.h b/arch/mips/include/asm/mach-jz4740/clock.h index 1b7408dd0e2..16659cd76d4 100644 --- a/arch/mips/include/asm/mach-jz4740/clock.h +++ b/arch/mips/include/asm/mach-jz4740/clock.h @@ -2,7 +2,7 @@   *  Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>   *   *  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 + *  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.   * diff --git a/arch/mips/include/asm/mach-jz4740/cpu-feature-overrides.h b/arch/mips/include/asm/mach-jz4740/cpu-feature-overrides.h index d12e5c6477b..a225baaa215 100644 --- a/arch/mips/include/asm/mach-jz4740/cpu-feature-overrides.h +++ b/arch/mips/include/asm/mach-jz4740/cpu-feature-overrides.h @@ -38,6 +38,7 @@  #define cpu_has_mips64r1	0  #define cpu_has_mips64r2	0  #define cpu_has_dsp		0 +#define cpu_has_dsp2		0  #define cpu_has_mipsmt		0  #define cpu_has_userlocal	0  #define cpu_has_nofpuex 0 diff --git a/arch/mips/include/asm/mach-jz4740/dma.h b/arch/mips/include/asm/mach-jz4740/dma.h index a3be1218359..14ecc5313d2 100644 --- a/arch/mips/include/asm/mach-jz4740/dma.h +++ b/arch/mips/include/asm/mach-jz4740/dma.h @@ -3,7 +3,7 @@   *  JZ7420/JZ4740 DMA definitions   *   *  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 + *  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.   * @@ -16,16 +16,12 @@  #ifndef __ASM_MACH_JZ4740_DMA_H__  #define __ASM_MACH_JZ4740_DMA_H__ -struct jz4740_dma_chan; -  enum jz4740_dma_request_type {  	JZ4740_DMA_TYPE_AUTO_REQUEST	= 8,  	JZ4740_DMA_TYPE_UART_TRANSMIT	= 20,  	JZ4740_DMA_TYPE_UART_RECEIVE	= 21,  	JZ4740_DMA_TYPE_SPI_TRANSMIT	= 22,  	JZ4740_DMA_TYPE_SPI_RECEIVE	= 23, -	JZ4740_DMA_TYPE_AIC_TRANSMIT	= 24, -	JZ4740_DMA_TYPE_AIC_RECEIVE	= 25,  	JZ4740_DMA_TYPE_MMC_TRANSMIT	= 26,  	JZ4740_DMA_TYPE_MMC_RECEIVE	= 27,  	JZ4740_DMA_TYPE_TCU		= 28, @@ -33,58 +29,4 @@ enum jz4740_dma_request_type {  	JZ4740_DMA_TYPE_SLCD		= 30,  }; -enum jz4740_dma_width { -	JZ4740_DMA_WIDTH_32BIT	= 0, -	JZ4740_DMA_WIDTH_8BIT	= 1, -	JZ4740_DMA_WIDTH_16BIT	= 2, -}; - -enum jz4740_dma_transfer_size { -	JZ4740_DMA_TRANSFER_SIZE_4BYTE  = 0, -	JZ4740_DMA_TRANSFER_SIZE_1BYTE  = 1, -	JZ4740_DMA_TRANSFER_SIZE_2BYTE  = 2, -	JZ4740_DMA_TRANSFER_SIZE_16BYTE = 3, -	JZ4740_DMA_TRANSFER_SIZE_32BYTE = 4, -}; - -enum jz4740_dma_flags { -	JZ4740_DMA_SRC_AUTOINC = 0x2, -	JZ4740_DMA_DST_AUTOINC = 0x1, -}; - -enum jz4740_dma_mode { -	JZ4740_DMA_MODE_SINGLE	= 0, -	JZ4740_DMA_MODE_BLOCK	= 1, -}; - -struct jz4740_dma_config { -	enum jz4740_dma_width src_width; -	enum jz4740_dma_width dst_width; -	enum jz4740_dma_transfer_size transfer_size; -	enum jz4740_dma_request_type request_type; -	enum jz4740_dma_flags flags; -	enum jz4740_dma_mode mode; -}; - -typedef void (*jz4740_dma_complete_callback_t)(struct jz4740_dma_chan *, int, void *); - -struct jz4740_dma_chan *jz4740_dma_request(void *dev, const char *name); -void jz4740_dma_free(struct jz4740_dma_chan *dma); - -void jz4740_dma_configure(struct jz4740_dma_chan *dma, -	const struct jz4740_dma_config *config); - - -void jz4740_dma_enable(struct jz4740_dma_chan *dma); -void jz4740_dma_disable(struct jz4740_dma_chan *dma); - -void jz4740_dma_set_src_addr(struct jz4740_dma_chan *dma, dma_addr_t src); -void jz4740_dma_set_dst_addr(struct jz4740_dma_chan *dma, dma_addr_t dst); -void jz4740_dma_set_transfer_count(struct jz4740_dma_chan *dma, uint32_t count); - -uint32_t jz4740_dma_get_residue(const struct jz4740_dma_chan *dma); - -void jz4740_dma_set_complete_cb(struct jz4740_dma_chan *dma, -	jz4740_dma_complete_callback_t cb); - -#endif  /* __ASM_JZ4740_DMA_H__ */ +#endif	/* __ASM_JZ4740_DMA_H__ */ diff --git a/arch/mips/include/asm/mach-jz4740/gpio.h b/arch/mips/include/asm/mach-jz4740/gpio.h index 7b74703745b..eaacba79cf1 100644 --- a/arch/mips/include/asm/mach-jz4740/gpio.h +++ b/arch/mips/include/asm/mach-jz4740/gpio.h @@ -25,14 +25,13 @@ enum jz_gpio_function {      JZ_GPIO_FUNC3,  }; -  /*   Usually a driver for a SoC component has to request several gpio pins and   configure them as funcion pins.   jz_gpio_bulk_request can be used to ease this process.   Usually one would do something like: - const static struct jz_gpio_bulk_request i2c_pins[] = { + static const struct jz_gpio_bulk_request i2c_pins[] = {  	JZ_GPIO_BULK_PIN(I2C_SDA),  	JZ_GPIO_BULK_PIN(I2C_SCK),   }; @@ -47,8 +46,8 @@ enum jz_gpio_function {      jz_gpio_bulk_free(i2c_pins, ARRAY_SIZE(i2c_pins)); -  */ +  struct jz_gpio_bulk_request {  	int gpio;  	const char *name; @@ -199,7 +198,7 @@ uint32_t jz_gpio_port_get_value(int port, uint32_t mask);  #define JZ_GPIO_FUNC_MEM_ADDR14		JZ_GPIO_FUNC1  #define JZ_GPIO_FUNC_MEM_ADDR15		JZ_GPIO_FUNC1  #define JZ_GPIO_FUNC_MEM_ADDR16		JZ_GPIO_FUNC1 -#define JZ_GPIO_FUNC_LCD_CLS	        JZ_GPIO_FUNC1 +#define JZ_GPIO_FUNC_LCD_CLS		JZ_GPIO_FUNC1  #define JZ_GPIO_FUNC_LCD_SPL		JZ_GPIO_FUNC1  #define JZ_GPIO_FUNC_MEM_DCS		JZ_GPIO_FUNC1  #define JZ_GPIO_FUNC_MEM_RAS		JZ_GPIO_FUNC1 diff --git a/arch/mips/include/asm/mach-jz4740/irq.h b/arch/mips/include/asm/mach-jz4740/irq.h index a865c983c70..df50736749c 100644 --- a/arch/mips/include/asm/mach-jz4740/irq.h +++ b/arch/mips/include/asm/mach-jz4740/irq.h @@ -3,7 +3,7 @@   *  JZ4740 IRQ definitions   *   *  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 + *  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.   * @@ -45,7 +45,7 @@  #define JZ4740_IRQ_LCD		JZ4740_IRQ(30)  /* 2nd-level interrupts */ -#define JZ4740_IRQ_DMA(x)	(JZ4740_IRQ(32) + (X)) +#define JZ4740_IRQ_DMA(x)	(JZ4740_IRQ(32) + (x))  #define JZ4740_IRQ_INTC_GPIO(x) (JZ4740_IRQ_GPIO0 - (x))  #define JZ4740_IRQ_GPIO(x)	(JZ4740_IRQ(48) + (x)) diff --git a/arch/mips/include/asm/mach-jz4740/jz4740_nand.h b/arch/mips/include/asm/mach-jz4740/jz4740_nand.h index bb5b9a4e29c..986982db7c3 100644 --- a/arch/mips/include/asm/mach-jz4740/jz4740_nand.h +++ b/arch/mips/include/asm/mach-jz4740/jz4740_nand.h @@ -19,6 +19,8 @@  #include <linux/mtd/nand.h>  #include <linux/mtd/partitions.h> +#define JZ_NAND_NUM_BANKS 4 +  struct jz_nand_platform_data {  	int			num_partitions;  	struct mtd_partition	*partitions; @@ -27,6 +29,8 @@ struct jz_nand_platform_data {  	unsigned int busy_gpio; +	unsigned char banks[JZ_NAND_NUM_BANKS]; +  	void (*ident_callback)(struct platform_device *, struct nand_chip *,  				struct mtd_partition **, int *num_partitions);  }; diff --git a/arch/mips/include/asm/mach-jz4740/platform.h b/arch/mips/include/asm/mach-jz4740/platform.h index 8987a76e967..069b43a9da6 100644 --- a/arch/mips/include/asm/mach-jz4740/platform.h +++ b/arch/mips/include/asm/mach-jz4740/platform.h @@ -3,7 +3,7 @@   *  JZ4740 platform device definitions   *   *  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 + *  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.   * @@ -21,6 +21,7 @@  extern struct platform_device jz4740_usb_ohci_device;  extern struct platform_device jz4740_udc_device; +extern struct platform_device jz4740_udc_xceiv_device;  extern struct platform_device jz4740_mmc_device;  extern struct platform_device jz4740_rtc_device;  extern struct platform_device jz4740_i2c_device; @@ -30,6 +31,9 @@ extern struct platform_device jz4740_i2s_device;  extern struct platform_device jz4740_pcm_device;  extern struct platform_device jz4740_codec_device;  extern struct platform_device jz4740_adc_device; +extern struct platform_device jz4740_wdt_device; +extern struct platform_device jz4740_pwm_device; +extern struct platform_device jz4740_dma_device;  void jz4740_serial_device_register(void); diff --git a/arch/mips/include/asm/mach-jz4740/timer.h b/arch/mips/include/asm/mach-jz4740/timer.h index 9baa03ce748..8750a1d04e2 100644 --- a/arch/mips/include/asm/mach-jz4740/timer.h +++ b/arch/mips/include/asm/mach-jz4740/timer.h @@ -3,7 +3,7 @@   *  JZ4740 platform timer support   *   *  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 + *  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.   * @@ -16,7 +16,120 @@  #ifndef __ASM_MACH_JZ4740_TIMER  #define __ASM_MACH_JZ4740_TIMER +#define JZ_REG_TIMER_STOP		0x0C +#define JZ_REG_TIMER_STOP_SET		0x1C +#define JZ_REG_TIMER_STOP_CLEAR		0x2C +#define JZ_REG_TIMER_ENABLE		0x00 +#define JZ_REG_TIMER_ENABLE_SET		0x04 +#define JZ_REG_TIMER_ENABLE_CLEAR	0x08 +#define JZ_REG_TIMER_FLAG		0x10 +#define JZ_REG_TIMER_FLAG_SET		0x14 +#define JZ_REG_TIMER_FLAG_CLEAR		0x18 +#define JZ_REG_TIMER_MASK		0x20 +#define JZ_REG_TIMER_MASK_SET		0x24 +#define JZ_REG_TIMER_MASK_CLEAR		0x28 + +#define JZ_REG_TIMER_DFR(x) (((x) * 0x10) + 0x30) +#define JZ_REG_TIMER_DHR(x) (((x) * 0x10) + 0x34) +#define JZ_REG_TIMER_CNT(x) (((x) * 0x10) + 0x38) +#define JZ_REG_TIMER_CTRL(x) (((x) * 0x10) + 0x3C) + +#define JZ_TIMER_IRQ_HALF(x) BIT((x) + 0x10) +#define JZ_TIMER_IRQ_FULL(x) BIT(x) + +#define JZ_TIMER_CTRL_PWM_ABBRUPT_SHUTDOWN	BIT(9) +#define JZ_TIMER_CTRL_PWM_ACTIVE_LOW		BIT(8) +#define JZ_TIMER_CTRL_PWM_ENABLE		BIT(7) +#define JZ_TIMER_CTRL_PRESCALE_MASK		0x1c +#define JZ_TIMER_CTRL_PRESCALE_OFFSET		0x3 +#define JZ_TIMER_CTRL_PRESCALE_1		(0 << 3) +#define JZ_TIMER_CTRL_PRESCALE_4		(1 << 3) +#define JZ_TIMER_CTRL_PRESCALE_16		(2 << 3) +#define JZ_TIMER_CTRL_PRESCALE_64		(3 << 3) +#define JZ_TIMER_CTRL_PRESCALE_256		(4 << 3) +#define JZ_TIMER_CTRL_PRESCALE_1024		(5 << 3) + +#define JZ_TIMER_CTRL_PRESCALER(x) ((x) << JZ_TIMER_CTRL_PRESCALE_OFFSET) + +#define JZ_TIMER_CTRL_SRC_EXT		BIT(2) +#define JZ_TIMER_CTRL_SRC_RTC		BIT(1) +#define JZ_TIMER_CTRL_SRC_PCLK		BIT(0) + +extern void __iomem *jz4740_timer_base; +void __init jz4740_timer_init(void); +  void jz4740_timer_enable_watchdog(void);  void jz4740_timer_disable_watchdog(void); +static inline void jz4740_timer_stop(unsigned int timer) +{ +	writel(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_STOP_SET); +} + +static inline void jz4740_timer_start(unsigned int timer) +{ +	writel(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_STOP_CLEAR); +} + +static inline bool jz4740_timer_is_enabled(unsigned int timer) +{ +	return readb(jz4740_timer_base + JZ_REG_TIMER_ENABLE) & BIT(timer); +} + +static inline void jz4740_timer_enable(unsigned int timer) +{ +	writeb(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_ENABLE_SET); +} + +static inline void jz4740_timer_disable(unsigned int timer) +{ +	writeb(BIT(timer), jz4740_timer_base + JZ_REG_TIMER_ENABLE_CLEAR); +} + +static inline void jz4740_timer_set_period(unsigned int timer, uint16_t period) +{ +	writew(period, jz4740_timer_base + JZ_REG_TIMER_DFR(timer)); +} + +static inline void jz4740_timer_set_duty(unsigned int timer, uint16_t duty) +{ +	writew(duty, jz4740_timer_base + JZ_REG_TIMER_DHR(timer)); +} + +static inline void jz4740_timer_set_count(unsigned int timer, uint16_t count) +{ +	writew(count, jz4740_timer_base + JZ_REG_TIMER_CNT(timer)); +} + +static inline uint16_t jz4740_timer_get_count(unsigned int timer) +{ +	return readw(jz4740_timer_base + JZ_REG_TIMER_CNT(timer)); +} + +static inline void jz4740_timer_ack_full(unsigned int timer) +{ +	writel(JZ_TIMER_IRQ_FULL(timer), jz4740_timer_base + JZ_REG_TIMER_FLAG_CLEAR); +} + +static inline void jz4740_timer_irq_full_enable(unsigned int timer) +{ +	writel(JZ_TIMER_IRQ_FULL(timer), jz4740_timer_base + JZ_REG_TIMER_FLAG_CLEAR); +	writel(JZ_TIMER_IRQ_FULL(timer), jz4740_timer_base + JZ_REG_TIMER_MASK_CLEAR); +} + +static inline void jz4740_timer_irq_full_disable(unsigned int timer) +{ +	writel(JZ_TIMER_IRQ_FULL(timer), jz4740_timer_base + JZ_REG_TIMER_MASK_SET); +} + +static inline void jz4740_timer_set_ctrl(unsigned int timer, uint16_t ctrl) +{ +	writew(ctrl, jz4740_timer_base + JZ_REG_TIMER_CTRL(timer)); +} + +static inline uint16_t jz4740_timer_get_ctrl(unsigned int timer) +{ +	return readw(jz4740_timer_base + JZ_REG_TIMER_CTRL(timer)); +} +  #endif diff --git a/arch/mips/include/asm/mach-jz4740/war.h b/arch/mips/include/asm/mach-jz4740/war.h index 3a5bc17e28f..9b511d32383 100644 --- a/arch/mips/include/asm/mach-jz4740/war.h +++ b/arch/mips/include/asm/mach-jz4740/war.h @@ -17,7 +17,6 @@  #define MIPS4K_ICACHE_REFILL_WAR	0  #define MIPS_CACHE_SYNC_WAR		0  #define TX49XX_ICACHE_INDEX_INV_WAR	0 -#define RM9000_CDEX_SMP_WAR		0  #define ICACHE_REFILLS_WORKAROUND_WAR	0  #define R10000_LLSC_WAR			0  #define MIPS34K_MISSED_ITLB_WAR		0  | 
