Lines Matching +full:controller +full:- +full:data
1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
10 #include <linux/dma-direction.h>
27 * enum mhi_callback - MHI callback
29 * @MHI_CB_PENDING_DATA: New data available for client to process
51 * enum mhi_flags - Transfer flags
63 * enum mhi_device_type - Device types
64 * @MHI_DEVICE_XFER: Handles data transfer
73 * enum mhi_ch_type - Channel types
89 * struct image_info - Firmware and RDDM table
102 * struct mhi_link_info - BW requirement
103 * target_link_speed - Link speed as defined by TLS bits in LinkControl reg
104 * target_link_width - Link width as defined by NLW bits in LinkStatus reg
112 * enum mhi_ee_type - Execution environment types
138 * enum mhi_state - MHI states
163 * enum mhi_ch_ee_mask - Execution environment mask for channel
183 * enum mhi_er_data_type - Event ring data types
184 * @MHI_ER_DATA: Only client data over this ring
185 * @MHI_ER_CTRL: MHI control data and client data
193 * enum mhi_db_brst_mode - Doorbell mode
203 * struct mhi_channel_config - Channel configuration structure for controller
209 * @dir: Direction that data may flow on this channel
219 * @wake-capable: Channel capable of waking up the system
240 * struct mhi_event_config - Event ring configuration structure for controller
244 * @channel: Dedicated channel number. U32_MAX indicates a non-dedicated ring
247 * @data_type: Type of data this ring will process
266 * struct mhi_controller_config - Root MHI controller configuration
292 * struct mhi_controller - Master MHI controller structure
294 * controller (required)
295 * @mhi_dev: MHI device instance for the controller
296 * @debugfs_dentry: MHI controller debugfs directory
301 * @iova_start: IOMMU starting address for data (required)
302 * @iova_stop: IOMMU stop address for data (required)
304 * @fw_data: Firmware image data content for normal booting, used only
306 * @fw_sz: Firmware image data size for normal booting, used only if fw_image
318 * @max_chan: Maximum number of channels the controller supports
323 * @family_number: MHI controller family number
324 * @device_number: MHI controller device number
325 * @major_version: MHI controller major revision number
326 * @minor_version: MHI controller minor revision number
327 * @serial_number: MHI controller serial number obtained from BHI
328 * @oem_pk_hash: MHI controller OEM PK Hash obtained from BHI
341 * @pending_pkts: Pending packets for the controller
352 * @wake_put: CB function to de-assert device wake (optional)
353 * @wake_toggle: CB function to assert and de-assert device wake (optional)
354 * @runtime_get: CB function to controller runtime resume (required)
360 * @reset: Controller specific reset function (optional)
362 * @index: Index of the MHI controller instance
369 * Fields marked as (required) need to be populated by the controller driver
375 * by the controller drivers. The MHI stack will just populate these fields
468 * struct mhi_device - Structure representing an MHI device which binds
472 * @mhi_cntrl: Controller the device belongs to
495 * struct mhi_result - Completed buffer information
496 * @buf_addr: Address of data buffer
509 * struct mhi_buf - MHI Buffer description
512 * ECA - Event context array data
513 * CCA - Channel context array data
525 * struct mhi_driver - Structure representing a MHI client driver
528 * @ul_xfer_cb: CB function for UL data transfer
529 * @dl_xfer_cb: CB function for DL data transfer
550 * mhi_alloc_controller - Allocate the MHI Controller structure
556 * mhi_free_controller - Free the MHI Controller structure
562 * mhi_register_controller - Register MHI controller
563 * @mhi_cntrl: MHI controller to register
564 * @config: Configuration to use for the controller
570 * mhi_unregister_controller - Unregister MHI controller
571 * @mhi_cntrl: MHI controller to unregister
576 * module_mhi_driver() - Helper macro for drivers that don't do
592 * __mhi_driver_register - Register driver with MHI framework
599 * mhi_driver_unregister - Unregister a driver for mhi_devices
605 * mhi_set_mhi_state - Set MHI device state
606 * @mhi_cntrl: MHI controller
613 * mhi_notify - Notify the MHI client driver about client device status
620 * mhi_get_free_desc_count - Get transfer ring length
629 * mhi_prepare_for_power_up - Do pre-initialization before power up.
631 * the controller does not want bus framework to
634 * @mhi_cntrl: MHI controller
639 * mhi_async_power_up - Start MHI power up sequence
640 * @mhi_cntrl: MHI controller
645 * mhi_sync_power_up - Start MHI power up sequence and wait till the device
647 * @mhi_cntrl: MHI controller
652 * mhi_power_down - Start MHI power down sequence
653 * @mhi_cntrl: MHI controller
659 * mhi_unprepare_after_power_down - Free any allocated memory after power down
660 * @mhi_cntrl: MHI controller
665 * mhi_pm_suspend - Move MHI into a suspended state
666 * @mhi_cntrl: MHI controller
671 * mhi_pm_resume - Resume MHI from suspended state
672 * @mhi_cntrl: MHI controller
677 * mhi_pm_resume_force - Force resume MHI from suspended state
678 * @mhi_cntrl: MHI controller
690 * mhi_download_rddm_image - Download ramdump image from device for
692 * @mhi_cntrl: MHI controller
698 * mhi_force_rddm_mode - Force device into rddm mode
699 * @mhi_cntrl: MHI controller
704 * mhi_get_exec_env - Get BHI execution environment of the device
705 * @mhi_cntrl: MHI controller
710 * mhi_get_mhi_state - Get MHI state of the device
711 * @mhi_cntrl: MHI controller
716 * mhi_soc_reset - Trigger a device reset. This can be used as a last resort
718 * @mhi_cntrl: MHI controller
723 * mhi_device_get - Disable device low power mode
729 * mhi_device_get_sync - Disable device low power mode. Synchronously
730 * take the controller out of suspended state
736 * mhi_device_put - Re-enable device low power mode
742 * mhi_prepare_for_transfer - Setup UL and DL channels for data transfer.
752 * mhi_prepare_for_transfer_autoqueue - Setup UL and DL channels with auto queue
764 * mhi_unprepare_from_transfer - Reset UL and DL channels for data transfer.
766 * device clean-up the context so no incoming
770 * clean-up. Channels can be reset only if both
779 * mhi_queue_dma - Send or receive DMA mapped buffers from client device
783 * @mhi_buf: Buffer for holding the DMA mapped data
791 * mhi_queue_buf - Send or receive raw buffers from client device over MHI
795 * @buf: Buffer for holding the data
803 * mhi_queue_skb - Send or receive SKBs from client device over MHI channel
814 * mhi_queue_is_full - Determine whether queueing new elements is possible