i2c-piix4.c (03ab8e6297acd1bc0eedaa050e2a1635c576fd11) i2c-piix4.c (8ad59b397f86a4d8014966fdc0552095a0c4fb2b)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 Copyright (c) 1998 - 2002 Frodo Looijaard <frodol@dds.nl> and
4 Philip Edelbrock <phil@netroedge.com>
5
6*/
7
8/*

--- 147 unchanged lines hidden (view full) ---

156static u8 piix4_port_shift_sb800;
157static const char *piix4_main_port_names_sb800[PIIX4_MAX_ADAPTERS] = {
158 " port 0", " port 2", " port 3", " port 4"
159};
160static const char *piix4_aux_port_name_sb800 = " port 1";
161
162struct sb800_mmio_cfg {
163 void __iomem *addr;
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 Copyright (c) 1998 - 2002 Frodo Looijaard <frodol@dds.nl> and
4 Philip Edelbrock <phil@netroedge.com>
5
6*/
7
8/*

--- 147 unchanged lines hidden (view full) ---

156static u8 piix4_port_shift_sb800;
157static const char *piix4_main_port_names_sb800[PIIX4_MAX_ADAPTERS] = {
158 " port 0", " port 2", " port 3", " port 4"
159};
160static const char *piix4_aux_port_name_sb800 = " port 1";
161
162struct sb800_mmio_cfg {
163 void __iomem *addr;
164 struct resource *res;
165 bool use_mmio;
166};
167
168struct i2c_piix4_adapdata {
169 unsigned short smba;
170
171 /* SB800 */
172 bool sb800_main;
173 bool notify_imc;
174 u8 port; /* Port number, shifted */
175 struct sb800_mmio_cfg mmio_cfg;
176};
177
178static int piix4_sb800_region_request(struct device *dev,
179 struct sb800_mmio_cfg *mmio_cfg)
180{
181 if (mmio_cfg->use_mmio) {
164 bool use_mmio;
165};
166
167struct i2c_piix4_adapdata {
168 unsigned short smba;
169
170 /* SB800 */
171 bool sb800_main;
172 bool notify_imc;
173 u8 port; /* Port number, shifted */
174 struct sb800_mmio_cfg mmio_cfg;
175};
176
177static int piix4_sb800_region_request(struct device *dev,
178 struct sb800_mmio_cfg *mmio_cfg)
179{
180 if (mmio_cfg->use_mmio) {
182 struct resource *res;
183 void __iomem *addr;
184
181 void __iomem *addr;
182
185 res = request_mem_region_muxed(SB800_PIIX4_FCH_PM_ADDR,
186 SB800_PIIX4_FCH_PM_SIZE,
187 "sb800_piix4_smb");
188 if (!res) {
183 if (!request_mem_region_muxed(SB800_PIIX4_FCH_PM_ADDR,
184 SB800_PIIX4_FCH_PM_SIZE,
185 "sb800_piix4_smb")) {
189 dev_err(dev,
190 "SMBus base address memory region 0x%x already in use.\n",
191 SB800_PIIX4_FCH_PM_ADDR);
192 return -EBUSY;
193 }
194
195 addr = ioremap(SB800_PIIX4_FCH_PM_ADDR,
196 SB800_PIIX4_FCH_PM_SIZE);
197 if (!addr) {
186 dev_err(dev,
187 "SMBus base address memory region 0x%x already in use.\n",
188 SB800_PIIX4_FCH_PM_ADDR);
189 return -EBUSY;
190 }
191
192 addr = ioremap(SB800_PIIX4_FCH_PM_ADDR,
193 SB800_PIIX4_FCH_PM_SIZE);
194 if (!addr) {
198 release_resource(res);
195 release_mem_region(SB800_PIIX4_FCH_PM_ADDR,
196 SB800_PIIX4_FCH_PM_SIZE);
199 dev_err(dev, "SMBus base address mapping failed.\n");
200 return -ENOMEM;
201 }
202
197 dev_err(dev, "SMBus base address mapping failed.\n");
198 return -ENOMEM;
199 }
200
203 mmio_cfg->res = res;
204 mmio_cfg->addr = addr;
205
206 return 0;
207 }
208
209 if (!request_muxed_region(SB800_PIIX4_SMB_IDX, SB800_PIIX4_SMB_MAP_SIZE,
210 "sb800_piix4_smb")) {
211 dev_err(dev,

--- 5 unchanged lines hidden (view full) ---

217 return 0;
218}
219
220static void piix4_sb800_region_release(struct device *dev,
221 struct sb800_mmio_cfg *mmio_cfg)
222{
223 if (mmio_cfg->use_mmio) {
224 iounmap(mmio_cfg->addr);
201 mmio_cfg->addr = addr;
202
203 return 0;
204 }
205
206 if (!request_muxed_region(SB800_PIIX4_SMB_IDX, SB800_PIIX4_SMB_MAP_SIZE,
207 "sb800_piix4_smb")) {
208 dev_err(dev,

--- 5 unchanged lines hidden (view full) ---

214 return 0;
215}
216
217static void piix4_sb800_region_release(struct device *dev,
218 struct sb800_mmio_cfg *mmio_cfg)
219{
220 if (mmio_cfg->use_mmio) {
221 iounmap(mmio_cfg->addr);
225 release_resource(mmio_cfg->res);
222 release_mem_region(SB800_PIIX4_FCH_PM_ADDR,
223 SB800_PIIX4_FCH_PM_SIZE);
226 return;
227 }
228
229 release_region(SB800_PIIX4_SMB_IDX, SB800_PIIX4_SMB_MAP_SIZE);
230}
231
232static bool piix4_sb800_use_mmio(struct pci_dev *PIIX4_dev)
233{

--- 926 unchanged lines hidden ---
224 return;
225 }
226
227 release_region(SB800_PIIX4_SMB_IDX, SB800_PIIX4_SMB_MAP_SIZE);
228}
229
230static bool piix4_sb800_use_mmio(struct pci_dev *PIIX4_dev)
231{

--- 926 unchanged lines hidden ---