diff options
author | lonkaars <loek@pipeframe.xyz> | 2024-05-14 20:56:43 +0200 |
---|---|---|
committer | lonkaars <loek@pipeframe.xyz> | 2024-05-14 20:56:43 +0200 |
commit | a8bab1509e795f367db2e374fe600ecacf66e26b (patch) | |
tree | 97ccd68f1142da7cd372830ba5cab08c25495b6a /driver/platform.c | |
parent | 44a5c2b2d47dde5215171966eeef0acdadcaded3 (diff) |
add attribute (9.4)
Diffstat (limited to 'driver/platform.c')
-rw-r--r-- | driver/platform.c | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/driver/platform.c b/driver/platform.c index da84064..c41d47b 100644 --- a/driver/platform.c +++ b/driver/platform.c @@ -2,6 +2,11 @@ #include <linux/types.h> #include <linux/of.h> +#include <linux/of_address.h> + +// TODO: shouldn't these be used?? +// #include <linux/pinctrl/pinctrl.h> +// #include <linux/gpio/driver.h> #include <dt-bindings/gpio/gpio.h> @@ -19,23 +24,23 @@ int lork_probe(struct platform_device* dev) { printk("lork: configure pin %u w/ mode 0x%02x\n", pin, gpio_mode); // find the multiplexer that controls pin - size_t len = of_property_count_u32_elems(gpio1, "gpio-ranges"); - struct device_node* am33xx_pinmux = NULL; - for (size_t i = 0; i < len; i += 4) { - uint32_t phandle, pin_start, pin_offset, pin_size; - of_property_read_u32_index(gpio1, "gpio-ranges", i+0, &phandle); - of_property_read_u32_index(gpio1, "gpio-ranges", i+1, &pin_start); - of_property_read_u32_index(gpio1, "gpio-ranges", i+2, &pin_offset); - of_property_read_u32_index(gpio1, "gpio-ranges", i+3, &pin_size); + // size_t len = of_property_count_u32_elems(gpio1, "gpio-ranges"); + // struct device_node* am33xx_pinmux = NULL; + // for (size_t i = 0; i < len; i += 4) { + // uint32_t phandle, pin_start, pin_offset, pin_size; + // of_property_read_u32_index(gpio1, "gpio-ranges", i+0, &phandle); + // of_property_read_u32_index(gpio1, "gpio-ranges", i+1, &pin_start); + // of_property_read_u32_index(gpio1, "gpio-ranges", i+2, &pin_offset); + // of_property_read_u32_index(gpio1, "gpio-ranges", i+3, &pin_size); - // get phandle for multiplexer corresponding to configured pin number - if (pin_start > pin || pin >= pin_start + pin_size) continue; + // // get phandle for multiplexer corresponding to configured pin number + // if (pin_start > pin || pin >= pin_start + pin_size) continue; - am33xx_pinmux = of_find_node_by_phandle(phandle); - printk("0x%02x, %u -> %u + %u\n", phandle, pin_start, pin_offset, pin_size); - break; - } - if (am33xx_pinmux == NULL) return EINVAL; + // am33xx_pinmux = of_find_node_by_phandle(phandle); + // printk("0x%02x, %u -> %u + %u\n", phandle, pin_start, pin_offset, pin_size); + // break; + // } + // if (am33xx_pinmux == NULL) return EINVAL; // TODO: ??? @@ -67,3 +72,12 @@ int lork_remove(struct platform_device* dev) { return 0; } +unsigned int val = 0; +ssize_t attr_show(struct device_driver* drv, char* buf) { + return sprintf(buf, "%u\n", val); +} +ssize_t attr_store(struct device_driver* drv, const char* buf, size_t count) { + sscanf(buf, "%u", &val); + return count; +} + |