17a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann/* 23396c7823efb3a5b8630388c464e1034ea031cedPaul Gortmaker * linux/drivers/net/ethernet/ibm/ehea/ehea_hw.h 37a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * 47a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * eHEA ethernet device driver for IBM eServer System p 57a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * 67a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * (C) Copyright IBM Corp. 2006 77a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * 87a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * Authors: 97a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * Christoph Raisch <raisch@de.ibm.com> 107a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * Jan-Bernd Themann <themann@de.ibm.com> 117a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * Thomas Klein <tklein@de.ibm.com> 127a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * 137a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * 147a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * This program is free software; you can redistribute it and/or modify 157a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * it under the terms of the GNU General Public License as published by 167a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * the Free Software Foundation; either version 2, or (at your option) 177a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * any later version. 187a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * 197a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * This program is distributed in the hope that it will be useful, 207a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * but WITHOUT ANY WARRANTY; without even the implied warranty of 217a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 227a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * GNU General Public License for more details. 237a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * 247a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * You should have received a copy of the GNU General Public License 257a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * along with this program; if not, write to the Free Software 267a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 277a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann */ 287a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 297a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann#ifndef __EHEA_HW_H__ 307a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann#define __EHEA_HW_H__ 317a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 32c6fa0b03cdf7d973988193c2b7d768f01e1dc2aeDoug Maxey#define QPX_SQA_VALUE EHEA_BMASK_IBM(48, 63) 33c6fa0b03cdf7d973988193c2b7d768f01e1dc2aeDoug Maxey#define QPX_RQ1A_VALUE EHEA_BMASK_IBM(48, 63) 34c6fa0b03cdf7d973988193c2b7d768f01e1dc2aeDoug Maxey#define QPX_RQ2A_VALUE EHEA_BMASK_IBM(48, 63) 35c6fa0b03cdf7d973988193c2b7d768f01e1dc2aeDoug Maxey#define QPX_RQ3A_VALUE EHEA_BMASK_IBM(48, 63) 367a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 377a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann#define QPTEMM_OFFSET(x) offsetof(struct ehea_qptemm, x) 387a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 397a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themannstruct ehea_qptemm { 407a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_hcr; 417a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_c; 427a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_herr; 437a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_aer; 447a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_sqa; 457a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_sqc; 467a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq1a; 477a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq1c; 487a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_st; 497a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_aerr; 507a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_tenure; 517a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_reserved1[(0x098 - 0x058) / 8]; 527a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_portp; 537a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_reserved2[(0x100 - 0x0A0) / 8]; 547a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_t; 557a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_sqhp; 567a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_sqptp; 577a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_reserved3[(0x140 - 0x118) / 8]; 587a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_sqwsize; 597a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_reserved4[(0x170 - 0x148) / 8]; 607a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_sqsize; 617a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_reserved5[(0x1B0 - 0x178) / 8]; 627a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_sigt; 637a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_wqecnt; 647a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq1hp; 657a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq1ptp; 667a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq1size; 677a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_reserved6[(0x220 - 0x1D8) / 8]; 687a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq1wsize; 697a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_reserved7[(0x240 - 0x228) / 8]; 707a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_pd; 717a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_scqn; 727a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rcqn; 737a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_aeqn; 747a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 reserved49; 757a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_ram; 767a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_reserved8[(0x300 - 0x270) / 8]; 777a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq2a; 787a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq2c; 797a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq2hp; 807a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq2ptp; 817a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq2size; 827a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq2wsize; 837a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq2th; 847a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq3a; 857a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq3c; 867a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq3hp; 877a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq3ptp; 887a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq3size; 897a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq3wsize; 907a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_rq3th; 917a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_lpn; 927a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpx_reserved9[(0x400 - 0x378) / 8]; 937a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 reserved_ext[(0x500 - 0x400) / 8]; 947a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 reserved2[(0x1000 - 0x500) / 8]; 957a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann}; 967a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 977a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann#define MRx_HCR_LPARID_VALID EHEA_BMASK_IBM(0, 0) 987a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 997a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann#define MRMWMM_OFFSET(x) offsetof(struct ehea_mrmwmm, x) 1007a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 1017a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themannstruct ehea_mrmwmm { 1027a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 mrx_hcr; 1037a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 mrx_c; 1047a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 mrx_herr; 1057a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 mrx_aer; 1067a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 mrx_pp; 1077a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 reserved1; 1087a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 reserved2; 1097a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 reserved3; 1107a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 reserved4[(0x200 - 0x40) / 8]; 1117a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 mrx_ctl[64]; 1127a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann}; 1137a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 1147a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann#define QPEDMM_OFFSET(x) offsetof(struct ehea_qpedmm, x) 1157a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 1167a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themannstruct ehea_qpedmm { 1177a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 1187a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 reserved0[(0x400) / 8]; 1197a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_phh; 1207a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_ppsgp; 1217a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_ppsgu; 1227a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_ppdgp; 1237a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_ppdgu; 1247a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_aph; 1257a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_apsgp; 1267a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_apsgu; 1277a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_apdgp; 1287a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_apdgu; 1297a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_apav; 1307a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_apsav; 1317a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_hcr; 1327a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 reserved1[4]; 1337a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_rrl0; 1347a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_rrrkey0; 1357a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_rrva0; 1367a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 reserved2; 1377a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_rrl1; 1387a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_rrrkey1; 1397a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_rrva1; 1407a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 reserved3; 1417a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_rrl2; 1427a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_rrrkey2; 1437a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_rrva2; 1447a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 reserved4; 1457a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_rrl3; 1467a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_rrrkey3; 1477a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 qpedx_rrva3; 1487a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann}; 1497a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 1507a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann#define CQX_FECADDER EHEA_BMASK_IBM(32, 63) 1517a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann#define CQX_FEC_CQE_CNT EHEA_BMASK_IBM(32, 63) 1527a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann#define CQX_N1_GENERATE_COMP_EVENT EHEA_BMASK_IBM(0, 0) 1537a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann#define CQX_EP_EVENT_PENDING EHEA_BMASK_IBM(0, 0) 1547a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 1557a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann#define CQTEMM_OFFSET(x) offsetof(struct ehea_cqtemm, x) 1567a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 1577a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themannstruct ehea_cqtemm { 1587a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 cqx_hcr; 1597a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 cqx_c; 1607a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 cqx_herr; 1617a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 cqx_aer; 1627a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 cqx_ptp; 1637a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 cqx_tp; 1647a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 cqx_fec; 1657a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 cqx_feca; 1667a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 cqx_ep; 1677a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 cqx_eq; 1687a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 reserved1; 1697a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 cqx_n0; 1707a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 cqx_n1; 1717a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 reserved2[(0x1000 - 0x60) / 8]; 1727a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann}; 1737a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 1747a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann#define EQTEMM_OFFSET(x) offsetof(struct ehea_eqtemm, x) 1757a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 1767a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themannstruct ehea_eqtemm { 1777a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 eqx_hcr; 1787a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 eqx_c; 1797a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 eqx_herr; 1807a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 eqx_aer; 1817a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 eqx_ptp; 1827a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 eqx_tp; 1837a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 eqx_ssba; 1847a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 eqx_psba; 1857a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 eqx_cec; 1867a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 eqx_meql; 1877a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 eqx_xisbi; 1887a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 eqx_xisc; 1897a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann u64 eqx_it; 1907a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann}; 1917a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 19253ccce2395cdc3693c22b9a94764b66dc1a4fcb4Jan-Bernd Themann/* 19353ccce2395cdc3693c22b9a94764b66dc1a4fcb4Jan-Bernd Themann * These access functions will be changed when the dissuccsion about 19453ccce2395cdc3693c22b9a94764b66dc1a4fcb4Jan-Bernd Themann * the new access methods for POWER has settled. 19553ccce2395cdc3693c22b9a94764b66dc1a4fcb4Jan-Bernd Themann */ 19653ccce2395cdc3693c22b9a94764b66dc1a4fcb4Jan-Bernd Themann 1977a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themannstatic inline u64 epa_load(struct h_epa epa, u32 offset) 1987a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann{ 19953ccce2395cdc3693c22b9a94764b66dc1a4fcb4Jan-Bernd Themann return __raw_readq((void __iomem *)(epa.addr + offset)); 2007a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann} 2017a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 2027a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themannstatic inline void epa_store(struct h_epa epa, u32 offset, u64 value) 2037a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann{ 20453ccce2395cdc3693c22b9a94764b66dc1a4fcb4Jan-Bernd Themann __raw_writeq(value, (void __iomem *)(epa.addr + offset)); 2057a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann epa_load(epa, offset); /* synchronize explicitly to eHEA */ 2067a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann} 2077a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 2087a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themannstatic inline void epa_store_acc(struct h_epa epa, u32 offset, u64 value) 2097a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann{ 21053ccce2395cdc3693c22b9a94764b66dc1a4fcb4Jan-Bernd Themann __raw_writeq(value, (void __iomem *)(epa.addr + offset)); 2117a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann} 2127a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 2137a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann#define epa_store_cq(epa, offset, value)\ 214d1d25aaba85fd24ab18b0a4d22f19be02aac65c9Jan-Bernd Themann epa_store(epa, CQTEMM_OFFSET(offset), value) 2157a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann#define epa_load_cq(epa, offset)\ 216d1d25aaba85fd24ab18b0a4d22f19be02aac65c9Jan-Bernd Themann epa_load(epa, CQTEMM_OFFSET(offset)) 2177a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 2187a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themannstatic inline void ehea_update_sqa(struct ehea_qp *qp, u16 nr_wqes) 2197a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann{ 2207a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann struct h_epa epa = qp->epas.kernel; 2217a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann epa_store_acc(epa, QPTEMM_OFFSET(qpx_sqa), 2227a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann EHEA_BMASK_SET(QPX_SQA_VALUE, nr_wqes)); 2237a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann} 2247a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 2257a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themannstatic inline void ehea_update_rq3a(struct ehea_qp *qp, u16 nr_wqes) 2267a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann{ 2277a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann struct h_epa epa = qp->epas.kernel; 2287a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann epa_store_acc(epa, QPTEMM_OFFSET(qpx_rq3a), 2297a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann EHEA_BMASK_SET(QPX_RQ1A_VALUE, nr_wqes)); 2307a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann} 2317a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 2327a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themannstatic inline void ehea_update_rq2a(struct ehea_qp *qp, u16 nr_wqes) 2337a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann{ 2347a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann struct h_epa epa = qp->epas.kernel; 2357a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann epa_store_acc(epa, QPTEMM_OFFSET(qpx_rq2a), 2367a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann EHEA_BMASK_SET(QPX_RQ2A_VALUE, nr_wqes)); 2377a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann} 2387a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 2397a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themannstatic inline void ehea_update_rq1a(struct ehea_qp *qp, u16 nr_wqes) 2407a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann{ 2417a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann struct h_epa epa = qp->epas.kernel; 2427a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann epa_store_acc(epa, QPTEMM_OFFSET(qpx_rq1a), 2437a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann EHEA_BMASK_SET(QPX_RQ3A_VALUE, nr_wqes)); 2447a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann} 2457a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 2467a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themannstatic inline void ehea_update_feca(struct ehea_cq *cq, u32 nr_cqes) 2477a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann{ 2487a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann struct h_epa epa = cq->epas.kernel; 2497a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann epa_store_acc(epa, CQTEMM_OFFSET(cqx_feca), 2507a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann EHEA_BMASK_SET(CQX_FECADDER, nr_cqes)); 2517a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann} 2527a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 2537a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themannstatic inline void ehea_reset_cq_n1(struct ehea_cq *cq) 2547a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann{ 2557a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann struct h_epa epa = cq->epas.kernel; 2567a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann epa_store_cq(epa, cqx_n1, 2577a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann EHEA_BMASK_SET(CQX_N1_GENERATE_COMP_EVENT, 1)); 2587a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann} 2597a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 2607a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themannstatic inline void ehea_reset_cq_ep(struct ehea_cq *my_cq) 2617a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann{ 2627a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann struct h_epa epa = my_cq->epas.kernel; 2637a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann epa_store_acc(epa, CQTEMM_OFFSET(cqx_ep), 2647a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann EHEA_BMASK_SET(CQX_EP_EVENT_PENDING, 0)); 2657a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann} 2667a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann 2677a291083225af6e22ffaa46b3d91cfc1a1ccaab4Jan-Bernd Themann#endif /* __EHEA_HW_H__ */ 268