Lines Matching refs:spics
62 struct spear_spics *spics = gpiochip_get_data(chip);
66 tmp = readl_relaxed(spics->base + spics->perip_cfg);
67 if (spics->last_off != offset) {
68 spics->last_off = offset;
69 tmp &= ~(spics->cs_enable_mask << spics->cs_enable_shift);
70 tmp |= offset << spics->cs_enable_shift;
74 tmp &= ~(0x1 << spics->cs_value_bit);
75 tmp |= value << spics->cs_value_bit;
76 writel_relaxed(tmp, spics->base + spics->perip_cfg);
93 struct spear_spics *spics = gpiochip_get_data(chip);
96 if (!spics->use_count++) {
97 tmp = readl_relaxed(spics->base + spics->perip_cfg);
98 tmp |= 0x1 << spics->sw_enable_bit;
99 tmp |= 0x1 << spics->cs_value_bit;
100 writel_relaxed(tmp, spics->base + spics->perip_cfg);
108 struct spear_spics *spics = gpiochip_get_data(chip);
111 if (!--spics->use_count) {
112 tmp = readl_relaxed(spics->base + spics->perip_cfg);
113 tmp &= ~(0x1 << spics->sw_enable_bit);
114 writel_relaxed(tmp, spics->base + spics->perip_cfg);
121 struct spear_spics *spics;
123 spics = devm_kzalloc(&pdev->dev, sizeof(*spics), GFP_KERNEL);
124 if (!spics)
127 spics->base = devm_platform_ioremap_resource(pdev, 0);
128 if (IS_ERR(spics->base))
129 return PTR_ERR(spics->base);
131 if (of_property_read_u32(np, "st-spics,peripcfg-reg",
132 &spics->perip_cfg))
134 if (of_property_read_u32(np, "st-spics,sw-enable-bit",
135 &spics->sw_enable_bit))
137 if (of_property_read_u32(np, "st-spics,cs-value-bit",
138 &spics->cs_value_bit))
140 if (of_property_read_u32(np, "st-spics,cs-enable-mask",
141 &spics->cs_enable_mask))
143 if (of_property_read_u32(np, "st-spics,cs-enable-shift",
144 &spics->cs_enable_shift))
147 spics->chip.ngpio = NUM_OF_GPIO;
148 spics->chip.base = -1;
149 spics->chip.request = spics_request;
150 spics->chip.free = spics_free;
151 spics->chip.direction_input = spics_direction_input;
152 spics->chip.direction_output = spics_direction_output;
153 spics->chip.get = spics_get_value;
154 spics->chip.set = spics_set_value;
155 spics->chip.label = dev_name(&pdev->dev);
156 spics->chip.parent = &pdev->dev;
157 spics->chip.owner = THIS_MODULE;
158 spics->last_off = -1;
160 return devm_gpiochip_add_data(&pdev->dev, &spics->chip, spics);
168 { .compatible = "st,spear-spics-gpio" },
175 .name = "spear-spics-gpio",