1 /* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ 2 3 /* 4 * Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd 5 */ 6 7 #ifndef __RK_NAND_BASE_H 8 #define __RK_NAND_BASE_H 9 10 struct rk_nandc_info { 11 int id; 12 void __iomem *reg_base; 13 int irq; 14 int clk_rate; 15 struct clk *clk; /* flash clk*/ 16 struct clk *hclk; /* nandc clk*/ 17 struct clk *gclk; /* flash clk gate*/ 18 }; 19 20 void *ftl_malloc(int size); 21 void ftl_free(void *buf); 22 char rknand_get_sn(char *pbuf); 23 char rknand_get_vendor0(char *pbuf); 24 char *rknand_get_idb_data(void); 25 int rknand_get_clk_rate(int nandc_id); 26 unsigned long rknand_dma_flush_dcache(unsigned long ptr, int size, int dir); 27 unsigned long rknand_dma_map_single(unsigned long ptr, int size, int dir); 28 void rknand_dma_unmap_single(unsigned long ptr, int size, int dir); 29 int rknand_flash_cs_init(int id); 30 int rknand_get_reg_addr(unsigned long *p_nandc0, unsigned long *p_nandc1); 31 int rknand_get_boot_media(void); 32 unsigned long rk_copy_from_user(void *to, const void __user *from, 33 unsigned long n); 34 unsigned long rk_copy_to_user(void __user *to, const void *from, 35 unsigned long n); 36 int rknand_sys_storage_init(void); 37 int rknand_vendor_storage_init(void); 38 int rk_nand_schedule_enable_config(int en); 39 void rk_nandc_xfer_irq_flag_init(void *nandc_reg); 40 void rk_nandc_rb_irq_flag_init(void *nandc_reg); 41 void wait_for_nandc_xfer_completed(void *nandc_reg); 42 void wait_for_nand_flash_ready(void *nandc_reg); 43 int rk_nandc_irq_init(void); 44 int rk_nandc_irq_deinit(void); 45 void rknand_dev_cache_flush(void); 46 #endif 47