^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright 2010 Ben Dooks <ben-linux@fluff.org>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Support for wakeup mask interrupts on newer SoCs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #ifndef __PLAT_WAKEUP_MASK_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #define __PLAT_WAKEUP_MASK_H __file__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) /* if no irq yet defined, but still want to mask */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define NO_WAKEUP_IRQ (0x90000000)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) * struct samsung_wakeup_mask - wakeup mask information
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) * @irq: The interrupt associated with this wakeup.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) * @bit: The bit, as a (1 << bitno) controlling this source.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) struct samsung_wakeup_mask {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) unsigned int irq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) u32 bit;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) * samsung_sync_wakemask - sync wakeup mask information for pm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) * @reg: The register that is used.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) * @masks: The list of masks to use.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) * @nr_masks: The number of entries pointed to buy @masks.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) * Synchronise the wakeup mask information at suspend time from the list
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) * of interrupts and control bits in @masks. We do this at suspend time
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) * as overriding the relevant irq chips is harder and the register is only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) * required to be correct before we enter sleep.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) extern void samsung_sync_wakemask(void __iomem *reg,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) const struct samsung_wakeup_mask *masks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) int nr_masks);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #endif /* __PLAT_WAKEUP_MASK_H */