1/* 2 * Copyright (C) 2013 Daniel Tang <tangrs@tangrs.id.au> 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 2, as 6 * published by the Free Software Foundation. 7 * 8 * Based off drivers/usb/chipidea/ci_hdrc_msm.c 9 * 10 */ 11 12#include <linux/module.h> 13#include <linux/platform_device.h> 14#include <linux/usb/gadget.h> 15#include <linux/usb/chipidea.h> 16 17#include "ci.h" 18 19static struct ci_hdrc_platform_data ci_hdrc_zevio_platdata = { 20 .name = "ci_hdrc_zevio", 21 .flags = CI_HDRC_REGS_SHARED | CI_HDRC_FORCE_FULLSPEED, 22 .capoffset = DEF_CAPOFFSET, 23}; 24 25static int ci_hdrc_zevio_probe(struct platform_device *pdev) 26{ 27 struct platform_device *ci_pdev; 28 29 dev_dbg(&pdev->dev, "ci_hdrc_zevio_probe\n"); 30 31 ci_pdev = ci_hdrc_add_device(&pdev->dev, 32 pdev->resource, pdev->num_resources, 33 &ci_hdrc_zevio_platdata); 34 35 if (IS_ERR(ci_pdev)) { 36 dev_err(&pdev->dev, "ci_hdrc_add_device failed!\n"); 37 return PTR_ERR(ci_pdev); 38 } 39 40 platform_set_drvdata(pdev, ci_pdev); 41 42 return 0; 43} 44 45static int ci_hdrc_zevio_remove(struct platform_device *pdev) 46{ 47 struct platform_device *ci_pdev = platform_get_drvdata(pdev); 48 49 ci_hdrc_remove_device(ci_pdev); 50 51 return 0; 52} 53 54static const struct of_device_id ci_hdrc_zevio_dt_ids[] = { 55 { .compatible = "lsi,zevio-usb", }, 56 { /* sentinel */ } 57}; 58 59static struct platform_driver ci_hdrc_zevio_driver = { 60 .probe = ci_hdrc_zevio_probe, 61 .remove = ci_hdrc_zevio_remove, 62 .driver = { 63 .name = "zevio_usb", 64 .of_match_table = ci_hdrc_zevio_dt_ids, 65 }, 66}; 67 68MODULE_DEVICE_TABLE(of, ci_hdrc_zevio_dt_ids); 69module_platform_driver(ci_hdrc_zevio_driver); 70 71MODULE_LICENSE("GPL v2"); 72