x86: broadwell: Implement PCH_REQ_PMBASE_INFO
Implement this ioctl() to support power off. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
@@ -630,10 +630,35 @@ static int broadwell_get_gpio_base(struct udevice *dev, u32 *gbasep)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int broadwell_ioctl(struct udevice *dev, enum pch_req_t req, void *data,
|
||||||
|
int size)
|
||||||
|
{
|
||||||
|
switch (req) {
|
||||||
|
case PCH_REQ_PMBASE_INFO: {
|
||||||
|
struct pch_pmbase_info *pm = data;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
/* Find the base address of the powermanagement registers */
|
||||||
|
ret = dm_pci_read_config16(dev, 0x40, &pm->base);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
pm->base &= 0xfffe;
|
||||||
|
pm->gpio0_en_ofs = GPE0_EN(0);
|
||||||
|
pm->pm1_sts_ofs = PM1_STS;
|
||||||
|
pm->pm1_cnt_ofs = PM1_CNT;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return -ENOSYS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static const struct pch_ops broadwell_pch_ops = {
|
static const struct pch_ops broadwell_pch_ops = {
|
||||||
.get_spi_base = broadwell_pch_get_spi_base,
|
.get_spi_base = broadwell_pch_get_spi_base,
|
||||||
.set_spi_protect = broadwell_set_spi_protect,
|
.set_spi_protect = broadwell_set_spi_protect,
|
||||||
.get_gpio_base = broadwell_get_gpio_base,
|
.get_gpio_base = broadwell_get_gpio_base,
|
||||||
|
.ioctl = broadwell_ioctl,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct udevice_id broadwell_pch_ids[] = {
|
static const struct udevice_id broadwell_pch_ids[] = {
|
||||||
|
|||||||
Reference in New Issue
Block a user