These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / staging / mt29f_spinand / mt29f_spinand.c
index 7285c64..47bb56f 100644 (file)
@@ -145,7 +145,7 @@ static int spinand_read_id(struct spi_device *spi_nand, u8 *id)
  *    Once the status turns to be ready, the other status bits also are
  *    valid status bits.
  */
-static int spinand_read_status(struct spi_device *spi_nand, uint8_t *status)
+static int spinand_read_status(struct spi_device *spi_nand, u8 *status)
 {
        struct spinand_cmd cmd = {0};
        int ret;
@@ -186,6 +186,7 @@ static int wait_till_ready(struct spi_device *spi_nand)
 
        return -1;
 }
+
 /**
  * spinand_get_otp- send command 0xf to read the SPI Nand OTP register
  * Description:
@@ -321,7 +322,7 @@ static int spinand_read_page_to_cache(struct spi_device *spi_nand, u16 page_id)
  *   No tRd delay.
  */
 static int spinand_read_from_cache(struct spi_device *spi_nand, u16 page_id,
-               u16 byte_id, u16 len, u8 *rbuf)
+                                  u16 byte_id, u16 len, u8 *rbuf)
 {
        struct spinand_cmd cmd = {0};
        u16 column;
@@ -352,7 +353,7 @@ static int spinand_read_from_cache(struct spi_device *spi_nand, u16 page_id,
  *   Poll to read status to wait for tRD time.
  */
 static int spinand_read_page(struct spi_device *spi_nand, u16 page_id,
-               u16 offset, u16 len, u8 *rbuf)
+                            u16 offset, u16 len, u8 *rbuf)
 {
        int ret;
        u8 status = 0;
@@ -374,14 +375,14 @@ static int spinand_read_page(struct spi_device *spi_nand, u16 page_id,
                ret = spinand_read_status(spi_nand, &status);
                if (ret < 0) {
                        dev_err(&spi_nand->dev,
-                                       "err %d read status register\n", ret);
+                               "err %d read status register\n", ret);
                        return ret;
                }
 
                if ((status & STATUS_OIP_MASK) == STATUS_READY) {
                        if ((status & STATUS_ECC_MASK) == STATUS_ECC_ERROR) {
                                dev_err(&spi_nand->dev, "ecc error, page=%d\n",
-                                               page_id);
+                                       page_id);
                                return 0;
                        }
                        break;
@@ -419,7 +420,8 @@ static int spinand_read_page(struct spi_device *spi_nand, u16 page_id,
  *   Since it is writing the data to cache, there is no tPROG time.
  */
 static int spinand_program_data_to_cache(struct spi_device *spi_nand,
-               u16 page_id, u16 byte_id, u16 len, u8 *wbuf)
+                                        u16 page_id, u16 byte_id,
+                                        u16 len, u8 *wbuf)
 {
        struct spinand_cmd cmd = {0};
        u16 column;
@@ -473,11 +475,11 @@ static int spinand_program_execute(struct spi_device *spi_nand, u16 page_id)
  *   Poll to wait for the tPROG time to finish the transaction.
  */
 static int spinand_program_page(struct spi_device *spi_nand,
-               u16 page_id, u16 offset, u16 len, u8 *buf)
+                               u16 page_id, u16 offset, u16 len, u8 *buf)
 {
        int retval;
        u8 status = 0;
-       uint8_t *wbuf;
+       u8 *wbuf;
 #ifdef CONFIG_MTD_SPINAND_ONDIEECC
        unsigned int i, j;
 
@@ -507,7 +509,7 @@ static int spinand_program_page(struct spi_device *spi_nand,
                dev_err(&spi_nand->dev, "wait timedout!!!\n");
 
        retval = spinand_program_data_to_cache(spi_nand, page_id,
-                       offset, len, wbuf);
+                                              offset, len, wbuf);
        if (retval < 0)
                return retval;
        retval = spinand_program_execute(spi_nand, page_id);
@@ -517,8 +519,7 @@ static int spinand_program_page(struct spi_device *spi_nand,
                retval = spinand_read_status(spi_nand, &status);
                if (retval < 0) {
                        dev_err(&spi_nand->dev,
-                                       "error %d reading status register\n",
-                                       retval);
+                               "error %d reading status register\n", retval);
                        return retval;
                }
 
@@ -593,8 +594,7 @@ static int spinand_erase_block(struct spi_device *spi_nand, u16 block_id)
                retval = spinand_read_status(spi_nand, &status);
                if (retval < 0) {
                        dev_err(&spi_nand->dev,
-                                       "error %d reading status register\n",
-                                       (int) retval);
+                               "error %d reading status register\n", retval);
                        return retval;
                }
 
@@ -612,9 +612,11 @@ static int spinand_erase_block(struct spi_device *spi_nand, u16 block_id)
 
 #ifdef CONFIG_MTD_SPINAND_ONDIEECC
 static int spinand_write_page_hwecc(struct mtd_info *mtd,
-               struct nand_chip *chip, const uint8_t *buf, int oob_required)
+                                   struct nand_chip *chip,
+                                   const u8 *buf, int oob_required,
+                                   int page)
 {
-       const uint8_t *p = buf;
+       const u8 *p = buf;
        int eccsize = chip->ecc.size;
        int eccsteps = chip->ecc.steps;
 
@@ -624,11 +626,11 @@ static int spinand_write_page_hwecc(struct mtd_info *mtd,
 }
 
 static int spinand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
-               uint8_t *buf, int oob_required, int page)
+                                  u8 *buf, int oob_required, int page)
 {
        int retval;
        u8 status;
-       uint8_t *p = buf;
+       u8 *p = buf;
        int eccsize = chip->ecc.size;
        int eccsteps = chip->ecc.steps;
        struct spinand_info *info = (struct spinand_info *)chip->priv;
@@ -643,8 +645,7 @@ static int spinand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
                retval = spinand_read_status(info->spi, &status);
                if (retval < 0) {
                        dev_err(&mtd->dev,
-                                       "error %d reading status register\n",
-                                       retval);
+                               "error %d reading status register\n", retval);
                        return retval;
                }
 
