From: Aaron B. <aar...@gm...> - 2009-04-29 23:52:15
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I am really having a hard time understanding what I'm supposed to be doing to get a device working on the SPI bus with spidev. I compiled the omap3-desktop-image and went to ~/overo-oe/tmp/work/overo-angstrom-linux-gnueabi/linux-omap"myvers"/git/ and ran make ARCH=arm menuconfig and added userspace spi(spidev) I then copied the .config to ~/overo-oe/user.collection/packages/linux/linux-omap3/overo/defconfig. Now I know that in order to get this to work I am supposed to add my device along the lines of: static struct spi_board_info gumstix_spi_board_info = { .modalias = "spidev", .max_speed_hz = 2000000, .bus_num = 1, .chip_select = 0, }; to a file so that it will show up under /dev. So I found a file ~/overo-oe/tmp/staging/overo-angstrom-linux-gnueabi/kernel/arch/arm/mach-omap2/board-overo.c and in there the following is inside it: static struct spi_board_info overo_spi_board_info[] __initdata = { { .modalias = "ads7846", .bus_num = 1, .chip_select = 0, .max_speed_hz = 1500000, .controller_data = &ads7846_mcspi_config, .irq = OMAP_GPIO_IRQ(OVERO_GPIO_PENDOWN), .platform_data = &ads7846_config, } }; So If I remove this device and add mine (because I want to use chip_select 0 for my device) will the change be reflected in the build or will it get blown away when I compile. Also is there anything else I need to do? Any help would be awesome. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkn46CYACgkQ9BGuy+qe/GE7bgCff4K8vGRpO43T0MCEiigXA7rR 9iYAniCeiYA0gfIhIGqgsGNrvlvXz+uk =o2Mq -----END PGP SIGNATURE----- |
From: Ned F. <nfo...@wh...> - 2009-04-30 01:47:21
|
Aaron Bailey wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > I am really having a hard time understanding what I'm supposed to be > doing to get a device working on the SPI bus with spidev. > > I compiled the omap3-desktop-image and went to > ~/overo-oe/tmp/work/overo-angstrom-linux-gnueabi/linux-omap"myvers"/git/ > and ran make ARCH=arm menuconfig and added userspace spi(spidev) I then > copied the .config to > ~/overo-oe/user.collection/packages/linux/linux-omap3/overo/defconfig. I don't know anything about OE; I use buildroot on an older PXA based gumstix. > Now I know that in order to get this to work I am supposed to add my > device along the lines of: > static struct spi_board_info gumstix_spi_board_info = { > .modalias = "spidev", > .max_speed_hz = 2000000, > .bus_num = 1, > .chip_select = 0, > }; Something like that. The documentation for spidev does not give an example, so I'm not sure if there are other parameters, but that looks like a good start. What I don't see it the rest of the SPI stuff, perhaps the standard overo-oe build contains what is not mentioned, but I can't tell. Let me explain. spidev is half of the driver that you need. The spi core defines a partitioning of the spi driver into two parts: the controller driver and the protocol driver. The controller driver is sometimes called the master driver. Also, see Documentation/spi/spi-summary for more information. The controller driver has control of the spi hardware, that is to say the physical wires of the SPI bus. It controls the clock and data, and the loading an unloading of any FIFOs. The controller driver knows how to make transfers happen on the bus: the sending of words of some length at some clock rate, and it knows how to perform multiple transfers that have been linked into messages. The physical bus may be connected to several slaves (chips). The controller driver knows how to direct messages/transfers to each chip on the bus. It does not know anything about what those transfers mean, nor what transfers the chips expect to send/receive. There is only one controller driver active for each physical SPI interface. It is the arbiter and gate keeper. In addition to the single controller driver, there is a protocol driver for each (type of) chip that is attached to the bus. It is this protocol driver that knows what messages a particular chip needs to receive, and the protocol driver passes the necessary messages to the controller driver which in turn passes them on the bus to the target chip. There is a standard interface (an internal kernel API) defined between the protocol driver and the controller driver. This interface is defined in the above spi-summary, and in the implementing files: drivers/spi/spi.c include/linux/spi/spi.h The controller driver implements its part of this API, and does whatever is necessary to the hardware to accomplish this. The protocol driver implements from the kernel side of the clib (open, close, read, write, ioctl, etc.) to this internal kernel API. So the path from user space is user.code->clib->protocol.driver->spi.core->controller.driver->SPI.bus->chip. OK, so spidev is a protocol driver. You still need a controller driver. I don't know if the overo-oe distribution already sets up the appropriate controller driver; it might. The controller driver for the PXA processors is drivers/spi/pxa2xx_spi.c. I am guessing that the appropriate driver for Overo is drivers/spi/omap2_mcspi.c Make sure there is init code that installs this driver. Documentation/spi/pxa2xx contains instructions for how to install pxa2xx_spi. I don't see any comparable instructions for installation of map2_mcspi. > to a file so that it will show up under /dev. So I found a file > ~/overo-oe/tmp/staging/overo-angstrom-linux-gnueabi/kernel/arch/arm/mach-omap2/board-overo.c > and in there the following is inside it: > static struct spi_board_info overo_spi_board_info[] __initdata = { > { > .modalias = "ads7846", > .bus_num = 1, > .chip_select = 0, > .max_speed_hz = 1500000, > .controller_data = &ads7846_mcspi_config, > .irq = OMAP_GPIO_IRQ(OVERO_GPIO_PENDOWN), > .platform_data = &ads7846_config, > } > }; > > So If I remove this device and add mine (because I want to use > chip_select 0 for my device) will the change be reflected in the build > or will it get blown away when I compile. Also is there anything else I > need to do? That's an OE question, which I can't help with. > Any help would be awesome. -- Ned Forrester nfo...@wh... Oceanographic Systems Lab 508-289-2226 Applied Ocean Physics and Engineering Dept. Woods Hole Oceanographic Institution Woods Hole, MA 02543, USA http://www.whoi.edu/ http://www.whoi.edu/sbl/liteSite.do?litesiteid=7212 http://www.whoi.edu/hpb/Site.do?id=1532 http://www.whoi.edu/page.do?pid=10079 |
From: Philip B. <ph...@ba...> - 2009-04-30 02:06:53
Attachments:
smime.p7s
|
Aaron Bailey wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > I am really having a hard time understanding what I'm supposed to be > doing to get a device working on the SPI bus with spidev. There is a longish thread on the beagleboard list that might be helpful: http://groups.google.com/group/beagleboard/browse_thread/thread/42988f0e14db0f01/3200cce7400bb6b8?lnk=gst&q=mcspi#3200cce7400bb6b8 Hopefully, this helps some. Philip > > I compiled the omap3-desktop-image and went to > ~/overo-oe/tmp/work/overo-angstrom-linux-gnueabi/linux-omap"myvers"/git/ > and ran make ARCH=arm menuconfig and added userspace spi(spidev) I then > copied the .config to > ~/overo-oe/user.collection/packages/linux/linux-omap3/overo/defconfig. > > Now I know that in order to get this to work I am supposed to add my > device along the lines of: > static struct spi_board_info gumstix_spi_board_info = { > .modalias = "spidev", > .max_speed_hz = 2000000, > .bus_num = 1, > .chip_select = 0, > }; > > to a file so that it will show up under /dev. So I found a file > ~/overo-oe/tmp/staging/overo-angstrom-linux-gnueabi/kernel/arch/arm/mach-omap2/board-overo.c > and in there the following is inside it: > static struct spi_board_info overo_spi_board_info[] __initdata = { > { > .modalias = "ads7846", > .bus_num = 1, > .chip_select = 0, > .max_speed_hz = 1500000, > .controller_data = &ads7846_mcspi_config, > .irq = OMAP_GPIO_IRQ(OVERO_GPIO_PENDOWN), > .platform_data = &ads7846_config, > } > }; > > So If I remove this device and add mine (because I want to use > chip_select 0 for my device) will the change be reflected in the build > or will it get blown away when I compile. Also is there anything else I > need to do? > > Any help would be awesome. > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.9 (MingW32) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org > > iEYEARECAAYFAkn46CYACgkQ9BGuy+qe/GE7bgCff4K8vGRpO43T0MCEiigXA7rR > 9iYAniCeiYA0gfIhIGqgsGNrvlvXz+uk > =o2Mq > -----END PGP SIGNATURE----- > > ------------------------------------------------------------------------------ > Register Now & Save for Velocity, the Web Performance & Operations > Conference from O'Reilly Media. Velocity features a full day of > expert-led, hands-on workshops and two days of sessions from industry > leaders in dedicated Performance & Operations tracks. Use code vel09scf > and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users > |
From: john743 <joh...@gm...> - 2009-06-14 08:46:20
|
Hi aaron001, Have you managed to get SPI working? Could you please describe the steps required? Thank you, Shaun aaron001 wrote: > > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > I am really having a hard time understanding what I'm supposed to be > doing to get a device working on the SPI bus with spidev. > > I compiled the omap3-desktop-image and went to > ~/overo-oe/tmp/work/overo-angstrom-linux-gnueabi/linux-omap"myvers"/git/ > and ran make ARCH=arm menuconfig and added userspace spi(spidev) I then > copied the .config to > ~/overo-oe/user.collection/packages/linux/linux-omap3/overo/defconfig. > > Now I know that in order to get this to work I am supposed to add my > device along the lines of: > static struct spi_board_info gumstix_spi_board_info = { > .modalias = "spidev", > .max_speed_hz = 2000000, > .bus_num = 1, > .chip_select = 0, > }; > > to a file so that it will show up under /dev. So I found a file > ~/overo-oe/tmp/staging/overo-angstrom-linux-gnueabi/kernel/arch/arm/mach-omap2/board-overo.c > and in there the following is inside it: > static struct spi_board_info overo_spi_board_info[] __initdata = { > { > .modalias = "ads7846", > .bus_num = 1, > .chip_select = 0, > .max_speed_hz = 1500000, > .controller_data = &ads7846_mcspi_config, > .irq = > OMAP_GPIO_IRQ(OVERO_GPIO_PENDOWN), > .platform_data = &ads7846_config, > } > }; > > So If I remove this device and add mine (because I want to use > chip_select 0 for my device) will the change be reflected in the build > or will it get blown away when I compile. Also is there anything else I > need to do? > > Any help would be awesome. > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.9 (MingW32) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org > > iEYEARECAAYFAkn46CYACgkQ9BGuy+qe/GE7bgCff4K8vGRpO43T0MCEiigXA7rR > 9iYAniCeiYA0gfIhIGqgsGNrvlvXz+uk > =o2Mq > -----END PGP SIGNATURE----- > > ------------------------------------------------------------------------------ > Register Now & Save for Velocity, the Web Performance & Operations > Conference from O'Reilly Media. Velocity features a full day of > expert-led, hands-on workshops and two days of sessions from industry > leaders in dedicated Performance & Operations tracks. Use code vel09scf > and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users > > -- View this message in context: http://www.nabble.com/SPI-Bus-tp23307852p24019637.html Sent from the Gumstix mailing list archive at Nabble.com. |