brintos

brintos / linux-shallow public Read only

0
0
Text · 1.4 KiB · 4e93bc6 Raw
60 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 *  Silicon Labs C2 port Linux support4 *5 *  Copyright (c) 2007 Rodolfo Giometti <giometti@linux.it>6 *  Copyright (c) 2007 Eurotech S.p.A. <info@eurotech.it>7 */8 9#define C2PORT_NAME_LEN			3210 11struct device;12 13/*14 * C2 port basic structs15 */16 17/* Main struct */18struct c2port_ops;19struct c2port_device {20	unsigned int access:1;21	unsigned int flash_access:1;22 23	int id;24	char name[C2PORT_NAME_LEN];25	struct c2port_ops *ops;26	struct mutex mutex;		/* prevent races during read/write */27 28	struct device *dev;29 30	void *private_data;31};32 33/* Basic operations */34struct c2port_ops {35	/* Flash layout */36	unsigned short block_size;	/* flash block size in bytes */37	unsigned short blocks_num;	/* flash blocks number */38 39	/* Enable or disable the access to C2 port */40	void (*access)(struct c2port_device *dev, int status);41 42	/* Set C2D data line as input/output */43	void (*c2d_dir)(struct c2port_device *dev, int dir);44 45	/* Read/write C2D data line */46	int (*c2d_get)(struct c2port_device *dev);47	void (*c2d_set)(struct c2port_device *dev, int status);48 49	/* Write C2CK clock line */50	void (*c2ck_set)(struct c2port_device *dev, int status);51};52 53/*54 * Exported functions55 */56 57extern struct c2port_device *c2port_device_register(char *name,58					struct c2port_ops *ops, void *devdata);59extern void c2port_device_unregister(struct c2port_device *dev);60