@@ -659,7 +660,6 @@ static int spinand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
                }
        }
        return 0;
-
 }
 #endif
 
@@ -667,7 +667,7 @@ static void spinand_select_chip(struct mtd_info *mtd, int dev)
 {
 }
 
-static uint8_t spinand_read_byte(struct mtd_info *mtd)
+static u8 spinand_read_byte(struct mtd_info *mtd)
 {
        struct spinand_state *state = mtd_to_state(mtd);
        u8 data;
@@ -677,7 +677,6 @@ static uint8_t spinand_read_byte(struct mtd_info *mtd)
        return data;
 }
 
-
 static int spinand_wait(struct mtd_info *mtd, struct nand_chip *chip)
 {
        struct spinand_info *info = (struct spinand_info *)chip->priv;
@@ -695,8 +694,7 @@ static int spinand_wait(struct mtd_info *mtd, struct nand_chip *chip)
                retval = spinand_read_status(info->spi, &status);
                if (retval < 0) {
                        dev_err(&mtd->dev,
-                                       "error %d reading status register\n",
-                                       retval);
+                               "error %d reading status register\n", retval);
                        return retval;
                }
 
@@ -708,16 +706,15 @@ static int spinand_wait(struct mtd_info *mtd, struct nand_chip *chip)
        return 0;
 }
 
-static void spinand_write_buf(struct mtd_info *mtd, const uint8_t *buf, int len)
+static void spinand_write_buf(struct mtd_info *mtd, const u8 *buf, int len)
 {
-
        struct spinand_state *state = mtd_to_state(mtd);
 
        memcpy(state->buf + state->buf_ptr, buf, len);
        state->buf_ptr += len;
 }
 
