1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * Copyright (C) 2008 Lyrtech <www.lyrtech.com>
4 */
5
6#ifndef __MISC_H
7#define __MISC_H
8
9#include <asm/arch/hardware.h>
10
11/* pin muxer definitions */
12#define PIN_MUX_NUM_FIELDS	8	/* Per register */
13#define PIN_MUX_FIELD_SIZE	4	/* n in bits */
14#define PIN_MUX_FIELD_MASK	((1 << PIN_MUX_FIELD_SIZE) - 1)
15
16/* pin definition */
17struct pinmux_config {
18	dv_reg		*mux;		/* Address of mux register */
19	unsigned char	value;		/* Value to set in field */
20	unsigned char	field;		/* field number */
21};
22
23/* pin table definition */
24struct pinmux_resource {
25	const struct pinmux_config	*pins;
26	const int			n_pins;
27};
28
29#define PINMUX_ITEM(item) { \
30				.pins = item, \
31				.n_pins = ARRAY_SIZE(item) \
32			  }
33
34struct lpsc_resource {
35	const int	lpsc_no;
36};
37
38void davinci_sync_env_enetaddr(uint8_t *rom_enetaddr);
39int davinci_configure_pin_mux(const struct pinmux_config *pins, int n_pins);
40int davinci_configure_pin_mux_items(const struct pinmux_resource *item,
41				    int n_items);
42#if defined(CONFIG_DRIVER_TI_EMAC)
43void davinci_emac_mii_mode_sel(int mode_sel);
44#endif
45void irq_init(void);
46int da8xx_configure_lpsc_items(const struct lpsc_resource *item,
47				    const int n_items);
48
49#endif /* __MISC_H */
50