aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/nand/s3c2410.c
diff options
context:
space:
mode:
authorBen Dooks <ben-linux@fluff.org>2009-05-30 12:18:15 -0400
committerBen Dooks <ben-linux@fluff.org>2009-05-30 12:18:15 -0400
commit3db72151aa4c246f8bdb8b3501972e1f1b32fe0d (patch)
treecd6cc612ff60b906e3d127173e6be2a8c650b790 /drivers/mtd/nand/s3c2410.c
parentec0482e6cfbd460bc69a9073ffbef4c2f3422fdf (diff)
[MTD] [NAND] S3C2410: Basic kerneldoc comment updates
Move to using kerneldoc style commenting in the driver Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Diffstat (limited to 'drivers/mtd/nand/s3c2410.c')
-rw-r--r--drivers/mtd/nand/s3c2410.c89
1 files changed, 78 insertions, 11 deletions
diff --git a/drivers/mtd/nand/s3c2410.c b/drivers/mtd/nand/s3c2410.c
index b7f0740d842f..a2d1c70c5227 100644
--- a/drivers/mtd/nand/s3c2410.c
+++ b/drivers/mtd/nand/s3c2410.c
@@ -74,6 +74,14 @@ static struct nand_ecclayout nand_hw_eccoob = {
74 74
75struct s3c2410_nand_info; 75struct s3c2410_nand_info;
76 76
77/**
78 * struct s3c2410_nand_mtd - driver MTD structure
79 * @mtd: The MTD instance to pass to the MTD layer.
80 * @chip: The NAND chip information.
81 * @set: The platform information supplied for this set of NAND chips.
82 * @info: Link back to the hardware information.
83 * @scan_res: The result from calling nand_scan_ident().
84*/
77struct s3c2410_nand_mtd { 85struct s3c2410_nand_mtd {
78 struct mtd_info mtd; 86 struct mtd_info mtd;
79 struct nand_chip chip; 87 struct nand_chip chip;
@@ -90,6 +98,21 @@ enum s3c_cpu_type {
90 98
91/* overview of the s3c2410 nand state */ 99/* overview of the s3c2410 nand state */
92 100
101/**
102 * struct s3c2410_nand_info - NAND controller state.
103 * @mtds: An array of MTD instances on this controoler.
104 * @platform: The platform data for this board.
105 * @device: The platform device we bound to.
106 * @area: The IO area resource that came from request_mem_region().
107 * @clk: The clock resource for this controller.
108 * @regs: The area mapped for the hardware registers described by @area.
109 * @sel_reg: Pointer to the register controlling the NAND selection.
110 * @sel_bit: The bit in @sel_reg to select the NAND chip.
111 * @mtd_count: The number of MTDs created from this controller.
112 * @save_sel: The contents of @sel_reg to be saved over suspend.
113 * @clk_rate: The clock rate from @clk.
114 * @cpu_type: The exact type of this controller.
115 */
93struct s3c2410_nand_info { 116struct s3c2410_nand_info {
94 /* mtd info */ 117 /* mtd info */
95 struct nand_hw_control controller; 118 struct nand_hw_control controller;
@@ -145,6 +168,14 @@ static inline int allow_clk_stop(struct s3c2410_nand_info *info)
145 168
146#define NS_IN_KHZ 1000000 169#define NS_IN_KHZ 1000000
147 170
171/**
172 * s3c_nand_calc_rate - calculate timing data.
173 * @wanted: The cycle time in nanoseconds.
174 * @clk: The clock rate in kHz.
175 * @max: The maximum divider value.
176 *
177 * Calculate the timing value from the given parameters.
178 */
148static int s3c_nand_calc_rate(int wanted, unsigned long clk, int max) 179static int s3c_nand_calc_rate(int wanted, unsigned long clk, int max)
149{ 180{
150 int result; 181 int result;
@@ -169,6 +200,14 @@ static int s3c_nand_calc_rate(int wanted, unsigned long clk, int max)
169 200
170/* controller setup */ 201/* controller setup */
171 202
203/**
204 * s3c2410_nand_setrate - setup controller timing information.
205 * @info: The controller instance.
206 *
207 * Given the information supplied by the platform, calculate and set
208 * the necessary timing registers in the hardware to generate the
209 * necessary timing cycles to the hardware.
210 */
172static int s3c2410_nand_setrate(struct s3c2410_nand_info *info) 211static int s3c2410_nand_setrate(struct s3c2410_nand_info *info)
173{ 212{
174 struct s3c2410_platform_nand *plat = info->platform; 213 struct s3c2410_platform_nand *plat = info->platform;
@@ -245,6 +284,13 @@ static int s3c2410_nand_setrate(struct s3c2410_nand_info *info)
245 return 0; 284 return 0;
246} 285}
247 286
287/**
288 * s3c2410_nand_inithw - basic hardware initialisation
289 * @info: The hardware state.
290 *
291 * Do the basic initialisation of the hardware, using s3c2410_nand_setrate()
292 * to setup the hardware access speeds and set the controller to be enabled.
293*/
248static int s3c2410_nand_inithw(struct s3c2410_nand_info *info) 294static int s3c2410_nand_inithw(struct s3c2410_nand_info *info)
249{ 295{
250 int ret; 296 int ret;
@@ -268,8 +314,19 @@ static int s3c2410_nand_inithw(struct s3c2410_nand_info *info)
268 return 0; 314 return 0;
269} 315}
270 316
271/* select chip */ 317/**
272 318 * s3c2410_nand_select_chip - select the given nand chip
319 * @mtd: The MTD instance for this chip.
320 * @chip: The chip number.
321 *
322 * This is called by the MTD layer to either select a given chip for the
323 * @mtd instance, or to indicate that the access has finished and the
324 * chip can be de-selected.
325 *
326 * The routine ensures that the nFCE line is correctly setup, and any
327 * platform specific selection code is called to route nFCE to the specific
328 * chip.
329 */
273static void s3c2410_nand_select_chip(struct mtd_info *mtd, int chip) 330static void s3c2410_nand_select_chip(struct mtd_info *mtd, int chip)
274{ 331{
275 struct s3c2410_nand_info *info; 332 struct s3c2410_nand_info *info;
@@ -667,11 +724,16 @@ static int s3c2410_nand_add_partition(struct s3c2410_nand_info *info,
667} 724}
668#endif 725#endif
669 726
670/* s3c2410_nand_init_chip 727/**
728 * s3c2410_nand_init_chip - initialise a single instance of an chip
729 * @info: The base NAND controller the chip is on.
730 * @nmtd: The new controller MTD instance to fill in.
731 * @set: The information passed from the board specific platform data.
671 * 732 *
672 * init a single instance of an chip 733 * Initialise the given @nmtd from the information in @info and @set. This
673*/ 734 * readies the structure for use with the MTD layer functions by ensuring
674 735 * all pointers are setup and the necessary control routines selected.
736 */
675static void s3c2410_nand_init_chip(struct s3c2410_nand_info *info, 737static void s3c2410_nand_init_chip(struct s3c2410_nand_info *info,
676 struct s3c2410_nand_mtd *nmtd, 738 struct s3c2410_nand_mtd *nmtd,
677 struct s3c2410_nand_set *set) 739 struct s3c2410_nand_set *set)
@@ -759,12 +821,17 @@ static void s3c2410_nand_init_chip(struct s3c2410_nand_info *info,
759 chip->ecc.mode = NAND_ECC_NONE; 821 chip->ecc.mode = NAND_ECC_NONE;
760} 822}
761 823
762/* s3c2410_nand_update_chip 824/**
825 * s3c2410_nand_update_chip - post probe update
826 * @info: The controller instance.
827 * @nmtd: The driver version of the MTD instance.
763 * 828 *
764 * post-probe chip update, to change any items, such as the 829 * This routine is called after the chip probe has succesfully completed
765 * layout for large page nand 830 * and the relevant per-chip information updated. This call ensure that
766 */ 831 * we update the internal state accordingly.
767 832 *
833 * The internal state is currently limited to the ECC state information.
834*/
768static void s3c2410_nand_update_chip(struct s3c2410_nand_info *info, 835static void s3c2410_nand_update_chip(struct s3c2410_nand_info *info,
769 struct s3c2410_nand_mtd *nmtd) 836 struct s3c2410_nand_mtd *nmtd)
770{ 837{