blob: 27888b881f3d07c162ea60e960b0026e31e0d8d2 [file] [log] [blame]
Corey Osgoode99bd102007-06-14 06:10:57 +00001/*
Stefan Reinauer7e61e452008-01-18 10:35:56 +00002 * This file is part of the coreboot project.
Corey Osgoode99bd102007-06-14 06:10:57 +00003 *
4 * Copyright (C) 2007 Corey Osgood <corey.osgood@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
Corey Osgoode99bd102007-06-14 06:10:57 +000015 */
16
Stefan Reinauer138be832010-02-27 01:50:21 +000017#ifndef SOUTHBRIDGE_INTEL_I82801BX_I82801BX_H
18#define SOUTHBRIDGE_INTEL_I82801BX_I82801BX_H
Corey Osgoode99bd102007-06-14 06:10:57 +000019
Stefan Reinauer83a1dd82010-03-28 15:11:56 +000020#if !defined(__PRE_RAM__)
Corey Osgoode99bd102007-06-14 06:10:57 +000021#include "chip.h"
Stefan Reinauer138be832010-02-27 01:50:21 +000022extern void i82801bx_enable(device_t dev);
Corey Osgoode99bd102007-06-14 06:10:57 +000023#endif
24
Stefan Reinauer3f5f6d82013-05-07 20:35:29 +020025#if defined(__PRE_RAM__)
Uwe Hermann4028ce72010-12-07 19:16:07 +000026void enable_smbus(void);
27int smbus_read_byte(u8 device, u8 address);
28#endif
29
Uwe Hermann0ea281f2010-10-11 21:38:49 +000030#define SMBUS_IO_BASE 0x0f00
31#define PMBASE_ADDR 0x0400
32#define GPIO_BASE_ADDR 0x0500
Uwe Hermann0ea281f2010-10-11 21:38:49 +000033
34#define SECSTS 0x1e
35
Uwe Hermanndfb3c132007-06-19 22:47:11 +000036#define PCI_DMA_CFG 0x90
37#define SERIRQ_CNTL 0x64
38#define GEN_CNTL 0xd0
39#define GEN_STS 0xd4
40#define RTC_CONF 0xd8
41#define GEN_PMCON_3 0xa4
Corey Osgoode99bd102007-06-14 06:10:57 +000042
Uwe Hermanndfb3c132007-06-19 22:47:11 +000043#define PMBASE 0x40
Uwe Hermanndfb3c132007-06-19 22:47:11 +000044#define ACPI_CNTL 0x44
Uwe Hermann0ea281f2010-10-11 21:38:49 +000045#define ACPI_EN (1 << 4)
Uwe Hermanndfb3c132007-06-19 22:47:11 +000046#define BIOS_CNTL 0x4E
Uwe Hermann0ea281f2010-10-11 21:38:49 +000047#define GPIO_BASE 0x58 /* GPIO Base Address Register */
48#define GPIO_CNTL 0x5C /* GPIO Control Register */
49#define GPIO_EN (1 << 4)
Joseph Smith68d8a562007-10-30 21:55:11 +000050
Uwe Hermanndfb3c132007-06-19 22:47:11 +000051#define PIRQA_ROUT 0x60
Joseph Smith68d8a562007-10-30 21:55:11 +000052#define PIRQB_ROUT 0x61
53#define PIRQC_ROUT 0x62
54#define PIRQD_ROUT 0x63
Uwe Hermanndfb3c132007-06-19 22:47:11 +000055#define PIRQE_ROUT 0x68
Joseph Smith68d8a562007-10-30 21:55:11 +000056#define PIRQF_ROUT 0x69
57#define PIRQG_ROUT 0x6A
58#define PIRQH_ROUT 0x6B
59
Uwe Hermanndfb3c132007-06-19 22:47:11 +000060#define FUNC_DIS 0xF2
Corey Osgoode99bd102007-06-14 06:10:57 +000061
Uwe Hermann0ea281f2010-10-11 21:38:49 +000062#define COM_DEC 0xE0 /* LPC I/F Comm. Port Decode Ranges */
63#define LPC_EN 0xE6 /* LPC IF Enables Register */
64
65// TODO: FDC_DEC etc
Joseph Smith68d8a562007-10-30 21:55:11 +000066
Uwe Hermanndfb3c132007-06-19 22:47:11 +000067#define SBUS_NUM 0x19
68#define SUB_BUS_NUM 0x1A
69#define SMLT 0x1B
70#define IOBASE 0x1C
71#define IOLIM 0x1D
72#define MEMBASE 0x20
73#define MEMLIM 0x22
74#define CNF 0x50
75#define MTT 0x70
76#define PCI_MAST_STS 0x82
Corey Osgoode99bd102007-06-14 06:10:57 +000077
Joseph Smith0dc56972008-04-06 04:26:19 +000078#define TCOBASE 0x60 /* TCO Base Address Register */
79#define TCO1_CNT 0x08 /* TCO1 Control Register */
80
Uwe Hermanndfb3c132007-06-19 22:47:11 +000081/* GEN_PMCON_3 bits */
Corey Osgoode99bd102007-06-14 06:10:57 +000082#define RTC_BATTERY_DEAD (1 << 2)
83#define RTC_POWER_FAILED (1 << 1)
84#define SLEEP_AFTER_POWER_FAIL (1 << 0)
85
Uwe Hermann0ea281f2010-10-11 21:38:49 +000086/* IDE Timing registers (IDE_TIM) */
Uwe Hermanndfb3c132007-06-19 22:47:11 +000087#define IDE_TIM_PRI 0x40 /* IDE timings, primary */
88#define IDE_TIM_SEC 0x42 /* IDE timings, secondary */
Corey Osgoode99bd102007-06-14 06:10:57 +000089
Uwe Hermanndfb3c132007-06-19 22:47:11 +000090/* IDE_TIM bits */
Corey Osgoode99bd102007-06-14 06:10:57 +000091#define IDE_DECODE_ENABLE (1 << 15)
92
Uwe Hermann0ea281f2010-10-11 21:38:49 +000093/* SMbus */
Uwe Hermanndfb3c132007-06-19 22:47:11 +000094#define SMB_BASE 0x20
95#define HOSTC 0x40
Corey Osgoode99bd102007-06-14 06:10:57 +000096
Uwe Hermanndfb3c132007-06-19 22:47:11 +000097/* HOSTC bits */
98#define I2C_EN (1 << 2)
99#define SMB_SMI_EN (1 << 1)
100#define HST_EN (1 << 0)
Corey Osgoode99bd102007-06-14 06:10:57 +0000101
Uwe Hermann0ea281f2010-10-11 21:38:49 +0000102/* SMBus I/O registers. */
Uwe Hermanndfb3c132007-06-19 22:47:11 +0000103#define SMBHSTSTAT 0x0
104#define SMBHSTCTL 0x2
105#define SMBHSTCMD 0x3
106#define SMBXMITADD 0x4
107#define SMBHSTDAT0 0x5
108#define SMBHSTDAT1 0x6
109#define SMBBLKDAT 0x7
110#define SMBTRNSADD 0x9
111#define SMBSLVDATA 0xa
112#define SMLINK_PIN_CTL 0xe
113#define SMBUS_PIN_CTL 0xf
Corey Osgoode99bd102007-06-14 06:10:57 +0000114
Uwe Hermanndfb3c132007-06-19 22:47:11 +0000115#define SMBUS_TIMEOUT (10 * 1000 * 100)
Corey Osgoode99bd102007-06-14 06:10:57 +0000116
Stefan Reinauer138be832010-02-27 01:50:21 +0000117#endif /* SOUTHBRIDGE_INTEL_I82801BX_I82801BX_H */