diff --git a/hif/src/dispatcher/dummy.c b/hif/src/dispatcher/dummy.c index d87dfbcdf5..1b16f60c99 100644 --- a/hif/src/dispatcher/dummy.c +++ b/hif/src/dispatcher/dummy.c @@ -107,7 +107,176 @@ void hif_dummy_enable_power_management(struct hif_softc *hif_ctx, /** * hif_dummy_disable_power_management - dummy call * hif_ctx: hif context - * is_packet_log_enabled: true if packet log is enabled + * + * Return: none */ void hif_dummy_disable_power_management(struct hif_softc *hif_ctx) {} + +/** + * hif_dummy_disable_isr - dummy call + * hif_ctx: hif context + * + * Return: none + */ +void hif_dummy_disable_isr(struct hif_softc *scn) +{} + +/** + * hif_dummy_nointrs - dummy call + * hif_sc: hif context + * + * Return: none + */ +void hif_dummy_nointrs(struct hif_softc *hif_sc) +{} + +/** + * hif_dummy_bus_configure - dummy call + * hif_ctx: hif context + * + * Return: 0 for sucess + */ +int hif_dummy_bus_configure(struct hif_softc *hif_sc) +{ + return 0; +} + +/** + * hif_dummy_get_config_item - dummy call + * @hif_sc: hif context + * @opcode: configuration type + * @config: configuration value to set + * @config_len: configuration length + * + * Return: 0 for sucess + */ +QDF_STATUS +hif_dummy_get_config_item(struct hif_softc *hif_sc, + int opcode, void *config, uint32_t config_len) +{ + return 0; +} + +/** + * hif_dummy_set_mailbox_swap - dummy call + * @hif_sc: hif context + * + * Return: None + */ +void +hif_dummy_set_mailbox_swap(struct hif_softc *hif_sc) +{ + return; +} + +/** + * hif_dummy_claim_device - dummy call + * @hif_sc: hif context + * + * Return: None + */ +void +hif_dummy_claim_device(struct hif_softc *hif_sc) +{ + return; +} + +/** + * hif_dummy_bus_pkt_dl_len_set()- dummy call + * @sc: context + * @pkt_download_len: download length + * + * Return: None + */ +void hif_dummy_bus_pkt_dl_len_set(void *sc, + u_int32_t pkt_download_len) +{ + return; +} + + +/** + * hif_dummy_cancel_deferred_target_sleep - dummy call + * @hif_sc: hif context + * + * Return: None + */ +void +hif_dummy_cancel_deferred_target_sleep(struct hif_softc *hif_sc) +{ + return; +} + +/** + * hif_dummy_irq_enable - dummy call + * hif_ctx: hif context + * @irq_id: irq id + * + * Return: none + */ +void hif_dummy_irq_enable(struct hif_softc *hif_sc, int irq_id) +{} + +/** + * hif_dummy_irq_disable - dummy call + * hif_ctx: hif context + * @irq_id: irq id + * + * Return: none + */ +void hif_dummy_irq_disable(struct hif_softc *hif_sc, int irq_id) +{} + +/** + * hif_dummy_dump_registers - dummy call + * hif_sc: hif context + * + * Return: 0 for sucess + */ +int hif_dummy_dump_registers(struct hif_softc *hif_sc) +{ + return 0; +} + +/** + * hif_dummy_dump_target_memory - dummy call + * @hif_sc: hif context + * @ramdump_base: base + * @address: address + * @size: size + * + * Return: None + */ +void hif_dummy_dump_target_memory(struct hif_softc *hif_sc, void *ramdump_base, + uint32_t address, uint32_t size) +{ +} + +/** + * hif_dummy_ipa_get_ce_resource - dummy call + * @scn: HIF context + * @sr_base_paddr: source base address + * @sr_ring_size: source ring size + * @reg_paddr: bus physical address + * + * Return: None + */ +void hif_dummy_ipa_get_ce_resource(struct hif_softc *hif_sc, + qdf_dma_addr_t *sr_base_paddr, + uint32_t *sr_ring_size, + qdf_dma_addr_t *reg_paddr) +{ +} + +/** + * hif_dummy_mask_interrupt_call - dummy call + * @hif_sc: hif context + * + * Return: None + */ +void +hif_dummy_mask_interrupt_call(struct hif_softc *hif_sc) +{ + return; +} diff --git a/hif/src/dispatcher/dummy.h b/hif/src/dispatcher/dummy.h index 3e421e65b3..d843d724b0 100644 --- a/hif/src/dispatcher/dummy.h +++ b/hif/src/dispatcher/dummy.h @@ -35,3 +35,23 @@ int hif_dummy_target_sleep_state_adjust(struct hif_softc *scn, void hif_dummy_enable_power_management(struct hif_softc *hif_ctx, bool is_packet_log_enabled); void hif_dummy_disable_power_management(struct hif_softc *hif_ctx); +void hif_dummy_disable_isr(struct hif_softc *scn); +void hif_dummy_nointrs(struct hif_softc *hif_sc); +int hif_dummy_bus_configure(struct hif_softc *hif_sc); +QDF_STATUS hif_dummy_get_config_item(struct hif_softc *hif_sc, + int opcode, void *config, uint32_t config_len); +void hif_dummy_set_mailbox_swap(struct hif_softc *hif_sc); +void hif_dummy_claim_device(struct hif_softc *hif_sc); +void hif_dummy_bus_pkt_dl_len_set(void *sc, + u_int32_t pkt_download_len); +void hif_dummy_cancel_deferred_target_sleep(struct hif_softc *hif_sc); +void hif_dummy_irq_enable(struct hif_softc *hif_sc, int irq_id); +void hif_dummy_irq_disable(struct hif_softc *hif_sc, int irq_id); +int hif_dummy_dump_registers(struct hif_softc *hif_sc); +void hif_dummy_dump_target_memory(struct hif_softc *hif_sc, void *ramdump_base, + uint32_t address, uint32_t size); +void hif_dummy_ipa_get_ce_resource(struct hif_softc *hif_sc, + qdf_dma_addr_t *sr_base_paddr, + uint32_t *sr_ring_size, + qdf_dma_addr_t *reg_paddr); +void hif_dummy_mask_interrupt_call(struct hif_softc *hif_sc); diff --git a/hif/src/dispatcher/multibus.c b/hif/src/dispatcher/multibus.c index d26de4228b..8fe9a39073 100644 --- a/hif/src/dispatcher/multibus.c +++ b/hif/src/dispatcher/multibus.c @@ -31,7 +31,9 @@ #include "hif.h" #include "hif_main.h" #include "multibus.h" +#if defined(HIF_PCI) || defined(HIF_SNOC) || defined(HIF_AHB) #include "ce_main.h" +#endif #include "htc_services.h" #include "a_types.h" /** @@ -90,6 +92,8 @@ int hif_bus_get_context_size(enum qdf_bus_type bus_type) return hif_ahb_get_context_size(); case QDF_BUS_TYPE_SNOC: return hif_snoc_get_context_size(); + case QDF_BUS_TYPE_SDIO: + return hif_sdio_get_context_size(); default: return 0; } @@ -119,6 +123,9 @@ QDF_STATUS hif_bus_open(struct hif_softc *hif_sc, case QDF_BUS_TYPE_AHB: status = hif_initialize_ahb_ops(&hif_sc->bus_ops); break; + case QDF_BUS_TYPE_SDIO: + status = hif_initialize_sdio_ops(hif_sc); + break; default: status = QDF_STATUS_E_NOSUPPORT; break; @@ -211,6 +218,50 @@ int hif_bus_configure(struct hif_softc *hif_sc) return hif_sc->bus_ops.hif_bus_configure(hif_sc); } +QDF_STATUS hif_get_config_item(struct hif_opaque_softc *hif_ctx, + int opcode, void *config, uint32_t config_len) +{ + struct hif_softc *hif_sc = HIF_GET_SOFTC(hif_ctx); + return hif_sc->bus_ops.hif_get_config_item(hif_sc, opcode, config, + config_len); +} + +void hif_set_mailbox_swap(struct hif_opaque_softc *hif_ctx) +{ + struct hif_softc *hif_sc = HIF_GET_SOFTC(hif_ctx); + hif_sc->bus_ops.hif_set_mailbox_swap(hif_sc); +} + +void hif_claim_device(struct hif_opaque_softc *hif_ctx) +{ + struct hif_softc *hif_sc = HIF_GET_SOFTC(hif_ctx); + hif_sc->bus_ops.hif_claim_device(hif_sc); +} + +void hif_shutdown_device(struct hif_opaque_softc *hif_ctx) +{ + struct hif_softc *hif_sc = HIF_GET_SOFTC(hif_ctx); + hif_sc->bus_ops.hif_shutdown_device(hif_sc); +} + +void hif_stop(struct hif_opaque_softc *hif_ctx) +{ + struct hif_softc *hif_sc = HIF_GET_SOFTC(hif_ctx); + hif_sc->bus_ops.hif_stop(hif_sc); +} + +void hif_bus_pkt_dl_len_set(struct hif_opaque_softc *hif_ctx, + u_int32_t pkt_download_len) +{ + struct hif_softc *hif_sc = HIF_GET_SOFTC(hif_ctx); + hif_sc->bus_ops.hif_bus_pkt_dl_len_set(hif_sc, pkt_download_len); +} + +void hif_cancel_deferred_target_sleep(struct hif_softc *hif_sc) +{ + return hif_sc->bus_ops.hif_cancel_deferred_target_sleep(hif_sc); +} + void hif_irq_enable(struct hif_softc *hif_sc, int irq_id) { hif_sc->bus_ops.hif_irq_enable(hif_sc, irq_id); @@ -227,6 +278,31 @@ int hif_dump_registers(struct hif_opaque_softc *hif_hdl) return hif_sc->bus_ops.hif_dump_registers(hif_sc); } +void hif_dump_target_memory(struct hif_opaque_softc *hif_hdl, + void *ramdump_base, + uint32_t address, uint32_t size) +{ + struct hif_softc *hif_sc = HIF_GET_SOFTC(hif_hdl); + hif_sc->bus_ops.hif_dump_target_memory(hif_sc, ramdump_base, + address, size); +} + +void hif_ipa_get_ce_resource(struct hif_opaque_softc *hif_hdl, + qdf_dma_addr_t *ce_sr_base_paddr, + uint32_t *ce_sr_ring_size, + qdf_dma_addr_t *ce_reg_paddr) +{ + struct hif_softc *hif_sc = HIF_GET_SOFTC(hif_hdl); + hif_sc->bus_ops.hif_ipa_get_ce_resource(hif_sc, ce_sr_base_paddr, + ce_sr_ring_size, ce_reg_paddr); +} + +void hif_mask_interrupt_call(struct hif_opaque_softc *hif_hdl) +{ + struct hif_softc *hif_sc = HIF_GET_SOFTC(hif_hdl); + hif_sc->bus_ops.hif_mask_interrupt_call(hif_sc); +} + /** * hif_enable_power_management() - enable power management after driver load * @hif_hdl: opaque pointer to the hif context diff --git a/hif/src/dispatcher/multibus.h b/hif/src/dispatcher/multibus.h index a331206846..4d5f521f91 100644 --- a/hif/src/dispatcher/multibus.h +++ b/hif/src/dispatcher/multibus.h @@ -51,10 +51,26 @@ struct hif_bus_ops { enum hif_enable_type type); void (*hif_disable_bus)(struct hif_softc *hif_sc); int (*hif_bus_configure)(struct hif_softc *hif_sc); + QDF_STATUS (*hif_get_config_item)(struct hif_softc *hif_sc, + int opcode, void *config, uint32_t config_len); + void (*hif_set_mailbox_swap)(struct hif_softc *hif_sc); + void (*hif_claim_device)(struct hif_softc *hif_sc); + void (*hif_shutdown_device)(struct hif_softc *hif_sc); + void (*hif_stop)(struct hif_softc *hif_sc); + void (*hif_bus_pkt_dl_len_set)(void *hif_sc, + u_int32_t pkt_download_len); + void (*hif_cancel_deferred_target_sleep)(struct hif_softc *hif_sc); void (*hif_irq_disable)(struct hif_softc *hif_sc, int ce_id); void (*hif_irq_enable)(struct hif_softc *hif_sc, int ce_id); int (*hif_dump_registers)(struct hif_softc *hif_sc); - + void (*hif_dump_target_memory)(struct hif_softc *hif_sc, + void *ramdump_base, + uint32_t address, uint32_t size); + void (*hif_ipa_get_ce_resource)(struct hif_softc *hif_sc, + qdf_dma_addr_t *sr_base_paddr, + uint32_t *sr_ring_size, + qdf_dma_addr_t *reg_paddr); + void (*hif_mask_interrupt_call)(struct hif_softc *hif_sc); void (*hif_enable_power_management)(struct hif_softc *hif_ctx, bool is_packet_log_enabled); void (*hif_disable_power_management)(struct hif_softc *hif_ctx); @@ -126,5 +142,31 @@ static inline int hif_ahb_get_context_size(void) } #endif +#ifdef HIF_SDIO +QDF_STATUS hif_initialize_sdio_ops(struct hif_softc *hif_sc); +int hif_sdio_get_context_size(void); +#else +/** + * hif_initialize_sdio_ops() - dummy for when sdio not supported + * + * Return: QDF_STATUS_E_NOSUPPORT + */ + +static inline QDF_STATUS hif_initialize_sdio_ops(struct hif_softc *hif_sc) +{ + HIF_ERROR("%s: not supported", __func__); + return QDF_STATUS_E_NOSUPPORT; +} + +/** + * hif_sdio_get_context_size() - dummy when sdio isn't supported + * + * Return: 0 as an invalid size to indicate no support + */ +static inline int hif_sdio_get_context_size(void) +{ + return 0; +} +#endif /* HIF_SDIO */ #endif /* _MULTIBUS_H_ */ diff --git a/hif/src/dispatcher/multibus_ahb.c b/hif/src/dispatcher/multibus_ahb.c index dc8966a66b..3019ec24d9 100644 --- a/hif/src/dispatcher/multibus_ahb.c +++ b/hif/src/dispatcher/multibus_ahb.c @@ -48,9 +48,20 @@ QDF_STATUS hif_initialize_ahb_ops(struct hif_bus_ops *bus_ops) bus_ops->hif_enable_bus = &hif_ahb_enable_bus; bus_ops->hif_disable_bus = &hif_ahb_disable_bus; bus_ops->hif_bus_configure = &hif_ahb_bus_configure; + bus_ops->hif_get_config_item = &hif_dummy_get_config_item; + bus_ops->hif_set_mailbox_swap = &hif_dummy_set_mailbox_swap; + bus_ops->hif_claim_device = &hif_dummy_claim_device; + bus_ops->hif_shutdown_device = &hif_ce_stop; + bus_ops->hif_stop = &hif_ce_stop; + bus_ops->hif_bus_pkt_dl_len_set = &ce_pkt_dl_len_set; + bus_ops->hif_cancel_deferred_target_sleep = + &hif_dummy_cancel_deferred_target_sleep; bus_ops->hif_irq_disable = &hif_ahb_irq_disable; bus_ops->hif_irq_enable = &hif_ahb_irq_enable; bus_ops->hif_dump_registers = &hif_ahb_dump_registers; + bus_ops->hif_dump_target_memory = &hif_dummy_dump_target_memory; + bus_ops->hif_ipa_get_ce_resource = &hif_dummy_ipa_get_ce_resource; + bus_ops->hif_mask_interrupt_call = &hif_dummy_mask_interrupt_call; bus_ops->hif_enable_power_management = &hif_dummy_enable_power_management; bus_ops->hif_disable_power_management = diff --git a/hif/src/dispatcher/multibus_pci.c b/hif/src/dispatcher/multibus_pci.c index d06765a1fd..f9066a95bc 100644 --- a/hif/src/dispatcher/multibus_pci.c +++ b/hif/src/dispatcher/multibus_pci.c @@ -31,6 +31,7 @@ #include "pci_api.h" #include "hif_io32.h" #include "dummy.h" +#include "ce_api.h" /** * hif_initialize_pci_ops() - initialize the pci ops @@ -63,9 +64,20 @@ QDF_STATUS hif_initialize_pci_ops(struct hif_softc *hif_sc) bus_ops->hif_enable_bus = &hif_pci_enable_bus; bus_ops->hif_disable_bus = &hif_pci_disable_bus; bus_ops->hif_bus_configure = &hif_pci_bus_configure; + bus_ops->hif_get_config_item = &hif_dummy_get_config_item; + bus_ops->hif_set_mailbox_swap = &hif_dummy_set_mailbox_swap; + bus_ops->hif_claim_device = &hif_dummy_claim_device; + bus_ops->hif_shutdown_device = &hif_ce_stop; + bus_ops->hif_stop = &hif_ce_stop; + bus_ops->hif_bus_pkt_dl_len_set = &ce_pkt_dl_len_set; + bus_ops->hif_cancel_deferred_target_sleep = + &hif_pci_cancel_deferred_target_sleep; bus_ops->hif_irq_disable = &hif_pci_irq_disable; bus_ops->hif_irq_enable = &hif_pci_irq_enable; bus_ops->hif_dump_registers = &hif_pci_dump_registers; + bus_ops->hif_dump_target_memory = &hif_ce_dump_target_memory; + bus_ops->hif_ipa_get_ce_resource = &hif_ce_ipa_get_ce_resource; + bus_ops->hif_mask_interrupt_call = &hif_dummy_mask_interrupt_call; bus_ops->hif_enable_power_management = &hif_pci_enable_power_management; bus_ops->hif_disable_power_management = diff --git a/hif/src/dispatcher/multibus_sdio.c b/hif/src/dispatcher/multibus_sdio.c new file mode 100644 index 0000000000..484214840d --- /dev/null +++ b/hif/src/dispatcher/multibus_sdio.c @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2016 The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#include "hif.h" +#include "hif_main.h" +#include "multibus.h" +#include "sdio_api.h" +#include "hif_io32.h" +#include "dummy.h" +#include "if_sdio.h" + +/** + * hif_initialize_sdio_ops() - initialize the pci ops + * @bus_ops: hif_bus_ops table pointer to initialize + * + * Return: QDF_STATUS_SUCCESS + */ +QDF_STATUS hif_initialize_sdio_ops(struct hif_softc *hif_sc) +{ + struct hif_bus_ops *bus_ops = &hif_sc->bus_ops; + + bus_ops->hif_bus_open = &hif_sdio_open; + bus_ops->hif_bus_close = &hif_sdio_close; + bus_ops->hif_bus_prevent_linkdown = &hif_dummy_bus_prevent_linkdown; + bus_ops->hif_reset_soc = &hif_dummy_reset_soc; + bus_ops->hif_bus_suspend = &hif_sdio_bus_suspend; + bus_ops->hif_bus_resume = &hif_sdio_bus_resume; + bus_ops->hif_target_sleep_state_adjust = + &hif_dummy_target_sleep_state_adjust; + bus_ops->hif_disable_isr = &hif_dummy_disable_isr; + bus_ops->hif_nointrs = &hif_dummy_nointrs; + bus_ops->hif_enable_bus = &hif_sdio_enable_bus; + bus_ops->hif_disable_bus = &hif_sdio_disable_bus; + bus_ops->hif_bus_configure = &hif_dummy_bus_configure; + bus_ops->hif_get_config_item = &hif_sdio_get_config_item; + bus_ops->hif_set_mailbox_swap = &hif_sdio_set_mailbox_swap; + bus_ops->hif_claim_device = &hif_sdio_claim_device; + bus_ops->hif_shutdown_device = &hif_sdio_shutdown; + bus_ops->hif_stop = &hif_sdio_stop; + bus_ops->hif_bus_pkt_dl_len_set = &hif_dummy_bus_pkt_dl_len_set; + bus_ops->hif_cancel_deferred_target_sleep = + &hif_dummy_cancel_deferred_target_sleep; + bus_ops->hif_irq_disable = &hif_dummy_irq_disable; + bus_ops->hif_irq_enable = &hif_dummy_irq_enable; + bus_ops->hif_dump_registers = &hif_dummy_dump_registers; + bus_ops->hif_dump_target_memory = &hif_dummy_dump_target_memory; + bus_ops->hif_ipa_get_ce_resource = &hif_dummy_ipa_get_ce_resource; + bus_ops->hif_mask_interrupt_call = &hif_sdio_mask_interrupt_call; + bus_ops->hif_enable_power_management = + &hif_dummy_enable_power_management; + bus_ops->hif_disable_power_management = + &hif_dummy_disable_power_management; + + return QDF_STATUS_SUCCESS; +} + +/** + * hif_sdio_get_context_size() - return the size of the sdio context + * + * Return the size of the context. (0 for invalid bus) + */ +int hif_sdio_get_context_size(void) +{ + return sizeof(struct hif_sdio_softc); +} diff --git a/hif/src/dispatcher/multibus_snoc.c b/hif/src/dispatcher/multibus_snoc.c index cb20438ae7..284901a7ec 100644 --- a/hif/src/dispatcher/multibus_snoc.c +++ b/hif/src/dispatcher/multibus_snoc.c @@ -31,6 +31,7 @@ #include "ce_main.h" #include "snoc_api.h" #include "dummy.h" +#include "ce_api.h" /** * hif_initialize_pci_ops() - initialize the pci ops @@ -54,9 +55,20 @@ QDF_STATUS hif_initialize_snoc_ops(struct hif_bus_ops *bus_ops) bus_ops->hif_enable_bus = &hif_snoc_enable_bus; bus_ops->hif_disable_bus = &hif_snoc_disable_bus; bus_ops->hif_bus_configure = &hif_snoc_bus_configure; + bus_ops->hif_get_config_item = &hif_dummy_get_config_item; + bus_ops->hif_set_mailbox_swap = &hif_dummy_set_mailbox_swap; + bus_ops->hif_claim_device = &hif_dummy_claim_device; + bus_ops->hif_shutdown_device = &hif_ce_stop; + bus_ops->hif_stop = &hif_ce_stop; + bus_ops->hif_bus_pkt_dl_len_set = &ce_pkt_dl_len_set; + bus_ops->hif_cancel_deferred_target_sleep = + &hif_dummy_cancel_deferred_target_sleep; bus_ops->hif_irq_disable = &hif_snoc_irq_disable; bus_ops->hif_irq_enable = &hif_snoc_irq_enable; bus_ops->hif_dump_registers = &hif_snoc_dump_registers; + bus_ops->hif_dump_target_memory = &hif_ce_dump_target_memory; + bus_ops->hif_ipa_get_ce_resource = &hif_ce_ipa_get_ce_resource; + bus_ops->hif_mask_interrupt_call = &hif_dummy_mask_interrupt_call; bus_ops->hif_enable_power_management = &hif_dummy_enable_power_management; bus_ops->hif_disable_power_management = diff --git a/hif/src/dispatcher/sdio_api.h b/hif/src/dispatcher/sdio_api.h new file mode 100644 index 0000000000..61f0a25a33 --- /dev/null +++ b/hif/src/dispatcher/sdio_api.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2016 The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +QDF_STATUS hif_sdio_open(struct hif_softc *hif_sc, + enum qdf_bus_type bus_type); +void hif_sdio_close(struct hif_softc *hif_sc); +int hif_sdio_bus_suspend(struct hif_softc *hif_ctx); +int hif_sdio_bus_resume(struct hif_softc *hif_ctx); +QDF_STATUS hif_sdio_enable_bus(struct hif_softc *hif_sc, + struct device *dev, void *bdev, const hif_bus_id *bid, + enum hif_enable_type type); +void hif_sdio_disable_bus(struct hif_softc *hif_sc); +QDF_STATUS +hif_sdio_get_config_item(struct hif_softc *hif_sc, + int opcode, void *config, uint32_t config_len); +void hif_sdio_set_mailbox_swap(struct hif_softc *hif_sc); +void hif_sdio_claim_device(struct hif_softc *hif_sc); +void hif_sdio_mask_interrupt_call(struct hif_softc *scn);