linux/include/linux/c2port.h
<<
>>
Prefs
   1/*
   2 *  Silicon Labs C2 port Linux support
   3 *
   4 *  Copyright (c) 2007 Rodolfo Giometti <giometti@linux.it>
   5 *  Copyright (c) 2007 Eurotech S.p.A. <info@eurotech.it>
   6 *
   7 * This program is free software; you can redistribute it and/or modify it
   8 * under the terms of the GNU General Public License version 2 as published by
   9 * the Free Software Foundation
  10 */
  11
  12#define C2PORT_NAME_LEN                 32
  13
  14struct device;
  15
  16/*
  17 * C2 port basic structs
  18 */
  19
  20/* Main struct */
  21struct c2port_ops;
  22struct c2port_device {
  23        unsigned int access:1;
  24        unsigned int flash_access:1;
  25
  26        int id;
  27        char name[C2PORT_NAME_LEN];
  28        struct c2port_ops *ops;
  29        struct mutex mutex;             /* prevent races during read/write */
  30
  31        struct device *dev;
  32
  33        void *private_data;
  34};
  35
  36/* Basic operations */
  37struct c2port_ops {
  38        /* Flash layout */
  39        unsigned short block_size;      /* flash block size in bytes */
  40        unsigned short blocks_num;      /* flash blocks number */
  41
  42        /* Enable or disable the access to C2 port */
  43        void (*access)(struct c2port_device *dev, int status);
  44
  45        /* Set C2D data line as input/output */
  46        void (*c2d_dir)(struct c2port_device *dev, int dir);
  47
  48        /* Read/write C2D data line */
  49        int (*c2d_get)(struct c2port_device *dev);
  50        void (*c2d_set)(struct c2port_device *dev, int status);
  51
  52        /* Write C2CK clock line */
  53        void (*c2ck_set)(struct c2port_device *dev, int status);
  54};
  55
  56/*
  57 * Exported functions
  58 */
  59
  60extern struct c2port_device *c2port_device_register(char *name,
  61                                        struct c2port_ops *ops, void *devdata);
  62extern void c2port_device_unregister(struct c2port_device *dev);
  63