Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v5.2-rc2 67 lines 1.8 kB view raw
1/* 2 * Driver header file for pin controller driver 3 * Copyright (C) 2017 Spreadtrum - http://www.spreadtrum.com 4 * 5 * This program is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU General Public License 7 * version 2 as published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope that it will be useful, but 10 * WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * General Public License for more details. 13 */ 14 15#ifndef __PINCTRL_SPRD_H__ 16#define __PINCTRL_SPRD_H__ 17 18struct platform_device; 19 20#define NUM_OFFSET (20) 21#define TYPE_OFFSET (16) 22#define BIT_OFFSET (8) 23#define WIDTH_OFFSET (4) 24 25#define SPRD_PIN_INFO(num, type, offset, width, reg) \ 26 (((num) & 0xFFF) << NUM_OFFSET | \ 27 ((type) & 0xF) << TYPE_OFFSET | \ 28 ((offset) & 0xFF) << BIT_OFFSET | \ 29 ((width) & 0xF) << WIDTH_OFFSET | \ 30 ((reg) & 0xF)) 31 32#define SPRD_PINCTRL_PIN(pin) SPRD_PINCTRL_PIN_DATA(pin, #pin) 33 34#define SPRD_PINCTRL_PIN_DATA(a, b) \ 35 { \ 36 .name = b, \ 37 .num = (((a) >> NUM_OFFSET) & 0xfff), \ 38 .type = (((a) >> TYPE_OFFSET) & 0xf), \ 39 .bit_offset = (((a) >> BIT_OFFSET) & 0xff), \ 40 .bit_width = ((a) >> WIDTH_OFFSET & 0xf), \ 41 .reg = ((a) & 0xf) \ 42 } 43 44enum pin_type { 45 GLOBAL_CTRL_PIN, 46 COMMON_PIN, 47 MISC_PIN, 48}; 49 50struct sprd_pins_info { 51 const char *name; 52 unsigned int num; 53 enum pin_type type; 54 55 /* for global control pins configuration */ 56 unsigned long bit_offset; 57 unsigned long bit_width; 58 unsigned int reg; 59}; 60 61int sprd_pinctrl_core_probe(struct platform_device *pdev, 62 struct sprd_pins_info *sprd_soc_pin_info, 63 int pins_cnt); 64int sprd_pinctrl_remove(struct platform_device *pdev); 65void sprd_pinctrl_shutdown(struct platform_device *pdev); 66 67#endif /* __PINCTRL_SPRD_H__ */