Author | Tokens | Token Proportion | Commits | Commit Proportion |
---|---|---|---|---|
Sven Van Asbroeck | 409 | 99.76% | 5 | 83.33% |
Uwe Kleine-König | 1 | 0.24% | 1 | 16.67% |
Total | 410 | 6 |
/* SPDX-License-Identifier: GPL-2.0 */ /* * Anybus-S client adapter definitions * * Copyright 2018 Arcx Inc */ #ifndef __LINUX_ANYBUSS_CLIENT_H__ #define __LINUX_ANYBUSS_CLIENT_H__ #include <linux/device.h> #include <linux/types.h> #include <linux/poll.h> /* move to <linux/fieldbus_dev.h> when taking this out of staging */ #include "../fieldbus_dev.h" struct anybuss_host; struct anybuss_client { struct device dev; struct anybuss_host *host; __be16 anybus_id; /* * these can be optionally set by the client to receive event * notifications from the host. */ void (*on_area_updated)(struct anybuss_client *client); void (*on_online_changed)(struct anybuss_client *client, bool online); }; struct anybuss_client_driver { struct device_driver driver; int (*probe)(struct anybuss_client *adev); void (*remove)(struct anybuss_client *adev); u16 anybus_id; }; int anybuss_client_driver_register(struct anybuss_client_driver *drv); void anybuss_client_driver_unregister(struct anybuss_client_driver *drv); static inline struct anybuss_client *to_anybuss_client(struct device *dev) { return container_of(dev, struct anybuss_client, dev); } static inline struct anybuss_client_driver * to_anybuss_client_driver(struct device_driver *drv) { return container_of(drv, struct anybuss_client_driver, driver); } static inline void * anybuss_get_drvdata(const struct anybuss_client *client) { return dev_get_drvdata(&client->dev); } static inline void anybuss_set_drvdata(struct anybuss_client *client, void *data) { dev_set_drvdata(&client->dev, data); } int anybuss_set_power(struct anybuss_client *client, bool power_on); struct anybuss_memcfg { u16 input_io; u16 input_dpram; u16 input_total; u16 output_io; u16 output_dpram; u16 output_total; enum fieldbus_dev_offl_mode offl_mode; }; int anybuss_start_init(struct anybuss_client *client, const struct anybuss_memcfg *cfg); int anybuss_finish_init(struct anybuss_client *client); int anybuss_read_fbctrl(struct anybuss_client *client, u16 addr, void *buf, size_t count); int anybuss_send_msg(struct anybuss_client *client, u16 cmd_num, const void *buf, size_t count); int anybuss_send_ext(struct anybuss_client *client, u16 cmd_num, const void *buf, size_t count); int anybuss_recv_msg(struct anybuss_client *client, u16 cmd_num, void *buf, size_t count); /* these help clients make a struct file_operations */ int anybuss_write_input(struct anybuss_client *client, const char __user *buf, size_t size, loff_t *offset); int anybuss_read_output(struct anybuss_client *client, char __user *buf, size_t size, loff_t *offset); #endif /* __LINUX_ANYBUSS_CLIENT_H__ */
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with Cregit http://github.com/cregit/cregit
Version 2.0-RC1