Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5cc3928c authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

Merge tag 'arm-ep93xx-adc' of https://github.com/sverdlin/linux into next/soc

Pull "ADC device support for Cirrus Logic EP93xx SoC" from Alexander Sverdlin:

- Add ADC specific clock
- Add ADC device support to EP93xx core
- Add ADC instance to EDB93xx boards

The above doesn't include a driver for ADC device.

* tag 'arm-ep93xx-adc' of https://github.com/sverdlin/linux:
  ARM: edb93xx: Add ADC platform device
  ARM: ep93xx: Add ADC platform device support to core
  ARM: ep93xx: Add ADC clock
parents 033c5960 57f3b7c7
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -98,6 +98,13 @@ static struct clk clk_keypad = {
	.enable_mask	= EP93XX_SYSCON_KEYTCHCLKDIV_KEN,
	.set_rate	= set_keytchclk_rate,
};
static struct clk clk_adc = {
	.parent		= &clk_xtali,
	.sw_locked	= 1,
	.enable_reg	= EP93XX_SYSCON_KEYTCHCLKDIV,
	.enable_mask	= EP93XX_SYSCON_KEYTCHCLKDIV_TSEN,
	.set_rate	= set_keytchclk_rate,
};
static struct clk clk_spi = {
	.parent		= &clk_xtali,
	.rate		= EP93XX_EXT_CLK_RATE,
@@ -214,6 +221,7 @@ static struct clk_lookup clocks[] = {
	INIT_CK(NULL,			"pll2",		&clk_pll2),
	INIT_CK("ohci-platform",	NULL,		&clk_usb_host),
	INIT_CK("ep93xx-keypad",	NULL,		&clk_keypad),
	INIT_CK("ep93xx-adc",		NULL,		&clk_adc),
	INIT_CK("ep93xx-fb",		NULL,		&clk_video),
	INIT_CK("ep93xx-spi.0",		NULL,		&clk_spi),
	INIT_CK("ep93xx-i2s",		"mclk",		&clk_i2s_mclk),
+24 −0
Original line number Diff line number Diff line
@@ -820,6 +820,30 @@ void ep93xx_ide_release_gpio(struct platform_device *pdev)
}
EXPORT_SYMBOL(ep93xx_ide_release_gpio);

/*************************************************************************
 * EP93xx ADC
 *************************************************************************/
static struct resource ep93xx_adc_resources[] = {
	DEFINE_RES_MEM(EP93XX_ADC_PHYS_BASE, 0x28),
	DEFINE_RES_IRQ(IRQ_EP93XX_TOUCH),
};

static struct platform_device ep93xx_adc_device = {
	.name		= "ep93xx-adc",
	.id		= -1,
	.num_resources	= ARRAY_SIZE(ep93xx_adc_resources),
	.resource	= ep93xx_adc_resources,
};

void __init ep93xx_register_adc(void)
{
	/* Power up ADC, deactivate Touch Screen Controller */
	ep93xx_devcfg_set_clear(EP93XX_SYSCON_DEVCFG_TIN,
				EP93XX_SYSCON_DEVCFG_ADCPD);

	platform_device_register(&ep93xx_adc_device);
}

/*************************************************************************
 * EP93xx Security peripheral
 *************************************************************************/
+1 −0
Original line number Diff line number Diff line
@@ -245,6 +245,7 @@ static void __init edb93xx_init_machine(void)
	edb93xx_register_pwm();
	edb93xx_register_fb();
	edb93xx_register_ide();
	ep93xx_register_adc();
}


+1 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ int ep93xx_i2s_acquire(void);
void ep93xx_i2s_release(void);
void ep93xx_register_ac97(void);
void ep93xx_register_ide(void);
void ep93xx_register_adc(void);
int ep93xx_ide_acquire_gpio(struct platform_device *pdev);
void ep93xx_ide_release_gpio(struct platform_device *pdev);

+1 −0
Original line number Diff line number Diff line
@@ -95,6 +95,7 @@
#define EP93XX_KEY_MATRIX_PHYS_BASE	EP93XX_APB_PHYS(0x000f0000)
#define EP93XX_KEY_MATRIX_BASE		EP93XX_APB_IOMEM(0x000f0000)

#define EP93XX_ADC_PHYS_BASE		EP93XX_APB_PHYS(0x00100000)
#define EP93XX_ADC_BASE			EP93XX_APB_IOMEM(0x00100000)
#define EP93XX_TOUCHSCREEN_BASE		EP93XX_APB_IOMEM(0x00100000)