Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:24:14

0001 /* SPDX-License-Identifier: BSD-2-Clause */
0002 
0003 /**
0004  * @file
0005  *
0006  * @ingroup libblock
0007  *
0008  * @brief Provide SRAM support for the NV Disk
0009  */
0010 
0011 /*
0012  * Copyright 2007 Chris Johns (chrisj@rtems.org)
0013  *
0014  * Redistribution and use in source and binary forms, with or without
0015  * modification, are permitted provided that the following conditions
0016  * are met:
0017  * 1. Redistributions of source code must retain the above copyright
0018  *    notice, this list of conditions and the following disclaimer.
0019  * 2. Redistributions in binary form must reproduce the above copyright
0020  *    notice, this list of conditions and the following disclaimer in the
0021  *    documentation and/or other materials provided with the distribution.
0022  *
0023  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0024  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0025  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0026  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0027  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0028  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0029  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0030  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0031  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0032  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0033  * POSSIBILITY OF SUCH DAMAGE.
0034  */
0035 
0036 #ifdef HAVE_CONFIG_H
0037 #include "config.h"
0038 #endif
0039 
0040 #include <stdio.h>
0041 #include <string.h>
0042 #include <errno.h>
0043 
0044 #include <rtems.h>
0045 
0046 #include <rtems/nvdisk-sram.h>
0047 
0048 #ifndef NVDISK_SRAM_ERROR_TRACE
0049 #define NVDISK_SRAM_ERROR_TRACE (0)
0050 #endif
0051 
0052 static int
0053 rtems_nvdisk_sram_read (uint32_t device RTEMS_UNUSED,
0054                         uint32_t flags RTEMS_UNUSED,
0055                         void*    base,
0056                         uint32_t offset,
0057                         void*    buffer,
0058                         size_t   size)
0059 {
0060   memcpy (buffer, (base + offset), size);
0061   return 0;
0062 }
0063 
0064 static int
0065 rtems_nvdisk_sram_write (uint32_t    device RTEMS_UNUSED,
0066                          uint32_t    flags RTEMS_UNUSED,
0067                          void*       base,
0068                          uint32_t    offset,
0069                          const void* buffer,
0070                          size_t      size)
0071 {
0072   memcpy ((base + offset), buffer, size);
0073   return 0;
0074 }
0075 
0076 static int
0077 rtems_nvdisk_sram_verify (uint32_t    device RTEMS_UNUSED,
0078                           uint32_t    flags RTEMS_UNUSED,
0079                           void*       base,
0080                           uint32_t    offset,
0081                           const void* buffer,
0082                           size_t      size)
0083 {
0084   return memcmp ((base + offset), buffer, size) == 0 ? 0 : EIO;
0085 }
0086 
0087 
0088 const rtems_nvdisk_driver_handlers rtems_nvdisk_sram_handlers =
0089 {
0090   .read   = rtems_nvdisk_sram_read,
0091   .write  = rtems_nvdisk_sram_write,
0092   .verify = rtems_nvdisk_sram_verify
0093 };