/* * Copyright (C) 2016 Stefan Roese * * SPDX-License-Identifier: GPL-2.0+ */ #include #include #include /* * Dummy implementation that can be overwritten by a board * specific function */ __weak int board_ahci_enable(void) { return 0; } #ifdef CONFIG_ARMADA_8K /* CP110 has different AHCI port addresses */ void __iomem *ahci_port_base(void __iomem *base, u32 port) { return base + 0x10000 + (port * 0x10000); } #endif static int mvebu_ahci_probe(struct udevice *dev) { /* * Board specific SATA / AHCI enable code, e.g. enable the * AHCI power or deassert reset */ board_ahci_enable(); ahci_init(devfdt_get_addr_ptr(dev)); return 0; } static const struct udevice_id mvebu_ahci_ids[] = { { .compatible = "marvell,armada-3700-ahci" }, { .compatible = "marvell,armada-8k-ahci" }, { } }; U_BOOT_DRIVER(ahci_mvebu_drv) = { .name = "ahci_mvebu", .id = UCLASS_AHCI, .of_match = mvebu_ahci_ids, .probe = mvebu_ahci_probe, };