/* SPDX-License-Identifier: GPL-2.0 */
|
/*
|
* Anybus-S controller definitions
|
*
|
* Copyright 2018 Arcx Inc
|
*/
|
|
#ifndef __LINUX_ANYBUSS_CONTROLLER_H__
|
#define __LINUX_ANYBUSS_CONTROLLER_H__
|
|
#include <linux/device.h>
|
#include <linux/regmap.h>
|
|
/*
|
* To instantiate an Anybus-S host, a controller should provide the following:
|
* - a reset function which resets the attached card;
|
* - a regmap which provides access to the attached card's dpram;
|
* - the irq of the attached card
|
*/
|
/**
|
* struct anybuss_ops - Controller resources to instantiate an Anybus-S host
|
*
|
* @reset: asserts/deasserts the anybus card's reset line.
|
* @regmap: provides access to the card's dual-port RAM area.
|
* @irq: number of the interrupt connected to the card's interrupt line.
|
* @host_idx: for multi-host controllers, the host index:
|
* 0 for the first host on the controller, 1 for the second, etc.
|
*/
|
struct anybuss_ops {
|
void (*reset)(struct device *dev, bool assert);
|
struct regmap *regmap;
|
int irq;
|
int host_idx;
|
};
|
|
struct anybuss_host;
|
|
struct anybuss_host * __must_check
|
anybuss_host_common_probe(struct device *dev,
|
const struct anybuss_ops *ops);
|
void anybuss_host_common_remove(struct anybuss_host *host);
|
|
struct anybuss_host * __must_check
|
devm_anybuss_host_common_probe(struct device *dev,
|
const struct anybuss_ops *ops);
|
|
#endif /* __LINUX_ANYBUSS_CONTROLLER_H__ */
|