mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.4 KiB
59 lines
1.4 KiB
/* SPDX-License-Identifier: GPL-2.0-only */ |
|
/* |
|
* Silicon Labs C2 port Linux support |
|
* |
|
* Copyright (c) 2007 Rodolfo Giometti <[email protected]> |
|
* Copyright (c) 2007 Eurotech S.p.A. <[email protected]> |
|
*/ |
|
|
|
#define C2PORT_NAME_LEN 32 |
|
|
|
struct device; |
|
|
|
/* |
|
* C2 port basic structs |
|
*/ |
|
|
|
/* Main struct */ |
|
struct c2port_ops; |
|
struct c2port_device { |
|
unsigned int access:1; |
|
unsigned int flash_access:1; |
|
|
|
int id; |
|
char name[C2PORT_NAME_LEN]; |
|
struct c2port_ops *ops; |
|
struct mutex mutex; /* prevent races during read/write */ |
|
|
|
struct device *dev; |
|
|
|
void *private_data; |
|
}; |
|
|
|
/* Basic operations */ |
|
struct c2port_ops { |
|
/* Flash layout */ |
|
unsigned short block_size; /* flash block size in bytes */ |
|
unsigned short blocks_num; /* flash blocks number */ |
|
|
|
/* Enable or disable the access to C2 port */ |
|
void (*access)(struct c2port_device *dev, int status); |
|
|
|
/* Set C2D data line as input/output */ |
|
void (*c2d_dir)(struct c2port_device *dev, int dir); |
|
|
|
/* Read/write C2D data line */ |
|
int (*c2d_get)(struct c2port_device *dev); |
|
void (*c2d_set)(struct c2port_device *dev, int status); |
|
|
|
/* Write C2CK clock line */ |
|
void (*c2ck_set)(struct c2port_device *dev, int status); |
|
}; |
|
|
|
/* |
|
* Exported functions |
|
*/ |
|
|
|
extern struct c2port_device *c2port_device_register(char *name, |
|
struct c2port_ops *ops, void *devdata); |
|
extern void c2port_device_unregister(struct c2port_device *dev);
|
|
|