14562236bSHarry Wentland /* 24562236bSHarry Wentland * Copyright 2012-15 Advanced Micro Devices, Inc. 34562236bSHarry Wentland * 44562236bSHarry Wentland * Permission is hereby granted, free of charge, to any person obtaining a 54562236bSHarry Wentland * copy of this software and associated documentation files (the "Software"), 64562236bSHarry Wentland * to deal in the Software without restriction, including without limitation 74562236bSHarry Wentland * the rights to use, copy, modify, merge, publish, distribute, sublicense, 84562236bSHarry Wentland * and/or sell copies of the Software, and to permit persons to whom the 94562236bSHarry Wentland * Software is furnished to do so, subject to the following conditions: 104562236bSHarry Wentland * 114562236bSHarry Wentland * The above copyright notice and this permission notice shall be included in 124562236bSHarry Wentland * all copies or substantial portions of the Software. 134562236bSHarry Wentland * 144562236bSHarry Wentland * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 154562236bSHarry Wentland * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 164562236bSHarry Wentland * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 174562236bSHarry Wentland * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 184562236bSHarry Wentland * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 194562236bSHarry Wentland * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 204562236bSHarry Wentland * OTHER DEALINGS IN THE SOFTWARE. 214562236bSHarry Wentland * 224562236bSHarry Wentland * Authors: AMD 234562236bSHarry Wentland * 244562236bSHarry Wentland */ 254562236bSHarry Wentland 264562236bSHarry Wentland #ifndef __DAL_IRQ_TYPES_H__ 274562236bSHarry Wentland #define __DAL_IRQ_TYPES_H__ 284562236bSHarry Wentland 29eb0e5154SDmytro Laktyushkin #include "os_types.h" 30eb0e5154SDmytro Laktyushkin 314562236bSHarry Wentland struct dc_context; 324562236bSHarry Wentland 334562236bSHarry Wentland typedef void (*interrupt_handler)(void *); 344562236bSHarry Wentland 354562236bSHarry Wentland typedef void *irq_handler_idx; 364562236bSHarry Wentland #define DAL_INVALID_IRQ_HANDLER_IDX NULL 374562236bSHarry Wentland 384562236bSHarry Wentland /* The order of the IRQ sources is important and MUST match the one's 394562236bSHarry Wentland of base driver */ 404562236bSHarry Wentland enum dc_irq_source { 414562236bSHarry Wentland /* Use as mask to specify invalid irq source */ 424562236bSHarry Wentland DC_IRQ_SOURCE_INVALID = 0, 434562236bSHarry Wentland 444562236bSHarry Wentland DC_IRQ_SOURCE_HPD1, 454562236bSHarry Wentland DC_IRQ_SOURCE_HPD2, 464562236bSHarry Wentland DC_IRQ_SOURCE_HPD3, 474562236bSHarry Wentland DC_IRQ_SOURCE_HPD4, 484562236bSHarry Wentland DC_IRQ_SOURCE_HPD5, 494562236bSHarry Wentland DC_IRQ_SOURCE_HPD6, 504562236bSHarry Wentland 514562236bSHarry Wentland DC_IRQ_SOURCE_HPD1RX, 524562236bSHarry Wentland DC_IRQ_SOURCE_HPD2RX, 534562236bSHarry Wentland DC_IRQ_SOURCE_HPD3RX, 544562236bSHarry Wentland DC_IRQ_SOURCE_HPD4RX, 554562236bSHarry Wentland DC_IRQ_SOURCE_HPD5RX, 564562236bSHarry Wentland DC_IRQ_SOURCE_HPD6RX, 574562236bSHarry Wentland 584562236bSHarry Wentland DC_IRQ_SOURCE_I2C_DDC1, 594562236bSHarry Wentland DC_IRQ_SOURCE_I2C_DDC2, 604562236bSHarry Wentland DC_IRQ_SOURCE_I2C_DDC3, 614562236bSHarry Wentland DC_IRQ_SOURCE_I2C_DDC4, 624562236bSHarry Wentland DC_IRQ_SOURCE_I2C_DDC5, 634562236bSHarry Wentland DC_IRQ_SOURCE_I2C_DDC6, 644562236bSHarry Wentland 654562236bSHarry Wentland DC_IRQ_SOURCE_DPSINK1, 664562236bSHarry Wentland DC_IRQ_SOURCE_DPSINK2, 674562236bSHarry Wentland DC_IRQ_SOURCE_DPSINK3, 684562236bSHarry Wentland DC_IRQ_SOURCE_DPSINK4, 694562236bSHarry Wentland DC_IRQ_SOURCE_DPSINK5, 704562236bSHarry Wentland DC_IRQ_SOURCE_DPSINK6, 714562236bSHarry Wentland 724562236bSHarry Wentland DC_IRQ_SOURCE_TIMER, 734562236bSHarry Wentland 744562236bSHarry Wentland DC_IRQ_SOURCE_PFLIP_FIRST, 754562236bSHarry Wentland DC_IRQ_SOURCE_PFLIP1 = DC_IRQ_SOURCE_PFLIP_FIRST, 764562236bSHarry Wentland DC_IRQ_SOURCE_PFLIP2, 774562236bSHarry Wentland DC_IRQ_SOURCE_PFLIP3, 784562236bSHarry Wentland DC_IRQ_SOURCE_PFLIP4, 794562236bSHarry Wentland DC_IRQ_SOURCE_PFLIP5, 804562236bSHarry Wentland DC_IRQ_SOURCE_PFLIP6, 814562236bSHarry Wentland DC_IRQ_SOURCE_PFLIP_UNDERLAY0, 824562236bSHarry Wentland DC_IRQ_SOURCE_PFLIP_LAST = DC_IRQ_SOURCE_PFLIP_UNDERLAY0, 834562236bSHarry Wentland 844562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD0, 854562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD1, 864562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD2, 874562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD3, 884562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD4, 894562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD5, 904562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD6, 914562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD7, 924562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD8, 934562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD9, 944562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD10, 954562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD11, 964562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD12, 974562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD13, 984562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD14, 994562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD15, 1004562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD16, 1014562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD17, 1024562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD18, 1034562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD19, 1044562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD20, 1054562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD21, 1064562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD22, 1074562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD23, 1084562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD24, 1094562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD25, 1104562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD26, 1114562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD27, 1124562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD28, 1134562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD29, 1144562236bSHarry Wentland DC_IRQ_SOURCE_GPIOPAD30, 1154562236bSHarry Wentland 1164562236bSHarry Wentland DC_IRQ_SOURCE_DC1UNDERFLOW, 1174562236bSHarry Wentland DC_IRQ_SOURCE_DC2UNDERFLOW, 1184562236bSHarry Wentland DC_IRQ_SOURCE_DC3UNDERFLOW, 1194562236bSHarry Wentland DC_IRQ_SOURCE_DC4UNDERFLOW, 1204562236bSHarry Wentland DC_IRQ_SOURCE_DC5UNDERFLOW, 1214562236bSHarry Wentland DC_IRQ_SOURCE_DC6UNDERFLOW, 1224562236bSHarry Wentland 1234562236bSHarry Wentland DC_IRQ_SOURCE_DMCU_SCP, 1244562236bSHarry Wentland DC_IRQ_SOURCE_VBIOS_SW, 1254562236bSHarry Wentland 1264562236bSHarry Wentland DC_IRQ_SOURCE_VUPDATE1, 1274562236bSHarry Wentland DC_IRQ_SOURCE_VUPDATE2, 1284562236bSHarry Wentland DC_IRQ_SOURCE_VUPDATE3, 1294562236bSHarry Wentland DC_IRQ_SOURCE_VUPDATE4, 1304562236bSHarry Wentland DC_IRQ_SOURCE_VUPDATE5, 1314562236bSHarry Wentland DC_IRQ_SOURCE_VUPDATE6, 1324562236bSHarry Wentland 133b10d51f8SAndrey Grodzovsky DC_IRQ_SOURCE_VBLANK1, 134b10d51f8SAndrey Grodzovsky DC_IRQ_SOURCE_VBLANK2, 135b10d51f8SAndrey Grodzovsky DC_IRQ_SOURCE_VBLANK3, 136b10d51f8SAndrey Grodzovsky DC_IRQ_SOURCE_VBLANK4, 137b10d51f8SAndrey Grodzovsky DC_IRQ_SOURCE_VBLANK5, 138b10d51f8SAndrey Grodzovsky DC_IRQ_SOURCE_VBLANK6, 139b10d51f8SAndrey Grodzovsky 1406e5b3587SSivapiriyanKumarasamy DC_IRQ_SOURCE_DC1_VLINE0, 1416e5b3587SSivapiriyanKumarasamy DC_IRQ_SOURCE_DC2_VLINE0, 1426e5b3587SSivapiriyanKumarasamy DC_IRQ_SOURCE_DC3_VLINE0, 1436e5b3587SSivapiriyanKumarasamy DC_IRQ_SOURCE_DC4_VLINE0, 1446e5b3587SSivapiriyanKumarasamy DC_IRQ_SOURCE_DC5_VLINE0, 1456e5b3587SSivapiriyanKumarasamy DC_IRQ_SOURCE_DC6_VLINE0, 1466e5b3587SSivapiriyanKumarasamy 1478fde60b7SFatemeh Darbehani DC_IRQ_SOURCE_DC1_VLINE1, 1488fde60b7SFatemeh Darbehani DC_IRQ_SOURCE_DC2_VLINE1, 1498fde60b7SFatemeh Darbehani DC_IRQ_SOURCE_DC3_VLINE1, 1508fde60b7SFatemeh Darbehani DC_IRQ_SOURCE_DC4_VLINE1, 1518fde60b7SFatemeh Darbehani DC_IRQ_SOURCE_DC5_VLINE1, 1528fde60b7SFatemeh Darbehani DC_IRQ_SOURCE_DC6_VLINE1, 15381927e28SJude Shih DC_IRQ_SOURCE_DMCUB_OUTBOX, 15470732504SYongqiang Sun DC_IRQ_SOURCE_DMCUB_OUTBOX0, 155*556a979dSChun-Liang Chang DC_IRQ_SOURCE_DMCUB_GENERAL_DATAOUT, 1564562236bSHarry Wentland DAL_IRQ_SOURCES_NUMBER 1574562236bSHarry Wentland }; 1584562236bSHarry Wentland 1594562236bSHarry Wentland enum irq_type 1604562236bSHarry Wentland { 1614562236bSHarry Wentland IRQ_TYPE_PFLIP = DC_IRQ_SOURCE_PFLIP1, 1624562236bSHarry Wentland IRQ_TYPE_VUPDATE = DC_IRQ_SOURCE_VUPDATE1, 163b10d51f8SAndrey Grodzovsky IRQ_TYPE_VBLANK = DC_IRQ_SOURCE_VBLANK1, 164320eca62SWayne Lin IRQ_TYPE_VLINE0 = DC_IRQ_SOURCE_DC1_VLINE0, 1654562236bSHarry Wentland }; 1664562236bSHarry Wentland 1674562236bSHarry Wentland #define DAL_VALID_IRQ_SRC_NUM(src) \ 168e38ca7e4SGuchun Chen ((src) < DAL_IRQ_SOURCES_NUMBER && (src) > DC_IRQ_SOURCE_INVALID) 1694562236bSHarry Wentland 1704562236bSHarry Wentland /* Number of Page Flip IRQ Sources. */ 1714562236bSHarry Wentland #define DAL_PFLIP_IRQ_SRC_NUM \ 1724562236bSHarry Wentland (DC_IRQ_SOURCE_PFLIP_LAST - DC_IRQ_SOURCE_PFLIP_FIRST + 1) 1734562236bSHarry Wentland 1744562236bSHarry Wentland /* the number of contexts may be expanded in the future based on needs */ 1754562236bSHarry Wentland enum dc_interrupt_context { 1764562236bSHarry Wentland INTERRUPT_LOW_IRQ_CONTEXT = 0, 1774562236bSHarry Wentland INTERRUPT_HIGH_IRQ_CONTEXT, 1784562236bSHarry Wentland INTERRUPT_CONTEXT_NUMBER 1794562236bSHarry Wentland }; 1804562236bSHarry Wentland 1814562236bSHarry Wentland enum dc_interrupt_porlarity { 1824562236bSHarry Wentland INTERRUPT_POLARITY_DEFAULT = 0, 1834562236bSHarry Wentland INTERRUPT_POLARITY_LOW = INTERRUPT_POLARITY_DEFAULT, 1844562236bSHarry Wentland INTERRUPT_POLARITY_HIGH, 1854562236bSHarry Wentland INTERRUPT_POLARITY_BOTH 1864562236bSHarry Wentland }; 1874562236bSHarry Wentland 1884562236bSHarry Wentland #define DC_DECODE_INTERRUPT_POLARITY(int_polarity) \ 1894562236bSHarry Wentland (int_polarity == INTERRUPT_POLARITY_LOW) ? "Low" : \ 1904562236bSHarry Wentland (int_polarity == INTERRUPT_POLARITY_HIGH) ? "High" : \ 1914562236bSHarry Wentland (int_polarity == INTERRUPT_POLARITY_BOTH) ? "Both" : "Invalid" 1924562236bSHarry Wentland 1934562236bSHarry Wentland struct dc_timer_interrupt_params { 1944562236bSHarry Wentland uint32_t micro_sec_interval; 1954562236bSHarry Wentland enum dc_interrupt_context int_context; 1964562236bSHarry Wentland }; 1974562236bSHarry Wentland 1984562236bSHarry Wentland struct dc_interrupt_params { 1994562236bSHarry Wentland /* The polarity *change* which will trigger an interrupt. 2004562236bSHarry Wentland * If 'requested_polarity == INTERRUPT_POLARITY_BOTH', then 2014562236bSHarry Wentland * 'current_polarity' must be initialised. */ 2024562236bSHarry Wentland enum dc_interrupt_porlarity requested_polarity; 2034562236bSHarry Wentland /* If 'requested_polarity == INTERRUPT_POLARITY_BOTH', 2044562236bSHarry Wentland * 'current_polarity' should contain the current state, which means 2054562236bSHarry Wentland * the interrupt will be triggered when state changes from what is, 2064562236bSHarry Wentland * in 'current_polarity'. */ 2074562236bSHarry Wentland enum dc_interrupt_porlarity current_polarity; 2084562236bSHarry Wentland enum dc_irq_source irq_source; 2094562236bSHarry Wentland enum dc_interrupt_context int_context; 2104562236bSHarry Wentland }; 2114562236bSHarry Wentland 2124562236bSHarry Wentland #endif 213