summaryrefslogtreecommitdiff
path: root/al_serdes.c
diff options
context:
space:
mode:
Diffstat (limited to 'al_serdes.c')
-rw-r--r--al_serdes.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/al_serdes.c b/al_serdes.c
new file mode 100644
index 000000000000..6f9782327568
--- /dev/null
+++ b/al_serdes.c
@@ -0,0 +1,59 @@
+/*******************************************************************************
+Copyright (C) 2015 Annapurna Labs Ltd.
+
+This file may be licensed under the terms of the Annapurna Labs Commercial
+License Agreement.
+
+Alternatively, this file can be distributed under the terms of the GNU General
+Public License V2 as published by the Free Software Foundation and can be
+found at http://www.gnu.org/licenses/gpl-2.0.html
+
+Alternatively, redistribution and use in source and binary forms, with or
+without modification, are permitted 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.
+
+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 "al_serdes.h"
+#include "al_hal_serdes_hssp.h"
+#include "al_hal_serdes_25g.h"
+
+static int(*handle_init[AL_SRDS_NUM_GROUPS])(void __iomem *, struct al_serdes_grp_obj *) = {
+ al_serdes_hssp_handle_init,
+ al_serdes_hssp_handle_init,
+ al_serdes_hssp_handle_init,
+ al_serdes_hssp_handle_init,
+#if CHECK_ALPINE_V2
+ al_serdes_25g_handle_init,
+#endif
+};
+
+int al_serdes_handle_grp_init(
+ void __iomem *serdes_regs_base,
+ enum al_serdes_group grp,
+ struct al_serdes_grp_obj *obj)
+{
+ handle_init[grp](serdes_regs_base, obj);
+
+ return 0;
+}
+