From 3849649f019676d84f8804cbe2a697bced137d66 Mon Sep 17 00:00:00 2001 From: Jon Lin Date: Mon, 25 Mar 2019 16:37:42 +0800 Subject: [PATCH] drivers: rkflash: fix REQ ops cmd_flag error Change-Id: I09dea4be626bbe75575ef2de1a9c03277d06a155 Signed-off-by: Jon Lin --- drivers/Kconfig | 2 ++ drivers/Makefile | 1 + drivers/rkflash/rkflash_blk.c | 17 ++++++++--------- drivers/soc/rockchip/Makefile | 1 + 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/drivers/Kconfig b/drivers/Kconfig index 681051a96e67..7a2dd7faafc5 100644 --- a/drivers/Kconfig +++ b/drivers/Kconfig @@ -220,4 +220,6 @@ source "drivers/siox/Kconfig" source "drivers/slimbus/Kconfig" source "drivers/energy_model/Kconfig" + +source "drivers/rkflash/Kconfig" endmenu diff --git a/drivers/Makefile b/drivers/Makefile index 1e847e29661c..25bc26f9fb79 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -188,3 +188,4 @@ obj-$(CONFIG_MULTIPLEXER) += mux/ obj-$(CONFIG_UNISYS_VISORBUS) += visorbus/ obj-$(CONFIG_SIOX) += siox/ obj-$(CONFIG_GNSS) += gnss/ +obj-$(CONFIG_RK_FLASH) += rkflash/ diff --git a/drivers/rkflash/rkflash_blk.c b/drivers/rkflash/rkflash_blk.c index c24d032a2b58..a38089c1a5d0 100644 --- a/drivers/rkflash/rkflash_blk.c +++ b/drivers/rkflash/rkflash_blk.c @@ -384,8 +384,8 @@ static int rkflash_blktrans_thread(void *arg) rq_len = 0; buf = 0; res = 0; - - if (req->cmd_flags & REQ_DISCARD) { + rw_flag = req_op(req); + if (rw_flag == REQ_OP_DISCARD) { spin_unlock_irq(rq->queue_lock); if (rkflash_blk_discard(blk_rq_pos(req) + dev->off_size, totle_nsect)) @@ -394,14 +394,11 @@ static int rkflash_blktrans_thread(void *arg) if (!__blk_end_request_cur(req, res)) req = NULL; continue; - } else if (req->cmd_flags & REQ_FLUSH) { + } else if (rw_flag == REQ_OP_FLUSH) { if (!__blk_end_request_cur(req, res)) req = NULL; continue; - } - - rw_flag = req->cmd_flags & REQ_WRITE; - if (rw_flag == READ && mtd_read_temp_buffer) { + } else if (rw_flag == REQ_OP_READ && mtd_read_temp_buffer) { buf = mtd_read_temp_buffer; req_check_buffer_align(req, &buf); spin_unlock_irq(rq->queue_lock); @@ -423,7 +420,7 @@ static int rkflash_blktrans_thread(void *arg) p += bvec.bv_len; } } - } else { + } else if (rw_flag == REQ_OP_WRITE){ rq_for_each_segment(bvec, req, rq_iter) { if ((page_address(bvec.bv_page) + bvec.bv_offset) @@ -456,6 +453,8 @@ static int rkflash_blktrans_thread(void *arg) totle_nsect); spin_lock_irq(rq->queue_lock); } + } else { + pr_err("%s error req flag\n", __func__); } __blk_end_request_all(req, res); req = NULL; @@ -654,7 +653,7 @@ static int rkflash_blk_register(struct flash_blk_ops *blk_ops) blk_queue_max_hw_sectors(blk_ops->rq, MTD_RW_SECTORS); blk_queue_max_segments(blk_ops->rq, MTD_RW_SECTORS); - queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, blk_ops->rq); + blk_queue_flag_set(QUEUE_FLAG_DISCARD, blk_ops->rq); blk_queue_max_discard_sectors(blk_ops->rq, UINT_MAX >> 9); blk_ops->rq->queuedata = blk_ops; diff --git a/drivers/soc/rockchip/Makefile b/drivers/soc/rockchip/Makefile index aae4e1fe3738..0b8b4b89ee8c 100644 --- a/drivers/soc/rockchip/Makefile +++ b/drivers/soc/rockchip/Makefile @@ -12,3 +12,4 @@ obj-$(CONFIG_ROCKCHIP_SUSPEND_MODE) += rockchip_pm_config.o obj-y += rk_vendor_storage.o obj-y += rockchip-system-status.o +obj-$(CONFIG_RK_FLASH) += flash_vendor_storage.o