1
2
3
4
5
6
7#ifndef __CSRS_MIO_EMM_H__
8#define __CSRS_MIO_EMM_H__
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#define MIO_EMM_BAR_E_MIO_EMM_PF_BAR0_CN8 (0x87e009000000ll)
27#define MIO_EMM_BAR_E_MIO_EMM_PF_BAR0_CN8_SIZE 0x800000ull
28#define MIO_EMM_BAR_E_MIO_EMM_PF_BAR0_CN9 (0x87e009000000ll)
29#define MIO_EMM_BAR_E_MIO_EMM_PF_BAR0_CN9_SIZE 0x10000ull
30#define MIO_EMM_BAR_E_MIO_EMM_PF_BAR4 (0x87e009f00000ll)
31#define MIO_EMM_BAR_E_MIO_EMM_PF_BAR4_SIZE 0x100000ull
32
33
34
35
36
37
38#define MIO_EMM_INT_VEC_E_DMA_INT_DONE (8)
39#define MIO_EMM_INT_VEC_E_DMA_INT_FIFO (7)
40#define MIO_EMM_INT_VEC_E_EMM_BUF_DONE (0)
41#define MIO_EMM_INT_VEC_E_EMM_CMD_DONE (1)
42#define MIO_EMM_INT_VEC_E_EMM_CMD_ERR (3)
43#define MIO_EMM_INT_VEC_E_EMM_DMA_DONE (2)
44#define MIO_EMM_INT_VEC_E_EMM_DMA_ERR (4)
45#define MIO_EMM_INT_VEC_E_EMM_SWITCH_DONE (5)
46#define MIO_EMM_INT_VEC_E_EMM_SWITCH_ERR (6)
47#define MIO_EMM_INT_VEC_E_NCB_FLT (9)
48#define MIO_EMM_INT_VEC_E_NCB_RAS (0xa)
49
50
51
52
53
54
55union mio_emm_access_wdog {
56 u64 u;
57 struct mio_emm_access_wdog_s {
58 u64 clk_cnt : 32;
59 u64 reserved_32_63 : 32;
60 } s;
61
62};
63
64static inline u64 MIO_EMM_ACCESS_WDOG(void)
65 __attribute__ ((pure, always_inline));
66static inline u64 MIO_EMM_ACCESS_WDOG(void)
67{
68 return 0x20f0;
69}
70
71
72
73
74
75
76union mio_emm_buf_dat {
77 u64 u;
78 struct mio_emm_buf_dat_s {
79 u64 dat : 64;
80 } s;
81
82};
83
84static inline u64 MIO_EMM_BUF_DAT(void)
85 __attribute__ ((pure, always_inline));
86static inline u64 MIO_EMM_BUF_DAT(void)
87{
88 return 0x20e8;
89}
90
91
92
93
94
95
96union mio_emm_buf_idx {
97 u64 u;
98 struct mio_emm_buf_idx_s {
99 u64 offset : 6;
100 u64 buf_num : 1;
101 u64 reserved_7_15 : 9;
102 u64 inc : 1;
103 u64 reserved_17_63 : 47;
104 } s;
105
106};
107
108static inline u64 MIO_EMM_BUF_IDX(void)
109 __attribute__ ((pure, always_inline));
110static inline u64 MIO_EMM_BUF_IDX(void)
111{
112 return 0x20e0;
113}
114
115
116
117
118
119
120
121union mio_emm_calb {
122 u64 u;
123 struct mio_emm_calb_s {
124 u64 start : 1;
125 u64 reserved_1_63 : 63;
126 } s;
127
128};
129
130static inline u64 MIO_EMM_CALB(void)
131 __attribute__ ((pure, always_inline));
132static inline u64 MIO_EMM_CALB(void)
133{
134 return 0x20c0;
135}
136
137
138
139
140
141
142union mio_emm_cfg {
143 u64 u;
144 struct mio_emm_cfg_s {
145 u64 bus_ena : 4;
146 u64 reserved_4_63 : 60;
147 } s;
148
149};
150
151static inline u64 MIO_EMM_CFG(void)
152 __attribute__ ((pure, always_inline));
153static inline u64 MIO_EMM_CFG(void)
154{
155 return 0x2000;
156}
157
158
159
160
161
162
163union mio_emm_cmd {
164 u64 u;
165 struct mio_emm_cmd_s {
166 u64 arg : 32;
167 u64 cmd_idx : 6;
168 u64 rtype_xor : 3;
169 u64 ctype_xor : 2;
170 u64 reserved_43_48 : 6;
171 u64 offset : 6;
172 u64 dbuf : 1;
173 u64 reserved_56_58 : 3;
174 u64 cmd_val : 1;
175 u64 bus_id : 2;
176 u64 skip_busy : 1;
177 u64 reserved_63 : 1;
178 } s;
179
180};
181
182static inline u64 MIO_EMM_CMD(void)
183 __attribute__ ((pure, always_inline));
184static inline u64 MIO_EMM_CMD(void)
185{
186 return 0x2058;
187}
188
189
190
191
192
193
194union mio_emm_comp {
195 u64 u;
196 struct mio_emm_comp_s {
197 u64 nctl : 3;
198 u64 reserved_3_7 : 5;
199 u64 pctl : 3;
200 u64 reserved_11_63 : 53;
201 } s;
202
203};
204
205static inline u64 MIO_EMM_COMP(void)
206 __attribute__ ((pure, always_inline));
207static inline u64 MIO_EMM_COMP(void)
208{
209 return 0x2040;
210}
211
212
213
214
215
216
217union mio_emm_debug {
218 u64 u;
219 struct mio_emm_debug_s {
220 u64 clk_on : 1;
221 u64 reserved_1_7 : 7;
222 u64 cmd_sm : 4;
223 u64 data_sm : 4;
224 u64 dma_sm : 4;
225 u64 emmc_clk_disable : 1;
226 u64 rdsync_rst : 1;
227 u64 reserved_22_63 : 42;
228 } s;
229 struct mio_emm_debug_cn96xxp1 {
230 u64 clk_on : 1;
231 u64 reserved_1_7 : 7;
232 u64 cmd_sm : 4;
233 u64 data_sm : 4;
234 u64 dma_sm : 4;
235 u64 reserved_20_63 : 44;
236 } cn96xxp1;
237
238
239};
240
241static inline u64 MIO_EMM_DEBUG(void)
242 __attribute__ ((pure, always_inline));
243static inline u64 MIO_EMM_DEBUG(void)
244{
245 return 0x20f8;
246}
247
248
249
250
251
252
253union mio_emm_dma {
254 u64 u;
255 struct mio_emm_dma_s {
256 u64 card_addr : 32;
257 u64 block_cnt : 16;
258 u64 multi : 1;
259 u64 rw : 1;
260 u64 rel_wr : 1;
261 u64 thres : 6;
262 u64 dat_null : 1;
263 u64 sector : 1;
264 u64 dma_val : 1;
265 u64 bus_id : 2;
266 u64 skip_busy : 1;
267 u64 extra_args : 1;
268 } s;
269 struct mio_emm_dma_cn8 {
270 u64 card_addr : 32;
271 u64 block_cnt : 16;
272 u64 multi : 1;
273 u64 rw : 1;
274 u64 rel_wr : 1;
275 u64 thres : 6;
276 u64 dat_null : 1;
277 u64 sector : 1;
278 u64 dma_val : 1;
279 u64 bus_id : 2;
280 u64 skip_busy : 1;
281 u64 reserved_63 : 1;
282 } cn8;
283 struct mio_emm_dma_cn9 {
284 u64 card_addr : 32;
285 u64 block_cnt : 16;
286 u64 multi : 1;
287 u64 rw : 1;
288 u64 reserved_50 : 1;
289 u64 thres : 6;
290 u64 dat_null : 1;
291 u64 sector : 1;
292 u64 dma_val : 1;
293 u64 bus_id : 2;
294 u64 skip_busy : 1;
295 u64 extra_args : 1;
296 } cn9;
297};
298
299static inline u64 MIO_EMM_DMA(void)
300 __attribute__ ((pure, always_inline));
301static inline u64 MIO_EMM_DMA(void)
302{
303 return 0x2050;
304}
305
306
307
308
309
310
311
312
313
314union mio_emm_dma_adr {
315 u64 u;
316 struct mio_emm_dma_adr_s {
317 u64 adr : 53;
318 u64 reserved_53_63 : 11;
319 } s;
320 struct mio_emm_dma_adr_cn8 {
321 u64 adr : 49;
322 u64 reserved_49_63 : 15;
323 } cn8;
324
325};
326
327static inline u64 MIO_EMM_DMA_ADR(void)
328 __attribute__ ((pure, always_inline));
329static inline u64 MIO_EMM_DMA_ADR(void)
330{
331 return 0x188;
332}
333
334
335
336
337
338
339union mio_emm_dma_arg {
340 u64 u;
341 struct mio_emm_dma_arg_s {
342 u64 cmd23_args : 8;
343 u64 force_pgm : 1;
344 u64 context_id : 4;
345 u64 tag_req : 1;
346 u64 pack_cmd : 1;
347 u64 rel_wr : 1;
348 u64 alt_cmd : 6;
349 u64 skip_blk_cmd : 1;
350 u64 reserved_23_31 : 9;
351 u64 alt_cmd_arg : 32;
352 } s;
353
354};
355
356static inline u64 MIO_EMM_DMA_ARG(void)
357 __attribute__ ((pure, always_inline));
358static inline u64 MIO_EMM_DMA_ARG(void)
359{
360 return 0x2090;
361}
362
363
364
365
366
367
368
369
370
371
372union mio_emm_dma_cfg {
373 u64 u;
374 struct mio_emm_dma_cfg_s {
375 u64 reserved_0_35 : 36;
376 u64 size : 20;
377 u64 endian : 1;
378 u64 swap8 : 1;
379 u64 swap16 : 1;
380 u64 swap32 : 1;
381 u64 reserved_60 : 1;
382 u64 clr : 1;
383 u64 rw : 1;
384 u64 en : 1;
385 } s;
386
387};
388
389static inline u64 MIO_EMM_DMA_CFG(void)
390 __attribute__ ((pure, always_inline));
391static inline u64 MIO_EMM_DMA_CFG(void)
392{
393 return 0x180;
394}
395
396
397
398
399
400
401
402
403
404union mio_emm_dma_fifo_adr {
405 u64 u;
406 struct mio_emm_dma_fifo_adr_s {
407 u64 reserved_0_2 : 3;
408 u64 adr : 50;
409 u64 reserved_53_63 : 11;
410 } s;
411 struct mio_emm_dma_fifo_adr_cn8 {
412 u64 reserved_0_2 : 3;
413 u64 adr : 46;
414 u64 reserved_49_63 : 15;
415 } cn8;
416
417};
418
419static inline u64 MIO_EMM_DMA_FIFO_ADR(void)
420 __attribute__ ((pure, always_inline));
421static inline u64 MIO_EMM_DMA_FIFO_ADR(void)
422{
423 return 0x170;
424}
425
426
427
428
429
430
431
432union mio_emm_dma_fifo_cfg {
433 u64 u;
434 struct mio_emm_dma_fifo_cfg_s {
435 u64 count : 5;
436 u64 reserved_5_7 : 3;
437 u64 int_lvl : 5;
438 u64 reserved_13_15 : 3;
439 u64 clr : 1;
440 u64 reserved_17_63 : 47;
441 } s;
442
443};
444
445static inline u64 MIO_EMM_DMA_FIFO_CFG(void)
446 __attribute__ ((pure, always_inline));
447static inline u64 MIO_EMM_DMA_FIFO_CFG(void)
448{
449 return 0x160;
450}
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465union mio_emm_dma_fifo_cmd {
466 u64 u;
467 struct mio_emm_dma_fifo_cmd_s {
468 u64 reserved_0_35 : 36;
469 u64 size : 20;
470 u64 endian : 1;
471 u64 swap8 : 1;
472 u64 swap16 : 1;
473 u64 swap32 : 1;
474 u64 intdis : 1;
475 u64 reserved_61 : 1;
476 u64 rw : 1;
477 u64 reserved_63 : 1;
478 } s;
479
480};
481
482static inline u64 MIO_EMM_DMA_FIFO_CMD(void)
483 __attribute__ ((pure, always_inline));
484static inline u64 MIO_EMM_DMA_FIFO_CMD(void)
485{
486 return 0x178;
487}
488
489
490
491
492
493
494
495union mio_emm_dma_int {
496 u64 u;
497 struct mio_emm_dma_int_s {
498 u64 done : 1;
499 u64 fifo : 1;
500 u64 reserved_2_63 : 62;
501 } s;
502
503};
504
505static inline u64 MIO_EMM_DMA_INT(void)
506 __attribute__ ((pure, always_inline));
507static inline u64 MIO_EMM_DMA_INT(void)
508{
509 return 0x190;
510}
511
512
513
514
515
516
517
518union mio_emm_dma_int_ena_w1c {
519 u64 u;
520 struct mio_emm_dma_int_ena_w1c_s {
521 u64 done : 1;
522 u64 fifo : 1;
523 u64 reserved_2_63 : 62;
524 } s;
525
526};
527
528static inline u64 MIO_EMM_DMA_INT_ENA_W1C(void)
529 __attribute__ ((pure, always_inline));
530static inline u64 MIO_EMM_DMA_INT_ENA_W1C(void)
531{
532 return 0x1a8;
533}
534
535
536
537
538
539
540
541union mio_emm_dma_int_ena_w1s {
542 u64 u;
543 struct mio_emm_dma_int_ena_w1s_s {
544 u64 done : 1;
545 u64 fifo : 1;
546 u64 reserved_2_63 : 62;
547 } s;
548
549};
550
551static inline u64 MIO_EMM_DMA_INT_ENA_W1S(void)
552 __attribute__ ((pure, always_inline));
553static inline u64 MIO_EMM_DMA_INT_ENA_W1S(void)
554{
555 return 0x1a0;
556}
557
558
559
560
561
562
563union mio_emm_dma_int_w1s {
564 u64 u;
565 struct mio_emm_dma_int_w1s_s {
566 u64 done : 1;
567 u64 fifo : 1;
568 u64 reserved_2_63 : 62;
569 } s;
570
571};
572
573static inline u64 MIO_EMM_DMA_INT_W1S(void)
574 __attribute__ ((pure, always_inline));
575static inline u64 MIO_EMM_DMA_INT_W1S(void)
576{
577 return 0x198;
578}
579
580
581
582
583
584
585union mio_emm_int {
586 u64 u;
587 struct mio_emm_int_s {
588 u64 buf_done : 1;
589 u64 cmd_done : 1;
590 u64 dma_done : 1;
591 u64 cmd_err : 1;
592 u64 dma_err : 1;
593 u64 switch_done : 1;
594 u64 switch_err : 1;
595 u64 ncb_flt : 1;
596 u64 ncb_ras : 1;
597 u64 reserved_9_63 : 55;
598 } s;
599 struct mio_emm_int_cn8 {
600 u64 buf_done : 1;
601 u64 cmd_done : 1;
602 u64 dma_done : 1;
603 u64 cmd_err : 1;
604 u64 dma_err : 1;
605 u64 switch_done : 1;
606 u64 switch_err : 1;
607 u64 reserved_7_63 : 57;
608 } cn8;
609
610};
611
612static inline u64 MIO_EMM_INT(void)
613 __attribute__ ((pure, always_inline));
614static inline u64 MIO_EMM_INT(void)
615{
616 return 0x2078;
617}
618
619
620
621
622
623
624
625union mio_emm_int_ena_w1c {
626 u64 u;
627 struct mio_emm_int_ena_w1c_s {
628 u64 buf_done : 1;
629 u64 cmd_done : 1;
630 u64 dma_done : 1;
631 u64 cmd_err : 1;
632 u64 dma_err : 1;
633 u64 switch_done : 1;
634 u64 switch_err : 1;
635 u64 ncb_flt : 1;
636 u64 ncb_ras : 1;
637 u64 reserved_9_63 : 55;
638 } s;
639 struct mio_emm_int_ena_w1c_cn8 {
640 u64 buf_done : 1;
641 u64 cmd_done : 1;
642 u64 dma_done : 1;
643 u64 cmd_err : 1;
644 u64 dma_err : 1;
645 u64 switch_done : 1;
646 u64 switch_err : 1;
647 u64 reserved_7_63 : 57;
648 } cn8;
649
650};
651
652static inline u64 MIO_EMM_INT_ENA_W1C(void)
653 __attribute__ ((pure, always_inline));
654static inline u64 MIO_EMM_INT_ENA_W1C(void)
655{
656 return 0x20b8;
657}
658
659
660
661
662
663
664
665union mio_emm_int_ena_w1s {
666 u64 u;
667 struct mio_emm_int_ena_w1s_s {
668 u64 buf_done : 1;
669 u64 cmd_done : 1;
670 u64 dma_done : 1;
671 u64 cmd_err : 1;
672 u64 dma_err : 1;
673 u64 switch_done : 1;
674 u64 switch_err : 1;
675 u64 ncb_flt : 1;
676 u64 ncb_ras : 1;
677 u64 reserved_9_63 : 55;
678 } s;
679 struct mio_emm_int_ena_w1s_cn8 {
680 u64 buf_done : 1;
681 u64 cmd_done : 1;
682 u64 dma_done : 1;
683 u64 cmd_err : 1;
684 u64 dma_err : 1;
685 u64 switch_done : 1;
686 u64 switch_err : 1;
687 u64 reserved_7_63 : 57;
688 } cn8;
689
690};
691
692static inline u64 MIO_EMM_INT_ENA_W1S(void)
693 __attribute__ ((pure, always_inline));
694static inline u64 MIO_EMM_INT_ENA_W1S(void)
695{
696 return 0x20b0;
697}
698
699
700
701
702
703
704union mio_emm_int_w1s {
705 u64 u;
706 struct mio_emm_int_w1s_s {
707 u64 buf_done : 1;
708 u64 cmd_done : 1;
709 u64 dma_done : 1;
710 u64 cmd_err : 1;
711 u64 dma_err : 1;
712 u64 switch_done : 1;
713 u64 switch_err : 1;
714 u64 ncb_flt : 1;
715 u64 ncb_ras : 1;
716 u64 reserved_9_63 : 55;
717 } s;
718 struct mio_emm_int_w1s_cn8 {
719 u64 buf_done : 1;
720 u64 cmd_done : 1;
721 u64 dma_done : 1;
722 u64 cmd_err : 1;
723 u64 dma_err : 1;
724 u64 switch_done : 1;
725 u64 switch_err : 1;
726 u64 reserved_7_63 : 57;
727 } cn8;
728
729};
730
731static inline u64 MIO_EMM_INT_W1S(void)
732 __attribute__ ((pure, always_inline));
733static inline u64 MIO_EMM_INT_W1S(void)
734{
735 return 0x2080;
736}
737
738
739
740
741
742
743union mio_emm_io_ctl {
744 u64 u;
745 struct mio_emm_io_ctl_s {
746 u64 slew : 1;
747 u64 reserved_1 : 1;
748 u64 drive : 2;
749 u64 reserved_4_63 : 60;
750 } s;
751
752};
753
754static inline u64 MIO_EMM_IO_CTL(void)
755 __attribute__ ((pure, always_inline));
756static inline u64 MIO_EMM_IO_CTL(void)
757{
758 return 0x2040;
759}
760
761
762
763
764
765
766union mio_emm_modex {
767 u64 u;
768 struct mio_emm_modex_s {
769 u64 clk_lo : 16;
770 u64 clk_hi : 16;
771 u64 power_class : 4;
772 u64 clk_swap : 1;
773 u64 reserved_37_39 : 3;
774 u64 bus_width : 3;
775 u64 reserved_43_47 : 5;
776 u64 hs_timing : 1;
777 u64 hs200_timing : 1;
778 u64 hs400_timing : 1;
779 u64 reserved_51_63 : 13;
780 } s;
781 struct mio_emm_modex_cn8 {
782 u64 clk_lo : 16;
783 u64 clk_hi : 16;
784 u64 power_class : 4;
785 u64 reserved_36_39 : 4;
786 u64 bus_width : 3;
787 u64 reserved_43_47 : 5;
788 u64 hs_timing : 1;
789 u64 reserved_49_63 : 15;
790 } cn8;
791 struct mio_emm_modex_cn96xxp1 {
792 u64 clk_lo : 16;
793 u64 clk_hi : 16;
794 u64 power_class : 4;
795 u64 reserved_36_39 : 4;
796 u64 bus_width : 3;
797 u64 reserved_43_47 : 5;
798 u64 hs_timing : 1;
799 u64 hs200_timing : 1;
800 u64 hs400_timing : 1;
801 u64 reserved_51_63 : 13;
802 } cn96xxp1;
803
804
805};
806
807static inline u64 MIO_EMM_MODEX(u64 a)
808 __attribute__ ((pure, always_inline));
809static inline u64 MIO_EMM_MODEX(u64 a)
810{
811 return 0x2008 + 8 * a;
812}
813
814
815
816
817
818
819
820union mio_emm_msix_pbax {
821 u64 u;
822 struct mio_emm_msix_pbax_s {
823 u64 pend : 64;
824 } s;
825
826};
827
828static inline u64 MIO_EMM_MSIX_PBAX(u64 a)
829 __attribute__ ((pure, always_inline));
830static inline u64 MIO_EMM_MSIX_PBAX(u64 a)
831{
832 return 0xf0000 + 8 * a;
833}
834
835
836
837
838
839
840
841union mio_emm_msix_vecx_addr {
842 u64 u;
843 struct mio_emm_msix_vecx_addr_s {
844 u64 secvec : 1;
845 u64 reserved_1 : 1;
846 u64 addr : 51;
847 u64 reserved_53_63 : 11;
848 } s;
849 struct mio_emm_msix_vecx_addr_cn8 {
850 u64 secvec : 1;
851 u64 reserved_1 : 1;
852 u64 addr : 47;
853 u64 reserved_49_63 : 15;
854 } cn8;
855
856};
857
858static inline u64 MIO_EMM_MSIX_VECX_ADDR(u64 a)
859 __attribute__ ((pure, always_inline));
860static inline u64 MIO_EMM_MSIX_VECX_ADDR(u64 a)
861{
862 return 0 + 0x10 * a;
863}
864
865
866
867
868
869
870
871union mio_emm_msix_vecx_ctl {
872 u64 u;
873 struct mio_emm_msix_vecx_ctl_s {
874 u64 data : 32;
875 u64 mask : 1;
876 u64 reserved_33_63 : 31;
877 } s;
878 struct mio_emm_msix_vecx_ctl_cn8 {
879 u64 data : 20;
880 u64 reserved_20_31 : 12;
881 u64 mask : 1;
882 u64 reserved_33_63 : 31;
883 } cn8;
884
885};
886
887static inline u64 MIO_EMM_MSIX_VECX_CTL(u64 a)
888 __attribute__ ((pure, always_inline));
889static inline u64 MIO_EMM_MSIX_VECX_CTL(u64 a)
890{
891 return 8 + 0x10 * a;
892}
893
894
895
896
897
898
899union mio_emm_rca {
900 u64 u;
901 struct mio_emm_rca_s {
902 u64 card_rca : 16;
903 u64 reserved_16_63 : 48;
904 } s;
905
906};
907
908static inline u64 MIO_EMM_RCA(void)
909 __attribute__ ((pure, always_inline));
910static inline u64 MIO_EMM_RCA(void)
911{
912 return 0x20a0;
913}
914
915
916
917
918
919
920union mio_emm_rsp_hi {
921 u64 u;
922 struct mio_emm_rsp_hi_s {
923 u64 dat : 64;
924 } s;
925
926};
927
928static inline u64 MIO_EMM_RSP_HI(void)
929 __attribute__ ((pure, always_inline));
930static inline u64 MIO_EMM_RSP_HI(void)
931{
932 return 0x2070;
933}
934
935
936
937
938
939
940union mio_emm_rsp_lo {
941 u64 u;
942 struct mio_emm_rsp_lo_s {
943 u64 dat : 64;
944 } s;
945
946};
947
948static inline u64 MIO_EMM_RSP_LO(void)
949 __attribute__ ((pure, always_inline));
950static inline u64 MIO_EMM_RSP_LO(void)
951{
952 return 0x2068;
953}
954
955
956
957
958
959
960union mio_emm_rsp_sts {
961 u64 u;
962 struct mio_emm_rsp_sts_s {
963 u64 cmd_done : 1;
964 u64 cmd_idx : 6;
965 u64 cmd_type : 2;
966 u64 rsp_type : 3;
967 u64 rsp_val : 1;
968 u64 rsp_bad_sts : 1;
969 u64 rsp_crc_err : 1;
970 u64 rsp_timeout : 1;
971 u64 stp_val : 1;
972 u64 stp_bad_sts : 1;
973 u64 stp_crc_err : 1;
974 u64 stp_timeout : 1;
975 u64 rsp_busybit : 1;
976 u64 blk_crc_err : 1;
977 u64 blk_timeout : 1;
978 u64 dbuf : 1;
979 u64 reserved_24_27 : 4;
980 u64 dbuf_err : 1;
981 u64 reserved_29_54 : 26;
982 u64 acc_timeout : 1;
983 u64 dma_pend : 1;
984 u64 dma_val : 1;
985 u64 switch_val : 1;
986 u64 cmd_val : 1;
987 u64 bus_id : 2;
988 u64 reserved_62_63 : 2;
989 } s;
990
991};
992
993static inline u64 MIO_EMM_RSP_STS(void)
994 __attribute__ ((pure, always_inline));
995static inline u64 MIO_EMM_RSP_STS(void)
996{
997 return 0x2060;
998}
999
1000
1001
1002
1003
1004
1005union mio_emm_sample {
1006 u64 u;
1007 struct mio_emm_sample_s {
1008 u64 dat_cnt : 10;
1009 u64 reserved_10_15 : 6;
1010 u64 cmd_cnt : 10;
1011 u64 reserved_26_63 : 38;
1012 } s;
1013
1014};
1015
1016static inline u64 MIO_EMM_SAMPLE(void)
1017 __attribute__ ((pure, always_inline));
1018static inline u64 MIO_EMM_SAMPLE(void)
1019{
1020 return 0x2090;
1021}
1022
1023
1024
1025
1026
1027
1028union mio_emm_sts_mask {
1029 u64 u;
1030 struct mio_emm_sts_mask_s {
1031 u64 sts_msk : 32;
1032 u64 reserved_32_63 : 32;
1033 } s;
1034
1035};
1036
1037static inline u64 MIO_EMM_STS_MASK(void)
1038 __attribute__ ((pure, always_inline));
1039static inline u64 MIO_EMM_STS_MASK(void)
1040{
1041 return 0x2098;
1042}
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054union mio_emm_switch {
1055 u64 u;
1056 struct mio_emm_switch_s {
1057 u64 clk_lo : 16;
1058 u64 clk_hi : 16;
1059 u64 power_class : 4;
1060 u64 clk_swap : 1;
1061 u64 reserved_37_39 : 3;
1062 u64 bus_width : 3;
1063 u64 reserved_43_47 : 5;
1064 u64 hs_timing : 1;
1065 u64 hs200_timing : 1;
1066 u64 hs400_timing : 1;
1067 u64 reserved_51_55 : 5;
1068 u64 switch_err2 : 1;
1069 u64 switch_err1 : 1;
1070 u64 switch_err0 : 1;
1071 u64 switch_exe : 1;
1072 u64 bus_id : 2;
1073 u64 reserved_62_63 : 2;
1074 } s;
1075 struct mio_emm_switch_cn8 {
1076 u64 clk_lo : 16;
1077 u64 clk_hi : 16;
1078 u64 power_class : 4;
1079 u64 reserved_36_39 : 4;
1080 u64 bus_width : 3;
1081 u64 reserved_43_47 : 5;
1082 u64 hs_timing : 1;
1083 u64 reserved_49_55 : 7;
1084 u64 switch_err2 : 1;
1085 u64 switch_err1 : 1;
1086 u64 switch_err0 : 1;
1087 u64 switch_exe : 1;
1088 u64 bus_id : 2;
1089 u64 reserved_62_63 : 2;
1090 } cn8;
1091 struct mio_emm_switch_cn96xxp1 {
1092 u64 clk_lo : 16;
1093 u64 clk_hi : 16;
1094 u64 power_class : 4;
1095 u64 reserved_36_39 : 4;
1096 u64 bus_width : 3;
1097 u64 reserved_43_47 : 5;
1098 u64 hs_timing : 1;
1099 u64 hs200_timing : 1;
1100 u64 hs400_timing : 1;
1101 u64 reserved_51_55 : 5;
1102 u64 switch_err2 : 1;
1103 u64 switch_err1 : 1;
1104 u64 switch_err0 : 1;
1105 u64 switch_exe : 1;
1106 u64 bus_id : 2;
1107 u64 reserved_62_63 : 2;
1108 } cn96xxp1;
1109
1110
1111};
1112
1113static inline u64 MIO_EMM_SWITCH(void)
1114 __attribute__ ((pure, always_inline));
1115static inline u64 MIO_EMM_SWITCH(void)
1116{
1117 return 0x2048;
1118}
1119
1120
1121
1122
1123
1124
1125
1126union mio_emm_tap {
1127 u64 u;
1128 struct mio_emm_tap_s {
1129 u64 delay : 8;
1130 u64 reserved_8_63 : 56;
1131 } s;
1132
1133};
1134
1135static inline u64 MIO_EMM_TAP(void)
1136 __attribute__ ((pure, always_inline));
1137static inline u64 MIO_EMM_TAP(void)
1138{
1139 return 0x20c8;
1140}
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150union mio_emm_timing {
1151 u64 u;
1152 struct mio_emm_timing_s {
1153 u64 data_out_tap : 6;
1154 u64 reserved_6_15 : 10;
1155 u64 data_in_tap : 6;
1156 u64 reserved_22_31 : 10;
1157 u64 cmd_out_tap : 6;
1158 u64 reserved_38_47 : 10;
1159 u64 cmd_in_tap : 6;
1160 u64 reserved_54_63 : 10;
1161 } s;
1162
1163};
1164
1165static inline u64 MIO_EMM_TIMING(void)
1166 __attribute__ ((pure, always_inline));
1167static inline u64 MIO_EMM_TIMING(void)
1168{
1169 return 0x20d0;
1170}
1171
1172
1173
1174
1175
1176
1177union mio_emm_wdog {
1178 u64 u;
1179 struct mio_emm_wdog_s {
1180 u64 clk_cnt : 26;
1181 u64 reserved_26_63 : 38;
1182 } s;
1183
1184};
1185
1186static inline u64 MIO_EMM_WDOG(void)
1187 __attribute__ ((pure, always_inline));
1188static inline u64 MIO_EMM_WDOG(void)
1189{
1190 return 0x2088;
1191}
1192
1193#endif
1194