| 715 | } |
| 716 | |
| 717 | static void dump_fcba(const struct fcba *fcba, const struct fpsba *fpsba) |
| 718 | { |
| 719 | unsigned int freq; |
| 720 | |
| 721 | printf("\nFound Component Section\n"); |
| 722 | printf("FLCOMP 0x%08x\n", fcba->flcomp); |
| 723 | printf(" Dual Output Fast Read Support: %ssupported\n", |
| 724 | (fcba->flcomp & (1 << 30)) ? "" : "not "); |
| 725 | printf(" Read ID/Read Status Clock Frequency: "); |
| 726 | decode_spi_frequency((fcba->flcomp >> 27) & 7); |
| 727 | printf("\n Write/Erase Clock Frequency: "); |
| 728 | decode_spi_frequency((fcba->flcomp >> 24) & 7); |
| 729 | printf("\n Fast Read Clock Frequency: "); |
| 730 | decode_spi_frequency((fcba->flcomp >> 21) & 7); |
| 731 | printf("\n Fast Read Support: %ssupported", |
| 732 | (fcba->flcomp & (1 << 20)) ? "" : "not "); |
| 733 | if (is_platform_with_100x_series_pch() && |
| 734 | chipset != CHIPSET_100_200_SERIES_SUNRISE_POINT) { |
| 735 | printf("\n Read eSPI/EC Bus Frequency: "); |
| 736 | if (chipset == CHIPSET_500_600_SERIES_TIGER_ALDER_POINT) |
| 737 | freq = (fpsba->pchstrp[22] & 0x38) >> 3; |
| 738 | else if (chipset == CHIPSET_800_SERIES_METEOR_LAKE) |
| 739 | freq = (fpsba->pchstrp[65] & 0x38) >> 3; |
| 740 | else if (chipset == CHIPSET_900_SERIES_PANTHER_LAKE) |
| 741 | freq = (fpsba->pchstrp[119] & 0x38) >> 3; |
| 742 | else |
| 743 | freq = (fcba->flcomp >> 17) & 7; |
| 744 | decode_espi_frequency(freq); |
| 745 | |
| 746 | printf("\n Quad I/O Read: %s", |
| 747 | (fcba->flcomp & (1 << 15)) ? "enabled" : "disabled"); |
| 748 | printf("\n Quad Output Read: %s", |
| 749 | (fcba->flcomp & (1 << 14)) ? "enabled" : "disabled"); |
| 750 | printf("\n Dual I/O Read: %s", |
| 751 | (fcba->flcomp & (1 << 13)) ? "enabled" : "disabled"); |
| 752 | printf("\n Dual Output Read: %s", |
| 753 | (fcba->flcomp & (1 << 12)) ? "enabled" : "disabled"); |
| 754 | } else { |
| 755 | printf("\n Read Clock Frequency: "); |
| 756 | decode_spi_frequency((fcba->flcomp >> 17) & 7); |
| 757 | } |
| 758 | |
| 759 | switch (ifd_version) { |
| 760 | case IFD_VERSION_1: |
| 761 | printf("\n Component 2 Density: "); |
| 762 | decode_component_density((fcba->flcomp >> 3) & 7); |
| 763 | printf("\n Component 1 Density: "); |
| 764 | decode_component_density(fcba->flcomp & 7); |
| 765 | break; |
| 766 | case IFD_VERSION_1_5: |
| 767 | case IFD_VERSION_2: |
| 768 | printf("\n Component 2 Density: "); |
| 769 | decode_component_density((fcba->flcomp >> 4) & 0xf); |
| 770 | printf("\n Component 1 Density: "); |
| 771 | decode_component_density(fcba->flcomp & 0xf); |
| 772 | break; |
| 773 | } |
| 774 |
no test coverage detected