ath9k_htc: Update to upstream's commit d19607454d656cb14d8c16dfbf161eebb542e8fe dated...
[linux-libre-firmware.git] / ath9k_htc / target_firmware / magpie_fw_dev / target / rompatch / HIF_usb_patch.c
index f931bb310a31fd02bb46a4be1045fb6f4efabb6a..c90f318147a525cf69d529b29db53d40563e3723 100755 (executable)
-/*\r
- * Copyright (c) 2013 Qualcomm Atheros, Inc.\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted (subject to the limitations in the\r
- * disclaimer below) provided that the following conditions are met:\r
- *\r
- *  * Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- *\r
- *  * Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the\r
- *    distribution.\r
- *\r
- *  * Neither the name of Qualcomm Atheros nor the names of its\r
- *    contributors may be used to endorse or promote products derived\r
- *    from this software without specific prior written permission.\r
- *\r
- * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE\r
- * GRANTED BY THIS LICENSE.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT\r
- * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED\r
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\r
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\r
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\r
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN\r
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- */\r
-#include "sys_cfg.h"\r
-#include "dt_defs.h"\r
-#include "reg_defs.h"\r
-\r
-#include <osapi.h>\r
-#include <hif_api.h>\r
-#include <Magpie_api.h>\r
-#include <vdesc_api.h>\r
-#include <adf_os_mem.h> \r
-#include <adf_os_io.h>\r
-\r
-#include "hif_usb.h"\r
-\r
-/*\r
- * -- support more than 64 bytes command on ep4 -- \r
- */\r
-int _HIFusb_get_max_msg_len_patch(hif_handle_t handle, int pipe)\r
-{\r
-    switch(pipe) {\r
-        case HIF_USB_PIPE_INTERRUPT:\r
-        case HIF_USB_PIPE_COMMAND:\r
-            return 512;\r
-            \r
-        default:\r
-            return 1600;\r
-    }\r
-}\r
-\r
-/*\r
- * -- move the usb_task to here --\r
- */\r
-void _HIFusb_isr_handler_patch(hif_handle_t h)\r
-{\r
-    A_USB_FW_TASK();\r
-\r
-    _HIFusb_isr_handler();\r
-}\r
-\r
-\r
-/*\r
- * -- reset usb dma --\r
- *\r
- * - make sure DMA_START bit0 is zero\r
- * - update DMA_START bit4 to 1\r
- * - update DESC_START_ADDR\r
- * - update DMA_START bit 0\r
- */\r
-void _HIFusb_start_patch(hif_handle_t handle) \r
-{\r
-    MAGPIE_REG_USB_TX0_DMA_START = 0x0;\r
-    MAGPIE_REG_USB_RX0_DMA_START = 0x0;\r
-    MAGPIE_REG_USB_RX1_DMA_START = 0x0;\r
-    MAGPIE_REG_USB_RX2_DMA_START = 0x0;\r
-    \r
-    while( 1 )\r
-    {\r
-        if(!MAGPIE_REG_USB_TX0_DMA_START &&\r
-          !MAGPIE_REG_USB_RX0_DMA_START &&\r
-          !MAGPIE_REG_USB_RX1_DMA_START &&\r
-          !MAGPIE_REG_USB_RX2_DMA_START )\r
-        {\r
-            MAGPIE_REG_USB_TX0_DMA_START = MAGPIE_REG_USB_TX0_DMA_START|BIT4; \r
-            MAGPIE_REG_USB_RX0_DMA_START = MAGPIE_REG_USB_RX0_DMA_START|BIT4;\r
-            MAGPIE_REG_USB_RX1_DMA_START = MAGPIE_REG_USB_RX1_DMA_START|BIT4;\r
-            MAGPIE_REG_USB_RX2_DMA_START = MAGPIE_REG_USB_RX2_DMA_START|BIT4;\r
-            break;\r
-        }\r
-    }\r
-    _HIFusb_start();\r
-}\r
+/*
+ * Copyright (c) 2013 Qualcomm Atheros, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted (subject to the limitations in the
+ * disclaimer below) provided that the following conditions are met:
+ *
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the
+ *    distribution.
+ *
+ *  * Neither the name of Qualcomm Atheros nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
+ * GRANTED BY THIS LICENSE.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
+ * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "sys_cfg.h"
+#include "dt_defs.h"
+#include "reg_defs.h"
+
+#include <rom.h>
+#include <osapi.h>
+#include <hif_api.h>
+#include <Magpie_api.h>
+#include <vdesc_api.h>
+#include <adf_os_mem.h>
+#include <adf_os_io.h>
+
+#include "hif_usb.h"
+
+/*
+ * -- support more than 64 bytes command on ep4 --
+ */
+int _HIFusb_get_max_msg_len_patch(hif_handle_t handle, int pipe)
+{
+    switch(pipe) {
+        case HIF_USB_PIPE_INTERRUPT:
+        case HIF_USB_PIPE_COMMAND:
+            return 512;
+
+        default:
+            return 1600;
+    }
+}
+
+/*
+ * -- move the usb_task to here --
+ */
+void _HIFusb_isr_handler_patch(hif_handle_t h)
+{
+    A_USB_FW_TASK();
+
+    _HIFusb_isr_handler(h);
+}
+
+
+/*
+ * -- reset usb dma --
+ *
+ * - make sure DMA_START bit0 is zero
+ * - update DMA_START bit4 to 1
+ * - update DESC_START_ADDR
+ * - update DMA_START bit 0
+ */
+void _HIFusb_start_patch(hif_handle_t handle)
+{
+    MAGPIE_REG_USB_TX0_DMA_START = 0x0;
+    MAGPIE_REG_USB_RX0_DMA_START = 0x0;
+    MAGPIE_REG_USB_RX1_DMA_START = 0x0;
+    MAGPIE_REG_USB_RX2_DMA_START = 0x0;
+
+    while( 1 )
+    {
+        if(!MAGPIE_REG_USB_TX0_DMA_START &&
+          !MAGPIE_REG_USB_RX0_DMA_START &&
+          !MAGPIE_REG_USB_RX1_DMA_START &&
+          !MAGPIE_REG_USB_RX2_DMA_START )
+        {
+            MAGPIE_REG_USB_TX0_DMA_START = MAGPIE_REG_USB_TX0_DMA_START|BIT4;
+            MAGPIE_REG_USB_RX0_DMA_START = MAGPIE_REG_USB_RX0_DMA_START|BIT4;
+            MAGPIE_REG_USB_RX1_DMA_START = MAGPIE_REG_USB_RX1_DMA_START|BIT4;
+            MAGPIE_REG_USB_RX2_DMA_START = MAGPIE_REG_USB_RX2_DMA_START|BIT4;
+            break;
+        }
+    }
+    _HIFusb_start(handle);
+}