change spi2 bus id


diff -r 4d42170120dd -r ab7e6c7e1b19 drivers/spi2/busses/spi2spi.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/drivers/spi2/busses/spi2spi.c	Mon Feb 01 21:55:08 2010 -0800
@@ -0,0 +1,123 @@
+/* a simple proxy from Mindspeed SPI2 API drivers to Linux SPI API */
+
+#include <linux/platform_device.h>
+#include <linux/spi/spi.h>
+
+/* avoid some name collisions */
+#define spi_transfer spi2_transfer
+#define spi_driver spi2_driver
+#include <linux/spi2/spi.h>
+#undef spi_transfer
+#undef spi_driver
+
+struct spi2spi
+{
+	struct spi_adapter *adapter;
+	struct platform_device *master;
+};
+
+struct spi_device proxy;
+
+static int spi2spi_transfer(struct spi_adapter *adapter,
+			    struct spi2_transfer *transfer,
+			    struct spi_client_config *config)
+{
+	struct spi2spi *spi2spi = dev_get_drvdata(&adapter->dev);
+	struct spi_message m;
+	struct spi_transfer x = {};
+	int ret;
+
+	proxy.dev = adapter->dev; /* not really kosher */
+	proxy.master = platform_get_drvdata(spi2spi->master);
+	proxy.mode = config->sc_polarity * 2 + config->sc_phase;
+	proxy.bits_per_word = transfer->fs;
+	proxy.max_speed_hz = config->sc_rate;
+	proxy.chip_select = config->cs_msk;
+
+	switch (transfer->mode & 0x0f) {
+	case SPI_TRANSFER_MODE_WRITE_ONLY:
+		x.len = transfer->wlen;
+		x.tx_buf = transfer->wbuf;
+		break;
+	case SPI_TRANSFER_MODE_READ_ONLY:
+		x.len = transfer->rlen;
+		x.rx_buf = transfer->rbuf;
+		((char *)x.rx_buf)[0] = 0xaa;
+		break;
+	case SPI_TRANSFER_MODE_WRITE_READ:
+		x.len = transfer->wlen;
+		x.tx_buf = transfer->wbuf;
+		x.rx_buf = transfer->rbuf;
+		break;
+	}
+
+	spi_message_init(&m);
+	spi_message_add_tail(&x, &m);
+	return spi_sync(&proxy, &m);
+}
+
+struct spi_adapter spi2spi_adapter = {
+	.name = "spi2spi",
+	.do_transfer = spi2spi_transfer,
+};
+
+static int __init spi2spi_probe(struct platform_device *pdev)
+{
+	struct spi2spi *spi2spi;
+
+	spi2spi = kmalloc(sizeof(struct spi2spi), GFP_KERNEL);
+	if (!spi2spi)
+		return -ENOMEM;
+
+	spi2spi->adapter = &spi2spi_adapter;
+	if (spi_add_adapter(&spi2spi_adapter)) {
+		printk(KERN_INFO "spi2spi: error adding adapter\n");
+		kfree(spi2spi);
+		return -1;
+	}
+
+	spi2spi_adapter.dev.parent = &pdev->dev;
+	spi2spi_adapter.caps.max_sc_rate = 20000000;
+	spi2spi_adapter.caps.cs_msk = 0xf;
+	spi2spi->master = pdev->dev.platform_data;
+	dev_set_drvdata(&spi2spi_adapter.dev, spi2spi);
+
+	printk("spi2spi: wired to %pS\n", spi2spi->master);
+
+	return 0;
+}
+
+static int spi2spi_remove(struct platform_device *pdev)
+{
+	struct spi2spi *spi = dev_get_drvdata(&pdev->dev);
+	dev_set_drvdata(&pdev->dev, NULL);
+	spi_del_adapter(spi->adapter);
+	kfree(spi);
+
+	return 0;
+}
+
+static struct platform_driver spi2spi_driver = {
+	.driver = {
+		.name	= "spi2spi",
+		.owner	= THIS_MODULE,
+	},
+	.probe = spi2spi_probe,
+	.remove = spi2spi_remove,
+};
+
+static int __init spi2spi_init(void)
+{
+	return platform_driver_register(&spi2spi_driver);
+}
+
+static void __exit spi2spi_exit(void)
+{
+	platform_driver_unregister(&spi2spi_driver);
+}
+
+MODULE_DESCRIPTION("SPI2 to SPI converter");
+MODULE_LICENSE("GPL");
+
+module_init(spi2spi_init);
+module_exit(spi2spi_exit);
diff -r 4d42170120dd -r ab7e6c7e1b19 drivers/spi2/spi-core.c
--- a/drivers/spi2/spi-core.c	Mon Feb 01 21:52:46 2010 -0800
+++ b/drivers/spi2/spi-core.c	Mon Feb 01 21:55:08 2010 -0800
@@ -407,8 +407,8 @@
 	return 1;
 }
 
-struct bus_type spi_bus_type = {
-	.name = "spi",
+struct bus_type spi2_bus_type = {
+	.name = "spi2",
 	.match = spi_device_match,
 };
 
@@ -423,7 +423,7 @@
 
 	printk(KERN_INFO "SPI core: loaded version 0.2\n");
 
-	retval = bus_register(&spi_bus_type);
+	retval = bus_register(&spi2_bus_type);
 	if (retval)
 		goto err0;
 
@@ -437,7 +437,7 @@
 
 #ifdef _USE_DRIVER_MODEL_
   err1:
-	bus_unregister(&spi_bus_type);
+	bus_unregister(&spi2_bus_type);
 #endif
 
   err0:
@@ -454,7 +454,7 @@
 #ifdef _USE_DRIVER_MODEL_
 	driver_unregister(&spi_driver);
 #endif
-	bus_unregister(&spi_bus_type);
+	bus_unregister(&spi2_bus_type);
 }
 
 subsys_initcall(spi_driver_init);
