mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 08:40:53 +07:00
ep93xx: IDE driver platform support code
Add IDE driver platform support code for ep93xx. Signed-off-by: Rafal Prylowski <prylowski@metasoft.pl> Acked-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Ryan Mallon <rmallon@gmail.com>
This commit is contained in:
parent
f8f5701bda
commit
eb774a0901
@ -797,6 +797,102 @@ static struct platform_device ep93xx_wdt_device = {
|
||||
.resource = ep93xx_wdt_resources,
|
||||
};
|
||||
|
||||
/*************************************************************************
|
||||
* EP93xx IDE
|
||||
*************************************************************************/
|
||||
static struct resource ep93xx_ide_resources[] = {
|
||||
DEFINE_RES_MEM(EP93XX_IDE_PHYS_BASE, 0x38),
|
||||
DEFINE_RES_IRQ(IRQ_EP93XX_EXT3),
|
||||
};
|
||||
|
||||
static struct platform_device ep93xx_ide_device = {
|
||||
.name = "ep93xx-ide",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.dma_mask = &ep93xx_ide_device.dev.coherent_dma_mask,
|
||||
.coherent_dma_mask = DMA_BIT_MASK(32),
|
||||
},
|
||||
.num_resources = ARRAY_SIZE(ep93xx_ide_resources),
|
||||
.resource = ep93xx_ide_resources,
|
||||
};
|
||||
|
||||
void __init ep93xx_register_ide(void)
|
||||
{
|
||||
platform_device_register(&ep93xx_ide_device);
|
||||
}
|
||||
|
||||
int ep93xx_ide_acquire_gpio(struct platform_device *pdev)
|
||||
{
|
||||
int err;
|
||||
int i;
|
||||
|
||||
err = gpio_request(EP93XX_GPIO_LINE_EGPIO2, dev_name(&pdev->dev));
|
||||
if (err)
|
||||
return err;
|
||||
err = gpio_request(EP93XX_GPIO_LINE_EGPIO15, dev_name(&pdev->dev));
|
||||
if (err)
|
||||
goto fail_egpio15;
|
||||
for (i = 2; i < 8; i++) {
|
||||
err = gpio_request(EP93XX_GPIO_LINE_E(i), dev_name(&pdev->dev));
|
||||
if (err)
|
||||
goto fail_gpio_e;
|
||||
}
|
||||
for (i = 4; i < 8; i++) {
|
||||
err = gpio_request(EP93XX_GPIO_LINE_G(i), dev_name(&pdev->dev));
|
||||
if (err)
|
||||
goto fail_gpio_g;
|
||||
}
|
||||
for (i = 0; i < 8; i++) {
|
||||
err = gpio_request(EP93XX_GPIO_LINE_H(i), dev_name(&pdev->dev));
|
||||
if (err)
|
||||
goto fail_gpio_h;
|
||||
}
|
||||
|
||||
/* GPIO ports E[7:2], G[7:4] and H used by IDE */
|
||||
ep93xx_devcfg_clear_bits(EP93XX_SYSCON_DEVCFG_EONIDE |
|
||||
EP93XX_SYSCON_DEVCFG_GONIDE |
|
||||
EP93XX_SYSCON_DEVCFG_HONIDE);
|
||||
return 0;
|
||||
|
||||
fail_gpio_h:
|
||||
for (--i; i >= 0; --i)
|
||||
gpio_free(EP93XX_GPIO_LINE_H(i));
|
||||
i = 8;
|
||||
fail_gpio_g:
|
||||
for (--i; i >= 4; --i)
|
||||
gpio_free(EP93XX_GPIO_LINE_G(i));
|
||||
i = 8;
|
||||
fail_gpio_e:
|
||||
for (--i; i >= 2; --i)
|
||||
gpio_free(EP93XX_GPIO_LINE_E(i));
|
||||
gpio_free(EP93XX_GPIO_LINE_EGPIO15);
|
||||
fail_egpio15:
|
||||
gpio_free(EP93XX_GPIO_LINE_EGPIO2);
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL(ep93xx_ide_acquire_gpio);
|
||||
|
||||
void ep93xx_ide_release_gpio(struct platform_device *pdev)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 2; i < 8; i++)
|
||||
gpio_free(EP93XX_GPIO_LINE_E(i));
|
||||
for (i = 4; i < 8; i++)
|
||||
gpio_free(EP93XX_GPIO_LINE_G(i));
|
||||
for (i = 0; i < 8; i++)
|
||||
gpio_free(EP93XX_GPIO_LINE_H(i));
|
||||
gpio_free(EP93XX_GPIO_LINE_EGPIO15);
|
||||
gpio_free(EP93XX_GPIO_LINE_EGPIO2);
|
||||
|
||||
|
||||
/* GPIO ports E[7:2], G[7:4] and H used by GPIO */
|
||||
ep93xx_devcfg_set_bits(EP93XX_SYSCON_DEVCFG_EONIDE |
|
||||
EP93XX_SYSCON_DEVCFG_GONIDE |
|
||||
EP93XX_SYSCON_DEVCFG_HONIDE);
|
||||
}
|
||||
EXPORT_SYMBOL(ep93xx_ide_release_gpio);
|
||||
|
||||
void __init ep93xx_init_devices(void)
|
||||
{
|
||||
/* Disallow access to MaverickCrunch initially */
|
||||
|
@ -48,6 +48,9 @@ void ep93xx_register_i2s(void);
|
||||
int ep93xx_i2s_acquire(void);
|
||||
void ep93xx_i2s_release(void);
|
||||
void ep93xx_register_ac97(void);
|
||||
void ep93xx_register_ide(void);
|
||||
int ep93xx_ide_acquire_gpio(struct platform_device *pdev);
|
||||
void ep93xx_ide_release_gpio(struct platform_device *pdev);
|
||||
|
||||
void ep93xx_init_devices(void);
|
||||
extern struct sys_timer ep93xx_timer;
|
||||
|
@ -69,6 +69,7 @@
|
||||
|
||||
#define EP93XX_BOOT_ROM_BASE EP93XX_AHB_IOMEM(0x00090000)
|
||||
|
||||
#define EP93XX_IDE_PHYS_BASE EP93XX_AHB_PHYS(0x000a0000)
|
||||
#define EP93XX_IDE_BASE EP93XX_AHB_IOMEM(0x000a0000)
|
||||
|
||||
#define EP93XX_VIC1_BASE EP93XX_AHB_IOMEM(0x000b0000)
|
||||
|
Loading…
Reference in New Issue
Block a user