diff options
Diffstat (limited to 'drivers/mtd/nand/nand_base.c')
-rw-r--r-- | drivers/mtd/nand/nand_base.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index c796d0e4039a..ed49a1d634b0 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c | |||
@@ -1954,7 +1954,9 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from, | |||
1954 | if (!aligned) | 1954 | if (!aligned) |
1955 | use_bufpoi = 1; | 1955 | use_bufpoi = 1; |
1956 | else if (chip->options & NAND_USE_BOUNCE_BUFFER) | 1956 | else if (chip->options & NAND_USE_BOUNCE_BUFFER) |
1957 | use_bufpoi = !virt_addr_valid(buf); | 1957 | use_bufpoi = !virt_addr_valid(buf) || |
1958 | !IS_ALIGNED((unsigned long)buf, | ||
1959 | chip->buf_align); | ||
1958 | else | 1960 | else |
1959 | use_bufpoi = 0; | 1961 | use_bufpoi = 0; |
1960 | 1962 | ||
@@ -2810,7 +2812,9 @@ static int nand_do_write_ops(struct mtd_info *mtd, loff_t to, | |||
2810 | if (part_pagewr) | 2812 | if (part_pagewr) |
2811 | use_bufpoi = 1; | 2813 | use_bufpoi = 1; |
2812 | else if (chip->options & NAND_USE_BOUNCE_BUFFER) | 2814 | else if (chip->options & NAND_USE_BOUNCE_BUFFER) |
2813 | use_bufpoi = !virt_addr_valid(buf); | 2815 | use_bufpoi = !virt_addr_valid(buf) || |
2816 | !IS_ALIGNED((unsigned long)buf, | ||
2817 | chip->buf_align); | ||
2814 | else | 2818 | else |
2815 | use_bufpoi = 0; | 2819 | use_bufpoi = 0; |
2816 | 2820 | ||
@@ -3429,6 +3433,8 @@ static void nand_set_defaults(struct nand_chip *chip) | |||
3429 | nand_hw_control_init(chip->controller); | 3433 | nand_hw_control_init(chip->controller); |
3430 | } | 3434 | } |
3431 | 3435 | ||
3436 | if (!chip->buf_align) | ||
3437 | chip->buf_align = 1; | ||
3432 | } | 3438 | } |
3433 | 3439 | ||
3434 | /* Sanitize ONFI strings so we can safely print them */ | 3440 | /* Sanitize ONFI strings so we can safely print them */ |