mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-07-22 01:43:37 -04:00
If we access the syscon (expansion bus config registers) using the syscon regmap instead of relying on direct accessor functions, we do not need to call this static code in the machine (arch/arm/mach-ixp4xx/common.c) which makes things less dependent on custom machine-dependent code. Look up the syscon regmap and handle the error: this will make deferred probe work with relation to the syscon. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Link: https://lore.kernel.org/r/20220211223238.648934-8-linus.walleij@linaro.org Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
40 lines
1 KiB
C
40 lines
1 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __IXP4XX_NPE_H
|
|
#define __IXP4XX_NPE_H
|
|
|
|
#include <linux/kernel.h>
|
|
#include <linux/regmap.h>
|
|
|
|
extern const char *npe_names[];
|
|
|
|
struct npe_regs {
|
|
u32 exec_addr, exec_data, exec_status_cmd, exec_count;
|
|
u32 action_points[4];
|
|
u32 watchpoint_fifo, watch_count;
|
|
u32 profile_count;
|
|
u32 messaging_status, messaging_control;
|
|
u32 mailbox_status, /*messaging_*/ in_out_fifo;
|
|
};
|
|
|
|
struct npe {
|
|
struct npe_regs __iomem *regs;
|
|
struct regmap *rmap;
|
|
int id;
|
|
int valid;
|
|
};
|
|
|
|
|
|
static inline const char *npe_name(struct npe *npe)
|
|
{
|
|
return npe_names[npe->id];
|
|
}
|
|
|
|
int npe_running(struct npe *npe);
|
|
int npe_send_message(struct npe *npe, const void *msg, const char *what);
|
|
int npe_recv_message(struct npe *npe, void *msg, const char *what);
|
|
int npe_send_recv_message(struct npe *npe, void *msg, const char *what);
|
|
int npe_load_firmware(struct npe *npe, const char *name, struct device *dev);
|
|
struct npe *npe_request(unsigned id);
|
|
void npe_release(struct npe *npe);
|
|
|
|
#endif /* __IXP4XX_NPE_H */
|