-static void spinand_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
+static void spinand_read_buf(struct mtd_info *mtd, u8 *buf, int len)
 {
        struct spinand_state *state = mtd_to_state(mtd);
 
@@ -738,14 +735,14 @@ static void spinand_reset(struct spi_device *spi_nand)
                pr_info("spinand reset failed!\n");
 
        /* elapse 1ms before issuing any other command */
-       udelay(1000);
+       usleep_range(1000, 2000);
 
        if (wait_till_ready(spi_nand))
                dev_err(&spi_nand->dev, "wait timedout!\n");
 }
 
 static void spinand_cmdfunc(struct mtd_info *mtd, unsigned int command,
-               int column, int page)
+                           int column, int page)
 {
        struct nand_chip *chip = (struct nand_chip *)mtd->priv;
        struct spinand_info *info = (struct spinand_info *)chip->priv;
@@ -791,7 +788,7 @@ static void spinand_cmdfunc(struct mtd_info *mtd, unsigned int command,
        /* PAGEPROG reuses all of the setup from SEQIN and adds the length */
        case NAND_CMD_PAGEPROG:
                spinand_program_page(info->spi, state->row, state->col,
-                               state->buf_ptr, state->buf);
+                                    state->buf_ptr, state->buf);
                break;
        case NAND_CMD_STATUS:
                spinand_get_otp(info->spi, state->buf);
@@ -804,7 +801,7 @@ static void spinand_cmdfunc(struct mtd_info *mtd, unsigned int command,
                if (wait_till_ready(info->spi))
                        dev_err(&info->spi->dev, "WAIT timedout!!!\n");
                /* a minimum of 250us must elapse before issuing RESET cmd*/
-               udelay(250);
+               usleep_range(250, 1000);
                spinand_reset(info->spi);
                break;
        default:
@@ -839,6 +836,7 @@ static int spinand_lock_block(struct spi_device *spi_nand, u8 lock)
 
        return ret;
 }
+
 /*
  * spinand_probe - [spinand Interface]
  * @spi_nand: registered device driver.
@@ -855,7 +853,7 @@ static int spinand_probe(struct spi_device *spi_nand)
        struct mtd_part_parser_data ppdata;
 
        info  = devm_kzalloc(&spi_nand->dev, sizeof(struct spinand_info),
-                       GFP_KERNEL);
+                            GFP_KERNEL);
        if (!info)
                return -ENOMEM;
 
@@ -864,7 +862,7 @@ static int spinand_probe(struct spi_device *spi_nand)
        spinand_lock_block(spi_nand, BL_ALL_UNLOCKED);
 
        state = devm_kzalloc(&spi_nand->dev, sizeof(struct spinand_state),
-                       GFP_KERNEL);
+                            GFP_KERNEL);
        if (!state)
                return -ENOMEM;
 
@@ -875,7 +873,7 @@ static int spinand_probe(struct spi_device *spi_nand)
                return -ENOMEM;
 
        chip = devm_kzalloc(&spi_nand->dev, sizeof(struct nand_chip),
-                       GFP_KERNEL);
+                           GFP_KERNEL);
        if (!chip)
                return -ENOMEM;
 
@@ -912,8 +910,7 @@ static int spinand_probe(struct spi_device *spi_nand)
        dev_set_drvdata(&spi_nand->dev, mtd);
 
        mtd->priv = chip;
-       mtd->name = dev_name(&spi_nand->dev);
-       mtd->owner = THIS_MODULE;
+       mtd->dev.parent = &spi_nand->dev;
        mtd->oobsize = 64;
 
        if (nand_scan(mtd, 1))
@@ -941,6 +938,7 @@ static const struct of_device_id spinand_dt[] = {
        { .compatible = "spinand,mt29f", },
        {}
 };
+MODULE_DEVICE_TABLE(of, spinand_dt);
 
 /*
  * Device name structure description
@@ -948,8 +946,6 @@ static const struct of_device_id spinand_dt[] = {
 static struct spi_driver spinand_driver = {
        .driver = {
                .name           = "mt29f",
-               .bus            = &spi_bus_type,
-               .owner          = THIS_MODULE,
                .of_match_table = spinand_dt,
        },
        .probe          = spinand_probe,