| 1 | |
| 2 | |
| 3 | |
| 4 |
|
| 5 | #include <linux/err.h>
|
| 6 | #include <linux/platform_device.h>
|
| 7 |
|
| 8 | #include "spi-loongson.h"
|
| 9 |
|
| 10 | static int loongson_spi_platform_probe(struct platform_device *pdev)
|
| 11 | {
|
| 12 | int ret;
|
| 13 | void __iomem *reg_base;
|
| 14 | struct device *dev = &pdev->dev;
|
| 15 |
|
| 16 | reg_base = devm_platform_ioremap_resource(pdev, 0);
|
| 17 | if (IS_ERR(reg_base))
|
| 18 | return PTR_ERR(reg_base);
|
| 19 |
|
| 20 | ret = loongson_spi_init_controller(dev, reg_base);
|
| 21 | if (ret)
|
| 22 | return dev_err_probe(dev, ret, "failed to initialize controller\n");
|
| 23 |
|
| 24 | return 0;
|
| 25 | }
|
| 26 |
|
| 27 | static const struct of_device_id loongson_spi_id_table[] = {
|
| 28 | { .compatible = "loongson,ls2k1000-spi" },
|
| 29 | { }
|
| 30 | };
|
| 31 | MODULE_DEVICE_TABLE(of, loongson_spi_id_table);
|
| 32 |
|
| 33 | static struct platform_driver loongson_spi_plat_driver = {
|
| 34 | .probe = loongson_spi_platform_probe,
|
| 35 | .driver = {
|
| 36 | .name = "loongson-spi",
|
| 37 | .bus = &platform_bus_type,
|
| 38 | .pm = pm_sleep_ptr(&loongson_spi_dev_pm_ops),
|
| 39 | .of_match_table = loongson_spi_id_table,
|
| 40 | },
|
| 41 | };
|
| 42 | module_platform_driver(loongson_spi_plat_driver);
|
| 43 |
|
| 44 | MODULE_DESCRIPTION("Loongson spi platform driver");
|
| 45 | MODULE_LICENSE("GPL");
|
| 46 | MODULE_IMPORT_NS("SPI_LOONGSON_CORE");
|