Re: How to use spi device from another kernel module?

2016-12-07 Thread Ran Shalit
On Wed, Dec 7, 2016 at 7:26 PM, Ran Shalit  wrote:
> On Wed, Dec 7, 2016 at 6:58 PM, Joel Fernandes  wrote:
>> On Tue, Dec 6, 2016 at 11:02 PM, Greg KH  wrote:
>>> On Tue, Dec 06, 2016 at 09:12:24PM -0800, Joel Fernandes wrote:
 On Tue, Dec 6, 2016 at 11:42 AM, Ran Shalit  wrote:
 > Hello,
 >
 > I have spi device which is registered using spi_register_board_info(),
 > and I would like to get a pointer to this device in some other kernel 
 > module.
 >
 > Is there a simple way to get a pointer to pointer to a device , so
 > that we can use it from other module ? (something like i2c_get_adapter
 > for i2c)

 Find out what's the SPI bus number (for the master) and the chip
 select on that SPI master (for the SPI device)

 Then you can use bus_for_each_device on spi_bus_type and find the
 spi_device you're looking for. See the following code for an example
 of how to use bus_for_each_device:

Hi,

I did try using this method with the following call:

bus_for_each_dev(_bus_type, NULL, NULL, spi_device_found);

static int spi_device_found(struct device *dev, void *data)
{
struct spi_device *spi = container_of(dev, struct spi_device, dev);

printk(":  %s %s %dkHz %d bits mode=0x%02X\n",
spi->modalias, dev_name(dev), spi->max_speed_hz/1000,
spi->bits_per_word, spi->mode);

return 0;
}

But for some reason the list is empty, although I do have devices
registered successfuly with spi_register_driver.
Using the same method with i2c works well, not sure why it doesn't
list anything with spi.

Thanks,
Ran


 http://lxr.free-electrons.com/source/drivers/spi/spi.c#L524

 In your check function, just make sure your spi->master->bus_num is
 the bus you want and the spi->chip_select is the chip select
 corresponding to the device you want. If both these conditions are
 satisfied, there you have your spi_device.
>>>
>>> Eeek, no, please never do that, use the proper spi apis to get your
>>> needed device.  They are there somewhere, using a "raw"
>>> bus_for_each_device is never the answer unless you are a bus and
>>> iterating over your own device list.
>>
>> Yes I completely agree, maybe I assumed too much and thought he was
>> trying to do this for some quick debugging from some kernel module,
>> and was just looking for a quick and dirty way to get to a spi_device.
>> Was not really suggesting this for production code. :)
>>
>
> You were actually Right... That's exactly what I wanted :) , so I
> probably will  try to use your simple method.
> I think that for production , spidev shows a good example how to use
> spi as a char device:
> https://github.com/Xilinx/linux-xlnx/blob/master/drivers/spi/spidev.c
>
> Thanks!
> Ran
>
>> Regards,
>> Joel
>>
>>>
>>> thanks,
>>>
>>> greg k-h

___
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


Re: How to use spi device from another kernel module?

2016-12-07 Thread Ran Shalit
On Wed, Dec 7, 2016 at 6:58 PM, Joel Fernandes  wrote:
> On Tue, Dec 6, 2016 at 11:02 PM, Greg KH  wrote:
>> On Tue, Dec 06, 2016 at 09:12:24PM -0800, Joel Fernandes wrote:
>>> On Tue, Dec 6, 2016 at 11:42 AM, Ran Shalit  wrote:
>>> > Hello,
>>> >
>>> > I have spi device which is registered using spi_register_board_info(),
>>> > and I would like to get a pointer to this device in some other kernel 
>>> > module.
>>> >
>>> > Is there a simple way to get a pointer to pointer to a device , so
>>> > that we can use it from other module ? (something like i2c_get_adapter
>>> > for i2c)
>>>
>>> Find out what's the SPI bus number (for the master) and the chip
>>> select on that SPI master (for the SPI device)
>>>
>>> Then you can use bus_for_each_device on spi_bus_type and find the
>>> spi_device you're looking for. See the following code for an example
>>> of how to use bus_for_each_device:
>>>
>>> http://lxr.free-electrons.com/source/drivers/spi/spi.c#L524
>>>
>>> In your check function, just make sure your spi->master->bus_num is
>>> the bus you want and the spi->chip_select is the chip select
>>> corresponding to the device you want. If both these conditions are
>>> satisfied, there you have your spi_device.
>>
>> Eeek, no, please never do that, use the proper spi apis to get your
>> needed device.  They are there somewhere, using a "raw"
>> bus_for_each_device is never the answer unless you are a bus and
>> iterating over your own device list.
>
> Yes I completely agree, maybe I assumed too much and thought he was
> trying to do this for some quick debugging from some kernel module,
> and was just looking for a quick and dirty way to get to a spi_device.
> Was not really suggesting this for production code. :)
>

