diff options
author | Angel Pons <th3fanbus@gmail.com> | 2022-05-06 23:43:46 +0200 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2022-12-16 17:15:53 +0000 |
commit | 49509189dc13d467ac2ec2a63b75e30d5f93c9a7 (patch) | |
tree | 1b845e0051b6188ed7eace6e034a97be23882483 /src/southbridge/intel/lynxpoint/hsio/hsio.h | |
parent | 9c8c858e687e03e19773ea84fea021301de0e933 (diff) |
sb/intel/lynxpoint: Add native PCH init
Implement native PCH initialisation for Lynx Point. This is only needed
when MRC.bin is not used.
Change-Id: I36867bdc8b20000e44ff9d0d7b2c0d63952bd561
Signed-off-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/64181
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Diffstat (limited to 'src/southbridge/intel/lynxpoint/hsio/hsio.h')
-rw-r--r-- | src/southbridge/intel/lynxpoint/hsio/hsio.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/southbridge/intel/lynxpoint/hsio/hsio.h b/src/southbridge/intel/lynxpoint/hsio/hsio.h new file mode 100644 index 0000000000..689ef4a05b --- /dev/null +++ b/src/southbridge/intel/lynxpoint/hsio/hsio.h @@ -0,0 +1,46 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#ifndef SOUTHBRIDGE_INTEL_LYNXPOINT_HSIO_H +#define SOUTHBRIDGE_INTEL_LYNXPOINT_HSIO_H + +#include <southbridge/intel/lynxpoint/iobp.h> +#include <types.h> + +struct hsio_table_row { + uint32_t addr; + uint32_t and; + uint32_t or; +}; + +static inline void hsio_update(const uint32_t addr, const uint32_t and, const uint32_t or) +{ + pch_iobp_update(addr, and, or); +} + +static inline void hsio_update_row(const struct hsio_table_row row) +{ + hsio_update(row.addr, row.and, row.or); +} + +void hsio_xhci_shared_update(const uint32_t addr, const uint32_t and, const uint32_t or); +void hsio_sata_shared_update(const uint32_t addr, const uint32_t and, const uint32_t or); + +static inline void hsio_sata_shared_update_row(const struct hsio_table_row row) +{ + hsio_sata_shared_update(row.addr, row.and, row.or); +} + +static inline void hsio_xhci_shared_update_row(const struct hsio_table_row row) +{ + hsio_xhci_shared_update(row.addr, row.and, row.or); +} + +void program_hsio_sata_lpt_h_cx(const bool is_mobile); +void program_hsio_xhci_lpt_h_cx(void); +void program_hsio_igbe_lpt_h_cx(void); + +void program_hsio_sata_lpt_lp_bx(const bool is_mobile); +void program_hsio_xhci_lpt_lp_bx(void); +void program_hsio_igbe_lpt_lp_bx(void); + +#endif |