Lines Matching refs:spics
65 struct spear_spics *spics = container_of(chip, struct spear_spics, in spics_set_value() local
70 tmp = readl_relaxed(spics->base + spics->perip_cfg); in spics_set_value()
71 if (spics->last_off != offset) { in spics_set_value()
72 spics->last_off = offset; in spics_set_value()
73 tmp &= ~(spics->cs_enable_mask << spics->cs_enable_shift); in spics_set_value()
74 tmp |= offset << spics->cs_enable_shift; in spics_set_value()
78 tmp &= ~(0x1 << spics->cs_value_bit); in spics_set_value()
79 tmp |= value << spics->cs_value_bit; in spics_set_value()
80 writel_relaxed(tmp, spics->base + spics->perip_cfg); in spics_set_value()
97 struct spear_spics *spics = container_of(chip, struct spear_spics, in spics_request() local
101 if (!spics->use_count++) { in spics_request()
102 tmp = readl_relaxed(spics->base + spics->perip_cfg); in spics_request()
103 tmp |= 0x1 << spics->sw_enable_bit; in spics_request()
104 tmp |= 0x1 << spics->cs_value_bit; in spics_request()
105 writel_relaxed(tmp, spics->base + spics->perip_cfg); in spics_request()
113 struct spear_spics *spics = container_of(chip, struct spear_spics, in spics_free() local
117 if (!--spics->use_count) { in spics_free()
118 tmp = readl_relaxed(spics->base + spics->perip_cfg); in spics_free()
119 tmp &= ~(0x1 << spics->sw_enable_bit); in spics_free()
120 writel_relaxed(tmp, spics->base + spics->perip_cfg); in spics_free()
127 struct spear_spics *spics; in spics_gpio_probe() local
137 spics = devm_kzalloc(&pdev->dev, sizeof(*spics), GFP_KERNEL); in spics_gpio_probe()
138 if (!spics) { in spics_gpio_probe()
143 spics->base = devm_ioremap_resource(&pdev->dev, res); in spics_gpio_probe()
144 if (IS_ERR(spics->base)) in spics_gpio_probe()
145 return PTR_ERR(spics->base); in spics_gpio_probe()
148 &spics->perip_cfg)) in spics_gpio_probe()
151 &spics->sw_enable_bit)) in spics_gpio_probe()
154 &spics->cs_value_bit)) in spics_gpio_probe()
157 &spics->cs_enable_mask)) in spics_gpio_probe()
160 &spics->cs_enable_shift)) in spics_gpio_probe()
163 platform_set_drvdata(pdev, spics); in spics_gpio_probe()
165 spics->chip.ngpio = NUM_OF_GPIO; in spics_gpio_probe()
166 spics->chip.base = -1; in spics_gpio_probe()
167 spics->chip.request = spics_request; in spics_gpio_probe()
168 spics->chip.free = spics_free; in spics_gpio_probe()
169 spics->chip.direction_input = spics_direction_input; in spics_gpio_probe()
170 spics->chip.direction_output = spics_direction_output; in spics_gpio_probe()
171 spics->chip.get = spics_get_value; in spics_gpio_probe()
172 spics->chip.set = spics_set_value; in spics_gpio_probe()
173 spics->chip.label = dev_name(&pdev->dev); in spics_gpio_probe()
174 spics->chip.dev = &pdev->dev; in spics_gpio_probe()
175 spics->chip.owner = THIS_MODULE; in spics_gpio_probe()
176 spics->last_off = -1; in spics_gpio_probe()
178 ret = gpiochip_add(&spics->chip); in spics_gpio_probe()