You were actually Right... That's exactly what I wanted :) , so I
probably will  try to use your simple method.
I think that for production , spidev shows a good example how to use
spi as a char device:
https://github.com/Xilinx/linux-xlnx/blob/master/drivers/spi/spidev.c

Thanks!
Ran

> Regards,
> Joel
>
>>
>> thanks,
>>
>> greg k-h

___
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


Re: How to use spi device from another kernel module?

2016-12-07 Thread Ran Shalit
On Wed, Dec 7, 2016 at 9:02 AM, Greg KH  wrote:
> On Tue, Dec 06, 2016 at 09:12:24PM -0800, Joel Fernandes wrote:
>> On Tue, Dec 6, 2016 at 11:42 AM, Ran Shalit  wrote:
>> > Hello,
>> >
>> > I have spi device which is registered using spi_register_board_info(),
>> > and I would like to get a pointer to this device in some other kernel 
>> > module.
>> >
>> > Is there a simple way to get a pointer to pointer to a device , so
>> > that we can use it from other module ? (something like i2c_get_adapter
>> > for i2c)
>>
>> Find out what's the SPI bus number (for the master) and the chip
>> select on that SPI master (for the SPI device)
>>
>> Then you can use bus_for_each_device on spi_bus_type and find the
>> spi_device you're looking for. See the following code for an example
>> of how to use bus_for_each_device:
>>
>> http://lxr.free-electrons.com/source/drivers/spi/spi.c#L524
>>

Thanks Joel,
Though in this example I can't see how to used bus number & cs.
Probably I ask for something which is not too proper, as Greg mentioned.
Yet, I need to do that, as simple as possible...

>> In your check function, just make sure your spi->master->bus_num is
>> the bus you want and the spi->chip_select is the chip select
>> corresponding to the device you want. If both these conditions are
>> satisfied, there you have your spi_device.
>
> Eeek, no, please never do that, use the proper spi apis to get your
> needed device.  They are there somewhere, using a "raw"
> bus_for_each_device is never the answer unless you are a bus and
> iterating over your own device list.
>
> thanks,
>
> greg k-h

Hi,

I'm trying to understand how to get the spi device from proc entry.
Is there any example which demonstrate such usage ?

Thanks,
Ran

___
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


bifs mount error

2016-12-07 Thread Anurag Raghavan (RBEI/ETW11)
Hi All,

My appdata partition could not be mounted or where the partition was not able 
to be used. Anyone can help me to find out the root cause of this. What are the 
possibilities of this ubifs corruption. Any patched are available to fix this 
issue.

Error logs:

[1.797141] UBI error: ubi_io_read: error -74 (ECC error) while reading 
253952 bytes from PEB 445:8192, read 253952 bytes
[1.808274] UBIFS error (pid 491): ubifs_scan: corrupt empty space at LEB 
489:233760
[1.816037] UBIFS error (pid 491): ubifs_scanned_corruption: corruption at 
LEB 489:233760
[1.828660] UBIFS error (pid 491): ubifs_scan: LEB 489 scanning failed
[1.835215] UBIFS warning (pid 491): ubifs_ro_mode: switched to read-only 
mode, error -117
[1.843502] UBIFS error (pid 491): make_reservation: cannot reserve 58 bytes 
in jhead 2, error -117
[1.852569] UBIFS error (pid 491): do_writepage: cannot write page 0 of 
inode 76584, error -117
dpkg: error: unable to sync new file '/var/lib/dpkg/arch-new': Structure needs 
cleaning


Best regards

Raghavan Anurag
RBEI/ETW1

Tel. +91(422)667-4001 | Mobil 9986968950

___
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies