|
@@ -436,6 +436,7 @@ static long linehandle_ioctl(struct file *filep, unsigned int cmd,
|
|
|
true,
|
|
|
lh->numdescs,
|
|
|
lh->descs,
|
|
|
+ NULL,
|
|
|
vals);
|
|
|
if (ret)
|
|
|
return ret;
|
|
@@ -468,6 +469,7 @@ static long linehandle_ioctl(struct file *filep, unsigned int cmd,
|
|
|
true,
|
|
|
lh->numdescs,
|
|
|
lh->descs,
|
|
|
+ NULL,
|
|
|
vals);
|
|
|
}
|
|
|
return -EINVAL;
|
|
@@ -2784,6 +2786,7 @@ static int gpio_chip_get_multiple(struct gpio_chip *chip,
|
|
|
int gpiod_get_array_value_complex(bool raw, bool can_sleep,
|
|
|
unsigned int array_size,
|
|
|
struct gpio_desc **desc_array,
|
|
|
+ struct gpio_array *array_info,
|
|
|
unsigned long *value_bitmap)
|
|
|
{
|
|
|
int i = 0;
|
|
@@ -2897,6 +2900,7 @@ EXPORT_SYMBOL_GPL(gpiod_get_value);
|
|
|
* gpiod_get_raw_array_value() - read raw values from an array of GPIOs
|
|
|
* @array_size: number of elements in the descriptor array / value bitmap
|
|
|
* @desc_array: array of GPIO descriptors whose values will be read
|
|
|
+ * @array_info: information on applicability of fast bitmap processing path
|
|
|
* @value_bitmap: bitmap to store the read values
|
|
|
*
|
|
|
* Read the raw values of the GPIOs, i.e. the values of the physical lines
|
|
@@ -2908,12 +2912,14 @@ EXPORT_SYMBOL_GPL(gpiod_get_value);
|
|
|
*/
|
|
|
int gpiod_get_raw_array_value(unsigned int array_size,
|
|
|
struct gpio_desc **desc_array,
|
|
|
+ struct gpio_array *array_info,
|
|
|
unsigned long *value_bitmap)
|
|
|
{
|
|
|
if (!desc_array)
|
|
|
return -EINVAL;
|
|
|
return gpiod_get_array_value_complex(true, false, array_size,
|
|
|
- desc_array, value_bitmap);
|
|
|
+ desc_array, array_info,
|
|
|
+ value_bitmap);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(gpiod_get_raw_array_value);
|
|
|
|
|
@@ -2921,6 +2927,7 @@ EXPORT_SYMBOL_GPL(gpiod_get_raw_array_value);
|
|
|
* gpiod_get_array_value() - read values from an array of GPIOs
|
|
|
* @array_size: number of elements in the descriptor array / value bitmap
|
|
|
* @desc_array: array of GPIO descriptors whose values will be read
|
|
|
+ * @array_info: information on applicability of fast bitmap processing path
|
|
|
* @value_bitmap: bitmap to store the read values
|
|
|
*
|
|
|
* Read the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
|
|
@@ -2931,12 +2938,14 @@ EXPORT_SYMBOL_GPL(gpiod_get_raw_array_value);
|
|
|
*/
|
|
|
int gpiod_get_array_value(unsigned int array_size,
|
|
|
struct gpio_desc **desc_array,
|
|
|
+ struct gpio_array *array_info,
|
|
|
unsigned long *value_bitmap)
|
|
|
{
|
|
|
if (!desc_array)
|
|
|
return -EINVAL;
|
|
|
return gpiod_get_array_value_complex(false, false, array_size,
|
|
|
- desc_array, value_bitmap);
|
|
|
+ desc_array, array_info,
|
|
|
+ value_bitmap);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(gpiod_get_array_value);
|
|
|
|
|
@@ -3029,6 +3038,7 @@ static void gpio_chip_set_multiple(struct gpio_chip *chip,
|
|
|
int gpiod_set_array_value_complex(bool raw, bool can_sleep,
|
|
|
unsigned int array_size,
|
|
|
struct gpio_desc **desc_array,
|
|
|
+ struct gpio_array *array_info,
|
|
|
unsigned long *value_bitmap)
|
|
|
{
|
|
|
int i = 0;
|
|
@@ -3156,6 +3166,7 @@ EXPORT_SYMBOL_GPL(gpiod_set_value);
|
|
|
* gpiod_set_raw_array_value() - assign values to an array of GPIOs
|
|
|
* @array_size: number of elements in the descriptor array / value bitmap
|
|
|
* @desc_array: array of GPIO descriptors whose values will be assigned
|
|
|
+ * @array_info: information on applicability of fast bitmap processing path
|
|
|
* @value_bitmap: bitmap of values to assign
|
|
|
*
|
|
|
* Set the raw values of the GPIOs, i.e. the values of the physical lines
|
|
@@ -3166,12 +3177,13 @@ EXPORT_SYMBOL_GPL(gpiod_set_value);
|
|
|
*/
|
|
|
int gpiod_set_raw_array_value(unsigned int array_size,
|
|
|
struct gpio_desc **desc_array,
|
|
|
+ struct gpio_array *array_info,
|
|
|
unsigned long *value_bitmap)
|
|
|
{
|
|
|
if (!desc_array)
|
|
|
return -EINVAL;
|
|
|
return gpiod_set_array_value_complex(true, false, array_size,
|
|
|
- desc_array, value_bitmap);
|
|
|
+ desc_array, array_info, value_bitmap);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(gpiod_set_raw_array_value);
|
|
|
|
|
@@ -3179,6 +3191,7 @@ EXPORT_SYMBOL_GPL(gpiod_set_raw_array_value);
|
|
|
* gpiod_set_array_value() - assign values to an array of GPIOs
|
|
|
* @array_size: number of elements in the descriptor array / value bitmap
|
|
|
* @desc_array: array of GPIO descriptors whose values will be assigned
|
|
|
+ * @array_info: information on applicability of fast bitmap processing path
|
|
|
* @value_bitmap: bitmap of values to assign
|
|
|
*
|
|
|
* Set the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
|
|
@@ -3189,12 +3202,13 @@ EXPORT_SYMBOL_GPL(gpiod_set_raw_array_value);
|
|
|
*/
|
|
|
void gpiod_set_array_value(unsigned int array_size,
|
|
|
struct gpio_desc **desc_array,
|
|
|
+ struct gpio_array *array_info,
|
|
|
unsigned long *value_bitmap)
|
|
|
{
|
|
|
if (!desc_array)
|
|
|
return;
|
|
|
gpiod_set_array_value_complex(false, false, array_size, desc_array,
|
|
|
- value_bitmap);
|
|
|
+ array_info, value_bitmap);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(gpiod_set_array_value);
|
|
|
|
|
@@ -3416,6 +3430,7 @@ EXPORT_SYMBOL_GPL(gpiod_get_value_cansleep);
|
|
|
* gpiod_get_raw_array_value_cansleep() - read raw values from an array of GPIOs
|
|
|
* @array_size: number of elements in the descriptor array / value bitmap
|
|
|
* @desc_array: array of GPIO descriptors whose values will be read
|
|
|
+ * @array_info: information on applicability of fast bitmap processing path
|
|
|
* @value_bitmap: bitmap to store the read values
|
|
|
*
|
|
|
* Read the raw values of the GPIOs, i.e. the values of the physical lines
|
|
@@ -3426,13 +3441,15 @@ EXPORT_SYMBOL_GPL(gpiod_get_value_cansleep);
|
|
|
*/
|
|
|
int gpiod_get_raw_array_value_cansleep(unsigned int array_size,
|
|
|
struct gpio_desc **desc_array,
|
|
|
+ struct gpio_array *array_info,
|
|
|
unsigned long *value_bitmap)
|
|
|
{
|
|
|
might_sleep_if(extra_checks);
|
|
|
if (!desc_array)
|
|
|
return -EINVAL;
|
|
|
return gpiod_get_array_value_complex(true, true, array_size,
|
|
|
- desc_array, value_bitmap);
|
|
|
+ desc_array, array_info,
|
|
|
+ value_bitmap);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(gpiod_get_raw_array_value_cansleep);
|
|
|
|
|
@@ -3440,6 +3457,7 @@ EXPORT_SYMBOL_GPL(gpiod_get_raw_array_value_cansleep);
|
|
|
* gpiod_get_array_value_cansleep() - read values from an array of GPIOs
|
|
|
* @array_size: number of elements in the descriptor array / value bitmap
|
|
|
* @desc_array: array of GPIO descriptors whose values will be read
|
|
|
+ * @array_info: information on applicability of fast bitmap processing path
|
|
|
* @value_bitmap: bitmap to store the read values
|
|
|
*
|
|
|
* Read the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
|
|
@@ -3449,13 +3467,15 @@ EXPORT_SYMBOL_GPL(gpiod_get_raw_array_value_cansleep);
|
|
|
*/
|
|
|
int gpiod_get_array_value_cansleep(unsigned int array_size,
|
|
|
struct gpio_desc **desc_array,
|
|
|
+ struct gpio_array *array_info,
|
|
|
unsigned long *value_bitmap)
|
|
|
{
|
|
|
might_sleep_if(extra_checks);
|
|
|
if (!desc_array)
|
|
|
return -EINVAL;
|
|
|
return gpiod_get_array_value_complex(false, true, array_size,
|
|
|
- desc_array, value_bitmap);
|
|
|
+ desc_array, array_info,
|
|
|
+ value_bitmap);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(gpiod_get_array_value_cansleep);
|
|
|
|
|
@@ -3499,6 +3519,7 @@ EXPORT_SYMBOL_GPL(gpiod_set_value_cansleep);
|
|
|
* gpiod_set_raw_array_value_cansleep() - assign values to an array of GPIOs
|
|
|
* @array_size: number of elements in the descriptor array / value bitmap
|
|
|
* @desc_array: array of GPIO descriptors whose values will be assigned
|
|
|
+ * @array_info: information on applicability of fast bitmap processing path
|
|
|
* @value_bitmap: bitmap of values to assign
|
|
|
*
|
|
|
* Set the raw values of the GPIOs, i.e. the values of the physical lines
|
|
@@ -3508,13 +3529,14 @@ EXPORT_SYMBOL_GPL(gpiod_set_value_cansleep);
|
|
|
*/
|
|
|
int gpiod_set_raw_array_value_cansleep(unsigned int array_size,
|
|
|
struct gpio_desc **desc_array,
|
|
|
+ struct gpio_array *array_info,
|
|
|
unsigned long *value_bitmap)
|
|
|
{
|
|
|
might_sleep_if(extra_checks);
|
|
|
if (!desc_array)
|
|
|
return -EINVAL;
|
|
|
return gpiod_set_array_value_complex(true, true, array_size, desc_array,
|
|
|
- value_bitmap);
|
|
|
+ array_info, value_bitmap);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(gpiod_set_raw_array_value_cansleep);
|
|
|
|
|
@@ -3539,6 +3561,7 @@ void gpiod_add_lookup_tables(struct gpiod_lookup_table **tables, size_t n)
|
|
|
* gpiod_set_array_value_cansleep() - assign values to an array of GPIOs
|
|
|
* @array_size: number of elements in the descriptor array / value bitmap
|
|
|
* @desc_array: array of GPIO descriptors whose values will be assigned
|
|
|
+ * @array_info: information on applicability of fast bitmap processing path
|
|
|
* @value_bitmap: bitmap of values to assign
|
|
|
*
|
|
|
* Set the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
|
|
@@ -3548,13 +3571,14 @@ void gpiod_add_lookup_tables(struct gpiod_lookup_table **tables, size_t n)
|
|
|
*/
|
|
|
void gpiod_set_array_value_cansleep(unsigned int array_size,
|
|
|
struct gpio_desc **desc_array,
|
|
|
+ struct gpio_array *array_info,
|
|
|
unsigned long *value_bitmap)
|
|
|
{
|
|
|
might_sleep_if(extra_checks);
|
|
|
if (!desc_array)
|
|
|
return;
|
|
|
gpiod_set_array_value_complex(false, true, array_size, desc_array,
|
|
|
- value_bitmap);
|
|
|
+ array_info, value_bitmap);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(gpiod_set_array_value_cansleep);
|
|
|
|