LCOV - code coverage report
Current view: top level - drivers/of - of_mtd.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 11 0.0 %
Date: 2014-02-18 Functions: 0 3 0.0 %
Branches: 0 10 0.0 %

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * Copyright 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
       3                 :            :  *
       4                 :            :  * OF helpers for mtd.
       5                 :            :  *
       6                 :            :  * This file is released under the GPLv2
       7                 :            :  *
       8                 :            :  */
       9                 :            : #include <linux/kernel.h>
      10                 :            : #include <linux/of_mtd.h>
      11                 :            : #include <linux/mtd/nand.h>
      12                 :            : #include <linux/export.h>
      13                 :            : 
      14                 :            : /**
      15                 :            :  * It maps 'enum nand_ecc_modes_t' found in include/linux/mtd/nand.h
      16                 :            :  * into the device tree binding of 'nand-ecc', so that MTD
      17                 :            :  * device driver can get nand ecc from device tree.
      18                 :            :  */
      19                 :            : static const char *nand_ecc_modes[] = {
      20                 :            :         [NAND_ECC_NONE]         = "none",
      21                 :            :         [NAND_ECC_SOFT]         = "soft",
      22                 :            :         [NAND_ECC_HW]           = "hw",
      23                 :            :         [NAND_ECC_HW_SYNDROME]  = "hw_syndrome",
      24                 :            :         [NAND_ECC_HW_OOB_FIRST] = "hw_oob_first",
      25                 :            :         [NAND_ECC_SOFT_BCH]     = "soft_bch",
      26                 :            : };
      27                 :            : 
      28                 :            : /**
      29                 :            :  * of_get_nand_ecc_mode - Get nand ecc mode for given device_node
      30                 :            :  * @np: Pointer to the given device_node
      31                 :            :  *
      32                 :            :  * The function gets ecc mode string from property 'nand-ecc-mode',
      33                 :            :  * and return its index in nand_ecc_modes table, or errno in error case.
      34                 :            :  */
      35                 :          0 : int of_get_nand_ecc_mode(struct device_node *np)
      36                 :            : {
      37                 :            :         const char *pm;
      38                 :            :         int err, i;
      39                 :            : 
      40                 :          0 :         err = of_property_read_string(np, "nand-ecc-mode", &pm);
      41         [ #  # ]:          0 :         if (err < 0)
      42                 :            :                 return err;
      43                 :            : 
      44         [ #  # ]:          0 :         for (i = 0; i < ARRAY_SIZE(nand_ecc_modes); i++)
      45         [ #  # ]:          0 :                 if (!strcasecmp(pm, nand_ecc_modes[i]))
      46                 :            :                         return i;
      47                 :            : 
      48                 :            :         return -ENODEV;
      49                 :            : }
      50                 :            : EXPORT_SYMBOL_GPL(of_get_nand_ecc_mode);
      51                 :            : 
      52                 :            : /**
      53                 :            :  * of_get_nand_bus_width - Get nand bus witdh for given device_node
      54                 :            :  * @np: Pointer to the given device_node
      55                 :            :  *
      56                 :            :  * return bus width option, or errno in error case.
      57                 :            :  */
      58                 :          0 : int of_get_nand_bus_width(struct device_node *np)
      59                 :            : {
      60                 :            :         u32 val;
      61                 :            : 
      62         [ #  # ]:          0 :         if (of_property_read_u32(np, "nand-bus-width", &val))
      63                 :            :                 return 8;
      64                 :            : 
      65         [ #  # ]:          0 :         switch(val) {
      66                 :            :         case 8:
      67                 :            :         case 16:
      68                 :          0 :                 return val;
      69                 :            :         default:
      70                 :            :                 return -EIO;
      71                 :            :         }
      72                 :            : }
      73                 :            : EXPORT_SYMBOL_GPL(of_get_nand_bus_width);
      74                 :            : 
      75                 :            : /**
      76                 :            :  * of_get_nand_on_flash_bbt - Get nand on flash bbt for given device_node
      77                 :            :  * @np: Pointer to the given device_node
      78                 :            :  *
      79                 :            :  * return true if present false other wise
      80                 :            :  */
      81                 :          0 : bool of_get_nand_on_flash_bbt(struct device_node *np)
      82                 :            : {
      83                 :          0 :         return of_property_read_bool(np, "nand-on-flash-bbt");
      84                 :            : }
      85                 :            : EXPORT_SYMBOL_GPL(of_get_nand_on_flash_bbt);

Generated by: LCOV version 1.9