Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ar71xx: add device registration code for the AR934x NAND flash contro…
…ller git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33387 3c298f89-4303-0410-b956-a3cf2f4a3e73
- Loading branch information
juhosg
committed
Sep 13, 2012
1 parent
8788b41
commit 39bdbbc
Showing
7 changed files
with
141 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
/* | ||
* Atheros AR934X SoCs built-in NAND flash controller support | ||
* | ||
* Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org> | ||
* | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License version 2 as published | ||
* by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/kernel.h> | ||
#include <linux/delay.h> | ||
#include <linux/init.h> | ||
#include <linux/irq.h> | ||
#include <linux/dma-mapping.h> | ||
#include <linux/etherdevice.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/platform/ar934x_nfc.h> | ||
|
||
#include <asm/mach-ath79/ath79.h> | ||
#include <asm/mach-ath79/ar71xx_regs.h> | ||
|
||
#include "dev-nfc.h" | ||
|
||
static struct resource ath79_nfc_resources[2]; | ||
static u64 ar934x_nfc_dmamask = DMA_BIT_MASK(32); | ||
static struct ar934x_nfc_platform_data ath79_nfc_data; | ||
|
||
static struct platform_device ath79_nfc_device = { | ||
.name = AR934X_NFC_DRIVER_NAME, | ||
.id = -1, | ||
.resource = ath79_nfc_resources, | ||
.num_resources = ARRAY_SIZE(ath79_nfc_resources), | ||
.dev = { | ||
.dma_mask = &ar934x_nfc_dmamask, | ||
.coherent_dma_mask = DMA_BIT_MASK(32), | ||
.platform_data = &ath79_nfc_data, | ||
}, | ||
}; | ||
|
||
static void ar934x_nfc_hw_reset(bool active) | ||
{ | ||
if (active) { | ||
ath79_device_reset_set(AR934X_RESET_NANDF); | ||
udelay(100); | ||
|
||
ath79_device_reset_set(AR934X_RESET_ETH_SWITCH_ANALOG); | ||
udelay(250); | ||
} else { | ||
ath79_device_reset_clear(AR934X_RESET_ETH_SWITCH_ANALOG); | ||
udelay(250); | ||
|
||
ath79_device_reset_clear(AR934X_RESET_NANDF); | ||
udelay(100); | ||
} | ||
} | ||
|
||
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; | ||
|
||
platform_device_register(&ath79_nfc_device); | ||
} | ||
|
||
void __init ath79_nfc_set_select_chip(void (*f)(int chip_no)) | ||
{ | ||
ath79_nfc_data.select_chip = f; | ||
} | ||
|
||
void __init ath79_nfc_set_scan_fixup(int (*f)(struct mtd_info *mtd)) | ||
{ | ||
ath79_nfc_data.scan_fixup = f; | ||
} | ||
|
||
void __init ath79_nfc_set_parts(struct mtd_partition *parts, int nr_parts) | ||
{ | ||
ath79_nfc_data.parts = parts; | ||
ath79_nfc_data.nr_parts = nr_parts; | ||
} | ||
|
||
void __init ath79_register_nfc(void) | ||
{ | ||
if (soc_is_ar934x()) | ||
ar934x_nfc_setup(); | ||
else | ||
BUG(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
/* | ||
* Atheros AR934X SoCs built-in NAND Flash Controller support | ||
* | ||
* Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org> | ||
* | ||
* This program is free software; you can redistribute it and/or modify it | ||
* under the terms of the GNU General Public License version 2 as published | ||
* by the Free Software Foundation. | ||
*/ | ||
|
||
#ifndef _ATH79_DEV_NFC_H | ||
#define _ATH79_DEV_NFC_H | ||
|
||
#ifdef CONFIG_ATH79_DEV_NFC | ||
void ath79_nfc_set_parts(struct mtd_partition *parts, int nr_parts); | ||
void ath79_nfc_set_select_chip(void (*f)(int chip_no)); | ||
void ath79_nfc_set_scan_fixup(int (*f)(struct mtd_info *mtd)); | ||
void ath79_register_nfc(void); | ||
#else | ||
static inline void ath79_nfc_set_parts(struct mtd_partition *parts, | ||
int nr_parts) {} | ||
static inline void ath79_nfc_set_select_chip(void (*f)(int chip_no)) {} | ||
static inline void ath79_nfc_set_scan_fixup(int (*f)(struct mtd_info *mtd)) {} | ||
static inline void ath79_register_nfc(void) {} | ||
#endif | ||
|
||
#endif /* _ATH79_DEV_NFC_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters