162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef __ASM_CPU_SH3_DAC_H
362306a36Sopenharmony_ci#define __ASM_CPU_SH3_DAC_H
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci/*
662306a36Sopenharmony_ci * Copyright (C) 2003  Andriy Skulysh
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#define DADR0	0xa40000a0
1162306a36Sopenharmony_ci#define DADR1	0xa40000a2
1262306a36Sopenharmony_ci#define DACR	0xa40000a4
1362306a36Sopenharmony_ci#define DACR_DAOE1	0x80
1462306a36Sopenharmony_ci#define DACR_DAOE0	0x40
1562306a36Sopenharmony_ci#define DACR_DAE	0x20
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_cistatic __inline__ void sh_dac_enable(int channel)
1962306a36Sopenharmony_ci{
2062306a36Sopenharmony_ci	unsigned char v;
2162306a36Sopenharmony_ci	v = __raw_readb(DACR);
2262306a36Sopenharmony_ci	if(channel) v |= DACR_DAOE1;
2362306a36Sopenharmony_ci	else v |= DACR_DAOE0;
2462306a36Sopenharmony_ci	__raw_writeb(v,DACR);
2562306a36Sopenharmony_ci}
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_cistatic __inline__ void sh_dac_disable(int channel)
2862306a36Sopenharmony_ci{
2962306a36Sopenharmony_ci	unsigned char v;
3062306a36Sopenharmony_ci	v = __raw_readb(DACR);
3162306a36Sopenharmony_ci	if(channel) v &= ~DACR_DAOE1;
3262306a36Sopenharmony_ci	else v &= ~DACR_DAOE0;
3362306a36Sopenharmony_ci	__raw_writeb(v,DACR);
3462306a36Sopenharmony_ci}
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_cistatic __inline__ void sh_dac_output(u8 value, int channel)
3762306a36Sopenharmony_ci{
3862306a36Sopenharmony_ci	if(channel) __raw_writeb(value,DADR1);
3962306a36Sopenharmony_ci	else __raw_writeb(value,DADR0);
4062306a36Sopenharmony_ci}
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci#endif /* __ASM_CPU_SH3_DAC_H */
43