| /* |
| * SD/MMC Greybus driver. |
| * |
| * Copyright 2014 Google Inc. |
| * |
| * Released under the GPLv2 only. |
| */ |
| |
| #include <linux/kernel.h> |
| #include <linux/module.h> |
| #include <linux/slab.h> |
| #include <linux/mmc/host.h> |
| #include "greybus.h" |
| |
| struct gb_sdio_host { |
| struct mmc_host *mmc; |
| struct mmc_request *mrq; |
| // FIXME - some lock? |
| }; |
| |
| static const struct greybus_module_id id_table[] = { |
| { GREYBUS_DEVICE(0x43, 0x43) }, /* make shit up */ |
| { }, /* terminating NULL entry */ |
| }; |
| |
| static void gb_sd_request(struct mmc_host *mmc, struct mmc_request *mrq) |
| { |
| // FIXME - do something here... |
| } |
| |
| static void gb_sd_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) |
| { |
| // FIXME - do something here... |
| } |
| |
| static int gb_sd_get_ro(struct mmc_host *mmc) |
| { |
| // FIXME - do something here... |
| return 0; |
| } |
| |
| static const struct mmc_host_ops gb_sd_ops = { |
| .request = gb_sd_request, |
| .set_ios = gb_sd_set_ios, |
| .get_ro = gb_sd_get_ro, |
| }; |
| |
| int gb_sdio_probe(struct greybus_device *gdev, |
| const struct greybus_module_id *id) |
| { |
| struct mmc_host *mmc; |
| struct gb_sdio_host *host; |
| |
| mmc = mmc_alloc_host(sizeof(struct gb_sdio_host), &gdev->dev); |
| if (!mmc) |
| return -ENOMEM; |
| |
| host = mmc_priv(mmc); |
| host->mmc = mmc; |
| |
| mmc->ops = &gb_sd_ops; |
| // FIXME - set up size limits we can handle. |
| |
| gdev->gb_sdio_host = host; |
| return 0; |
| } |
| |
| void gb_sdio_disconnect(struct greybus_device *gdev) |
| { |
| struct mmc_host *mmc; |
| struct gb_sdio_host *host; |
| |
| host = gdev->gb_sdio_host; |
| mmc = host->mmc; |
| |
| mmc_remove_host(mmc); |
| mmc_free_host(mmc); |
| } |
| |
| #if 0 |
| static struct greybus_driver sd_gb_driver = { |
| .probe = gb_sdio_probe, |
| .disconnect = gb_sdio_disconnect, |
| .id_table = id_table, |
| }; |
| |
| module_greybus_driver(sd_gb_driver); |
| MODULE_LICENSE("GPL"); |
| MODULE_DESCRIPTION("Greybus SD/MMC Host driver"); |
| MODULE_AUTHOR("Greg Kroah-Hartman <gregkh@linuxfoundation.org>"); |
| #endif |