summaryrefslogtreecommitdiffstats
path: root/c/src/libchip/i2c/i2c-2b-eeprom.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/libchip/i2c/i2c-2b-eeprom.c')
-rw-r--r--c/src/libchip/i2c/i2c-2b-eeprom.c177
1 files changed, 0 insertions, 177 deletions
diff --git a/c/src/libchip/i2c/i2c-2b-eeprom.c b/c/src/libchip/i2c/i2c-2b-eeprom.c
deleted file mode 100644
index 4a8b5fdb9c..0000000000
--- a/c/src/libchip/i2c/i2c-2b-eeprom.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* Trivial i2c driver for reading "2-byte eeproms".
- * On 'open' the read-pointer is reset to 0, subsequent
- * read operations slurp data from there...
- */
-
-/*
- * Authorship
- * ----------
- * This software was created by
- * Till Straumann <strauman@slac.stanford.edu>, 2005,
- * Stanford Linear Accelerator Center, Stanford University.
- *
- * Acknowledgement of sponsorship
- * ------------------------------
- * This software was produced by
- * the Stanford Linear Accelerator Center, Stanford University,
- * under Contract DE-AC03-76SFO0515 with the Department of Energy.
- *
- * Government disclaimer of liability
- * ----------------------------------
- * Neither the United States nor the United States Department of Energy,
- * nor any of their employees, makes any warranty, express or implied, or
- * assumes any legal liability or responsibility for the accuracy,
- * completeness, or usefulness of any data, apparatus, product, or process
- * disclosed, or represents that its use would not infringe privately owned
- * rights.
- *
- * Stanford disclaimer of liability
- * --------------------------------
- * Stanford University makes no representations or warranties, express or
- * implied, nor assumes any liability for the use of this software.
- *
- * Stanford disclaimer of copyright
- * --------------------------------
- * Stanford University, owner of the copyright, hereby disclaims its
- * copyright and all other rights in this software. Hence, anyone may
- * freely use it for any purpose without restriction.
- *
- * Maintenance of notices
- * ----------------------
- * In the interest of clarity regarding the origin and status of this
- * SLAC software, this and all the preceding Stanford University notices
- * are to remain affixed to any copy or derivative of this software made
- * or distributed by the recipient and are to be affixed to any copy of
- * software made or distributed by the recipient that contains a copy or
- * derivative of this software.
- *
- * ------------------ SLAC Software Notices, Set 4 OTT.002a, 2004 FEB 03
- */
-
-
-#include <rtems.h>
-#include <rtems/libi2c.h>
-
-#include <libchip/i2c-2b-eeprom.h>
-#include <rtems/libio.h>
-
-#define EEPROM_PG_SZ 32
-#define ALGN(x) (((uint32_t)(x) + EEPROM_PG_SZ) & ~(EEPROM_PG_SZ-1))
-
-static rtems_status_code
-send_file_ptr (rtems_device_minor_number minor, unsigned pos, int tout)
-{
- int sc;
- unsigned char bytes[2];
-
- bytes[0] = (pos >> 8) & 0xff;
- bytes[1] = (pos) & 0xff;
-
- /* poll addressing the next page; if 'tout' is <=0 we only try once
- * and return the status. If 'tout' is positive, we try 'tout' times
- * and return RTEMS_TIMEOUT if it didnt work
- */
- while ((sc = rtems_libi2c_start_write_bytes (minor, bytes, 2)) < 0) {
- if (--tout <= 0)
- return tout ? -sc : RTEMS_TIMEOUT;
- rtems_task_wake_after (1);
- }
- return RTEMS_SUCCESSFUL;
-}
-
-static rtems_status_code
-i2c_2b_eeprom_write (rtems_device_major_number major,
- rtems_device_minor_number minor, void *arg)
-{
- rtems_libio_rw_args_t *rwargs = arg;
- unsigned off = rwargs->offset;
- int cnt = rwargs->count;
- unsigned char *buf = (unsigned char *)rwargs->buffer;
- int sc;
- unsigned end;
- int l;
-
- if (cnt <= 0)
- return RTEMS_SUCCESSFUL;
-
- if ((sc = send_file_ptr (minor, off, 0)))
- return sc;
-
- do {
- /* write up to next page boundary */
- end = ALGN (off);
- l = end - off;
- if (l > cnt)
- l = cnt;
-
- sc = rtems_libi2c_write_bytes (minor, buf, l);
- if (sc < 0)
- return -sc;
-
- sc = rtems_libi2c_send_stop (minor);
- if (sc)
- return sc;
-
- rwargs->bytes_moved += l;
-
- buf += l;
- cnt -= l;
- off += l;
-
- /* poll addressing the next page */
- if ((sc = send_file_ptr (minor, off, 100)))
- return sc;
-
- } while (cnt > 0);
-
- return rtems_libi2c_send_stop (minor);
-}
-
-static rtems_status_code
-i2c_2b_eeprom_read (rtems_device_major_number major,
- rtems_device_minor_number minor, void *arg)
-{
- int sc;
- rtems_libio_rw_args_t *rwargs = arg;
-
- if (RTEMS_SUCCESSFUL != (sc = send_file_ptr (minor, rwargs->offset, 0)))
- return -sc;
-
- sc = rtems_libi2c_start_read_bytes(
- minor,
- (unsigned char *)rwargs->buffer,
- rwargs->count
- );
-
- if (sc < 0) {
- rwargs->bytes_moved = 0;
- return -sc;
- }
- rwargs->bytes_moved = sc;
-
- return rtems_libi2c_send_stop (minor);
-}
-
-static rtems_driver_address_table myops = {
- .read_entry = i2c_2b_eeprom_read,
- .write_entry = i2c_2b_eeprom_write,
-};
-
-static rtems_libi2c_drv_t my_drv_tbl = {
- .ops = &myops,
- .size = sizeof (my_drv_tbl),
-};
-
-/* provide a second table for R/O access */
-static rtems_driver_address_table my_ro_ops = {
- .read_entry = i2c_2b_eeprom_read,
-};
-
-static rtems_libi2c_drv_t my_ro_drv_tbl = {
- .ops = &my_ro_ops,
- .size = sizeof (my_ro_drv_tbl),
-};
-
-
-rtems_libi2c_drv_t *i2c_2b_eeprom_driver_descriptor = &my_drv_tbl;
-rtems_libi2c_drv_t *i2c_2b_eeprom_ro_driver_descriptor = &my_ro_drv_tbl;