diff options
Diffstat (limited to 'arch/arm/mach-omap1')
27 files changed, 137 insertions, 157 deletions
diff --git a/arch/arm/mach-omap1/Kconfig b/arch/arm/mach-omap1/Kconfig index 903da8eb886..cdd05f2e67e 100644 --- a/arch/arm/mach-omap1/Kconfig +++ b/arch/arm/mach-omap1/Kconfig @@ -55,12 +55,6 @@ config MACH_OMAP_H3  	  TI OMAP 1710 H3 board support. Say Y here if you have such  	  a board. -config MACH_OMAP_HTCWIZARD -	bool "HTC Wizard" -	depends on ARCH_OMAP850 -	help -	  HTC Wizard smartphone support (AKA QTEK 9100, ...) -  config MACH_HERALD  	bool "HTC Herald"  	depends on ARCH_OMAP850 diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c index 2e98a3ac7c5..2aab761ee68 100644 --- a/arch/arm/mach-omap1/board-ams-delta.c +++ b/arch/arm/mach-omap1/board-ams-delta.c @@ -628,6 +628,6 @@ MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)")  	.init_irq	= omap1_init_irq,  	.init_machine	= ams_delta_init,  	.init_late	= ams_delta_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-fsample.c b/arch/arm/mach-omap1/board-fsample.c index 560a7dcf0a5..702d58039cc 100644 --- a/arch/arm/mach-omap1/board-fsample.c +++ b/arch/arm/mach-omap1/board-fsample.c @@ -364,6 +364,6 @@ MACHINE_START(OMAP_FSAMPLE, "OMAP730 F-Sample")  	.init_irq	= omap1_init_irq,  	.init_machine	= omap_fsample_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-generic.c b/arch/arm/mach-omap1/board-generic.c index 608e7d2a277..e1d9171774b 100644 --- a/arch/arm/mach-omap1/board-generic.c +++ b/arch/arm/mach-omap1/board-generic.c @@ -84,6 +84,6 @@ MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710")  	.init_irq	= omap1_init_irq,  	.init_machine	= omap_generic_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index 2274bd677ef..0dac3d239e3 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c @@ -461,6 +461,6 @@ MACHINE_START(OMAP_H2, "TI-H2")  	.init_irq	= omap1_init_irq,  	.init_machine	= h2_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index 1051935f0aa..816ecd13f81 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c @@ -454,6 +454,6 @@ MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board")  	.init_irq	= omap1_init_irq,  	.init_machine	= h3_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-htcherald.c b/arch/arm/mach-omap1/board-htcherald.c index 356f816c84a..35a2379b986 100644 --- a/arch/arm/mach-omap1/board-htcherald.c +++ b/arch/arm/mach-omap1/board-htcherald.c @@ -603,6 +603,6 @@ MACHINE_START(HERALD, "HTC Herald")  	.init_irq       = omap1_init_irq,  	.init_machine   = htcherald_init,  	.init_late	= omap1_init_late, -	.timer          = &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c index f8033fab0f8..bd5f02e9c35 100644 --- a/arch/arm/mach-omap1/board-innovator.c +++ b/arch/arm/mach-omap1/board-innovator.c @@ -458,6 +458,6 @@ MACHINE_START(OMAP_INNOVATOR, "TI-Innovator")  	.init_irq	= omap1_init_irq,  	.init_machine	= innovator_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index 24d2f2df11a..62a15e289c7 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c @@ -7,6 +7,7 @@   * it under the terms of the GNU General Public License version 2 as   * published by the Free Software Foundation.   */ +#include <linux/irq.h>  #include <linux/gpio.h>  #include <linux/kernel.h>  #include <linux/init.h> @@ -23,6 +24,8 @@  #include <linux/platform_data/keypad-omap.h>  #include <linux/platform_data/lcd-mipid.h> +#include <linux/platform_data/gpio-omap.h> +#include <linux/platform_data/i2c-cbus-gpio.h>  #include <asm/mach-types.h>  #include <asm/mach/arch.h> @@ -212,6 +215,45 @@ static inline void nokia770_mmc_init(void)  }  #endif +#if defined(CONFIG_I2C_CBUS_GPIO) || defined(CONFIG_I2C_CBUS_GPIO_MODULE) +static struct i2c_cbus_platform_data nokia770_cbus_data = { +	.clk_gpio = OMAP_MPUIO(9), +	.dat_gpio = OMAP_MPUIO(10), +	.sel_gpio = OMAP_MPUIO(11), +}; + +static struct platform_device nokia770_cbus_device = { +	.name   = "i2c-cbus-gpio", +	.id     = 2, +	.dev    = { +		.platform_data = &nokia770_cbus_data, +	}, +}; + +static struct i2c_board_info nokia770_i2c_board_info_2[] __initdata = { +	{ +		I2C_BOARD_INFO("retu-mfd", 0x01), +	}, +}; + +static void __init nokia770_cbus_init(void) +{ +	const int retu_irq_gpio = 62; + +	if (gpio_request_one(retu_irq_gpio, GPIOF_IN, "Retu IRQ")) +		return; +	irq_set_irq_type(gpio_to_irq(retu_irq_gpio), IRQ_TYPE_EDGE_RISING); +	nokia770_i2c_board_info_2[0].irq = gpio_to_irq(retu_irq_gpio); +	i2c_register_board_info(2, nokia770_i2c_board_info_2, +				ARRAY_SIZE(nokia770_i2c_board_info_2)); +	platform_device_register(&nokia770_cbus_device); +} +#else /* CONFIG_I2C_CBUS_GPIO */ +static void __init nokia770_cbus_init(void) +{ +} +#endif /* CONFIG_I2C_CBUS_GPIO */ +  static void __init omap_nokia770_init(void)  {  	/* On Nokia 770, the SleepX signal is masked with an @@ -233,6 +275,7 @@ static void __init omap_nokia770_init(void)  	mipid_dev_init();  	omap1_usb_init(&nokia770_usb_config);  	nokia770_mmc_init(); +	nokia770_cbus_init();  }  MACHINE_START(NOKIA770, "Nokia 770") @@ -242,6 +285,6 @@ MACHINE_START(NOKIA770, "Nokia 770")  	.init_irq	= omap1_init_irq,  	.init_machine	= omap_nokia770_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index 872ea47cd28..a7ce6928668 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c @@ -609,6 +609,6 @@ MACHINE_START(OMAP_OSK, "TI-OSK")  	.init_irq	= omap1_init_irq,  	.init_machine	= osk_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index c33dceb4660..845a1a7aef9 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c @@ -268,6 +268,6 @@ MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E")  	.init_irq	= omap1_init_irq,  	.init_machine	= omap_palmte_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c index 2948b0ee4be..65a4a3e357f 100644 --- a/arch/arm/mach-omap1/board-palmtt.c +++ b/arch/arm/mach-omap1/board-palmtt.c @@ -314,6 +314,6 @@ MACHINE_START(OMAP_PALMTT, "OMAP1510 based Palm Tungsten|T")  	.init_irq	= omap1_init_irq,  	.init_machine	= omap_palmtt_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c index 7a05895c0be..01c970071fd 100644 --- a/arch/arm/mach-omap1/board-palmz71.c +++ b/arch/arm/mach-omap1/board-palmz71.c @@ -330,6 +330,6 @@ MACHINE_START(OMAP_PALMZ71, "OMAP310 based Palm Zire71")  	.init_irq	= omap1_init_irq,  	.init_machine	= omap_palmz71_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c index 27f8d12ec22..8b2f7127f71 100644 --- a/arch/arm/mach-omap1/board-perseus2.c +++ b/arch/arm/mach-omap1/board-perseus2.c @@ -326,6 +326,6 @@ MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2")  	.init_irq	= omap1_init_irq,  	.init_machine	= omap_perseus2_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c index 20ed52ae171..9732a98f3e0 100644 --- a/arch/arm/mach-omap1/board-sx1.c +++ b/arch/arm/mach-omap1/board-sx1.c @@ -407,6 +407,6 @@ MACHINE_START(SX1, "OMAP310 based Siemens SX1")  	.init_irq	= omap1_init_irq,  	.init_machine	= omap_sx1_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= omap1_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c index abf705f49b1..6c116e1a4b0 100644 --- a/arch/arm/mach-omap1/board-voiceblue.c +++ b/arch/arm/mach-omap1/board-voiceblue.c @@ -289,6 +289,6 @@ MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910")  	.init_irq	= omap1_init_irq,  	.init_machine	= voiceblue_init,  	.init_late	= omap1_init_late, -	.timer		= &omap1_timer, +	.init_time	= omap1_timer_init,  	.restart	= voiceblue_restart,  MACHINE_END diff --git a/arch/arm/mach-omap1/clock_data.c b/arch/arm/mach-omap1/clock_data.c index cb7c6ae2e3f..6c4f766365a 100644 --- a/arch/arm/mach-omap1/clock_data.c +++ b/arch/arm/mach-omap1/clock_data.c @@ -543,15 +543,6 @@ static struct clk usb_dc_ck = {  	/* Direct from ULPD, no parent */  	.rate		= 48000000,  	.enable_reg	= OMAP1_IO_ADDRESS(SOFT_REQ_REG), -	.enable_bit	= USB_REQ_EN_SHIFT, -}; - -static struct clk usb_dc_ck7xx = { -	.name		= "usb_dc_ck", -	.ops		= &clkops_generic, -	/* Direct from ULPD, no parent */ -	.rate		= 48000000, -	.enable_reg	= OMAP1_IO_ADDRESS(SOFT_REQ_REG),  	.enable_bit	= SOFT_USB_OTG_DPLL_REQ_SHIFT,  }; @@ -727,8 +718,7 @@ static struct omap_clk omap_clks[] = {  	CLK(NULL,	"usb_clko",	&usb_clko,	CK_16XX | CK_1510 | CK_310),  	CLK(NULL,	"usb_hhc_ck",	&usb_hhc_ck1510, CK_1510 | CK_310),  	CLK(NULL,	"usb_hhc_ck",	&usb_hhc_ck16xx, CK_16XX), -	CLK(NULL,	"usb_dc_ck",	&usb_dc_ck,	CK_16XX), -	CLK(NULL,	"usb_dc_ck",	&usb_dc_ck7xx,	CK_7XX), +	CLK(NULL,	"usb_dc_ck",	&usb_dc_ck,	CK_16XX | CK_7XX),  	CLK(NULL,	"mclk",		&mclk_1510,	CK_1510 | CK_310),  	CLK(NULL,	"mclk",		&mclk_16xx,	CK_16XX),  	CLK(NULL,	"bclk",		&bclk_1510,	CK_1510 | CK_310), diff --git a/arch/arm/mach-omap1/common.h b/arch/arm/mach-omap1/common.h index b53e0854422..14f7e992047 100644 --- a/arch/arm/mach-omap1/common.h +++ b/arch/arm/mach-omap1/common.h @@ -31,6 +31,8 @@  #include <plat/i2c.h> +#include <mach/irqs.h> +  #if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)  void omap7xx_map_io(void);  #else @@ -75,7 +77,7 @@ extern void __init omap_check_revision(void);  extern void omap1_nand_cmd_ctl(struct mtd_info *mtd, int cmd,  			       unsigned int ctrl); -extern struct sys_timer omap1_timer; +extern void omap1_timer_init(void);  #ifdef CONFIG_OMAP_32K_TIMER  extern int omap_32k_timer_init(void);  #else diff --git a/arch/arm/mach-omap1/dma.c b/arch/arm/mach-omap1/dma.c index e190611e4b4..68ab858e27b 100644 --- a/arch/arm/mach-omap1/dma.c +++ b/arch/arm/mach-omap1/dma.c @@ -24,7 +24,7 @@  #include <linux/init.h>  #include <linux/device.h>  #include <linux/io.h> - +#include <linux/dma-mapping.h>  #include <linux/omap-dma.h>  #include <mach/tc.h> @@ -270,11 +270,17 @@ static u32 configure_dma_errata(void)  	return errata;  } +static const struct platform_device_info omap_dma_dev_info = { +	.name = "omap-dma-engine", +	.id = -1, +	.dma_mask = DMA_BIT_MASK(32), +}; +  static int __init omap1_system_dma_init(void)  {  	struct omap_system_dma_plat_info	*p;  	struct omap_dma_dev_attr		*d; -	struct platform_device			*pdev; +	struct platform_device			*pdev, *dma_pdev;  	int ret;  	pdev = platform_device_alloc("omap_dma_system", 0); @@ -295,7 +301,7 @@ static int __init omap1_system_dma_init(void)  	if (ret) {  		dev_err(&pdev->dev, "%s: Unable to add resources for %s%d\n",  			__func__, pdev->name, pdev->id); -		goto exit_device_put; +		goto exit_iounmap;  	}  	p = kzalloc(sizeof(struct omap_system_dma_plat_info), GFP_KERNEL); @@ -303,7 +309,7 @@ static int __init omap1_system_dma_init(void)  		dev_err(&pdev->dev, "%s: Unable to allocate 'p' for %s\n",  			__func__, pdev->name);  		ret = -ENOMEM; -		goto exit_device_del; +		goto exit_iounmap;  	}  	d = kzalloc(sizeof(struct omap_dma_dev_attr), GFP_KERNEL); @@ -380,16 +386,24 @@ static int __init omap1_system_dma_init(void)  	dma_common_ch_start	= CPC;  	dma_common_ch_end	= COLOR; +	dma_pdev = platform_device_register_full(&omap_dma_dev_info); +	if (IS_ERR(dma_pdev)) { +		ret = PTR_ERR(dma_pdev); +		goto exit_release_pdev; +	} +  	return ret; +exit_release_pdev: +	platform_device_del(pdev);  exit_release_chan:  	kfree(d->chan);  exit_release_d:  	kfree(d);  exit_release_p:  	kfree(p); -exit_device_del: -	platform_device_del(pdev); +exit_iounmap: +	iounmap(dma_base);  exit_device_put:  	platform_device_put(pdev); diff --git a/arch/arm/mach-omap1/dma.h b/arch/arm/mach-omap1/dma.h index da6345dab03..d05909c9671 100644 --- a/arch/arm/mach-omap1/dma.h +++ b/arch/arm/mach-omap1/dma.h @@ -21,21 +21,10 @@  /* DMA channels for omap1 */  #define OMAP_DMA_NO_DEVICE		0 -#define OMAP_DMA_MCSI1_TX		1 -#define OMAP_DMA_MCSI1_RX		2 -#define OMAP_DMA_I2C_RX			3 -#define OMAP_DMA_I2C_TX			4 -#define OMAP_DMA_EXT_NDMA_REQ		5 -#define OMAP_DMA_EXT_NDMA_REQ2		6 -#define OMAP_DMA_UWIRE_TX		7  #define OMAP_DMA_MCBSP1_TX		8  #define OMAP_DMA_MCBSP1_RX		9  #define OMAP_DMA_MCBSP3_TX		10  #define OMAP_DMA_MCBSP3_RX		11 -#define OMAP_DMA_UART1_TX		12 -#define OMAP_DMA_UART1_RX		13 -#define OMAP_DMA_UART2_TX		14 -#define OMAP_DMA_UART2_RX		15  #define OMAP_DMA_MCBSP2_TX		16  #define OMAP_DMA_MCBSP2_RX		17  #define OMAP_DMA_UART3_TX		18 @@ -43,41 +32,11 @@  #define OMAP_DMA_CAMERA_IF_RX		20  #define OMAP_DMA_MMC_TX			21  #define OMAP_DMA_MMC_RX			22 -#define OMAP_DMA_NAND			23 -#define OMAP_DMA_IRQ_LCD_LINE		24 -#define OMAP_DMA_MEMORY_STICK		25  #define OMAP_DMA_USB_W2FC_RX0		26 -#define OMAP_DMA_USB_W2FC_RX1		27 -#define OMAP_DMA_USB_W2FC_RX2		28  #define OMAP_DMA_USB_W2FC_TX0		29 -#define OMAP_DMA_USB_W2FC_TX1		30 -#define OMAP_DMA_USB_W2FC_TX2		31  /* These are only for 1610 */ -#define OMAP_DMA_CRYPTO_DES_IN		32 -#define OMAP_DMA_SPI_TX			33 -#define OMAP_DMA_SPI_RX			34 -#define OMAP_DMA_CRYPTO_HASH		35 -#define OMAP_DMA_CCP_ATTN		36 -#define OMAP_DMA_CCP_FIFO_NOT_EMPTY	37 -#define OMAP_DMA_CMT_APE_TX_CHAN_0	38 -#define OMAP_DMA_CMT_APE_RV_CHAN_0	39 -#define OMAP_DMA_CMT_APE_TX_CHAN_1	40 -#define OMAP_DMA_CMT_APE_RV_CHAN_1	41 -#define OMAP_DMA_CMT_APE_TX_CHAN_2	42 -#define OMAP_DMA_CMT_APE_RV_CHAN_2	43 -#define OMAP_DMA_CMT_APE_TX_CHAN_3	44 -#define OMAP_DMA_CMT_APE_RV_CHAN_3	45 -#define OMAP_DMA_CMT_APE_TX_CHAN_4	46 -#define OMAP_DMA_CMT_APE_RV_CHAN_4	47 -#define OMAP_DMA_CMT_APE_TX_CHAN_5	48 -#define OMAP_DMA_CMT_APE_RV_CHAN_5	49 -#define OMAP_DMA_CMT_APE_TX_CHAN_6	50 -#define OMAP_DMA_CMT_APE_RV_CHAN_6	51 -#define OMAP_DMA_CMT_APE_TX_CHAN_7	52 -#define OMAP_DMA_CMT_APE_RV_CHAN_7	53  #define OMAP_DMA_MMC2_TX		54  #define OMAP_DMA_MMC2_RX		55 -#define OMAP_DMA_CRYPTO_DES_OUT		56  #endif /* __OMAP1_DMA_CHANNEL_H */ diff --git a/arch/arm/mach-omap1/i2c.c b/arch/arm/mach-omap1/i2c.c index faca808cb3d..7f5761cffd2 100644 --- a/arch/arm/mach-omap1/i2c.c +++ b/arch/arm/mach-omap1/i2c.c @@ -91,3 +91,9 @@ int __init omap_i2c_add_bus(struct omap_i2c_bus_platform_data *pdata,  	return platform_device_register(pdev);  } + +static  int __init omap_i2c_cmdline(void) +{ +	return omap_register_i2c_bus_cmdline(); +} +subsys_initcall(omap_i2c_cmdline); diff --git a/arch/arm/mach-omap1/include/mach/uncompress.h b/arch/arm/mach-omap1/include/mach/uncompress.h index ad6fbe7d83f..4869633de8c 100644 --- a/arch/arm/mach-omap1/include/mach/uncompress.h +++ b/arch/arm/mach-omap1/include/mach/uncompress.h @@ -115,8 +115,3 @@ static inline void arch_decomp_setup(void)  		DEBUG_LL_OMAP1(3, sx1);  	} while (0);  } - -/* - * nothing to do - */ -#define arch_decomp_wdog() diff --git a/arch/arm/mach-omap1/include/mach/usb.h b/arch/arm/mach-omap1/include/mach/usb.h index 753cd5ce694..45e5ac707cb 100644 --- a/arch/arm/mach-omap1/include/mach/usb.h +++ b/arch/arm/mach-omap1/include/mach/usb.h @@ -2,7 +2,7 @@   * FIXME correct answer depends on hmc_mode,   * as does (on omap1) any nonzero value for config->otg port number   */ -#ifdef	CONFIG_USB_GADGET_OMAP +#if IS_ENABLED(CONFIG_USB_OMAP)  #define	is_usb0_device(config)	1  #else  #define	is_usb0_device(config)	0 diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c index 7a7690ab6cb..358b82cb9f7 100644 --- a/arch/arm/mach-omap1/pm.c +++ b/arch/arm/mach-omap1/pm.c @@ -37,12 +37,14 @@  #include <linux/suspend.h>  #include <linux/sched.h> -#include <linux/proc_fs.h> +#include <linux/debugfs.h> +#include <linux/seq_file.h>  #include <linux/interrupt.h>  #include <linux/sysfs.h>  #include <linux/module.h>  #include <linux/io.h>  #include <linux/atomic.h> +#include <linux/cpu.h>  #include <asm/fncpy.h>  #include <asm/system_misc.h> @@ -422,23 +424,12 @@ void omap1_pm_suspend(void)  		omap_rev());  } -#if defined(DEBUG) && defined(CONFIG_PROC_FS) -static int g_read_completed; - +#ifdef CONFIG_DEBUG_FS  /*   * Read system PM registers for debugging   */ -static int omap_pm_read_proc( -	char *page_buffer, -	char **my_first_byte, -	off_t virtual_start, -	int length, -	int *eof, -	void *data) +static int omap_pm_debug_show(struct seq_file *m, void *v)  { -	int my_buffer_offset = 0; -	char * const my_base = page_buffer; -  	ARM_SAVE(ARM_CKCTL);  	ARM_SAVE(ARM_IDLECT1);  	ARM_SAVE(ARM_IDLECT2); @@ -479,10 +470,7 @@ static int omap_pm_read_proc(  		MPUI1610_SAVE(EMIFS_CONFIG);  	} -	if (virtual_start == 0) { -		g_read_completed = 0; - -		my_buffer_offset += sprintf(my_base + my_buffer_offset, +	seq_printf(m,  		   "ARM_CKCTL_REG:            0x%-8x     \n"  		   "ARM_IDLECT1_REG:          0x%-8x     \n"  		   "ARM_IDLECT2_REG:          0x%-8x     \n" @@ -512,8 +500,8 @@ static int omap_pm_read_proc(  		   ULPD_SHOW(ULPD_STATUS_REQ),  		   ULPD_SHOW(ULPD_POWER_CTRL)); -		if (cpu_is_omap7xx()) { -			my_buffer_offset += sprintf(my_base + my_buffer_offset, +	if (cpu_is_omap7xx()) { +		seq_printf(m,  			   "MPUI7XX_CTRL_REG	     0x%-8x \n"  			   "MPUI7XX_DSP_STATUS_REG:      0x%-8x \n"  			   "MPUI7XX_DSP_BOOT_CONFIG_REG: 0x%-8x \n" @@ -526,8 +514,8 @@ static int omap_pm_read_proc(  			   MPUI7XX_SHOW(MPUI_DSP_API_CONFIG),  			   MPUI7XX_SHOW(EMIFF_SDRAM_CONFIG),  			   MPUI7XX_SHOW(EMIFS_CONFIG)); -		} else if (cpu_is_omap15xx()) { -			my_buffer_offset += sprintf(my_base + my_buffer_offset, +	} else if (cpu_is_omap15xx()) { +		seq_printf(m,  			   "MPUI1510_CTRL_REG             0x%-8x \n"  			   "MPUI1510_DSP_STATUS_REG:      0x%-8x \n"  			   "MPUI1510_DSP_BOOT_CONFIG_REG: 0x%-8x \n" @@ -540,8 +528,8 @@ static int omap_pm_read_proc(  			   MPUI1510_SHOW(MPUI_DSP_API_CONFIG),  			   MPUI1510_SHOW(EMIFF_SDRAM_CONFIG),  			   MPUI1510_SHOW(EMIFS_CONFIG)); -		} else if (cpu_is_omap16xx()) { -			my_buffer_offset += sprintf(my_base + my_buffer_offset, +	} else if (cpu_is_omap16xx()) { +		seq_printf(m,  			   "MPUI1610_CTRL_REG             0x%-8x \n"  			   "MPUI1610_DSP_STATUS_REG:      0x%-8x \n"  			   "MPUI1610_DSP_BOOT_CONFIG_REG: 0x%-8x \n" @@ -554,28 +542,37 @@ static int omap_pm_read_proc(  			   MPUI1610_SHOW(MPUI_DSP_API_CONFIG),  			   MPUI1610_SHOW(EMIFF_SDRAM_CONFIG),  			   MPUI1610_SHOW(EMIFS_CONFIG)); -		} - -		g_read_completed++; -	} else if (g_read_completed >= 1) { -		 *eof = 1; -		 return 0;  	} -	g_read_completed++; -	*my_first_byte = page_buffer; -	return  my_buffer_offset; +	return 0;  } -static void omap_pm_init_proc(void) +static int omap_pm_debug_open(struct inode *inode, struct file *file)  { -	/* XXX Appears to leak memory */ -	create_proc_read_entry("driver/omap_pm", -			       S_IWUSR | S_IRUGO, NULL, -			       omap_pm_read_proc, NULL); +	return single_open(file, omap_pm_debug_show, +				&inode->i_private);  } -#endif /* DEBUG && CONFIG_PROC_FS */ +static const struct file_operations omap_pm_debug_fops = { +	.open		= omap_pm_debug_open, +	.read		= seq_read, +	.llseek		= seq_lseek, +	.release	= single_release, +}; + +static void omap_pm_init_debugfs(void) +{ +	struct dentry *d; + +	d = debugfs_create_dir("pm_debug", NULL); +	if (!d) +		return; + +	(void) debugfs_create_file("omap_pm", S_IWUSR | S_IRUGO, +					d, NULL, &omap_pm_debug_fops); +} + +#endif /* CONFIG_DEBUG_FS */  /*   *	omap_pm_prepare - Do preliminary suspend work. @@ -584,8 +581,7 @@ static void omap_pm_init_proc(void)  static int omap_pm_prepare(void)  {  	/* We cannot sleep in idle until we have resumed */ -	disable_hlt(); - +	cpu_idle_poll_ctrl(true);  	return 0;  } @@ -621,7 +617,7 @@ static int omap_pm_enter(suspend_state_t state)  static void omap_pm_finish(void)  { -	enable_hlt(); +	cpu_idle_poll_ctrl(false);  } @@ -701,8 +697,8 @@ static int __init omap_pm_init(void)  	suspend_set_ops(&omap_pm_ops); -#if defined(DEBUG) && defined(CONFIG_PROC_FS) -	omap_pm_init_proc(); +#ifdef CONFIG_DEBUG_FS +	omap_pm_init_debugfs();  #endif  #ifdef CONFIG_OMAP_32K_TIMER diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c index 4d4816fd6fc..726ec23d29c 100644 --- a/arch/arm/mach-omap1/time.c +++ b/arch/arm/mach-omap1/time.c @@ -145,7 +145,6 @@ static void omap_mpu_set_mode(enum clock_event_mode mode,  static struct clock_event_device clockevent_mpu_timer1 = {  	.name		= "mpu_timer1",  	.features       = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, -	.shift		= 32,  	.set_next_event	= omap_mpu_set_next_event,  	.set_mode	= omap_mpu_set_mode,  }; @@ -170,15 +169,9 @@ static __init void omap_init_mpu_timer(unsigned long rate)  	setup_irq(INT_TIMER1, &omap_mpu_timer1_irq);  	omap_mpu_timer_start(0, (rate / HZ) - 1, 1); -	clockevent_mpu_timer1.mult = div_sc(rate, NSEC_PER_SEC, -					    clockevent_mpu_timer1.shift); -	clockevent_mpu_timer1.max_delta_ns = -		clockevent_delta2ns(-1, &clockevent_mpu_timer1); -	clockevent_mpu_timer1.min_delta_ns = -		clockevent_delta2ns(1, &clockevent_mpu_timer1); -  	clockevent_mpu_timer1.cpumask = cpumask_of(0); -	clockevents_register_device(&clockevent_mpu_timer1); +	clockevents_config_and_register(&clockevent_mpu_timer1, rate, +					1, -1);  } @@ -236,12 +229,8 @@ static inline void omap_mpu_timer_init(void)   * Timer initialization   * ---------------------------------------------------------------------------   */ -static void __init omap1_timer_init(void) +void __init omap1_timer_init(void)  {  	if (omap_32k_timer_init() != 0)  		omap_mpu_timer_init();  } - -struct sys_timer omap1_timer = { -	.init		= omap1_timer_init, -}; diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c index 41152fadd4c..0b74246ba62 100644 --- a/arch/arm/mach-omap1/timer32k.c +++ b/arch/arm/mach-omap1/timer32k.c @@ -140,7 +140,6 @@ static void omap_32k_timer_set_mode(enum clock_event_mode mode,  static struct clock_event_device clockevent_32k_timer = {  	.name		= "32k-timer",  	.features       = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, -	.shift		= 32,  	.set_next_event	= omap_32k_timer_set_next_event,  	.set_mode	= omap_32k_timer_set_mode,  }; @@ -165,16 +164,9 @@ static __init void omap_init_32k_timer(void)  {  	setup_irq(INT_OS_TIMER, &omap_32k_timer_irq); -	clockevent_32k_timer.mult = div_sc(OMAP_32K_TICKS_PER_SEC, -					   NSEC_PER_SEC, -					   clockevent_32k_timer.shift); -	clockevent_32k_timer.max_delta_ns = -		clockevent_delta2ns(0xfffffffe, &clockevent_32k_timer); -	clockevent_32k_timer.min_delta_ns = -		clockevent_delta2ns(1, &clockevent_32k_timer); -  	clockevent_32k_timer.cpumask = cpumask_of(0); -	clockevents_register_device(&clockevent_32k_timer); +	clockevents_config_and_register(&clockevent_32k_timer, +					OMAP_32K_TICKS_PER_SEC, 1, 0xfffffffe);  }  /* diff --git a/arch/arm/mach-omap1/usb.c b/arch/arm/mach-omap1/usb.c index 1a1db5971cd..4118db50d5e 100644 --- a/arch/arm/mach-omap1/usb.c +++ b/arch/arm/mach-omap1/usb.c @@ -123,7 +123,7 @@ omap_otg_init(struct omap_usb_config *config)  	syscon = omap_readl(OTG_SYSCON_1);  	syscon |= HST_IDLE_EN|DEV_IDLE_EN|OTG_IDLE_EN; -#ifdef	CONFIG_USB_GADGET_OMAP +#if IS_ENABLED(CONFIG_USB_OMAP)  	if (config->otg || config->register_dev) {  		struct platform_device *udc_device = config->udc_device;  		int status; @@ -169,7 +169,7 @@ omap_otg_init(struct omap_usb_config *config)  void omap_otg_init(struct omap_usb_config *config) {}  #endif -#ifdef	CONFIG_USB_GADGET_OMAP +#if IS_ENABLED(CONFIG_USB_OMAP)  static struct resource udc_resources[] = {  	/* order is significant! */ @@ -600,7 +600,7 @@ static void __init omap_1510_usb_init(struct omap_usb_config *config)  	while (!(omap_readw(ULPD_DPLL_CTRL) & DPLL_LOCK))  		cpu_relax(); -#ifdef	CONFIG_USB_GADGET_OMAP +#if IS_ENABLED(CONFIG_USB_OMAP)  	if (config->register_dev) {  		int status;  |