ar71xx: allow to register the NAND flash controller on the QCA955x
Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 34945
This commit is contained in:
parent
2c77e5d7b3
commit
66efec6783
1 changed files with 44 additions and 8 deletions
|
@ -38,6 +38,22 @@ static struct platform_device ath79_nfc_device = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void __init ath79_nfc_init_resource(struct resource res[2],
|
||||||
|
unsigned long base,
|
||||||
|
unsigned long size,
|
||||||
|
int irq)
|
||||||
|
{
|
||||||
|
memset(res, 0, sizeof(res));
|
||||||
|
|
||||||
|
res[0].flags = IORESOURCE_MEM;
|
||||||
|
res[0].start = base;
|
||||||
|
res[0].end = base + size - 1;
|
||||||
|
|
||||||
|
res[1].flags = IORESOURCE_IRQ;
|
||||||
|
res[1].start = irq;
|
||||||
|
res[1].end = irq;
|
||||||
|
}
|
||||||
|
|
||||||
static void ar934x_nfc_hw_reset(bool active)
|
static void ar934x_nfc_hw_reset(bool active)
|
||||||
{
|
{
|
||||||
if (active) {
|
if (active) {
|
||||||
|
@ -57,16 +73,34 @@ static void ar934x_nfc_hw_reset(bool active)
|
||||||
|
|
||||||
static void ar934x_nfc_setup(void)
|
static void ar934x_nfc_setup(void)
|
||||||
{
|
{
|
||||||
ath79_nfc_resources[0].start = AR934X_NFC_BASE;
|
|
||||||
ath79_nfc_resources[0].end = AR934X_NFC_BASE + AR934X_NFC_SIZE - 1;
|
|
||||||
ath79_nfc_resources[0].flags = IORESOURCE_MEM;
|
|
||||||
|
|
||||||
ath79_nfc_resources[1].start = ATH79_MISC_IRQ(21);
|
|
||||||
ath79_nfc_resources[1].end = ATH79_MISC_IRQ(21);
|
|
||||||
ath79_nfc_resources[1].flags = IORESOURCE_IRQ;
|
|
||||||
|
|
||||||
ath79_nfc_data.hw_reset = ar934x_nfc_hw_reset;
|
ath79_nfc_data.hw_reset = ar934x_nfc_hw_reset;
|
||||||
|
|
||||||
|
ath79_nfc_init_resource(ath79_nfc_resources,
|
||||||
|
AR934X_NFC_BASE, AR934X_NFC_SIZE,
|
||||||
|
ATH79_MISC_IRQ(21));
|
||||||
|
|
||||||
|
platform_device_register(&ath79_nfc_device);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void qca955x_nfc_hw_reset(bool active)
|
||||||
|
{
|
||||||
|
if (active) {
|
||||||
|
ath79_device_reset_set(QCA955X_RESET_NANDF);
|
||||||
|
udelay(250);
|
||||||
|
} else {
|
||||||
|
ath79_device_reset_clear(QCA955X_RESET_NANDF);
|
||||||
|
udelay(100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void qca955x_nfc_setup(void)
|
||||||
|
{
|
||||||
|
ath79_nfc_data.hw_reset = qca955x_nfc_hw_reset;
|
||||||
|
|
||||||
|
ath79_nfc_init_resource(ath79_nfc_resources,
|
||||||
|
QCA955X_NFC_BASE, QCA955X_NFC_SIZE,
|
||||||
|
ATH79_MISC_IRQ(21));
|
||||||
|
|
||||||
platform_device_register(&ath79_nfc_device);
|
platform_device_register(&ath79_nfc_device);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,6 +129,8 @@ void __init ath79_register_nfc(void)
|
||||||
{
|
{
|
||||||
if (soc_is_ar934x())
|
if (soc_is_ar934x())
|
||||||
ar934x_nfc_setup();
|
ar934x_nfc_setup();
|
||||||
|
else if (soc_is_qca955x())
|
||||||
|
qca955x_nfc_setup();
|
||||||
else
|
else
|
||||||
BUG();
|
BUG();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue