mtd_nor.c 2.0 KB
Newer Older
1
/*
2 3
 * COPYRIGHT (C) 2011-2021, Real-Thread Information Technology Ltd
 *
4
 * SPDX-License-Identifier: Apache-2.0
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
 *
 * Change Logs:
 * Date           Author       Notes
 * 2012-5-30     Bernard      the first version
 */

#include <drivers/mtd_nor.h>

#ifdef RT_USING_MTD_NOR

/**
 * RT-Thread Generic Device Interface
 */
static rt_err_t _mtd_init(rt_device_t dev)
{
    return RT_EOK;
}

static rt_err_t _mtd_open(rt_device_t dev, rt_uint16_t oflag)
{
    return RT_EOK;
}

static rt_err_t _mtd_close(rt_device_t dev)
{
    return RT_EOK;
}

static rt_size_t _mtd_read(rt_device_t dev,
                           rt_off_t    pos,
                           void       *buffer,
                           rt_size_t   size)
{
    return size;
}

static rt_size_t _mtd_write(rt_device_t dev,
                            rt_off_t    pos,
                            const void *buffer,
                            rt_size_t   size)
{
    return size;
}

B
bernard 已提交
49
static rt_err_t _mtd_control(rt_device_t dev, int cmd, void *args)
50 51 52 53
{
    return RT_EOK;
}

B
Bernard Xiong 已提交
54
#ifdef RT_USING_DEVICE_OPS
55
const static struct rt_device_ops mtd_nor_ops =
B
Bernard Xiong 已提交
56 57 58 59 60 61 62 63 64 65
{
    _mtd_init,
    _mtd_open,
    _mtd_close,
    _mtd_read,
    _mtd_write,
    _mtd_control
};
#endif

66 67 68 69 70 71 72 73 74 75
rt_err_t rt_mtd_nor_register_device(const char               *name,
                                    struct rt_mtd_nor_device *device)
{
    rt_device_t dev;

    dev = RT_DEVICE(device);
    RT_ASSERT(dev != RT_NULL);

    /* set device class and generic device interface */
    dev->type        = RT_Device_Class_MTD;
B
Bernard Xiong 已提交
76 77 78
#ifdef RT_USING_DEVICE_OPS
    dev->ops         = &mtd_nor_ops;
#else
79 80 81 82 83 84
    dev->init        = _mtd_init;
    dev->open        = _mtd_open;
    dev->read        = _mtd_read;
    dev->write       = _mtd_write;
    dev->close       = _mtd_close;
    dev->control     = _mtd_control;
B
Bernard Xiong 已提交
85
#endif
86 87 88 89 90 91 92 93 94

    dev->rx_indicate = RT_NULL;
    dev->tx_complete = RT_NULL;

    /* register to RT-Thread device system */
    return rt_device_register(dev, name, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_STANDALONE);
}

#endif