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