1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Anybus-S controller definitions 4 * 5 * Copyright 2018 Arcx Inc 6 */ 7 8#ifndef __LINUX_ANYBUSS_CONTROLLER_H__ 9#define __LINUX_ANYBUSS_CONTROLLER_H__ 10 11#include <linux/device.h> 12#include <linux/regmap.h> 13 14/* 15 * To instantiate an Anybus-S host, a controller should provide the following: 16 * - a reset function which resets the attached card; 17 * - a regmap which provides access to the attached card's dpram; 18 * - the irq of the attached card 19 */ 20/** 21 * struct anybuss_ops - Controller resources to instantiate an Anybus-S host 22 * 23 * @reset: asserts/deasserts the anybus card's reset line. 24 * @regmap: provides access to the card's dual-port RAM area. 25 * @irq: number of the interrupt connected to the card's interrupt line. 26 * @host_idx: for multi-host controllers, the host index: 27 * 0 for the first host on the controller, 1 for the second, etc. 28 */ 29struct anybuss_ops { 30 void (*reset)(struct device *dev, bool assert); 31 struct regmap *regmap; 32 int irq; 33 int host_idx; 34}; 35 36struct anybuss_host; 37 38struct anybuss_host * __must_check 39anybuss_host_common_probe(struct device *dev, 40 const struct anybuss_ops *ops); 41void anybuss_host_common_remove(struct anybuss_host *host); 42 43struct anybuss_host * __must_check 44devm_anybuss_host_common_probe(struct device *dev, 45 const struct anybuss_ops *ops); 46 47#endif /* __LINUX_ANYBUSS_CONTROLLER_H__ */ 48