aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
AgeCommit message (Collapse)AuthorFilesLines
2022-04-04staging: rtl8723bs: remove code suspect indentAlaa Mohamed1-1/+1
Fix "WARNING: suspect code indent for conditional statements (16, 32)" for line 1240 founded by checkpatch.pl Signed-off-by: Alaa Mohamed <eng.alaamohamedsoliman.am@gmail.com> Link: https://lore.kernel.org/r/20220330175949.95564-1-eng.alaamohamedsoliman.am@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: remove unnecessary spacesRebecca Mckeever1-3/+3
Conform to Linux kernel coding style. Issue found by checkpatch: WARNING: Statements should start on a tabstop Signed-off-by: Rebecca Mckeever <remckee0@gmail.com> Link: https://lore.kernel.org/r/YkRWGCmMytlqgvkZ@bertie Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: wfx: remove space at the start of the lineJaehee Park1-1/+1
Remove spaces at the start of the line to follow the linux kernel coding style. Issue found by checkpatch: WARNING: please, no spaces at the start of a line. Signed-off-by: Jaehee Park <jhpark1013@gmail.com> Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20220329222534.GA1002253@jaehee-ThinkPad-X1-Extreme Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: convert rtw_inc_and_chk_continual_urb_error() to boolMichael Straube1-1/+1
Function rtw_inc_and_chk_continual_urb_error() returns boolean values. Change its return type from int to bool. Signed-off-by: Michael Straube <straube.linux@gmail.com> Link: https://lore.kernel.org/r/20220329103756.6740-5-straube.linux@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: convert rtw_usb_bulk_size_boundary() to boolMichael Straube1-1/+1
Function rtw_usb_bulk_size_boundary() returns boolean values. Change its return type from u8 to bool. Signed-off-by: Michael Straube <straube.linux@gmail.com> Link: https://lore.kernel.org/r/20220329103756.6740-4-straube.linux@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: refactor rtw_inc_and_chk_continual_urb_error()Michael Straube1-5/+4
Refactor rtw_inc_and_chk_continual_urb_error(). Return directly instead of using a return variable and initialize the variable 'value' at declaration. This shortens the code and improves readability. Signed-off-by: Michael Straube <straube.linux@gmail.com> Link: https://lore.kernel.org/r/20220329103756.6740-3-straube.linux@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: refactor rtw_usb_bulk_size_boundary()Michael Straube1-8/+3
Using ternary operator to set a variable to true or false is not needed. Convert two such uses of ternary operator in rtw_usb_bulk_size_boundary() to just use the condition and return the value directly instead of using a return variable. This shortens the code and improves readability. While at it, remove an unneeded line break from the function head. Signed-off-by: Michael Straube <straube.linux@gmail.com> Link: https://lore.kernel.org/r/20220329103756.6740-2-straube.linux@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: use ieee80211 define for fragment numberMartin Kaiser2-4/+1
Use the IEEE80211_SCTL_FRAG define to extract the fragment number from an incoming frame. pattrib->frag_num must be in host endianness, we have to convert hdr->seq_ctrl, this field is little-endian. Remove the local GetFragNum macro, it is not used any more. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220327180944.712545-10-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: use ieee80211 macro for sequence numberMartin Kaiser2-15/+12
Use the IEEE80211_SEQ_TO_SN macro in function validate_recv_frame to get the sequence number of an incoming frame. Map the incoming rx bytes to a struct ieee80211_hdr. Replace the fc variable with struct ieee80211_hdr's frame control component. The IEEE80211_SEQ_TO_SN macro takes the sequence control field of an ieee80211 header and extracts the sequence number. The macro's input parameter must be in host endianness, the sequence number in the 80211 header is little-endian, we have to convert it to host endianness. Remove the local GetSequence macro, it is not used any more. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220327180944.712545-9-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: remove unused control frame subtypesMartin Kaiser1-5/+0
Remove unused defines for control frame subtypes. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220327180944.712545-8-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: remove unused data frame subtypesMartin Kaiser1-3/+0
Remove unused defines for data frame subtypes. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220327180944.712545-7-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: use standard mechanisms for qos data framesMartin Kaiser3-8/+4
Use defines and macros from ieee80211.h to check for qos data frames and to mark a frame as qos data. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220327180944.712545-6-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: use standard mechanisms for data framesMartin Kaiser3-13/+13
Use defines and macros from ieee80211.h to check for data frames and to define data frame subtypes. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220327180944.712545-5-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: use standard mechanisms for control framesMartin Kaiser3-17/+10
Use defines and macros from ieee80211.h to check for control frames and to define control frame subtypes. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220327180944.712545-4-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: use ieee80211 helper to read the pwr bitMartin Kaiser1-1/+1
Use the ieee80211 helper to read the power management bit. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220327180944.712545-3-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: use ieee80211 define for version checkMartin Kaiser1-3/+1
Use the IEEE80211_FCTL_VERS define to check the version number of a received frame. Covert IEEE80211_FCTL_VERS to le16 before using it as a mask for fc, which is also an le16 value. The ieee80211_... helper functions use the same approach. Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220327180944.712545-2-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: remove empty rtw_fwdbg_event_callbackMartin Kaiser2-7/+1
Remove the empty function rtw_fwdbg_event_callback. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220322202439.157999-5-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: remove empty rtw_dummy_event_callbackMartin Kaiser2-7/+2
Remove the empty function rtw_dummy_event_callback. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220322202439.157999-4-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: the MCS_rate_2R array is not usedMartin Kaiser2-2/+0
The MCS_rate_2R array is not used in the r8188eu driver. Remove it. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220322202439.157999-3-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: make _rtw_init_mlme_priv staticMartin Kaiser2-3/+1
The _rtw_init_mlme_priv function is used only in rtw_mlme.c. It can be declared as static. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220322202439.157999-2-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: vchiq: replace usage of found with dedicated list iterator variableJakob Koschel2-14/+12
To move the list iterator variable into the list_for_each_entry_*() macro in the future it should be avoided to use the list iterator variable after the loop body. To *never* use the list iterator variable after the loop it was concluded to use a separate iterator variable instead of a found boolean [1]. This removes the need to use a found variable and simply checking if the variable was set, can determine if the break/goto was hit. Link: https://lore.kernel.org/all/CAHk-=wgRr_D8CB-D9Kg-c=EHreAsk5SqXPwr9Y7k9sA6cWXJ6w@mail.gmail.com/ Signed-off-by: Jakob Koschel <jakobkoschel@gmail.com> Link: https://lore.kernel.org/r/20220324073024.65943-1-jakobkoschel@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: refactor dm func set and clearMartin Kaiser5-20/+7
Refactor the code to set and clear "dm functions". The only remaining callers of Switch_DM_Func use Switch_DM_Func(padapter, DYNAMIC_ALL_FUNC_ENABLE, true) or Switch_DM_Func(padapter, DYNAMIC_FUNC_DISABLE, false). Remove Switch_DM_Func and call SetHwReg8188EU directly. For HW_VAR_DM_FUNC_SET, the parameter is always DYNAMIC_ALL_FUNC_ENABLE. This operation resets podmpriv->SupportAbility to the initial value. Rename HW_VAR_DM_FUNC_SET to HW_VAR_DM_FUNC_RESET and drop the unused else branch. For HW_VAR_DM_FUNC_CLR, the parameter is always DYNAMIC_FUNC_DISABLE (0x00). We can set podmpriv->SupportAbility to 0 directly. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220321203031.143486-7-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: DYNAMIC_RF_CALIBRATION is not usedMartin Kaiser2-4/+0
Remove the DYNAMIC_RF_CALIBRATION capability. It's cleared in one place but never checked. DYNAMIC_RF_CALIBRATION is part of podmpriv->SupportAbility, there are no users that check SupportAbility as a whole and use DYNAMIC_RF_CALIBRATION implicitly. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220321203031.143486-6-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: DYNAMIC_BB_ANT_DIV is not usedMartin Kaiser2-4/+0
Remove the DYNAMIC_BB_ANT_DIV capability. It's cleared in one place but never checked. DYNAMIC_BB_ANT_DIV is part of podmpriv->SupportAbility, there are no users that check SupportAbility as a whole and use DYNAMIC_BB_ANT_DIV implicitly. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220321203031.143486-5-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: DYNAMIC_BB_DYNAMIC_TXPWR is not usedMartin Kaiser3-7/+0
Remove the DYNAMIC_BB_DYNAMIC_TXPWR capability. It is cleared but not used. DYNAMIC_BB_DYNAMIC_TXPWR defines a bit in podmpriv->SupportAbility that's set or cleared. There's no code that checks this bit explicitly. There's also no code that makes a copy of SupportAbility and checks the DYNAMIC_BB_DYNAMIC_TXPWR in the copy. SupportAbility is copied to podmpriv->BK_SupportAbility. The only use of BK_SupportAbility is to restore a previously saved value. The other remaining reader of SupportAbility is a private debug ioctl. It's safe to assume that DYNAMIC_BB_DYNAMIC_TXPWR is not used, not even indirectly. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220321203031.143486-4-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: remove unused defines for dynamic functionsMartin Kaiser1-16/+0
Remove a couple of DYNAMIC_BB_... defines which are not used by this driver. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220321203031.143486-3-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: remove two limit definesMartin Kaiser1-3/+0
Remove two unused defines related to limits. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220321203031.143486-2-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: remove local BIT macroMartin Kaiser2-8/+3
The r8188eu driver defines a local BIT(x) macro. Remove this local macro and use the one from include/linux/bits.h. The global BIT macro returns an unsigned long value, the removed local BIT macro used a signed int. DYNAMIC_BB_DYNAMIC_TXPWR is defined as BIT(2), ~DYNAMIC_BB_DYNAMIC_TXPWR is passed to Switch_DM_Func as a u32 parameter. We need a cast in this case as ~DYNAMIC_BB_DYNAMIC_TXPWR is a 64-bit value on x86_64 systems. Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20220319180342.3143734-1-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: greybus: codecs: fix type confusion of list iterator variableJakob Koschel1-2/+2
If the list does not exit early then data == NULL and 'module' does not point to a valid list element. Using 'module' in such a case is not valid and was therefore removed. Fixes: 6dd67645f22c ("greybus: audio: Use single codec driver registration") Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com> Reviewed-by: Vaibhav Agarwal <vaibhav.sr@gmail.com> Reviewed-by: Mark Greer <mgreer@animalcreek.com> Signed-off-by: Jakob Koschel <jakobkoschel@gmail.com> Link: https://lore.kernel.org/r/20220321123626.3068639-1-jakobkoschel@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: greybus: codecs: use dedicated list iterator variableJakob Koschel1-8/+12
In preparation to limit the scope of the list iterator to the list traversal loop, use a dedicated pointer to point to the found element [1]. Link: https://lore.kernel.org/all/YhdfEIwI4EdtHdym@kroah.com/ Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com> Reviewed-by: Vaibhav Agarwal <vaibhav.sr@gmail.com> Reviewed-by: Mark Greer <mgreer@animalcreek.com> Signed-off-by: Jakob Koschel <jakobkoschel@gmail.com> Link: https://lore.kernel.org/r/20220321123712.3068778-1-jakobkoschel@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: vt6656: Fix multiple blank lines warningSathish Kumar2-2/+0
This patch fixes the checkpatch.pl warnings like: CHECK: Please don't use multiple blank lines + + Signed-off-by: Sathish Kumar <skumark1902@gmail.com> Link: https://lore.kernel.org/r/20220322084334.4077-1-skumark1902@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: rtl8712: Use completions for signalingSathish Kumar4-11/+4
r8712_sitesurvey_cmd() uses a variable to notify r8712_SetFilter() that it has completed operation. There is no sort of assurance that the variable will actually change and it could cache the value the first time it is read and then never update it for the whole loop logic. Use completion variables because they are better suited for the purpose. This patch fixes the checkpatch.pl warnings like: CHECK: Avoid CamelCase: <blnEnableRxFF0Filter> + u8 blnEnableRxFF0Filter; Reviewed-by: Fabio M. De Francesco <fmdefrancesco@gmail.com> Signed-off-by: Sathish Kumar <skumark1902@gmail.com> Link: https://lore.kernel.org/r/20220323045515.2513-1-skumark1902@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: rtl8723bs: Change rtw_ndev_notifier_call message to dbgChris Morgan1-1/+1
The message received in the kernel log for the state of the notifier call doesn't seem to be of much help to end users. Changing the message type from info to dbg to hide the message unless you are debugging the kernel or the network subsystem. Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Chris Morgan <macromorgan@hotmail.com> Link: https://lore.kernel.org/r/20220323154237.21736-1-macroalpha82@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: rtl8723bs: Remove redundant else branches.Sevinj Aghayeva1-19/+13
This patch fixes the following checkpatch.pl warning: WARNING: else is not generally useful after a break or return Signed-off-by: Sevinj Aghayeva <sevinj.aghayeva@gmail.com> Link: https://lore.kernel.org/r/20220329140904.GA3566@ubuntu Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04staging: r8188eu: fix suspect code indent for conditional statementsRebecca Mckeever1-1/+1
Align the if and else if branches of the conditional statement to improve readability. Prevent bugs that could be introduced if developers misread the code. Issue found by checkpatch. Signed-off-by: Rebecca Mckeever <remckee0@gmail.com> Link: https://lore.kernel.org/r/YkK7ABTVt0TCbd18@bertie Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-04-04bus: mhi: ep: Add uevent support for module autoloadingManivannan Sadhasivam1-0/+9
Add uevent support to MHI endpoint bus so that the client drivers can be autoloaded by udev when the MHI endpoint devices gets created. The client drivers are expected to provide MODULE_DEVICE_TABLE with the MHI id_table struct so that the alias can be exported. The MHI endpoint reused the mhi_device_id structure of the MHI bus. Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
2022-04-04bus: mhi: ep: Add support for suspending and resuming channelsManivannan Sadhasivam3-0/+65
Add support for suspending and resuming the channels in MHI endpoint stack. The channels will be moved to the suspended state during M3 state transition and will be resumed during M0 transition. Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
2022-04-04bus: mhi: ep: Add support for queueing SKBs to the hostManivannan Sadhasivam1-0/+82
Add support for queueing SKBs to the host over the transfer ring of the relevant channel. The mhi_ep_queue_skb() API will be used by the client networking drivers to queue the SKBs to the host over MHI bus. The host will add ring elements to the transfer ring periodically for the device and the device will write SKBs to the ring elements. If a single SKB doesn't fit in a ring element (TRE), it will be placed in multiple ring elements and the overflow event will be sent for all ring elements except the last one. For the last ring element, the EOT event will be sent indicating the packet boundary. Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
2022-04-04bus: mhi: ep: Add support for processing channel ringsManivannan Sadhasivam1-0/+108
Add support for processing the channel rings from host. For the channel ring associated with DL channel, the xfer callback will simply invoked. For the case of UL channel, the ring elements will be read in a buffer till the write pointer and later passed to the client driver using the xfer callback. The client drivers should provide the callbacks for both UL and DL channels during registration. Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
2022-04-04bus: mhi: ep: Add support for reading from the hostManivannan Sadhasivam1-0/+121
Data transfer between host and the ep device happens over the transfer ring associated with each bi-directional channel pair. Host defines the transfer ring by allocating memory for it. The read and write pointer addresses of the transfer ring are stored in the channel context. Once host places the elements in the transfer ring, it increments the write pointer and rings the channel doorbell. Device will receive the doorbell interrupt and will process the transfer ring elements. This commit adds support for reading the transfer ring elements from the transfer ring till write pointer, incrementing the read pointer and finally sending the completion event to the host through corresponding event ring. Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
2022-04-04bus: mhi: ep: Add support for processing command ringsManivannan Sadhasivam1-1/+189
Add support for processing the command rings. Command ring is used by the host to issue channel specific commands to the ep device. Following commands are supported: 1. Start channel 2. Stop channel 3. Reset channel Once the device receives the command doorbell interrupt from host, it executes the command and generates a command completion event to the host in the primary event ring. Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
2022-04-04bus: mhi: ep: Add support for handling SYS_ERR conditionManivannan Sadhasivam3-2/+30
Add support for handling SYS_ERR (System Error) condition in the MHI endpoint stack. The SYS_ERR flag will be asserted by the endpoint device when it detects an internal error. The host will then issue reset and reinitializes MHI to recover from the error state. Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
2022-04-04bus: mhi: ep: Add support for handling MHI_RESETManivannan Sadhasivam1-0/+53
Add support for handling MHI_RESET in MHI endpoint stack. MHI_RESET will be issued by the host during shutdown and during error scenario so that it can recover the endpoint device without restarting the whole device. MHI_RESET handling involves resetting the internal MHI registers, data structures, state machines, resetting all channels/rings and setting MHICTRL.RESET bit to 0. Additionally the device will also move to READY state if the reset was due to SYS_ERR. Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
2022-04-04bus: mhi: ep: Add support for powering down the MHI endpoint stackManivannan Sadhasivam1-0/+78
Add support for MHI endpoint power_down that includes stopping all available channels, destroying the channels, resetting the event and transfer rings and freeing the host cache. The stack will be powered down whenever the physical bus link goes down. Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
2022-04-04bus: mhi: ep: Add support for powering up the MHI endpoint stackManivannan Sadhasivam1-0/+205
Add support for MHI endpoint power_up that includes initializing the MMIO and rings, caching the host MHI registers, and setting the MHI state to M0. After registering the MHI EP controller, the stack has to be powered up for usage. Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
2022-04-04bus: mhi: ep: Add support for processing MHI endpoint interruptsManivannan Sadhasivam1-2/+122
Add support for processing MHI endpoint interrupts such as control interrupt, command interrupt and channel interrupt from the host. The interrupts will be generated in the endpoint device whenever host writes to the corresponding doorbell registers. The doorbell logic is handled inside the hardware internally. Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
2022-04-04bus: mhi: ep: Add support for managing MHI state machineManivannan Sadhasivam4-2/+201
Add support for managing the MHI state machine by controlling the state transitions. Only the following MHI state transitions are supported: 1. Ready state 2. M0 state 3. M3 state 4. SYS_ERR state Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
2022-04-04bus: mhi: ep: Add support for sending events to the hostManivannan Sadhasivam3-0/+115
Add support for sending the events to the host over MHI bus from the endpoint. Following events are supported: 1. Transfer completion event 2. Command completion event 3. State change event 4. Execution Environment (EE) change event An event is sent whenever an operation has been completed in the MHI EP device. Event is sent using the MHI event ring and additionally the host is notified using an IRQ if required. Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
2022-04-04bus: mhi: ep: Add support for ring managementManivannan Sadhasivam3-1/+226
Add support for managing the MHI ring. The MHI ring is a circular queue of data structures used to pass the information between host and the endpoint. MHI support 3 types of rings: 1. Transfer ring 2. Event ring 3. Command ring All rings reside inside the host memory and the MHI EP device maps it to the device memory using blocks like PCIe iATU. The mapping is handled in the MHI EP controller driver itself. Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
2022-04-04bus: mhi: ep: Add support for managing MMIO registersManivannan Sadhasivam4-2/+305
Add support for managing the Memory Mapped Input Output (MMIO) registers of the MHI bus. All MHI operations are carried out using the MMIO registers by both host and the endpoint device. The MMIO registers reside inside the endpoint device memory (fixed location based on the platform) and the address is passed by the MHI EP controller driver during its registration. Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>