Lines Matching refs:pt_gpio

38 	struct pt_gpio_chip *pt_gpio = to_pt_gpio(gc);  in pt_gpio_request()  local
44 spin_lock_irqsave(&pt_gpio->lock, flags); in pt_gpio_request()
46 using_pins = readl(pt_gpio->reg_base + PT_SYNC_REG); in pt_gpio_request()
50 spin_unlock_irqrestore(&pt_gpio->lock, flags); in pt_gpio_request()
54 writel(using_pins | BIT(offset), pt_gpio->reg_base + PT_SYNC_REG); in pt_gpio_request()
56 spin_unlock_irqrestore(&pt_gpio->lock, flags); in pt_gpio_request()
63 struct pt_gpio_chip *pt_gpio = to_pt_gpio(gc); in pt_gpio_free() local
67 spin_lock_irqsave(&pt_gpio->lock, flags); in pt_gpio_free()
69 using_pins = readl(pt_gpio->reg_base + PT_SYNC_REG); in pt_gpio_free()
71 writel(using_pins, pt_gpio->reg_base + PT_SYNC_REG); in pt_gpio_free()
73 spin_unlock_irqrestore(&pt_gpio->lock, flags); in pt_gpio_free()
80 struct pt_gpio_chip *pt_gpio = to_pt_gpio(gc); in pt_gpio_set_value() local
87 spin_lock_irqsave(&pt_gpio->lock, flags); in pt_gpio_set_value()
89 data = readl(pt_gpio->reg_base + PT_OUTPUTDATA_REG); in pt_gpio_set_value()
93 writel(data, pt_gpio->reg_base + PT_OUTPUTDATA_REG); in pt_gpio_set_value()
95 spin_unlock_irqrestore(&pt_gpio->lock, flags); in pt_gpio_set_value()
100 struct pt_gpio_chip *pt_gpio = to_pt_gpio(gc); in pt_gpio_get_value() local
104 spin_lock_irqsave(&pt_gpio->lock, flags); in pt_gpio_get_value()
106 data = readl(pt_gpio->reg_base + PT_DIRECTION_REG); in pt_gpio_get_value()
110 data = readl(pt_gpio->reg_base + PT_OUTPUTDATA_REG); in pt_gpio_get_value()
112 data = readl(pt_gpio->reg_base + PT_INPUTDATA_REG); in pt_gpio_get_value()
114 spin_unlock_irqrestore(&pt_gpio->lock, flags); in pt_gpio_get_value()
127 struct pt_gpio_chip *pt_gpio = to_pt_gpio(gc); in pt_gpio_direction_input() local
133 spin_lock_irqsave(&pt_gpio->lock, flags); in pt_gpio_direction_input()
135 data = readl(pt_gpio->reg_base + PT_DIRECTION_REG); in pt_gpio_direction_input()
137 writel(data, pt_gpio->reg_base + PT_DIRECTION_REG); in pt_gpio_direction_input()
139 spin_unlock_irqrestore(&pt_gpio->lock, flags); in pt_gpio_direction_input()
147 struct pt_gpio_chip *pt_gpio = to_pt_gpio(gc); in pt_gpio_direction_output() local
154 spin_lock_irqsave(&pt_gpio->lock, flags); in pt_gpio_direction_output()
156 data = readl(pt_gpio->reg_base + PT_OUTPUTDATA_REG); in pt_gpio_direction_output()
161 writel(data, pt_gpio->reg_base + PT_OUTPUTDATA_REG); in pt_gpio_direction_output()
163 data = readl(pt_gpio->reg_base + PT_DIRECTION_REG); in pt_gpio_direction_output()
165 writel(data, pt_gpio->reg_base + PT_DIRECTION_REG); in pt_gpio_direction_output()
167 spin_unlock_irqrestore(&pt_gpio->lock, flags); in pt_gpio_direction_output()
177 struct pt_gpio_chip *pt_gpio; in pt_gpio_probe() local
186 pt_gpio = devm_kzalloc(dev, sizeof(struct pt_gpio_chip), GFP_KERNEL); in pt_gpio_probe()
187 if (!pt_gpio) in pt_gpio_probe()
195 pt_gpio->reg_base = devm_ioremap_resource(dev, res_mem); in pt_gpio_probe()
196 if (IS_ERR(pt_gpio->reg_base)) { in pt_gpio_probe()
198 return PTR_ERR(pt_gpio->reg_base); in pt_gpio_probe()
201 spin_lock_init(&pt_gpio->lock); in pt_gpio_probe()
203 pt_gpio->gc.label = pdev->name; in pt_gpio_probe()
204 pt_gpio->gc.owner = THIS_MODULE; in pt_gpio_probe()
205 pt_gpio->gc.dev = dev; in pt_gpio_probe()
206 pt_gpio->gc.request = pt_gpio_request; in pt_gpio_probe()
207 pt_gpio->gc.free = pt_gpio_free; in pt_gpio_probe()
208 pt_gpio->gc.direction_input = pt_gpio_direction_input; in pt_gpio_probe()
209 pt_gpio->gc.direction_output = pt_gpio_direction_output; in pt_gpio_probe()
210 pt_gpio->gc.get = pt_gpio_get_value; in pt_gpio_probe()
211 pt_gpio->gc.set = pt_gpio_set_value; in pt_gpio_probe()
212 pt_gpio->gc.base = -1; in pt_gpio_probe()
213 pt_gpio->gc.ngpio = PT_TOTAL_GPIO; in pt_gpio_probe()
215 pt_gpio->gc.of_node = pdev->dev.of_node; in pt_gpio_probe()
217 ret = gpiochip_add(&pt_gpio->gc); in pt_gpio_probe()
223 platform_set_drvdata(pdev, pt_gpio); in pt_gpio_probe()
226 writel(0, pt_gpio->reg_base + PT_SYNC_REG); in pt_gpio_probe()
227 writel(0, pt_gpio->reg_base + PT_CLOCKRATE_REG); in pt_gpio_probe()
235 struct pt_gpio_chip *pt_gpio = platform_get_drvdata(pdev); in pt_gpio_remove() local
237 gpiochip_remove(&pt_gpio->gc); in pt_gpio_remove()