162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci *
362306a36Sopenharmony_ci * include/asm-sh/snapgear.h
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Modified version of io_se.h for the snapgear-specific functions.
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * IO functions for a SnapGear
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#ifndef _ASM_SH_IO_SNAPGEAR_H
1162306a36Sopenharmony_ci#define _ASM_SH_IO_SNAPGEAR_H
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#define __IO_PREFIX	snapgear
1462306a36Sopenharmony_ci#include <asm/io_generic.h>
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci/*
1762306a36Sopenharmony_ci * We need to remember what was written to the ioport as some bits
1862306a36Sopenharmony_ci * are shared with other functions and you cannot read back what was
1962306a36Sopenharmony_ci * written :-|
2062306a36Sopenharmony_ci *
2162306a36Sopenharmony_ci * Bit        Read                   Write
2262306a36Sopenharmony_ci * -----------------------------------------------
2362306a36Sopenharmony_ci * D0         DCD on ttySC1          power
2462306a36Sopenharmony_ci * D1         Reset Switch           heatbeat
2562306a36Sopenharmony_ci * D2         ttySC0 CTS (7100)      LAN
2662306a36Sopenharmony_ci * D3         -                      WAN
2762306a36Sopenharmony_ci * D4         ttySC0 DCD (7100)      CONSOLE
2862306a36Sopenharmony_ci * D5         -                      ONLINE
2962306a36Sopenharmony_ci * D6         -                      VPN
3062306a36Sopenharmony_ci * D7         -                      DTR on ttySC1
3162306a36Sopenharmony_ci * D8         -                      ttySC0 RTS (7100)
3262306a36Sopenharmony_ci * D9         -                      ttySC0 DTR (7100)
3362306a36Sopenharmony_ci * D10        -                      RTC SCLK
3462306a36Sopenharmony_ci * D11        RTC DATA               RTC DATA
3562306a36Sopenharmony_ci * D12        -                      RTS RESET
3662306a36Sopenharmony_ci */
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci#define SECUREEDGE_IOPORT_ADDR ((volatile short *) 0xb0000000)
3962306a36Sopenharmony_ciextern unsigned short secureedge5410_ioport;
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci#define SECUREEDGE_WRITE_IOPORT(val, mask) (*SECUREEDGE_IOPORT_ADDR = \
4262306a36Sopenharmony_ci	 (secureedge5410_ioport = \
4362306a36Sopenharmony_ci			((secureedge5410_ioport & ~(mask)) | ((val) & (mask)))))
4462306a36Sopenharmony_ci#define SECUREEDGE_READ_IOPORT() \
4562306a36Sopenharmony_ci	 ((*SECUREEDGE_IOPORT_ADDR&0x0817) | (secureedge5410_ioport&~0x0817))
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci#endif /* _ASM_SH_IO_SNAPGEAR_H */
48