1 /* 2 * COPYRIGHT (C) 2018, Real-Thread Information Technology Ltd 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2012-5-30 Bernard the first version 9 */ 10 11 #include <drivers/mtd_nor.h> 12 13 #ifdef RT_USING_MTD_NOR 14 15 /** 16 * RT-Thread Generic Device Interface 17 */ 18 static rt_err_t _mtd_init(rt_device_t dev) 19 { 20 return RT_EOK; 21 } 22 23 static rt_err_t _mtd_open(rt_device_t dev, rt_uint16_t oflag) 24 { 25 return RT_EOK; 26 } 27 28 static rt_err_t _mtd_close(rt_device_t dev) 29 { 30 return RT_EOK; 31 } 32 33 static rt_size_t _mtd_read(rt_device_t dev, 34 rt_off_t pos, 35 void *buffer, 36 rt_size_t size) 37 { 38 return size; 39 } 40 41 static rt_size_t _mtd_write(rt_device_t dev, 42 rt_off_t pos, 43 const void *buffer, 44 rt_size_t size) 45 { 46 return size; 47 } 48 49 static rt_err_t _mtd_control(rt_device_t dev, int cmd, void *args) 50 { 51 return RT_EOK; 52 } 53 54 #ifdef RT_USING_DEVICE_OPS 55 const static struct rt_device_ops mtd_nor_ops = 56 { 57 _mtd_init, 58 _mtd_open, 59 _mtd_close, 60 _mtd_read, 61 _mtd_write, 62 _mtd_control 63 }; 64 #endif 65 66 rt_err_t rt_mtd_nor_register_device(const char *name, 67 struct rt_mtd_nor_device *device) 68 { 69 rt_device_t dev; 70 71 dev = RT_DEVICE(device); 72 RT_ASSERT(dev != RT_NULL); 73 74 /* set device class and generic device interface */ 75 dev->type = RT_Device_Class_MTD; 76 #ifdef RT_USING_DEVICE_OPS 77 dev->ops = &mtd_nor_ops; 78 #else 79 dev->init = _mtd_init; 80 dev->open = _mtd_open; 81 dev->read = _mtd_read; 82 dev->write = _mtd_write; 83 dev->close = _mtd_close; 84 dev->control = _mtd_control; 85 #endif 86 87 dev->rx_indicate = RT_NULL; 88 dev->tx_complete = RT_NULL; 89 90 /* register to RT-Thread device system */ 91 return rt_device_register(dev, name, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_STANDALONE); 92 } 93 94 #endif 95