/* arch/arm/mach-msm/smp2p_private_api.h * * Copyright (c) 2013, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef _ARCH_ARM_MACH_MSM_SMP2P_PRIVATE_API_H_ #define _ARCH_ARM_MACH_MSM_SMP2P_PRIVATE_API_H_ #include struct msm_smp2p_out; /* Maximum size of the entry name and trailing null. */ #define SMP2P_MAX_ENTRY_NAME 16 /* Bits per entry */ #define SMP2P_BITS_PER_ENTRY 32 /* Processor ID's */ enum { SMP2P_APPS_PROC = 0, SMP2P_MODEM_PROC = 1, SMP2P_AUDIO_PROC = 2, SMP2P_RESERVED_PROC_1 = 3, SMP2P_WIRELESS_PROC = 4, SMP2P_RESERVED_PROC_2 = 5, SMP2P_POWER_PROC = 6, /* add new processors here */ SMP2P_REMOTE_MOCK_PROC, SMP2P_NUM_PROCS, }; /** * Notification events that are passed to notifier for incoming and outgoing * entries. * * If the @metadata argument in the notifier is non-null, then it will * point to the associated struct smux_meta_* structure. */ enum msm_smp2p_events { SMP2P_OPEN, /* data is NULL */ SMP2P_ENTRY_UPDATE, /* data => struct msm_smp2p_update_notif */ }; /** * Passed in response to a SMP2P_ENTRY_UPDATE event. * * @prev_value: previous value of entry * @current_value: latest value of entry */ struct msm_smp2p_update_notif { uint32_t previous_value; uint32_t current_value; }; int msm_smp2p_out_open(int remote_pid, const char *entry, struct notifier_block *open_notifier, struct msm_smp2p_out **handle); int msm_smp2p_out_close(struct msm_smp2p_out **handle); int msm_smp2p_out_read(struct msm_smp2p_out *handle, uint32_t *data); int msm_smp2p_out_write(struct msm_smp2p_out *handle, uint32_t data); int msm_smp2p_out_modify(struct msm_smp2p_out *handle, uint32_t set_mask, uint32_t clear_mask); int msm_smp2p_in_read(int remote_pid, const char *entry, uint32_t *data); int msm_smp2p_in_register(int remote_pid, const char *entry, struct notifier_block *in_notifier); int msm_smp2p_in_unregister(int remote_pid, const char *entry, struct notifier_block *in_notifier); #endif /* _ARCH_ARM_MACH_MSM_SMP2P_PRIVATE_API_H_ */